From c238e58acb5566c66f5034c0108076af3a7845c6 Mon Sep 17 00:00:00 2001 From: doscarchase <10255533+doscarchase@users.noreply.github.com> Date: Thu, 9 Jul 2026 02:36:27 -0400 Subject: [PATCH] Port Create to Minecraft 26.2 --- .github/workflows/build.yml | 4 +- Jenkinsfile | 2 +- build.gradle | 62 +- gradle.properties | 32 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 6 +- .../059f70d822f3fe46a7addb0bb70dc58ad8353903 | 2 - .../08d7d1f6914a92f0d41b89f305f0c78840f3400a | 10 +- .../09230360b5e965ba1bee059b2d819a45920e92bd | 110 +- .../09b09528b5a04742cfcd63e3a8074da9ae609954 | 8 +- .../455c485c9c8ef171bbc1ce4d435b3110ba1557ba | 206 +- .../499d9d953ee69b539ff4dd4c95a6cbd849f63f67 | 2 +- .../7d46d12a3645c7522a1eb5ebfbd8f5637c3a20d8 | 2 +- .../7fbec16def6919d7023cd104d800477d6f3414bc | 2 +- .../82992cbf8f2794d83ac94034835eac0acd7915b9 | 564 +- .../ad9bf59631726a3f24738ebf1a6cd44c7f88ba0f | 2 +- .../b256105d8411632b0d585496ea8944a751a08034 | 1656 +++--- ... bc41f1e6e54e9f04587ef53e896703c8bdada17c} | 4877 +++++++++-------- .../c24b4d2b8d15abff51c78bd94f4403d9eae6c139 | 2 +- .../e0a39a97205b7149114f15de91b614248d05fd95 | 2 +- .../e0d3d0b8d9c807675613821fa865a35f707cd83f | 2 +- .../eaed56ca9d9781c7626be345dd9f2c9a1fad638e | 10 +- .../f5350c6189acfbe5425c2432489f46008c69099a | 2 +- .../blockstates/acacia_window_pane.json | 28 +- .../create/blockstates/andesite_door.json | 241 +- .../create/blockstates/andesite_ladder.json | 23 +- .../create/blockstates/andesite_pillar.json | 186 +- .../blockstates/andesite_scaffolding.json | 94 +- .../assets/create/blockstates/asurine.json | 17 +- .../create/blockstates/asurine_pillar.json | 186 +- .../blockstates/bamboo_window_pane.json | 28 +- .../create/blockstates/birch_window_pane.json | 28 +- .../create/blockstates/black_toolbox.json | 23 +- .../blockstates/black_valve_handle.json | 38 +- .../create/blockstates/blue_toolbox.json | 23 +- .../create/blockstates/blue_valve_handle.json | 38 +- .../assets/create/blockstates/brass_door.json | 241 +- .../create/blockstates/brass_ladder.json | 23 +- .../create/blockstates/brass_scaffolding.json | 94 +- .../create/blockstates/brown_toolbox.json | 23 +- .../blockstates/brown_valve_handle.json | 38 +- .../create/blockstates/calcite_pillar.json | 186 +- .../blockstates/cherry_window_pane.json | 28 +- .../assets/create/blockstates/cogwheel.json | 19 +- .../create/blockstates/controller_rail.json | 1398 ++++- .../create/blockstates/copper_backtank.json | 23 +- .../create/blockstates/copper_door.json | 241 +- .../create/blockstates/copper_ladder.json | 23 +- .../blockstates/copper_scaffolding.json | 94 +- .../blockstates/copper_valve_handle.json | 38 +- .../create/blockstates/copycat_panel.json | 2 +- .../create/blockstates/copycat_step.json | 2 +- .../assets/create/blockstates/crimsite.json | 17 +- .../create/blockstates/crimsite_pillar.json | 186 +- .../blockstates/crimson_window_pane.json | 28 +- .../crushing_wheel_controller.json | 34 +- .../blockstates/cut_andesite_brick_wall.json | 36 +- .../create/blockstates/cut_andesite_wall.json | 36 +- .../blockstates/cut_asurine_brick_wall.json | 36 +- .../create/blockstates/cut_asurine_wall.json | 36 +- .../blockstates/cut_calcite_brick_wall.json | 36 +- .../create/blockstates/cut_calcite_wall.json | 36 +- .../blockstates/cut_crimsite_brick_wall.json | 36 +- .../create/blockstates/cut_crimsite_wall.json | 36 +- .../blockstates/cut_deepslate_brick_wall.json | 36 +- .../blockstates/cut_deepslate_wall.json | 36 +- .../blockstates/cut_diorite_brick_wall.json | 36 +- .../create/blockstates/cut_diorite_wall.json | 36 +- .../blockstates/cut_dripstone_brick_wall.json | 36 +- .../blockstates/cut_dripstone_wall.json | 36 +- .../blockstates/cut_granite_brick_wall.json | 36 +- .../create/blockstates/cut_granite_wall.json | 36 +- .../blockstates/cut_limestone_brick_wall.json | 36 +- .../blockstates/cut_limestone_wall.json | 36 +- .../blockstates/cut_ochrum_brick_wall.json | 36 +- .../create/blockstates/cut_ochrum_wall.json | 36 +- .../blockstates/cut_scorchia_brick_wall.json | 36 +- .../create/blockstates/cut_scorchia_wall.json | 36 +- .../blockstates/cut_scoria_brick_wall.json | 36 +- .../create/blockstates/cut_scoria_wall.json | 36 +- .../blockstates/cut_tuff_brick_wall.json | 36 +- .../create/blockstates/cut_tuff_wall.json | 36 +- .../blockstates/cut_veridium_brick_wall.json | 36 +- .../create/blockstates/cut_veridium_wall.json | 36 +- .../create/blockstates/cyan_toolbox.json | 23 +- .../create/blockstates/cyan_valve_handle.json | 38 +- .../blockstates/dark_oak_window_pane.json | 28 +- .../create/blockstates/deepslate_pillar.json | 186 +- .../create/blockstates/diorite_pillar.json | 186 +- .../create/blockstates/display_board.json | 113 +- .../create/blockstates/dripstone_pillar.json | 186 +- .../blockstates/encased_fluid_pipe.json | 4 +- .../create/blockstates/factory_gauge.json | 183 +- .../create/blockstates/framed_glass_door.json | 241 +- .../create/blockstates/framed_glass_pane.json | 28 +- .../blockstates/framed_glass_trapdoor.json | 63 +- .../create/blockstates/glass_fluid_pipe.json | 36 +- .../create/blockstates/granite_pillar.json | 186 +- .../create/blockstates/gray_toolbox.json | 23 +- .../create/blockstates/gray_valve_handle.json | 38 +- .../create/blockstates/green_toolbox.json | 23 +- .../blockstates/green_valve_handle.json | 38 +- .../horizontal_framed_glass_pane.json | 28 +- .../industrial_iron_window_pane.json | 28 +- .../blockstates/jungle_window_pane.json | 28 +- .../create/blockstates/large_cogwheel.json | 19 +- .../blockstates/lectern_controller.json | 53 +- .../blockstates/light_blue_toolbox.json | 23 +- .../blockstates/light_blue_valve_handle.json | 38 +- .../blockstates/light_gray_toolbox.json | 23 +- .../blockstates/light_gray_valve_handle.json | 38 +- .../create/blockstates/lime_toolbox.json | 23 +- .../create/blockstates/lime_valve_handle.json | 38 +- .../create/blockstates/limestone_pillar.json | 186 +- .../create/blockstates/magenta_toolbox.json | 23 +- .../blockstates/magenta_valve_handle.json | 38 +- .../blockstates/mangrove_window_pane.json | 28 +- .../blockstates/mechanical_piston_head.json | 76 +- .../create/blockstates/mechanical_pump.json | 38 +- .../blockstates/netherite_backtank.json | 23 +- .../create/blockstates/oak_window_pane.json | 28 +- .../assets/create/blockstates/ochrum.json | 17 +- .../create/blockstates/ochrum_pillar.json | 186 +- .../create/blockstates/orange_toolbox.json | 23 +- .../blockstates/orange_valve_handle.json | 38 +- .../blockstates/ornate_iron_window_pane.json | 28 +- .../create/blockstates/pink_toolbox.json | 23 +- .../create/blockstates/pink_valve_handle.json | 38 +- .../blockstates/piston_extension_pole.json | 38 +- .../assets/create/blockstates/placard.json | 183 +- .../polished_cut_andesite_wall.json | 36 +- .../polished_cut_asurine_wall.json | 36 +- .../polished_cut_calcite_wall.json | 36 +- .../polished_cut_crimsite_wall.json | 36 +- .../polished_cut_deepslate_wall.json | 36 +- .../polished_cut_diorite_wall.json | 36 +- .../polished_cut_dripstone_wall.json | 36 +- .../polished_cut_granite_wall.json | 36 +- .../polished_cut_limestone_wall.json | 36 +- .../blockstates/polished_cut_ochrum_wall.json | 36 +- .../polished_cut_scorchia_wall.json | 36 +- .../blockstates/polished_cut_scoria_wall.json | 36 +- .../blockstates/polished_cut_tuff_wall.json | 36 +- .../polished_cut_veridium_wall.json | 36 +- .../create/blockstates/powered_shaft.json | 19 +- .../create/blockstates/purple_toolbox.json | 23 +- .../blockstates/purple_valve_handle.json | 38 +- .../create/blockstates/red_toolbox.json | 23 +- .../create/blockstates/red_valve_handle.json | 38 +- .../create/blockstates/schematic_table.json | 8 +- .../create/blockstates/scorchia_pillar.json | 186 +- .../create/blockstates/scoria_pillar.json | 186 +- .../assets/create/blockstates/shaft.json | 19 +- .../small_andesite_brick_wall.json | 36 +- .../blockstates/small_asurine_brick_wall.json | 36 +- .../blockstates/small_calcite_brick_wall.json | 36 +- .../small_crimsite_brick_wall.json | 36 +- .../small_deepslate_brick_wall.json | 36 +- .../blockstates/small_diorite_brick_wall.json | 36 +- .../small_dripstone_brick_wall.json | 36 +- .../blockstates/small_granite_brick_wall.json | 36 +- .../small_limestone_brick_wall.json | 36 +- .../blockstates/small_ochrum_brick_wall.json | 36 +- .../small_scorchia_brick_wall.json | 36 +- .../blockstates/small_scoria_brick_wall.json | 36 +- .../blockstates/small_tuff_brick_wall.json | 36 +- .../small_veridium_brick_wall.json | 36 +- .../blockstates/spruce_window_pane.json | 28 +- .../create/blockstates/steam_engine.json | 77 +- .../create/blockstates/tiled_glass_pane.json | 28 +- .../assets/create/blockstates/train_door.json | 241 +- .../create/blockstates/train_trapdoor.json | 65 +- .../create/blockstates/tuff_pillar.json | 186 +- .../assets/create/blockstates/veridium.json | 17 +- .../create/blockstates/veridium_pillar.json | 186 +- .../vertical_framed_glass_pane.json | 28 +- .../blockstates/warped_window_pane.json | 28 +- .../blockstates/water_wheel_structure.json | 17 +- .../blockstates/weathered_iron_window.json | 17 +- .../weathered_iron_window_pane.json | 28 +- .../create/blockstates/weighted_ejector.json | 23 +- .../create/blockstates/white_toolbox.json | 23 +- .../blockstates/white_valve_handle.json | 38 +- .../create/blockstates/yellow_toolbox.json | 23 +- .../blockstates/yellow_valve_handle.json | 38 +- .../assets/create/items/acacia_window.json | 6 + .../create/items/acacia_window_pane.json | 6 + .../items/adjustable_chain_gearshift.json | 6 + .../assets/create/items/analog_lever.json | 6 + .../assets/create/items/andesite_alloy.json | 6 + .../create/items/andesite_alloy_block.json | 6 + .../assets/create/items/andesite_bars.json | 6 + .../assets/create/items/andesite_casing.json | 6 + .../assets/create/items/andesite_door.json | 6 + .../items/andesite_encased_cogwheel.json | 6 + .../andesite_encased_large_cogwheel.json | 6 + .../create/items/andesite_encased_shaft.json | 6 + .../assets/create/items/andesite_funnel.json | 6 + .../assets/create/items/andesite_ladder.json | 6 + .../assets/create/items/andesite_pillar.json | 6 + .../create/items/andesite_scaffolding.json | 6 + .../create/items/andesite_table_cloth.json | 6 + .../assets/create/items/andesite_tunnel.json | 6 + .../assets/create/items/asurine.json | 6 + .../assets/create/items/asurine_pillar.json | 6 + .../assets/create/items/attribute_filter.json | 6 + .../assets/create/items/bamboo_window.json | 6 + .../create/items/bamboo_window_pane.json | 6 + .../assets/create/items/bar_of_chocolate.json | 6 + .../resources/assets/create/items/basin.json | 6 + .../assets/create/items/belt_connector.json | 6 + .../assets/create/items/birch_window.json | 6 + .../create/items/birch_window_pane.json | 6 + .../assets/create/items/black_postbox.json | 6 + .../assets/create/items/black_seat.json | 6 + .../create/items/black_table_cloth.json | 6 + .../assets/create/items/black_toolbox.json | 6 + .../create/items/black_valve_handle.json | 6 + .../assets/create/items/blaze_burner.json | 6 + .../assets/create/items/blaze_cake.json | 6 + .../assets/create/items/blaze_cake_base.json | 6 + .../assets/create/items/blue_postbox.json | 6 + .../assets/create/items/blue_seat.json | 6 + .../assets/create/items/blue_table_cloth.json | 6 + .../assets/create/items/blue_toolbox.json | 6 + .../create/items/blue_valve_handle.json | 6 + .../create/items/bound_cardboard_block.json | 6 + .../assets/create/items/brass_bars.json | 6 + .../assets/create/items/brass_block.json | 6 + .../assets/create/items/brass_casing.json | 6 + .../assets/create/items/brass_door.json | 6 + .../create/items/brass_encased_cogwheel.json | 6 + .../items/brass_encased_large_cogwheel.json | 6 + .../create/items/brass_encased_shaft.json | 6 + .../assets/create/items/brass_funnel.json | 6 + .../assets/create/items/brass_hand.json | 6 + .../assets/create/items/brass_ingot.json | 6 + .../assets/create/items/brass_ladder.json | 6 + .../assets/create/items/brass_nugget.json | 6 + .../create/items/brass_scaffolding.json | 6 + .../assets/create/items/brass_sheet.json | 6 + .../create/items/brass_table_cloth.json | 6 + .../assets/create/items/brass_tunnel.json | 6 + .../assets/create/items/brown_postbox.json | 6 + .../assets/create/items/brown_seat.json | 6 + .../create/items/brown_table_cloth.json | 6 + .../assets/create/items/brown_toolbox.json | 6 + .../create/items/brown_valve_handle.json | 6 + .../assets/create/items/builders_tea.json | 6 + .../assets/create/items/calcite_pillar.json | 6 + .../assets/create/items/cardboard.json | 6 + .../assets/create/items/cardboard_block.json | 6 + .../assets/create/items/cardboard_boots.json | 6 + .../create/items/cardboard_chestplate.json | 6 + .../assets/create/items/cardboard_helmet.json | 6 + .../create/items/cardboard_leggings.json | 6 + .../create/items/cardboard_package_10x12.json | 6 + .../create/items/cardboard_package_10x8.json | 6 + .../create/items/cardboard_package_12x10.json | 6 + .../create/items/cardboard_package_12x12.json | 6 + .../assets/create/items/cardboard_sword.json | 6 + .../assets/create/items/cart_assembler.json | 6 + .../assets/create/items/chain_conveyor.json | 6 + .../assets/create/items/cherry_window.json | 6 + .../create/items/cherry_window_pane.json | 6 + .../items/chest_minecart_contraption.json | 6 + .../assets/create/items/chocolate_bucket.json | 6 + .../items/chocolate_glazed_berries.json | 6 + .../create/items/chromatic_compound.json | 6 + .../resources/assets/create/items/chute.json | 6 + .../assets/create/items/cinder_flour.json | 6 + .../assets/create/items/clipboard.json | 6 + .../create/items/clockwork_bearing.json | 6 + .../resources/assets/create/items/clutch.json | 6 + .../assets/create/items/cogwheel.json | 6 + .../assets/create/items/content_observer.json | 6 + .../create/items/contraption_controls.json | 6 + .../assets/create/items/controller_rail.json | 6 + .../assets/create/items/controls.json | 6 + .../assets/create/items/copper_backtank.json | 6 + .../items/copper_backtank_placeable.json | 6 + .../assets/create/items/copper_bars.json | 6 + .../assets/create/items/copper_casing.json | 6 + .../create/items/copper_diving_boots.json | 6 + .../create/items/copper_diving_helmet.json | 6 + .../assets/create/items/copper_door.json | 6 + .../assets/create/items/copper_ladder.json | 6 + .../assets/create/items/copper_nugget.json | 6 + .../create/items/copper_scaffolding.json | 6 + .../assets/create/items/copper_sheet.json | 6 + .../create/items/copper_shingle_slab.json | 6 + .../create/items/copper_shingle_stairs.json | 6 + .../assets/create/items/copper_shingles.json | 6 + .../create/items/copper_table_cloth.json | 6 + .../assets/create/items/copper_tile_slab.json | 6 + .../create/items/copper_tile_stairs.json | 6 + .../assets/create/items/copper_tiles.json | 6 + .../create/items/copper_valve_handle.json | 6 + .../assets/create/items/copycat_panel.json | 6 + .../assets/create/items/copycat_step.json | 6 + .../create/items/crafter_slot_cover.json | 6 + .../create/items/crafting_blueprint.json | 6 + .../create/items/creative_blaze_cake.json | 6 + .../assets/create/items/creative_crate.json | 6 + .../create/items/creative_fluid_tank.json | 6 + .../assets/create/items/creative_motor.json | 6 + .../assets/create/items/crimsite.json | 6 + .../assets/create/items/crimsite_pillar.json | 6 + .../assets/create/items/crimson_window.json | 6 + .../create/items/crimson_window_pane.json | 6 + .../create/items/crushed_raw_aluminum.json | 6 + .../create/items/crushed_raw_copper.json | 6 + .../assets/create/items/crushed_raw_gold.json | 6 + .../assets/create/items/crushed_raw_iron.json | 6 + .../assets/create/items/crushed_raw_lead.json | 6 + .../create/items/crushed_raw_nickel.json | 6 + .../create/items/crushed_raw_osmium.json | 6 + .../create/items/crushed_raw_platinum.json | 6 + .../create/items/crushed_raw_quicksilver.json | 6 + .../create/items/crushed_raw_silver.json | 6 + .../assets/create/items/crushed_raw_tin.json | 6 + .../create/items/crushed_raw_uranium.json | 6 + .../assets/create/items/crushed_raw_zinc.json | 6 + .../assets/create/items/crushing_wheel.json | 6 + .../assets/create/items/cuckoo_clock.json | 6 + .../assets/create/items/cut_andesite.json | 6 + .../create/items/cut_andesite_brick_slab.json | 6 + .../items/cut_andesite_brick_stairs.json | 6 + .../create/items/cut_andesite_brick_wall.json | 6 + .../create/items/cut_andesite_bricks.json | 6 + .../create/items/cut_andesite_slab.json | 6 + .../create/items/cut_andesite_stairs.json | 6 + .../create/items/cut_andesite_wall.json | 6 + .../assets/create/items/cut_asurine.json | 6 + .../create/items/cut_asurine_brick_slab.json | 6 + .../items/cut_asurine_brick_stairs.json | 6 + .../create/items/cut_asurine_brick_wall.json | 6 + .../create/items/cut_asurine_bricks.json | 6 + .../assets/create/items/cut_asurine_slab.json | 6 + .../create/items/cut_asurine_stairs.json | 6 + .../assets/create/items/cut_asurine_wall.json | 6 + .../assets/create/items/cut_calcite.json | 6 + .../create/items/cut_calcite_brick_slab.json | 6 + .../items/cut_calcite_brick_stairs.json | 6 + .../create/items/cut_calcite_brick_wall.json | 6 + .../create/items/cut_calcite_bricks.json | 6 + .../assets/create/items/cut_calcite_slab.json | 6 + .../create/items/cut_calcite_stairs.json | 6 + .../assets/create/items/cut_calcite_wall.json | 6 + .../assets/create/items/cut_crimsite.json | 6 + .../create/items/cut_crimsite_brick_slab.json | 6 + .../items/cut_crimsite_brick_stairs.json | 6 + .../create/items/cut_crimsite_brick_wall.json | 6 + .../create/items/cut_crimsite_bricks.json | 6 + .../create/items/cut_crimsite_slab.json | 6 + .../create/items/cut_crimsite_stairs.json | 6 + .../create/items/cut_crimsite_wall.json | 6 + .../assets/create/items/cut_deepslate.json | 6 + .../items/cut_deepslate_brick_slab.json | 6 + .../items/cut_deepslate_brick_stairs.json | 6 + .../items/cut_deepslate_brick_wall.json | 6 + .../create/items/cut_deepslate_bricks.json | 6 + .../create/items/cut_deepslate_slab.json | 6 + .../create/items/cut_deepslate_stairs.json | 6 + .../create/items/cut_deepslate_wall.json | 6 + .../assets/create/items/cut_diorite.json | 6 + .../create/items/cut_diorite_brick_slab.json | 6 + .../items/cut_diorite_brick_stairs.json | 6 + .../create/items/cut_diorite_brick_wall.json | 6 + .../create/items/cut_diorite_bricks.json | 6 + .../assets/create/items/cut_diorite_slab.json | 6 + .../create/items/cut_diorite_stairs.json | 6 + .../assets/create/items/cut_diorite_wall.json | 6 + .../assets/create/items/cut_dripstone.json | 6 + .../items/cut_dripstone_brick_slab.json | 6 + .../items/cut_dripstone_brick_stairs.json | 6 + .../items/cut_dripstone_brick_wall.json | 6 + .../create/items/cut_dripstone_bricks.json | 6 + .../create/items/cut_dripstone_slab.json | 6 + .../create/items/cut_dripstone_stairs.json | 6 + .../create/items/cut_dripstone_wall.json | 6 + .../assets/create/items/cut_granite.json | 6 + .../create/items/cut_granite_brick_slab.json | 6 + .../items/cut_granite_brick_stairs.json | 6 + .../create/items/cut_granite_brick_wall.json | 6 + .../create/items/cut_granite_bricks.json | 6 + .../assets/create/items/cut_granite_slab.json | 6 + .../create/items/cut_granite_stairs.json | 6 + .../assets/create/items/cut_granite_wall.json | 6 + .../assets/create/items/cut_limestone.json | 6 + .../items/cut_limestone_brick_slab.json | 6 + .../items/cut_limestone_brick_stairs.json | 6 + .../items/cut_limestone_brick_wall.json | 6 + .../create/items/cut_limestone_bricks.json | 6 + .../create/items/cut_limestone_slab.json | 6 + .../create/items/cut_limestone_stairs.json | 6 + .../create/items/cut_limestone_wall.json | 6 + .../assets/create/items/cut_ochrum.json | 6 + .../create/items/cut_ochrum_brick_slab.json | 6 + .../create/items/cut_ochrum_brick_stairs.json | 6 + .../create/items/cut_ochrum_brick_wall.json | 6 + .../create/items/cut_ochrum_bricks.json | 6 + .../assets/create/items/cut_ochrum_slab.json | 6 + .../create/items/cut_ochrum_stairs.json | 6 + .../assets/create/items/cut_ochrum_wall.json | 6 + .../assets/create/items/cut_scorchia.json | 6 + .../create/items/cut_scorchia_brick_slab.json | 6 + .../items/cut_scorchia_brick_stairs.json | 6 + .../create/items/cut_scorchia_brick_wall.json | 6 + .../create/items/cut_scorchia_bricks.json | 6 + .../create/items/cut_scorchia_slab.json | 6 + .../create/items/cut_scorchia_stairs.json | 6 + .../create/items/cut_scorchia_wall.json | 6 + .../assets/create/items/cut_scoria.json | 6 + .../create/items/cut_scoria_brick_slab.json | 6 + .../create/items/cut_scoria_brick_stairs.json | 6 + .../create/items/cut_scoria_brick_wall.json | 6 + .../create/items/cut_scoria_bricks.json | 6 + .../assets/create/items/cut_scoria_slab.json | 6 + .../create/items/cut_scoria_stairs.json | 6 + .../assets/create/items/cut_scoria_wall.json | 6 + .../assets/create/items/cut_tuff.json | 6 + .../create/items/cut_tuff_brick_slab.json | 6 + .../create/items/cut_tuff_brick_stairs.json | 6 + .../create/items/cut_tuff_brick_wall.json | 6 + .../assets/create/items/cut_tuff_bricks.json | 6 + .../assets/create/items/cut_tuff_slab.json | 6 + .../assets/create/items/cut_tuff_stairs.json | 6 + .../assets/create/items/cut_tuff_wall.json | 6 + .../assets/create/items/cut_veridium.json | 6 + .../create/items/cut_veridium_brick_slab.json | 6 + .../items/cut_veridium_brick_stairs.json | 6 + .../create/items/cut_veridium_brick_wall.json | 6 + .../create/items/cut_veridium_bricks.json | 6 + .../create/items/cut_veridium_slab.json | 6 + .../create/items/cut_veridium_stairs.json | 6 + .../create/items/cut_veridium_wall.json | 6 + .../assets/create/items/cyan_postbox.json | 6 + .../assets/create/items/cyan_seat.json | 6 + .../assets/create/items/cyan_table_cloth.json | 6 + .../assets/create/items/cyan_toolbox.json | 6 + .../create/items/cyan_valve_handle.json | 6 + .../assets/create/items/dark_oak_window.json | 6 + .../create/items/dark_oak_window_pane.json | 6 + .../assets/create/items/deepslate_pillar.json | 6 + .../create/items/deepslate_zinc_ore.json | 6 + .../assets/create/items/deployer.json | 6 + .../resources/assets/create/items/depot.json | 6 + .../assets/create/items/desk_bell.json | 6 + .../assets/create/items/diorite_pillar.json | 6 + .../assets/create/items/display_board.json | 6 + .../assets/create/items/display_link.json | 6 + .../resources/assets/create/items/dough.json | 6 + .../assets/create/items/dripstone_pillar.json | 6 + .../assets/create/items/electron_tube.json | 6 + .../assets/create/items/elevator_contact.json | 6 + .../assets/create/items/elevator_pulley.json | 6 + .../create/items/empty_blaze_burner.json | 6 + .../assets/create/items/empty_schematic.json | 6 + .../create/items/encased_chain_drive.json | 6 + .../assets/create/items/encased_fan.json | 6 + .../assets/create/items/experience_block.json | 6 + .../create/items/experience_nugget.json | 6 + .../items/exposed_copper_shingle_slab.json | 6 + .../items/exposed_copper_shingle_stairs.json | 6 + .../create/items/exposed_copper_shingles.json | 6 + .../items/exposed_copper_tile_slab.json | 6 + .../items/exposed_copper_tile_stairs.json | 6 + .../create/items/exposed_copper_tiles.json | 6 + .../assets/create/items/extendo_grip.json | 6 + .../assets/create/items/factory_gauge.json | 6 + .../resources/assets/create/items/filter.json | 6 + .../assets/create/items/fluid_pipe.json | 6 + .../assets/create/items/fluid_tank.json | 6 + .../assets/create/items/fluid_valve.json | 6 + .../assets/create/items/flywheel.json | 6 + .../assets/create/items/framed_glass.json | 6 + .../create/items/framed_glass_door.json | 6 + .../create/items/framed_glass_pane.json | 6 + .../create/items/framed_glass_trapdoor.json | 6 + .../items/furnace_minecart_contraption.json | 6 + .../assets/create/items/gantry_carriage.json | 6 + .../assets/create/items/gantry_shaft.json | 6 + .../assets/create/items/gearbox.json | 6 + .../assets/create/items/gearshift.json | 6 + .../assets/create/items/goggles.json | 6 + .../assets/create/items/golden_sheet.json | 6 + .../assets/create/items/granite_pillar.json | 6 + .../assets/create/items/gray_postbox.json | 6 + .../assets/create/items/gray_seat.json | 6 + .../assets/create/items/gray_table_cloth.json | 6 + .../assets/create/items/gray_toolbox.json | 6 + .../create/items/gray_valve_handle.json | 6 + .../assets/create/items/green_postbox.json | 6 + .../assets/create/items/green_seat.json | 6 + .../create/items/green_table_cloth.json | 6 + .../assets/create/items/green_toolbox.json | 6 + .../create/items/green_valve_handle.json | 6 + .../assets/create/items/hand_crank.json | 6 + .../create/items/handheld_worldshaper.json | 6 + .../assets/create/items/haunted_bell.json | 6 + .../assets/create/items/honey_bucket.json | 6 + .../assets/create/items/honeyed_apple.json | 6 + .../create/items/horizontal_framed_glass.json | 6 + .../items/horizontal_framed_glass_pane.json | 6 + .../assets/create/items/hose_pulley.json | 6 + .../items/incomplete_precision_mechanism.json | 6 + .../assets/create/items/incomplete_track.json | 6 + .../create/items/industrial_iron_block.json | 6 + .../create/items/industrial_iron_window.json | 6 + .../items/industrial_iron_window_pane.json | 6 + .../assets/create/items/iron_sheet.json | 6 + .../assets/create/items/item_drain.json | 6 + .../assets/create/items/item_hatch.json | 6 + .../assets/create/items/item_vault.json | 6 + .../assets/create/items/jungle_window.json | 6 + .../create/items/jungle_window_pane.json | 6 + .../assets/create/items/large_cogwheel.json | 6 + .../create/items/large_water_wheel.json | 6 + .../assets/create/items/layered_andesite.json | 6 + .../assets/create/items/layered_asurine.json | 6 + .../assets/create/items/layered_calcite.json | 6 + .../assets/create/items/layered_crimsite.json | 6 + .../create/items/layered_deepslate.json | 6 + .../assets/create/items/layered_diorite.json | 6 + .../create/items/layered_dripstone.json | 6 + .../assets/create/items/layered_granite.json | 6 + .../create/items/layered_limestone.json | 6 + .../assets/create/items/layered_ochrum.json | 6 + .../assets/create/items/layered_scorchia.json | 6 + .../assets/create/items/layered_scoria.json | 6 + .../assets/create/items/layered_tuff.json | 6 + .../assets/create/items/layered_veridium.json | 6 + .../create/items/light_blue_postbox.json | 6 + .../assets/create/items/light_blue_seat.json | 6 + .../create/items/light_blue_table_cloth.json | 6 + .../create/items/light_blue_toolbox.json | 6 + .../create/items/light_blue_valve_handle.json | 6 + .../create/items/light_gray_postbox.json | 6 + .../assets/create/items/light_gray_seat.json | 6 + .../create/items/light_gray_table_cloth.json | 6 + .../create/items/light_gray_toolbox.json | 6 + .../create/items/light_gray_valve_handle.json | 6 + .../assets/create/items/lime_postbox.json | 6 + .../assets/create/items/lime_seat.json | 6 + .../assets/create/items/lime_table_cloth.json | 6 + .../assets/create/items/lime_toolbox.json | 6 + .../create/items/lime_valve_handle.json | 6 + .../assets/create/items/limestone.json | 6 + .../assets/create/items/limestone_pillar.json | 6 + .../assets/create/items/linear_chassis.json | 6 + .../create/items/linked_controller.json | 6 + .../assets/create/items/magenta_postbox.json | 6 + .../assets/create/items/magenta_seat.json | 6 + .../create/items/magenta_table_cloth.json | 6 + .../assets/create/items/magenta_toolbox.json | 6 + .../create/items/magenta_valve_handle.json | 6 + .../assets/create/items/mangrove_window.json | 6 + .../create/items/mangrove_window_pane.json | 6 + .../assets/create/items/mechanical_arm.json | 6 + .../create/items/mechanical_bearing.json | 6 + .../create/items/mechanical_crafter.json | 6 + .../assets/create/items/mechanical_drill.json | 6 + .../create/items/mechanical_harvester.json | 6 + .../assets/create/items/mechanical_mixer.json | 6 + .../create/items/mechanical_piston.json | 6 + .../create/items/mechanical_plough.json | 6 + .../assets/create/items/mechanical_press.json | 6 + .../assets/create/items/mechanical_pump.json | 6 + .../create/items/mechanical_roller.json | 6 + .../assets/create/items/mechanical_saw.json | 6 + .../assets/create/items/metal_bracket.json | 6 + .../assets/create/items/metal_girder.json | 6 + .../assets/create/items/millstone.json | 6 + .../create/items/minecart_contraption.json | 6 + .../create/items/minecart_coupling.json | 6 + .../create/items/mysterious_cuckoo_clock.json | 6 + .../create/items/netherite_backtank.json | 6 + .../items/netherite_backtank_placeable.json | 6 + .../create/items/netherite_diving_boots.json | 6 + .../create/items/netherite_diving_helmet.json | 6 + .../assets/create/items/nixie_tube.json | 6 + .../resources/assets/create/items/nozzle.json | 6 + .../assets/create/items/oak_window.json | 6 + .../assets/create/items/oak_window_pane.json | 6 + .../resources/assets/create/items/ochrum.json | 6 + .../assets/create/items/ochrum_pillar.json | 6 + .../assets/create/items/orange_postbox.json | 6 + .../assets/create/items/orange_seat.json | 6 + .../create/items/orange_table_cloth.json | 6 + .../assets/create/items/orange_toolbox.json | 6 + .../create/items/orange_valve_handle.json | 6 + .../create/items/ornate_iron_window.json | 6 + .../create/items/ornate_iron_window_pane.json | 6 + .../items/oxidized_copper_shingle_slab.json | 6 + .../items/oxidized_copper_shingle_stairs.json | 6 + .../items/oxidized_copper_shingles.json | 6 + .../items/oxidized_copper_tile_slab.json | 6 + .../items/oxidized_copper_tile_stairs.json | 6 + .../create/items/oxidized_copper_tiles.json | 6 + .../assets/create/items/package_filter.json | 6 + .../assets/create/items/package_frogport.json | 6 + .../assets/create/items/packager.json | 6 + .../assets/create/items/peculiar_bell.json | 6 + .../assets/create/items/pink_postbox.json | 6 + .../assets/create/items/pink_seat.json | 6 + .../assets/create/items/pink_table_cloth.json | 6 + .../assets/create/items/pink_toolbox.json | 6 + .../create/items/pink_valve_handle.json | 6 + .../create/items/piston_extension_pole.json | 6 + .../assets/create/items/placard.json | 6 + .../create/items/polished_cut_andesite.json | 6 + .../items/polished_cut_andesite_slab.json | 6 + .../items/polished_cut_andesite_stairs.json | 6 + .../items/polished_cut_andesite_wall.json | 6 + .../create/items/polished_cut_asurine.json | 6 + .../items/polished_cut_asurine_slab.json | 6 + .../items/polished_cut_asurine_stairs.json | 6 + .../items/polished_cut_asurine_wall.json | 6 + .../create/items/polished_cut_calcite.json | 6 + .../items/polished_cut_calcite_slab.json | 6 + .../items/polished_cut_calcite_stairs.json | 6 + .../items/polished_cut_calcite_wall.json | 6 + .../create/items/polished_cut_crimsite.json | 6 + .../items/polished_cut_crimsite_slab.json | 6 + .../items/polished_cut_crimsite_stairs.json | 6 + .../items/polished_cut_crimsite_wall.json | 6 + .../create/items/polished_cut_deepslate.json | 6 + .../items/polished_cut_deepslate_slab.json | 6 + .../items/polished_cut_deepslate_stairs.json | 6 + .../items/polished_cut_deepslate_wall.json | 6 + .../create/items/polished_cut_diorite.json | 6 + .../items/polished_cut_diorite_slab.json | 6 + .../items/polished_cut_diorite_stairs.json | 6 + .../items/polished_cut_diorite_wall.json | 6 + .../create/items/polished_cut_dripstone.json | 6 + .../items/polished_cut_dripstone_slab.json | 6 + .../items/polished_cut_dripstone_stairs.json | 6 + .../items/polished_cut_dripstone_wall.json | 6 + .../create/items/polished_cut_granite.json | 6 + .../items/polished_cut_granite_slab.json | 6 + .../items/polished_cut_granite_stairs.json | 6 + .../items/polished_cut_granite_wall.json | 6 + .../create/items/polished_cut_limestone.json | 6 + .../items/polished_cut_limestone_slab.json | 6 + .../items/polished_cut_limestone_stairs.json | 6 + .../items/polished_cut_limestone_wall.json | 6 + .../create/items/polished_cut_ochrum.json | 6 + .../items/polished_cut_ochrum_slab.json | 6 + .../items/polished_cut_ochrum_stairs.json | 6 + .../items/polished_cut_ochrum_wall.json | 6 + .../create/items/polished_cut_scorchia.json | 6 + .../items/polished_cut_scorchia_slab.json | 6 + .../items/polished_cut_scorchia_stairs.json | 6 + .../items/polished_cut_scorchia_wall.json | 6 + .../create/items/polished_cut_scoria.json | 6 + .../items/polished_cut_scoria_slab.json | 6 + .../items/polished_cut_scoria_stairs.json | 6 + .../items/polished_cut_scoria_wall.json | 6 + .../create/items/polished_cut_tuff.json | 6 + .../create/items/polished_cut_tuff_slab.json | 6 + .../items/polished_cut_tuff_stairs.json | 6 + .../create/items/polished_cut_tuff_wall.json | 6 + .../create/items/polished_cut_veridium.json | 6 + .../items/polished_cut_veridium_slab.json | 6 + .../items/polished_cut_veridium_stairs.json | 6 + .../items/polished_cut_veridium_wall.json | 6 + .../create/items/polished_rose_quartz.json | 6 + .../items/portable_fluid_interface.json | 6 + .../items/portable_storage_interface.json | 6 + .../assets/create/items/potato_cannon.json | 6 + .../create/items/powdered_obsidian.json | 6 + .../assets/create/items/powered_latch.json | 6 + .../create/items/powered_toggle_latch.json | 6 + .../create/items/precision_mechanism.json | 6 + .../assets/create/items/propeller.json | 6 + .../resources/assets/create/items/pulp.json | 6 + .../assets/create/items/pulse_extender.json | 6 + .../assets/create/items/pulse_repeater.json | 6 + .../assets/create/items/pulse_timer.json | 6 + .../assets/create/items/purple_postbox.json | 6 + .../assets/create/items/purple_seat.json | 6 + .../create/items/purple_table_cloth.json | 6 + .../assets/create/items/purple_toolbox.json | 6 + .../create/items/purple_valve_handle.json | 6 + .../assets/create/items/radial_chassis.json | 6 + .../assets/create/items/railway_casing.json | 6 + .../create/items/rare_creeper_package.json | 6 + .../create/items/rare_darcy_package.json | 6 + .../create/items/rare_evan_package.json | 6 + .../create/items/rare_jinx_package.json | 6 + .../create/items/rare_kryppers_package.json | 6 + .../create/items/rare_simi_package.json | 6 + .../create/items/rare_starlotte_package.json | 6 + .../create/items/rare_thunder_package.json | 6 + .../assets/create/items/rare_up_package.json | 6 + .../create/items/rare_vector_package.json | 6 + .../assets/create/items/raw_zinc.json | 6 + .../assets/create/items/raw_zinc_block.json | 6 + .../assets/create/items/red_postbox.json | 6 + .../assets/create/items/red_sand_paper.json | 6 + .../assets/create/items/red_seat.json | 6 + .../assets/create/items/red_table_cloth.json | 6 + .../assets/create/items/red_toolbox.json | 6 + .../assets/create/items/red_valve_handle.json | 6 + .../assets/create/items/redstone_contact.json | 6 + .../assets/create/items/redstone_link.json | 6 + .../create/items/redstone_requester.json | 6 + .../assets/create/items/refined_radiance.json | 6 + .../create/items/refined_radiance_casing.json | 6 + .../assets/create/items/repackager.json | 6 + .../assets/create/items/rope_pulley.json | 6 + .../assets/create/items/rose_quartz.json | 6 + .../create/items/rose_quartz_block.json | 6 + .../assets/create/items/rose_quartz_lamp.json | 6 + .../create/items/rose_quartz_tiles.json | 6 + .../items/rotation_speed_controller.json | 6 + .../assets/create/items/sail_frame.json | 6 + .../assets/create/items/sand_paper.json | 6 + .../assets/create/items/schedule.json | 6 + .../assets/create/items/schematic.json | 6 + .../create/items/schematic_and_quill.json | 6 + .../assets/create/items/schematic_table.json | 6 + .../assets/create/items/schematicannon.json | 6 + .../assets/create/items/scorchia.json | 6 + .../assets/create/items/scorchia_pillar.json | 6 + .../resources/assets/create/items/scoria.json | 6 + .../assets/create/items/scoria_pillar.json | 6 + .../items/secondary_linear_chassis.json | 6 + .../create/items/sequenced_gearshift.json | 6 + .../assets/create/items/shadow_steel.json | 6 + .../create/items/shadow_steel_casing.json | 6 + .../resources/assets/create/items/shaft.json | 6 + .../assets/create/items/shopping_list.json | 6 + .../items/small_andesite_brick_slab.json | 6 + .../items/small_andesite_brick_stairs.json | 6 + .../items/small_andesite_brick_wall.json | 6 + .../create/items/small_andesite_bricks.json | 6 + .../items/small_asurine_brick_slab.json | 6 + .../items/small_asurine_brick_stairs.json | 6 + .../items/small_asurine_brick_wall.json | 6 + .../create/items/small_asurine_bricks.json | 6 + .../items/small_calcite_brick_slab.json | 6 + .../items/small_calcite_brick_stairs.json | 6 + .../items/small_calcite_brick_wall.json | 6 + .../create/items/small_calcite_bricks.json | 6 + .../items/small_crimsite_brick_slab.json | 6 + .../items/small_crimsite_brick_stairs.json | 6 + .../items/small_crimsite_brick_wall.json | 6 + .../create/items/small_crimsite_bricks.json | 6 + .../items/small_deepslate_brick_slab.json | 6 + .../items/small_deepslate_brick_stairs.json | 6 + .../items/small_deepslate_brick_wall.json | 6 + .../create/items/small_deepslate_bricks.json | 6 + .../items/small_diorite_brick_slab.json | 6 + .../items/small_diorite_brick_stairs.json | 6 + .../items/small_diorite_brick_wall.json | 6 + .../create/items/small_diorite_bricks.json | 6 + .../items/small_dripstone_brick_slab.json | 6 + .../items/small_dripstone_brick_stairs.json | 6 + .../items/small_dripstone_brick_wall.json | 6 + .../create/items/small_dripstone_bricks.json | 6 + .../items/small_granite_brick_slab.json | 6 + .../items/small_granite_brick_stairs.json | 6 + .../items/small_granite_brick_wall.json | 6 + .../create/items/small_granite_bricks.json | 6 + .../items/small_limestone_brick_slab.json | 6 + .../items/small_limestone_brick_stairs.json | 6 + .../items/small_limestone_brick_wall.json | 6 + .../create/items/small_limestone_bricks.json | 6 + .../create/items/small_ochrum_brick_slab.json | 6 + .../items/small_ochrum_brick_stairs.json | 6 + .../create/items/small_ochrum_brick_wall.json | 6 + .../create/items/small_ochrum_bricks.json | 6 + .../create/items/small_rose_quartz_tiles.json | 6 + .../items/small_scorchia_brick_slab.json | 6 + .../items/small_scorchia_brick_stairs.json | 6 + .../items/small_scorchia_brick_wall.json | 6 + .../create/items/small_scorchia_bricks.json | 6 + .../create/items/small_scoria_brick_slab.json | 6 + .../items/small_scoria_brick_stairs.json | 6 + .../create/items/small_scoria_brick_wall.json | 6 + .../create/items/small_scoria_bricks.json | 6 + .../create/items/small_tuff_brick_slab.json | 6 + .../create/items/small_tuff_brick_stairs.json | 6 + .../create/items/small_tuff_brick_wall.json | 6 + .../create/items/small_tuff_bricks.json | 6 + .../items/small_veridium_brick_slab.json | 6 + .../items/small_veridium_brick_stairs.json | 6 + .../items/small_veridium_brick_wall.json | 6 + .../create/items/small_veridium_bricks.json | 6 + .../assets/create/items/smart_chute.json | 6 + .../assets/create/items/smart_fluid_pipe.json | 6 + .../assets/create/items/speedometer.json | 6 + .../resources/assets/create/items/spout.json | 6 + .../assets/create/items/spruce_window.json | 6 + .../create/items/spruce_window_pane.json | 6 + .../assets/create/items/steam_engine.json | 6 + .../assets/create/items/steam_whistle.json | 6 + .../assets/create/items/sticker.json | 6 + .../items/sticky_mechanical_piston.json | 6 + .../assets/create/items/stock_link.json | 6 + .../assets/create/items/stock_ticker.json | 6 + .../assets/create/items/stockpile_switch.json | 6 + .../assets/create/items/stressometer.json | 6 + .../assets/create/items/sturdy_sheet.json | 6 + .../assets/create/items/super_glue.json | 6 + .../assets/create/items/sweet_roll.json | 6 + .../assets/create/items/tiled_glass.json | 6 + .../assets/create/items/tiled_glass_pane.json | 6 + .../resources/assets/create/items/track.json | 6 + .../assets/create/items/track_observer.json | 6 + .../assets/create/items/track_signal.json | 6 + .../assets/create/items/track_station.json | 6 + .../assets/create/items/train_door.json | 6 + .../assets/create/items/train_trapdoor.json | 6 + .../assets/create/items/transmitter.json | 6 + .../assets/create/items/tree_fertilizer.json | 6 + .../assets/create/items/tuff_pillar.json | 6 + .../assets/create/items/turntable.json | 6 + .../items/unprocessed_obsidian_sheet.json | 6 + .../assets/create/items/veridium.json | 6 + .../assets/create/items/veridium_pillar.json | 6 + .../create/items/vertical_framed_glass.json | 6 + .../items/vertical_framed_glass_pane.json | 6 + .../assets/create/items/vertical_gearbox.json | 6 + .../assets/create/items/wand_of_symmetry.json | 6 + .../assets/create/items/warped_window.json | 6 + .../create/items/warped_window_pane.json | 6 + .../assets/create/items/water_wheel.json | 6 + .../items/waxed_copper_shingle_slab.json | 6 + .../items/waxed_copper_shingle_stairs.json | 6 + .../create/items/waxed_copper_shingles.json | 6 + .../create/items/waxed_copper_tile_slab.json | 6 + .../items/waxed_copper_tile_stairs.json | 6 + .../create/items/waxed_copper_tiles.json | 6 + .../waxed_exposed_copper_shingle_slab.json | 6 + .../waxed_exposed_copper_shingle_stairs.json | 6 + .../items/waxed_exposed_copper_shingles.json | 6 + .../items/waxed_exposed_copper_tile_slab.json | 6 + .../waxed_exposed_copper_tile_stairs.json | 6 + .../items/waxed_exposed_copper_tiles.json | 6 + .../waxed_oxidized_copper_shingle_slab.json | 6 + .../waxed_oxidized_copper_shingle_stairs.json | 6 + .../items/waxed_oxidized_copper_shingles.json | 6 + .../waxed_oxidized_copper_tile_slab.json | 6 + .../waxed_oxidized_copper_tile_stairs.json | 6 + .../items/waxed_oxidized_copper_tiles.json | 6 + .../waxed_weathered_copper_shingle_slab.json | 6 + ...waxed_weathered_copper_shingle_stairs.json | 6 + .../waxed_weathered_copper_shingles.json | 6 + .../waxed_weathered_copper_tile_slab.json | 6 + .../waxed_weathered_copper_tile_stairs.json | 6 + .../items/waxed_weathered_copper_tiles.json | 6 + .../items/weathered_copper_shingle_slab.json | 6 + .../weathered_copper_shingle_stairs.json | 6 + .../items/weathered_copper_shingles.json | 6 + .../items/weathered_copper_tile_slab.json | 6 + .../items/weathered_copper_tile_stairs.json | 6 + .../create/items/weathered_copper_tiles.json | 6 + .../create/items/weathered_iron_block.json | 6 + .../create/items/weathered_iron_window.json | 6 + .../items/weathered_iron_window_pane.json | 6 + .../assets/create/items/weighted_ejector.json | 6 + .../assets/create/items/wheat_flour.json | 6 + .../resources/assets/create/items/whisk.json | 6 + .../assets/create/items/white_postbox.json | 6 + .../assets/create/items/white_sail.json | 6 + .../assets/create/items/white_seat.json | 6 + .../create/items/white_table_cloth.json | 6 + .../assets/create/items/white_toolbox.json | 6 + .../create/items/white_valve_handle.json | 6 + .../assets/create/items/windmill_bearing.json | 6 + .../assets/create/items/wooden_bracket.json | 6 + .../resources/assets/create/items/wrench.json | 6 + .../assets/create/items/yellow_postbox.json | 6 + .../assets/create/items/yellow_seat.json | 6 + .../create/items/yellow_table_cloth.json | 6 + .../assets/create/items/yellow_toolbox.json | 6 + .../create/items/yellow_valve_handle.json | 6 + .../assets/create/items/zinc_block.json | 6 + .../assets/create/items/zinc_ingot.json | 6 + .../assets/create/items/zinc_nugget.json | 6 + .../assets/create/items/zinc_ore.json | 6 + .../resources/assets/create/lang/en_ud.json | 169 +- .../resources/assets/create/lang/en_us.json | 5 +- .../assets/create/models/block/chocolate.json | 5 - .../create/models/block/fluid_pipe/d_x.json | 36 +- .../create/models/block/fluid_pipe/d_y.json | 36 +- .../create/models/block/fluid_pipe/d_z.json | 36 +- .../create/models/block/fluid_pipe/l_x.json | 36 +- .../create/models/block/fluid_pipe/l_y.json | 36 +- .../create/models/block/fluid_pipe/l_z.json | 36 +- .../create/models/block/fluid_pipe/ld_x.json | 36 +- .../create/models/block/fluid_pipe/ld_y.json | 36 +- .../create/models/block/fluid_pipe/ld_z.json | 36 +- .../create/models/block/fluid_pipe/lr_x.json | 36 +- .../create/models/block/fluid_pipe/lr_y.json | 36 +- .../create/models/block/fluid_pipe/lr_z.json | 36 +- .../create/models/block/fluid_pipe/lu_x.json | 36 +- .../create/models/block/fluid_pipe/lu_y.json | 36 +- .../create/models/block/fluid_pipe/lu_z.json | 36 +- .../create/models/block/fluid_pipe/r_x.json | 36 +- .../create/models/block/fluid_pipe/r_y.json | 36 +- .../create/models/block/fluid_pipe/r_z.json | 36 +- .../create/models/block/fluid_pipe/rd_x.json | 36 +- .../create/models/block/fluid_pipe/rd_y.json | 36 +- .../create/models/block/fluid_pipe/rd_z.json | 36 +- .../create/models/block/fluid_pipe/ru_x.json | 36 +- .../create/models/block/fluid_pipe/ru_y.json | 36 +- .../create/models/block/fluid_pipe/ru_z.json | 36 +- .../create/models/block/fluid_pipe/u_x.json | 36 +- .../create/models/block/fluid_pipe/u_y.json | 36 +- .../create/models/block/fluid_pipe/u_z.json | 36 +- .../create/models/block/fluid_pipe/ud_x.json | 36 +- .../create/models/block/fluid_pipe/ud_y.json | 36 +- .../create/models/block/fluid_pipe/ud_z.json | 36 +- .../assets/create/models/block/honey.json | 5 - .../create/models/item/acacia_window.json | 3 - .../models/item/andesite_alloy_block.json | 3 - .../create/models/item/andesite_casing.json | 3 - .../create/models/item/andesite_pillar.json | 3 - .../create/models/item/asurine_pillar.json | 3 - .../create/models/item/bamboo_window.json | 3 - .../create/models/item/birch_window.json | 3 - .../assets/create/models/item/black_seat.json | 3 - .../models/item/black_valve_handle.json | 3 - .../assets/create/models/item/blue_seat.json | 3 - .../create/models/item/blue_valve_handle.json | 3 - .../models/item/bound_cardboard_block.json | 3 - .../create/models/item/brass_block.json | 3 - .../create/models/item/brass_casing.json | 3 - .../assets/create/models/item/brown_seat.json | 3 - .../models/item/brown_valve_handle.json | 3 - .../create/models/item/calcite_pillar.json | 3 - .../create/models/item/cardboard_block.json | 3 - .../create/models/item/cardboard_boots.json | 62 - .../item/cardboard_boots_amethyst_trim.json | 7 - .../item/cardboard_boots_copper_trim.json | 7 - .../item/cardboard_boots_diamond_trim.json | 7 - .../item/cardboard_boots_emerald_trim.json | 7 - .../item/cardboard_boots_gold_trim.json | 7 - .../item/cardboard_boots_iron_trim.json | 7 - .../item/cardboard_boots_lapis_trim.json | 7 - .../item/cardboard_boots_netherite_trim.json | 7 - .../item/cardboard_boots_quartz_trim.json | 7 - .../item/cardboard_boots_redstone_trim.json | 7 - .../models/item/cardboard_chestplate.json | 62 - .../cardboard_chestplate_amethyst_trim.json | 7 - .../cardboard_chestplate_copper_trim.json | 7 - .../cardboard_chestplate_diamond_trim.json | 7 - .../cardboard_chestplate_emerald_trim.json | 7 - .../item/cardboard_chestplate_gold_trim.json | 7 - .../item/cardboard_chestplate_iron_trim.json | 7 - .../item/cardboard_chestplate_lapis_trim.json | 7 - .../cardboard_chestplate_netherite_trim.json | 7 - .../cardboard_chestplate_quartz_trim.json | 7 - .../cardboard_chestplate_redstone_trim.json | 7 - .../create/models/item/cardboard_helmet.json | 62 - .../item/cardboard_helmet_amethyst_trim.json | 7 - .../item/cardboard_helmet_copper_trim.json | 7 - .../item/cardboard_helmet_diamond_trim.json | 7 - .../item/cardboard_helmet_emerald_trim.json | 7 - .../item/cardboard_helmet_gold_trim.json | 7 - .../item/cardboard_helmet_iron_trim.json | 7 - .../item/cardboard_helmet_lapis_trim.json | 7 - .../item/cardboard_helmet_netherite_trim.json | 7 - .../item/cardboard_helmet_quartz_trim.json | 7 - .../item/cardboard_helmet_redstone_trim.json | 7 - .../models/item/cardboard_leggings.json | 62 - .../cardboard_leggings_amethyst_trim.json | 7 - .../item/cardboard_leggings_copper_trim.json | 7 - .../item/cardboard_leggings_diamond_trim.json | 7 - .../item/cardboard_leggings_emerald_trim.json | 7 - .../item/cardboard_leggings_gold_trim.json | 7 - .../item/cardboard_leggings_iron_trim.json | 7 - .../item/cardboard_leggings_lapis_trim.json | 7 - .../cardboard_leggings_netherite_trim.json | 7 - .../item/cardboard_leggings_quartz_trim.json | 7 - .../cardboard_leggings_redstone_trim.json | 7 - .../create/models/item/cherry_window.json | 3 - .../assets/create/models/item/cogwheel.json | 3 - .../create/models/item/copper_casing.json | 3 - .../models/item/copper_shingle_slab.json | 3 - .../models/item/copper_shingle_stairs.json | 3 - .../create/models/item/copper_shingles.json | 3 - .../create/models/item/copper_tile_slab.json | 3 - .../models/item/copper_tile_stairs.json | 3 - .../create/models/item/copper_tiles.json | 3 - .../models/item/copper_valve_handle.json | 3 - .../create/models/item/crimsite_pillar.json | 3 - .../create/models/item/crimson_window.json | 3 - .../create/models/item/cut_andesite.json | 3 - .../models/item/cut_andesite_brick_slab.json | 3 - .../item/cut_andesite_brick_stairs.json | 3 - .../models/item/cut_andesite_bricks.json | 3 - .../create/models/item/cut_andesite_slab.json | 3 - .../models/item/cut_andesite_stairs.json | 3 - .../create/models/item/cut_asurine.json | 3 - .../models/item/cut_asurine_brick_slab.json | 3 - .../models/item/cut_asurine_brick_stairs.json | 3 - .../models/item/cut_asurine_bricks.json | 3 - .../create/models/item/cut_asurine_slab.json | 3 - .../models/item/cut_asurine_stairs.json | 3 - .../create/models/item/cut_calcite.json | 3 - .../models/item/cut_calcite_brick_slab.json | 3 - .../models/item/cut_calcite_brick_stairs.json | 3 - .../models/item/cut_calcite_bricks.json | 3 - .../create/models/item/cut_calcite_slab.json | 3 - .../models/item/cut_calcite_stairs.json | 3 - .../create/models/item/cut_crimsite.json | 3 - .../models/item/cut_crimsite_brick_slab.json | 3 - .../item/cut_crimsite_brick_stairs.json | 3 - .../models/item/cut_crimsite_bricks.json | 3 - .../create/models/item/cut_crimsite_slab.json | 3 - .../models/item/cut_crimsite_stairs.json | 3 - .../create/models/item/cut_deepslate.json | 3 - .../models/item/cut_deepslate_brick_slab.json | 3 - .../item/cut_deepslate_brick_stairs.json | 3 - .../models/item/cut_deepslate_bricks.json | 3 - .../models/item/cut_deepslate_slab.json | 3 - .../models/item/cut_deepslate_stairs.json | 3 - .../create/models/item/cut_diorite.json | 3 - .../models/item/cut_diorite_brick_slab.json | 3 - .../models/item/cut_diorite_brick_stairs.json | 3 - .../models/item/cut_diorite_bricks.json | 3 - .../create/models/item/cut_diorite_slab.json | 3 - .../models/item/cut_diorite_stairs.json | 3 - .../create/models/item/cut_dripstone.json | 3 - .../models/item/cut_dripstone_brick_slab.json | 3 - .../item/cut_dripstone_brick_stairs.json | 3 - .../models/item/cut_dripstone_bricks.json | 3 - .../models/item/cut_dripstone_slab.json | 3 - .../models/item/cut_dripstone_stairs.json | 3 - .../create/models/item/cut_granite.json | 3 - .../models/item/cut_granite_brick_slab.json | 3 - .../models/item/cut_granite_brick_stairs.json | 3 - .../models/item/cut_granite_bricks.json | 3 - .../create/models/item/cut_granite_slab.json | 3 - .../models/item/cut_granite_stairs.json | 3 - .../create/models/item/cut_limestone.json | 3 - .../models/item/cut_limestone_brick_slab.json | 3 - .../item/cut_limestone_brick_stairs.json | 3 - .../models/item/cut_limestone_bricks.json | 3 - .../models/item/cut_limestone_slab.json | 3 - .../models/item/cut_limestone_stairs.json | 3 - .../assets/create/models/item/cut_ochrum.json | 3 - .../models/item/cut_ochrum_brick_slab.json | 3 - .../models/item/cut_ochrum_brick_stairs.json | 3 - .../create/models/item/cut_ochrum_bricks.json | 3 - .../create/models/item/cut_ochrum_slab.json | 3 - .../create/models/item/cut_ochrum_stairs.json | 3 - .../create/models/item/cut_scorchia.json | 3 - .../models/item/cut_scorchia_brick_slab.json | 3 - .../item/cut_scorchia_brick_stairs.json | 3 - .../models/item/cut_scorchia_bricks.json | 3 - .../create/models/item/cut_scorchia_slab.json | 3 - .../models/item/cut_scorchia_stairs.json | 3 - .../assets/create/models/item/cut_scoria.json | 3 - .../models/item/cut_scoria_brick_slab.json | 3 - .../models/item/cut_scoria_brick_stairs.json | 3 - .../create/models/item/cut_scoria_bricks.json | 3 - .../create/models/item/cut_scoria_slab.json | 3 - .../create/models/item/cut_scoria_stairs.json | 3 - .../assets/create/models/item/cut_tuff.json | 3 - .../models/item/cut_tuff_brick_slab.json | 3 - .../models/item/cut_tuff_brick_stairs.json | 3 - .../create/models/item/cut_tuff_bricks.json | 3 - .../create/models/item/cut_tuff_slab.json | 3 - .../create/models/item/cut_tuff_stairs.json | 3 - .../create/models/item/cut_veridium.json | 3 - .../models/item/cut_veridium_brick_slab.json | 3 - .../item/cut_veridium_brick_stairs.json | 3 - .../models/item/cut_veridium_bricks.json | 3 - .../create/models/item/cut_veridium_slab.json | 3 - .../models/item/cut_veridium_stairs.json | 3 - .../assets/create/models/item/cyan_seat.json | 3 - .../create/models/item/cyan_valve_handle.json | 3 - .../create/models/item/dark_oak_window.json | 3 - .../create/models/item/deepslate_pillar.json | 3 - .../models/item/deepslate_zinc_ore.json | 3 - .../create/models/item/diorite_pillar.json | 3 - .../create/models/item/dripstone_pillar.json | 3 - .../create/models/item/experience_block.json | 3 - .../item/exposed_copper_shingle_slab.json | 3 - .../item/exposed_copper_shingle_stairs.json | 3 - .../models/item/exposed_copper_shingles.json | 3 - .../models/item/exposed_copper_tile_slab.json | 3 - .../item/exposed_copper_tile_stairs.json | 3 - .../models/item/exposed_copper_tiles.json | 3 - .../models/item/framed_glass_trapdoor.json | 3 - .../create/models/item/granite_pillar.json | 3 - .../assets/create/models/item/gray_seat.json | 3 - .../create/models/item/gray_valve_handle.json | 3 - .../assets/create/models/item/green_seat.json | 3 - .../models/item/green_valve_handle.json | 3 - .../models/item/industrial_iron_block.json | 3 - .../models/item/industrial_iron_window.json | 3 - .../assets/create/models/item/item_drain.json | 3 - .../assets/create/models/item/item_vault.json | 3 - .../create/models/item/jungle_window.json | 3 - .../create/models/item/large_cogwheel.json | 3 - .../create/models/item/layered_andesite.json | 3 - .../create/models/item/layered_asurine.json | 3 - .../create/models/item/layered_calcite.json | 3 - .../create/models/item/layered_crimsite.json | 3 - .../create/models/item/layered_deepslate.json | 3 - .../create/models/item/layered_diorite.json | 3 - .../create/models/item/layered_dripstone.json | 3 - .../create/models/item/layered_granite.json | 3 - .../create/models/item/layered_limestone.json | 3 - .../create/models/item/layered_ochrum.json | 3 - .../create/models/item/layered_scorchia.json | 3 - .../create/models/item/layered_scoria.json | 3 - .../create/models/item/layered_tuff.json | 3 - .../create/models/item/layered_veridium.json | 3 - .../create/models/item/light_blue_seat.json | 3 - .../models/item/light_blue_valve_handle.json | 3 - .../create/models/item/light_gray_seat.json | 3 - .../models/item/light_gray_valve_handle.json | 3 - .../assets/create/models/item/lime_seat.json | 3 - .../create/models/item/lime_valve_handle.json | 3 - .../create/models/item/limestone_pillar.json | 3 - .../create/models/item/linear_chassis.json | 3 - .../create/models/item/magenta_seat.json | 3 - .../models/item/magenta_valve_handle.json | 3 - .../create/models/item/mangrove_window.json | 3 - .../create/models/item/mechanical_plough.json | 3 - .../assets/create/models/item/oak_window.json | 3 - .../create/models/item/ochrum_pillar.json | 3 - .../create/models/item/orange_seat.json | 3 - .../models/item/orange_valve_handle.json | 3 - .../models/item/ornate_iron_window.json | 3 - .../item/oxidized_copper_shingle_slab.json | 3 - .../item/oxidized_copper_shingle_stairs.json | 3 - .../models/item/oxidized_copper_shingles.json | 3 - .../item/oxidized_copper_tile_slab.json | 3 - .../item/oxidized_copper_tile_stairs.json | 3 - .../models/item/oxidized_copper_tiles.json | 3 - .../assets/create/models/item/pink_seat.json | 3 - .../create/models/item/pink_valve_handle.json | 3 - .../models/item/piston_extension_pole.json | 3 - .../assets/create/models/item/placard.json | 3 - .../models/item/polished_cut_andesite.json | 3 - .../item/polished_cut_andesite_slab.json | 3 - .../item/polished_cut_andesite_stairs.json | 3 - .../models/item/polished_cut_asurine.json | 3 - .../item/polished_cut_asurine_slab.json | 3 - .../item/polished_cut_asurine_stairs.json | 3 - .../models/item/polished_cut_calcite.json | 3 - .../item/polished_cut_calcite_slab.json | 3 - .../item/polished_cut_calcite_stairs.json | 3 - .../models/item/polished_cut_crimsite.json | 3 - .../item/polished_cut_crimsite_slab.json | 3 - .../item/polished_cut_crimsite_stairs.json | 3 - .../models/item/polished_cut_deepslate.json | 3 - .../item/polished_cut_deepslate_slab.json | 3 - .../item/polished_cut_deepslate_stairs.json | 3 - .../models/item/polished_cut_diorite.json | 3 - .../item/polished_cut_diorite_slab.json | 3 - .../item/polished_cut_diorite_stairs.json | 3 - .../models/item/polished_cut_dripstone.json | 3 - .../item/polished_cut_dripstone_slab.json | 3 - .../item/polished_cut_dripstone_stairs.json | 3 - .../models/item/polished_cut_granite.json | 3 - .../item/polished_cut_granite_slab.json | 3 - .../item/polished_cut_granite_stairs.json | 3 - .../models/item/polished_cut_limestone.json | 3 - .../item/polished_cut_limestone_slab.json | 3 - .../item/polished_cut_limestone_stairs.json | 3 - .../models/item/polished_cut_ochrum.json | 3 - .../models/item/polished_cut_ochrum_slab.json | 3 - .../item/polished_cut_ochrum_stairs.json | 3 - .../models/item/polished_cut_scorchia.json | 3 - .../item/polished_cut_scorchia_slab.json | 3 - .../item/polished_cut_scorchia_stairs.json | 3 - .../models/item/polished_cut_scoria.json | 3 - .../models/item/polished_cut_scoria_slab.json | 3 - .../item/polished_cut_scoria_stairs.json | 3 - .../create/models/item/polished_cut_tuff.json | 3 - .../models/item/polished_cut_tuff_slab.json | 3 - .../models/item/polished_cut_tuff_stairs.json | 3 - .../models/item/polished_cut_veridium.json | 3 - .../item/polished_cut_veridium_slab.json | 3 - .../item/polished_cut_veridium_stairs.json | 3 - .../create/models/item/powered_latch.json | 3 - .../create/models/item/pulse_extender.json | 2 +- .../create/models/item/pulse_repeater.json | 2 +- .../create/models/item/pulse_timer.json | 2 +- .../create/models/item/purple_seat.json | 3 - .../models/item/purple_valve_handle.json | 3 - .../create/models/item/railway_casing.json | 3 - .../create/models/item/raw_zinc_block.json | 3 - .../assets/create/models/item/red_seat.json | 3 - .../create/models/item/red_valve_handle.json | 3 - .../models/item/refined_radiance_casing.json | 3 - .../create/models/item/rose_quartz_block.json | 3 - .../create/models/item/rose_quartz_lamp.json | 3 - .../create/models/item/rose_quartz_tiles.json | 3 - .../assets/create/models/item/sail_frame.json | 3 - .../create/models/item/schematic_table.json | 3 - .../create/models/item/scorchia_pillar.json | 3 - .../create/models/item/scoria_pillar.json | 3 - .../models/item/secondary_linear_chassis.json | 3 - .../models/item/shadow_steel_casing.json | 3 - .../assets/create/models/item/shaft.json | 3 - .../item/small_andesite_brick_slab.json | 3 - .../item/small_andesite_brick_stairs.json | 3 - .../models/item/small_andesite_bricks.json | 3 - .../models/item/small_asurine_brick_slab.json | 3 - .../item/small_asurine_brick_stairs.json | 3 - .../models/item/small_asurine_bricks.json | 3 - .../models/item/small_calcite_brick_slab.json | 3 - .../item/small_calcite_brick_stairs.json | 3 - .../models/item/small_calcite_bricks.json | 3 - .../item/small_crimsite_brick_slab.json | 3 - .../item/small_crimsite_brick_stairs.json | 3 - .../models/item/small_crimsite_bricks.json | 3 - .../item/small_deepslate_brick_slab.json | 3 - .../item/small_deepslate_brick_stairs.json | 3 - .../models/item/small_deepslate_bricks.json | 3 - .../models/item/small_diorite_brick_slab.json | 3 - .../item/small_diorite_brick_stairs.json | 3 - .../models/item/small_diorite_bricks.json | 3 - .../item/small_dripstone_brick_slab.json | 3 - .../item/small_dripstone_brick_stairs.json | 3 - .../models/item/small_dripstone_bricks.json | 3 - .../models/item/small_granite_brick_slab.json | 3 - .../item/small_granite_brick_stairs.json | 3 - .../models/item/small_granite_bricks.json | 3 - .../item/small_limestone_brick_slab.json | 3 - .../item/small_limestone_brick_stairs.json | 3 - .../models/item/small_limestone_bricks.json | 3 - .../models/item/small_ochrum_brick_slab.json | 3 - .../item/small_ochrum_brick_stairs.json | 3 - .../models/item/small_ochrum_bricks.json | 3 - .../models/item/small_rose_quartz_tiles.json | 3 - .../item/small_scorchia_brick_slab.json | 3 - .../item/small_scorchia_brick_stairs.json | 3 - .../models/item/small_scorchia_bricks.json | 3 - .../models/item/small_scoria_brick_slab.json | 3 - .../item/small_scoria_brick_stairs.json | 3 - .../models/item/small_scoria_bricks.json | 3 - .../models/item/small_tuff_brick_slab.json | 3 - .../models/item/small_tuff_brick_stairs.json | 3 - .../create/models/item/small_tuff_bricks.json | 3 - .../item/small_veridium_brick_slab.json | 3 - .../item/small_veridium_brick_stairs.json | 3 - .../models/item/small_veridium_bricks.json | 3 - .../create/models/item/spruce_window.json | 3 - .../create/models/item/stock_ticker.json | 3 - .../create/models/item/tiled_glass.json | 3 - .../create/models/item/train_trapdoor.json | 3 - .../create/models/item/tuff_pillar.json | 3 - .../assets/create/models/item/turntable.json | 3 - .../create/models/item/veridium_pillar.json | 3 - .../create/models/item/warped_window.json | 3 - .../item/waxed_copper_shingle_slab.json | 3 - .../item/waxed_copper_shingle_stairs.json | 3 - .../models/item/waxed_copper_shingles.json | 3 - .../models/item/waxed_copper_tile_slab.json | 3 - .../models/item/waxed_copper_tile_stairs.json | 3 - .../models/item/waxed_copper_tiles.json | 3 - .../waxed_exposed_copper_shingle_slab.json | 3 - .../waxed_exposed_copper_shingle_stairs.json | 3 - .../item/waxed_exposed_copper_shingles.json | 3 - .../item/waxed_exposed_copper_tile_slab.json | 3 - .../waxed_exposed_copper_tile_stairs.json | 3 - .../item/waxed_exposed_copper_tiles.json | 3 - .../waxed_oxidized_copper_shingle_slab.json | 3 - .../waxed_oxidized_copper_shingle_stairs.json | 3 - .../item/waxed_oxidized_copper_shingles.json | 3 - .../item/waxed_oxidized_copper_tile_slab.json | 3 - .../waxed_oxidized_copper_tile_stairs.json | 3 - .../item/waxed_oxidized_copper_tiles.json | 3 - .../waxed_weathered_copper_shingle_slab.json | 3 - ...waxed_weathered_copper_shingle_stairs.json | 3 - .../item/waxed_weathered_copper_shingles.json | 3 - .../waxed_weathered_copper_tile_slab.json | 3 - .../waxed_weathered_copper_tile_stairs.json | 3 - .../item/waxed_weathered_copper_tiles.json | 3 - .../item/weathered_copper_shingle_slab.json | 3 - .../item/weathered_copper_shingle_stairs.json | 3 - .../item/weathered_copper_shingles.json | 3 - .../item/weathered_copper_tile_slab.json | 3 - .../item/weathered_copper_tile_stairs.json | 3 - .../models/item/weathered_copper_tiles.json | 3 - .../models/item/weathered_iron_block.json | 3 - .../assets/create/models/item/white_sail.json | 3 - .../assets/create/models/item/white_seat.json | 3 - .../models/item/white_valve_handle.json | 3 - .../create/models/item/yellow_seat.json | 3 - .../models/item/yellow_valve_handle.json | 3 - .../assets/create/models/item/zinc_block.json | 3 - .../assets/create/models/item/zinc_ore.json | 3 - .../.wiki/block_info/copper_backtank.json | 2 +- .../.wiki/block_info/netherite_backtank.json | 2 +- .../create/advancement/andesite_alloy.json | 1 - .../create/advancement/andesite_casing.json | 1 - .../data/create/advancement/anvil_plough.json | 1 - .../create/advancement/arm_blaze_burner.json | 1 - .../create/advancement/arm_many_targets.json | 1 - .../data/create/advancement/backtank.json | 1 - .../data/create/advancement/belt.json | 1 - .../create/advancement/belt_funnel_kiss.json | 1 - .../data/create/advancement/brass.json | 1 - .../data/create/advancement/brass_casing.json | 1 - .../data/create/advancement/burner.json | 1 - .../data/create/advancement/cardboard.json | 1 - .../create/advancement/cardboard_armor.json | 1 - .../advancement/cardboard_armor_trim.json | 1 - .../data/create/advancement/cart_pickup.json | 1 - .../create/advancement/chained_drain.json | 1 - .../create/advancement/chocolate_bucket.json | 1 - .../data/create/advancement/chute.json | 1 - .../create/advancement/clockwork_bearing.json | 1 - .../data/create/advancement/compacting.json | 1 - .../data/create/advancement/conductor.json | 1 - .../advancement/contraption_actors.json | 1 - .../data/create/advancement/copper.json | 1 - .../create/advancement/copper_casing.json | 1 - .../create/advancement/crafter_lazy_000.json | 1 - .../create/advancement/cross_streams.json | 1 - .../advancement/crusher_maxed_0000.json | 1 - .../create/advancement/crushing_wheel.json | 1 - .../data/create/advancement/cuckoo_clock.json | 1 - .../data/create/advancement/deployer.json | 1 - .../create/advancement/display_board_0.json | 1 - .../data/create/advancement/display_link.json | 1 - .../data/create/advancement/diving_suit.json | 1 - .../create/advancement/diving_suit_lava.json | 1 - .../data/create/advancement/drain.json | 1 - .../create/advancement/ejector_maxed.json | 1 - .../data/create/advancement/encased_fan.json | 1 - .../data/create/advancement/extendo_grip.json | 1 - .../create/advancement/extendo_grip_dual.json | 1 - .../create/advancement/factory_gauge.json | 1 - .../create/advancement/fan_processing.json | 1 - .../data/create/advancement/fist_bump.json | 1 - .../data/create/advancement/foods.json | 1 - .../data/create/advancement/frogport.json | 1 - .../data/create/advancement/funnel.json | 1 - .../data/create/advancement/glass_pipe.json | 1 - .../create/advancement/hand_crank_000.json | 1 - .../data/create/advancement/haunted_bell.json | 1 - .../data/create/advancement/honey_drain.json | 1 - .../data/create/advancement/hose_pulley.json | 1 - .../create/advancement/hose_pulley_lava.json | 1 - .../create/advancement/lava_wheel_00000.json | 1 - .../create/advancement/linked_controller.json | 1 - .../data/create/advancement/long_train.json | 1 - .../data/create/advancement/long_travel.json | 1 - .../create/advancement/mechanical_arm.json | 1 - .../advancement/mechanical_crafter.json | 1 - .../create/advancement/mechanical_mixer.json | 1 - .../create/advancement/mechanical_press.json | 1 - .../create/advancement/mechanical_pump_0.json | 1 - .../data/create/advancement/millstone.json | 1 - .../data/create/advancement/musical_arm.json | 1 - .../advancement/package_chute_throw.json | 1 - .../data/create/advancement/packager.json | 1 - .../data/create/advancement/pipe_organ.json | 1 - .../portable_storage_interface.json | 1 - .../create/advancement/potato_cannon.json | 1 - .../advancement/potato_cannon_collide.json | 1 - .../advancement/precision_mechanism.json | 1 - .../data/create/advancement/pulley_maxed.json | 1 - ...om_zinc.json => iron_chain_from_zinc.json} | 4 +- .../data/create/advancement/red_signal.json | 1 - .../data/create/advancement/root.json | 1 - .../data/create/advancement/rose_quartz.json | 1 - .../create/advancement/saw_processing.json | 1 - .../create/advancement/self_deploying.json | 1 - .../create/advancement/shifting_gears.json | 1 - .../create/advancement/speed_controller.json | 1 - .../data/create/advancement/spout.json | 1 - .../data/create/advancement/steam_engine.json | 1 - .../advancement/steam_engine_maxed.json | 1 - .../create/advancement/steam_whistle.json | 1 - .../data/create/advancement/stock_ticker.json | 1 - .../data/create/advancement/stressometer.json | 1 - .../advancement/stressometer_maxed.json | 1 - .../data/create/advancement/sturdy_sheet.json | 1 - .../data/create/advancement/super_glue.json | 1 - .../create/advancement/table_cloth_shop.json | 1 - .../data/create/advancement/track_0.json | 1 - .../advancement/track_crafting_factory.json | 1 - .../data/create/advancement/track_signal.json | 1 - .../data/create/advancement/train.json | 1 - .../create/advancement/train_casing_00.json | 1 - .../data/create/advancement/train_crash.json | 1 - .../advancement/train_crash_backwards.json | 1 - .../data/create/advancement/train_portal.json | 1 - .../create/advancement/train_roadkill.json | 1 - .../create/advancement/train_whistle.json | 1 - .../data/create/advancement/water_supply.json | 1 - .../data/create/advancement/water_wheel.json | 1 - .../data/create/advancement/windmill.json | 1 - .../create/advancement/windmill_maxed.json | 1 - .../create/advancement/wrench_goggles.json | 1 - .../type/enchanted_golden_apple.json | 48 - .../potato_projectile/type/pufferfish.json | 38 - .../type/suspicious_stew.json | 1 - .../data/create/curios/entities/players.json | 8 - .../create/enchantment/potato_recovery.json | 2 +- .../loot_table/blocks/acacia_window.json | 1 - .../loot_table/blocks/acacia_window_pane.json | 1 - .../blocks/adjustable_chain_gearshift.json | 1 - .../loot_table/blocks/analog_lever.json | 1 - .../blocks/andesite_alloy_block.json | 1 - .../loot_table/blocks/andesite_bars.json | 1 - .../blocks/andesite_belt_funnel.json | 1 - .../loot_table/blocks/andesite_casing.json | 1 - .../loot_table/blocks/andesite_door.json | 1 - .../blocks/andesite_encased_cogwheel.json | 1 - .../andesite_encased_large_cogwheel.json | 1 - .../blocks/andesite_encased_shaft.json | 1 - .../loot_table/blocks/andesite_funnel.json | 1 - .../loot_table/blocks/andesite_ladder.json | 1 - .../loot_table/blocks/andesite_pillar.json | 1 - .../blocks/andesite_scaffolding.json | 1 - .../blocks/andesite_table_cloth.json | 1 - .../loot_table/blocks/andesite_tunnel.json | 1 - .../create/loot_table/blocks/asurine.json | 1 - .../loot_table/blocks/asurine_pillar.json | 1 - .../loot_table/blocks/bamboo_window.json | 1 - .../loot_table/blocks/bamboo_window_pane.json | 1 - .../data/create/loot_table/blocks/basin.json | 1 - .../data/create/loot_table/blocks/belt.json | 1 - .../loot_table/blocks/birch_window.json | 1 - .../loot_table/blocks/birch_window_pane.json | 1 - .../loot_table/blocks/black_nixie_tube.json | 1 - .../loot_table/blocks/black_postbox.json | 1 - .../create/loot_table/blocks/black_sail.json | 1 - .../create/loot_table/blocks/black_seat.json | 1 - .../loot_table/blocks/black_table_cloth.json | 1 - .../loot_table/blocks/black_toolbox.json | 1 - .../loot_table/blocks/black_valve_handle.json | 1 - .../loot_table/blocks/blaze_burner.json | 1 - .../loot_table/blocks/blue_nixie_tube.json | 1 - .../loot_table/blocks/blue_postbox.json | 1 - .../create/loot_table/blocks/blue_sail.json | 1 - .../create/loot_table/blocks/blue_seat.json | 1 - .../loot_table/blocks/blue_table_cloth.json | 1 - .../loot_table/blocks/blue_toolbox.json | 1 - .../loot_table/blocks/blue_valve_handle.json | 1 - .../blocks/bound_cardboard_block.json | 2 - .../create/loot_table/blocks/brass_bars.json | 1 - .../loot_table/blocks/brass_belt_funnel.json | 1 - .../create/loot_table/blocks/brass_block.json | 1 - .../loot_table/blocks/brass_casing.json | 1 - .../create/loot_table/blocks/brass_door.json | 1 - .../blocks/brass_encased_cogwheel.json | 1 - .../blocks/brass_encased_large_cogwheel.json | 1 - .../blocks/brass_encased_shaft.json | 1 - .../loot_table/blocks/brass_funnel.json | 1 - .../loot_table/blocks/brass_ladder.json | 1 - .../loot_table/blocks/brass_scaffolding.json | 1 - .../loot_table/blocks/brass_table_cloth.json | 1 - .../loot_table/blocks/brass_tunnel.json | 1 - .../loot_table/blocks/brown_nixie_tube.json | 1 - .../loot_table/blocks/brown_postbox.json | 1 - .../create/loot_table/blocks/brown_sail.json | 1 - .../create/loot_table/blocks/brown_seat.json | 1 - .../loot_table/blocks/brown_table_cloth.json | 1 - .../loot_table/blocks/brown_toolbox.json | 1 - .../loot_table/blocks/brown_valve_handle.json | 1 - .../loot_table/blocks/calcite_pillar.json | 1 - .../loot_table/blocks/cardboard_block.json | 1 - .../loot_table/blocks/cart_assembler.json | 1 - .../loot_table/blocks/chain_conveyor.json | 1 - .../loot_table/blocks/cherry_window.json | 1 - .../loot_table/blocks/cherry_window_pane.json | 1 - .../data/create/loot_table/blocks/chute.json | 1 - .../loot_table/blocks/clockwork_bearing.json | 1 - .../data/create/loot_table/blocks/clutch.json | 1 - .../create/loot_table/blocks/cogwheel.json | 1 - .../loot_table/blocks/content_observer.json | 1 - .../blocks/contraption_controls.json | 1 - .../loot_table/blocks/controller_rail.json | 1 - .../create/loot_table/blocks/controls.json | 1 - .../loot_table/blocks/copper_backtank.json | 1 - .../create/loot_table/blocks/copper_bars.json | 1 - .../loot_table/blocks/copper_casing.json | 1 - .../create/loot_table/blocks/copper_door.json | 1 - .../loot_table/blocks/copper_ladder.json | 1 - .../loot_table/blocks/copper_scaffolding.json | 1 - .../blocks/copper_shingle_slab.json | 2 - .../blocks/copper_shingle_stairs.json | 1 - .../loot_table/blocks/copper_shingles.json | 1 - .../loot_table/blocks/copper_table_cloth.json | 1 - .../loot_table/blocks/copper_tile_slab.json | 2 - .../loot_table/blocks/copper_tile_stairs.json | 1 - .../loot_table/blocks/copper_tiles.json | 1 - .../blocks/copper_valve_handle.json | 1 - .../loot_table/blocks/copycat_bars.json | 17 - .../loot_table/blocks/copycat_base.json | 17 - .../loot_table/blocks/copycat_panel.json | 1 - .../loot_table/blocks/copycat_step.json | 1 - .../loot_table/blocks/creative_crate.json | 1 - .../blocks/creative_fluid_tank.json | 1 - .../loot_table/blocks/creative_motor.json | 1 - .../create/loot_table/blocks/crimsite.json | 1 - .../loot_table/blocks/crimsite_pillar.json | 1 - .../loot_table/blocks/crimson_window.json | 1 - .../blocks/crimson_window_pane.json | 1 - .../loot_table/blocks/crushing_wheel.json | 1 - .../loot_table/blocks/cuckoo_clock.json | 1 - .../loot_table/blocks/cut_andesite.json | 1 - .../blocks/cut_andesite_brick_slab.json | 2 - .../blocks/cut_andesite_brick_stairs.json | 1 - .../blocks/cut_andesite_brick_wall.json | 1 - .../blocks/cut_andesite_bricks.json | 1 - .../loot_table/blocks/cut_andesite_slab.json | 2 - .../blocks/cut_andesite_stairs.json | 1 - .../loot_table/blocks/cut_andesite_wall.json | 1 - .../create/loot_table/blocks/cut_asurine.json | 1 - .../blocks/cut_asurine_brick_slab.json | 2 - .../blocks/cut_asurine_brick_stairs.json | 1 - .../blocks/cut_asurine_brick_wall.json | 1 - .../loot_table/blocks/cut_asurine_bricks.json | 1 - .../loot_table/blocks/cut_asurine_slab.json | 2 - .../loot_table/blocks/cut_asurine_stairs.json | 1 - .../loot_table/blocks/cut_asurine_wall.json | 1 - .../create/loot_table/blocks/cut_calcite.json | 1 - .../blocks/cut_calcite_brick_slab.json | 2 - .../blocks/cut_calcite_brick_stairs.json | 1 - .../blocks/cut_calcite_brick_wall.json | 1 - .../loot_table/blocks/cut_calcite_bricks.json | 1 - .../loot_table/blocks/cut_calcite_slab.json | 2 - .../loot_table/blocks/cut_calcite_stairs.json | 1 - .../loot_table/blocks/cut_calcite_wall.json | 1 - .../loot_table/blocks/cut_crimsite.json | 1 - .../blocks/cut_crimsite_brick_slab.json | 2 - .../blocks/cut_crimsite_brick_stairs.json | 1 - .../blocks/cut_crimsite_brick_wall.json | 1 - .../blocks/cut_crimsite_bricks.json | 1 - .../loot_table/blocks/cut_crimsite_slab.json | 2 - .../blocks/cut_crimsite_stairs.json | 1 - .../loot_table/blocks/cut_crimsite_wall.json | 1 - .../loot_table/blocks/cut_deepslate.json | 1 - .../blocks/cut_deepslate_brick_slab.json | 2 - .../blocks/cut_deepslate_brick_stairs.json | 1 - .../blocks/cut_deepslate_brick_wall.json | 1 - .../blocks/cut_deepslate_bricks.json | 1 - .../loot_table/blocks/cut_deepslate_slab.json | 2 - .../blocks/cut_deepslate_stairs.json | 1 - .../loot_table/blocks/cut_deepslate_wall.json | 1 - .../create/loot_table/blocks/cut_diorite.json | 1 - .../blocks/cut_diorite_brick_slab.json | 2 - .../blocks/cut_diorite_brick_stairs.json | 1 - .../blocks/cut_diorite_brick_wall.json | 1 - .../loot_table/blocks/cut_diorite_bricks.json | 1 - .../loot_table/blocks/cut_diorite_slab.json | 2 - .../loot_table/blocks/cut_diorite_stairs.json | 1 - .../loot_table/blocks/cut_diorite_wall.json | 1 - .../loot_table/blocks/cut_dripstone.json | 1 - .../blocks/cut_dripstone_brick_slab.json | 2 - .../blocks/cut_dripstone_brick_stairs.json | 1 - .../blocks/cut_dripstone_brick_wall.json | 1 - .../blocks/cut_dripstone_bricks.json | 1 - .../loot_table/blocks/cut_dripstone_slab.json | 2 - .../blocks/cut_dripstone_stairs.json | 1 - .../loot_table/blocks/cut_dripstone_wall.json | 1 - .../create/loot_table/blocks/cut_granite.json | 1 - .../blocks/cut_granite_brick_slab.json | 2 - .../blocks/cut_granite_brick_stairs.json | 1 - .../blocks/cut_granite_brick_wall.json | 1 - .../loot_table/blocks/cut_granite_bricks.json | 1 - .../loot_table/blocks/cut_granite_slab.json | 2 - .../loot_table/blocks/cut_granite_stairs.json | 1 - .../loot_table/blocks/cut_granite_wall.json | 1 - .../loot_table/blocks/cut_limestone.json | 1 - .../blocks/cut_limestone_brick_slab.json | 2 - .../blocks/cut_limestone_brick_stairs.json | 1 - .../blocks/cut_limestone_brick_wall.json | 1 - .../blocks/cut_limestone_bricks.json | 1 - .../loot_table/blocks/cut_limestone_slab.json | 2 - .../blocks/cut_limestone_stairs.json | 1 - .../loot_table/blocks/cut_limestone_wall.json | 1 - .../create/loot_table/blocks/cut_ochrum.json | 1 - .../blocks/cut_ochrum_brick_slab.json | 2 - .../blocks/cut_ochrum_brick_stairs.json | 1 - .../blocks/cut_ochrum_brick_wall.json | 1 - .../loot_table/blocks/cut_ochrum_bricks.json | 1 - .../loot_table/blocks/cut_ochrum_slab.json | 2 - .../loot_table/blocks/cut_ochrum_stairs.json | 1 - .../loot_table/blocks/cut_ochrum_wall.json | 1 - .../loot_table/blocks/cut_scorchia.json | 1 - .../blocks/cut_scorchia_brick_slab.json | 2 - .../blocks/cut_scorchia_brick_stairs.json | 1 - .../blocks/cut_scorchia_brick_wall.json | 1 - .../blocks/cut_scorchia_bricks.json | 1 - .../loot_table/blocks/cut_scorchia_slab.json | 2 - .../blocks/cut_scorchia_stairs.json | 1 - .../loot_table/blocks/cut_scorchia_wall.json | 1 - .../create/loot_table/blocks/cut_scoria.json | 1 - .../blocks/cut_scoria_brick_slab.json | 2 - .../blocks/cut_scoria_brick_stairs.json | 1 - .../blocks/cut_scoria_brick_wall.json | 1 - .../loot_table/blocks/cut_scoria_bricks.json | 1 - .../loot_table/blocks/cut_scoria_slab.json | 2 - .../loot_table/blocks/cut_scoria_stairs.json | 1 - .../loot_table/blocks/cut_scoria_wall.json | 1 - .../create/loot_table/blocks/cut_tuff.json | 1 - .../blocks/cut_tuff_brick_slab.json | 2 - .../blocks/cut_tuff_brick_stairs.json | 1 - .../blocks/cut_tuff_brick_wall.json | 1 - .../loot_table/blocks/cut_tuff_bricks.json | 1 - .../loot_table/blocks/cut_tuff_slab.json | 2 - .../loot_table/blocks/cut_tuff_stairs.json | 1 - .../loot_table/blocks/cut_tuff_wall.json | 1 - .../loot_table/blocks/cut_veridium.json | 1 - .../blocks/cut_veridium_brick_slab.json | 2 - .../blocks/cut_veridium_brick_stairs.json | 1 - .../blocks/cut_veridium_brick_wall.json | 1 - .../blocks/cut_veridium_bricks.json | 1 - .../loot_table/blocks/cut_veridium_slab.json | 2 - .../blocks/cut_veridium_stairs.json | 1 - .../loot_table/blocks/cut_veridium_wall.json | 1 - .../loot_table/blocks/cyan_nixie_tube.json | 1 - .../loot_table/blocks/cyan_postbox.json | 1 - .../create/loot_table/blocks/cyan_sail.json | 1 - .../create/loot_table/blocks/cyan_seat.json | 1 - .../loot_table/blocks/cyan_table_cloth.json | 1 - .../loot_table/blocks/cyan_toolbox.json | 1 - .../loot_table/blocks/cyan_valve_handle.json | 1 - .../loot_table/blocks/dark_oak_window.json | 1 - .../blocks/dark_oak_window_pane.json | 1 - .../loot_table/blocks/deepslate_pillar.json | 1 - .../loot_table/blocks/deepslate_zinc_ore.json | 1 - .../create/loot_table/blocks/deployer.json | 1 - .../data/create/loot_table/blocks/depot.json | 1 - .../create/loot_table/blocks/desk_bell.json | 1 - .../loot_table/blocks/diorite_pillar.json | 1 - .../loot_table/blocks/display_board.json | 1 - .../loot_table/blocks/display_link.json | 1 - .../loot_table/blocks/dripstone_pillar.json | 1 - .../loot_table/blocks/elevator_contact.json | 1 - .../loot_table/blocks/elevator_pulley.json | 1 - .../blocks/encased_chain_drive.json | 1 - .../create/loot_table/blocks/encased_fan.json | 1 - .../loot_table/blocks/encased_fluid_pipe.json | 1 - .../loot_table/blocks/experience_block.json | 1 - .../blocks/exposed_copper_shingle_slab.json | 2 - .../blocks/exposed_copper_shingle_stairs.json | 1 - .../blocks/exposed_copper_shingles.json | 1 - .../blocks/exposed_copper_tile_slab.json | 2 - .../blocks/exposed_copper_tile_stairs.json | 1 - .../blocks/exposed_copper_tiles.json | 1 - .../loot_table/blocks/factory_gauge.json | 1 - .../create/loot_table/blocks/fake_track.json | 17 - .../create/loot_table/blocks/fluid_pipe.json | 1 - .../create/loot_table/blocks/fluid_tank.json | 1 - .../create/loot_table/blocks/fluid_valve.json | 1 - .../create/loot_table/blocks/flywheel.json | 1 - .../loot_table/blocks/framed_glass.json | 1 - .../loot_table/blocks/framed_glass_door.json | 1 - .../loot_table/blocks/framed_glass_pane.json | 1 - .../blocks/framed_glass_trapdoor.json | 1 - .../loot_table/blocks/gantry_carriage.json | 1 - .../loot_table/blocks/gantry_shaft.json | 1 - .../create/loot_table/blocks/gearbox.json | 1 - .../create/loot_table/blocks/gearshift.json | 1 - .../loot_table/blocks/glass_fluid_pipe.json | 1 - .../loot_table/blocks/granite_pillar.json | 1 - .../loot_table/blocks/gray_nixie_tube.json | 1 - .../loot_table/blocks/gray_postbox.json | 1 - .../create/loot_table/blocks/gray_sail.json | 1 - .../create/loot_table/blocks/gray_seat.json | 1 - .../loot_table/blocks/gray_table_cloth.json | 1 - .../loot_table/blocks/gray_toolbox.json | 1 - .../loot_table/blocks/gray_valve_handle.json | 1 - .../loot_table/blocks/green_nixie_tube.json | 1 - .../loot_table/blocks/green_postbox.json | 1 - .../create/loot_table/blocks/green_sail.json | 1 - .../create/loot_table/blocks/green_seat.json | 1 - .../loot_table/blocks/green_table_cloth.json | 1 - .../loot_table/blocks/green_toolbox.json | 1 - .../loot_table/blocks/green_valve_handle.json | 1 - .../create/loot_table/blocks/hand_crank.json | 1 - .../loot_table/blocks/haunted_bell.json | 1 - .../blocks/horizontal_framed_glass.json | 1 - .../blocks/horizontal_framed_glass_pane.json | 1 - .../create/loot_table/blocks/hose_pulley.json | 1 - .../blocks/industrial_iron_block.json | 1 - .../blocks/industrial_iron_window.json | 1 - .../blocks/industrial_iron_window_pane.json | 1 - .../create/loot_table/blocks/item_drain.json | 1 - .../create/loot_table/blocks/item_hatch.json | 1 - .../create/loot_table/blocks/item_vault.json | 1 - .../loot_table/blocks/jungle_window.json | 1 - .../loot_table/blocks/jungle_window_pane.json | 1 - .../create/loot_table/blocks/large_bogey.json | 1 - .../loot_table/blocks/large_cogwheel.json | 1 - .../loot_table/blocks/large_water_wheel.json | 1 - .../loot_table/blocks/layered_andesite.json | 1 - .../loot_table/blocks/layered_asurine.json | 1 - .../loot_table/blocks/layered_calcite.json | 1 - .../loot_table/blocks/layered_crimsite.json | 1 - .../loot_table/blocks/layered_deepslate.json | 1 - .../loot_table/blocks/layered_diorite.json | 1 - .../loot_table/blocks/layered_dripstone.json | 1 - .../loot_table/blocks/layered_granite.json | 1 - .../loot_table/blocks/layered_limestone.json | 1 - .../loot_table/blocks/layered_ochrum.json | 1 - .../loot_table/blocks/layered_scorchia.json | 1 - .../loot_table/blocks/layered_scoria.json | 1 - .../loot_table/blocks/layered_tuff.json | 1 - .../loot_table/blocks/layered_veridium.json | 1 - .../loot_table/blocks/lectern_controller.json | 1 - .../blocks/light_blue_nixie_tube.json | 1 - .../loot_table/blocks/light_blue_postbox.json | 1 - .../loot_table/blocks/light_blue_sail.json | 1 - .../loot_table/blocks/light_blue_seat.json | 1 - .../blocks/light_blue_table_cloth.json | 1 - .../loot_table/blocks/light_blue_toolbox.json | 1 - .../blocks/light_blue_valve_handle.json | 1 - .../blocks/light_gray_nixie_tube.json | 1 - .../loot_table/blocks/light_gray_postbox.json | 1 - .../loot_table/blocks/light_gray_sail.json | 1 - .../loot_table/blocks/light_gray_seat.json | 1 - .../blocks/light_gray_table_cloth.json | 1 - .../loot_table/blocks/light_gray_toolbox.json | 1 - .../blocks/light_gray_valve_handle.json | 1 - .../loot_table/blocks/lime_nixie_tube.json | 1 - .../loot_table/blocks/lime_postbox.json | 1 - .../create/loot_table/blocks/lime_sail.json | 1 - .../create/loot_table/blocks/lime_seat.json | 1 - .../loot_table/blocks/lime_table_cloth.json | 1 - .../loot_table/blocks/lime_toolbox.json | 1 - .../loot_table/blocks/lime_valve_handle.json | 1 - .../create/loot_table/blocks/limestone.json | 1 - .../loot_table/blocks/limestone_pillar.json | 1 - .../loot_table/blocks/linear_chassis.json | 1 - .../loot_table/blocks/lit_blaze_burner.json | 1 - .../loot_table/blocks/magenta_nixie_tube.json | 1 - .../loot_table/blocks/magenta_postbox.json | 1 - .../loot_table/blocks/magenta_sail.json | 1 - .../loot_table/blocks/magenta_seat.json | 1 - .../blocks/magenta_table_cloth.json | 1 - .../loot_table/blocks/magenta_toolbox.json | 1 - .../blocks/magenta_valve_handle.json | 1 - .../loot_table/blocks/mangrove_window.json | 1 - .../blocks/mangrove_window_pane.json | 1 - .../loot_table/blocks/mechanical_arm.json | 1 - .../loot_table/blocks/mechanical_bearing.json | 1 - .../loot_table/blocks/mechanical_crafter.json | 1 - .../loot_table/blocks/mechanical_drill.json | 1 - .../blocks/mechanical_harvester.json | 1 - .../loot_table/blocks/mechanical_mixer.json | 1 - .../loot_table/blocks/mechanical_piston.json | 1 - .../blocks/mechanical_piston_head.json | 21 - .../loot_table/blocks/mechanical_plough.json | 1 - .../loot_table/blocks/mechanical_press.json | 1 - .../loot_table/blocks/mechanical_pump.json | 1 - .../loot_table/blocks/mechanical_roller.json | 1 - .../loot_table/blocks/mechanical_saw.json | 1 - .../loot_table/blocks/metal_bracket.json | 1 - .../loot_table/blocks/metal_girder.json | 1 - .../blocks/metal_girder_encased_shaft.json | 2 - .../create/loot_table/blocks/millstone.json | 1 - .../loot_table/blocks/minecart_anchor.json | 17 - .../blocks/mysterious_cuckoo_clock.json | 1 - .../loot_table/blocks/netherite_backtank.json | 1 - .../create/loot_table/blocks/nixie_tube.json | 1 - .../data/create/loot_table/blocks/nozzle.json | 1 - .../create/loot_table/blocks/oak_window.json | 1 - .../loot_table/blocks/oak_window_pane.json | 1 - .../data/create/loot_table/blocks/ochrum.json | 1 - .../loot_table/blocks/ochrum_pillar.json | 1 - .../loot_table/blocks/orange_postbox.json | 1 - .../create/loot_table/blocks/orange_sail.json | 1 - .../create/loot_table/blocks/orange_seat.json | 1 - .../loot_table/blocks/orange_table_cloth.json | 1 - .../loot_table/blocks/orange_toolbox.json | 1 - .../blocks/orange_valve_handle.json | 1 - .../loot_table/blocks/ornate_iron_window.json | 1 - .../blocks/ornate_iron_window_pane.json | 1 - .../blocks/oxidized_copper_shingle_slab.json | 2 - .../oxidized_copper_shingle_stairs.json | 1 - .../blocks/oxidized_copper_shingles.json | 1 - .../blocks/oxidized_copper_tile_slab.json | 2 - .../blocks/oxidized_copper_tile_stairs.json | 1 - .../blocks/oxidized_copper_tiles.json | 1 - .../loot_table/blocks/package_frogport.json | 1 - .../create/loot_table/blocks/packager.json | 1 - .../loot_table/blocks/peculiar_bell.json | 1 - .../loot_table/blocks/pink_nixie_tube.json | 1 - .../loot_table/blocks/pink_postbox.json | 1 - .../create/loot_table/blocks/pink_sail.json | 1 - .../create/loot_table/blocks/pink_seat.json | 1 - .../loot_table/blocks/pink_table_cloth.json | 1 - .../loot_table/blocks/pink_toolbox.json | 1 - .../loot_table/blocks/pink_valve_handle.json | 1 - .../blocks/piston_extension_pole.json | 21 - .../create/loot_table/blocks/placard.json | 1 - .../blocks/polished_cut_andesite.json | 1 - .../blocks/polished_cut_andesite_slab.json | 2 - .../blocks/polished_cut_andesite_stairs.json | 1 - .../blocks/polished_cut_andesite_wall.json | 1 - .../blocks/polished_cut_asurine.json | 1 - .../blocks/polished_cut_asurine_slab.json | 2 - .../blocks/polished_cut_asurine_stairs.json | 1 - .../blocks/polished_cut_asurine_wall.json | 1 - .../blocks/polished_cut_calcite.json | 1 - .../blocks/polished_cut_calcite_slab.json | 2 - .../blocks/polished_cut_calcite_stairs.json | 1 - .../blocks/polished_cut_calcite_wall.json | 1 - .../blocks/polished_cut_crimsite.json | 1 - .../blocks/polished_cut_crimsite_slab.json | 2 - .../blocks/polished_cut_crimsite_stairs.json | 1 - .../blocks/polished_cut_crimsite_wall.json | 1 - .../blocks/polished_cut_deepslate.json | 1 - .../blocks/polished_cut_deepslate_slab.json | 2 - .../blocks/polished_cut_deepslate_stairs.json | 1 - .../blocks/polished_cut_deepslate_wall.json | 1 - .../blocks/polished_cut_diorite.json | 1 - .../blocks/polished_cut_diorite_slab.json | 2 - .../blocks/polished_cut_diorite_stairs.json | 1 - .../blocks/polished_cut_diorite_wall.json | 1 - .../blocks/polished_cut_dripstone.json | 1 - .../blocks/polished_cut_dripstone_slab.json | 2 - .../blocks/polished_cut_dripstone_stairs.json | 1 - .../blocks/polished_cut_dripstone_wall.json | 1 - .../blocks/polished_cut_granite.json | 1 - .../blocks/polished_cut_granite_slab.json | 2 - .../blocks/polished_cut_granite_stairs.json | 1 - .../blocks/polished_cut_granite_wall.json | 1 - .../blocks/polished_cut_limestone.json | 1 - .../blocks/polished_cut_limestone_slab.json | 2 - .../blocks/polished_cut_limestone_stairs.json | 1 - .../blocks/polished_cut_limestone_wall.json | 1 - .../blocks/polished_cut_ochrum.json | 1 - .../blocks/polished_cut_ochrum_slab.json | 2 - .../blocks/polished_cut_ochrum_stairs.json | 1 - .../blocks/polished_cut_ochrum_wall.json | 1 - .../blocks/polished_cut_scorchia.json | 1 - .../blocks/polished_cut_scorchia_slab.json | 2 - .../blocks/polished_cut_scorchia_stairs.json | 1 - .../blocks/polished_cut_scorchia_wall.json | 1 - .../blocks/polished_cut_scoria.json | 1 - .../blocks/polished_cut_scoria_slab.json | 2 - .../blocks/polished_cut_scoria_stairs.json | 1 - .../blocks/polished_cut_scoria_wall.json | 1 - .../loot_table/blocks/polished_cut_tuff.json | 1 - .../blocks/polished_cut_tuff_slab.json | 2 - .../blocks/polished_cut_tuff_stairs.json | 1 - .../blocks/polished_cut_tuff_wall.json | 1 - .../blocks/polished_cut_veridium.json | 1 - .../blocks/polished_cut_veridium_slab.json | 2 - .../blocks/polished_cut_veridium_stairs.json | 1 - .../blocks/polished_cut_veridium_wall.json | 1 - .../blocks/portable_fluid_interface.json | 1 - .../blocks/portable_storage_interface.json | 1 - .../loot_table/blocks/powered_latch.json | 1 - .../loot_table/blocks/powered_shaft.json | 1 - .../blocks/powered_toggle_latch.json | 1 - .../loot_table/blocks/pulley_magnet.json | 17 - .../loot_table/blocks/pulse_extender.json | 1 - .../loot_table/blocks/pulse_repeater.json | 1 - .../create/loot_table/blocks/pulse_timer.json | 1 - .../loot_table/blocks/purple_nixie_tube.json | 1 - .../loot_table/blocks/purple_postbox.json | 1 - .../create/loot_table/blocks/purple_sail.json | 1 - .../create/loot_table/blocks/purple_seat.json | 1 - .../loot_table/blocks/purple_table_cloth.json | 1 - .../loot_table/blocks/purple_toolbox.json | 1 - .../blocks/purple_valve_handle.json | 1 - .../loot_table/blocks/radial_chassis.json | 1 - .../loot_table/blocks/railway_casing.json | 1 - .../loot_table/blocks/raw_zinc_block.json | 1 - .../loot_table/blocks/red_nixie_tube.json | 1 - .../create/loot_table/blocks/red_postbox.json | 1 - .../create/loot_table/blocks/red_sail.json | 1 - .../create/loot_table/blocks/red_seat.json | 1 - .../loot_table/blocks/red_table_cloth.json | 1 - .../create/loot_table/blocks/red_toolbox.json | 1 - .../loot_table/blocks/red_valve_handle.json | 1 - .../loot_table/blocks/redstone_contact.json | 1 - .../loot_table/blocks/redstone_link.json | 1 - .../loot_table/blocks/redstone_requester.json | 1 - .../blocks/refined_radiance_casing.json | 1 - .../create/loot_table/blocks/repackager.json | 1 - .../data/create/loot_table/blocks/rope.json | 17 - .../create/loot_table/blocks/rope_pulley.json | 1 - .../loot_table/blocks/rose_quartz_block.json | 1 - .../loot_table/blocks/rose_quartz_lamp.json | 1 - .../loot_table/blocks/rose_quartz_tiles.json | 1 - .../blocks/rotation_speed_controller.json | 1 - .../create/loot_table/blocks/sail_frame.json | 1 - .../loot_table/blocks/schematic_table.json | 1 - .../loot_table/blocks/schematicannon.json | 1 - .../create/loot_table/blocks/scorchia.json | 1 - .../loot_table/blocks/scorchia_pillar.json | 1 - .../data/create/loot_table/blocks/scoria.json | 1 - .../loot_table/blocks/scoria_pillar.json | 1 - .../blocks/secondary_linear_chassis.json | 1 - .../blocks/sequenced_gearshift.json | 1 - .../blocks/shadow_steel_casing.json | 1 - .../data/create/loot_table/blocks/shaft.json | 1 - .../blocks/small_andesite_brick_slab.json | 2 - .../blocks/small_andesite_brick_stairs.json | 1 - .../blocks/small_andesite_brick_wall.json | 1 - .../blocks/small_andesite_bricks.json | 1 - .../blocks/small_asurine_brick_slab.json | 2 - .../blocks/small_asurine_brick_stairs.json | 1 - .../blocks/small_asurine_brick_wall.json | 1 - .../blocks/small_asurine_bricks.json | 1 - .../create/loot_table/blocks/small_bogey.json | 1 - .../blocks/small_calcite_brick_slab.json | 2 - .../blocks/small_calcite_brick_stairs.json | 1 - .../blocks/small_calcite_brick_wall.json | 1 - .../blocks/small_calcite_bricks.json | 1 - .../blocks/small_crimsite_brick_slab.json | 2 - .../blocks/small_crimsite_brick_stairs.json | 1 - .../blocks/small_crimsite_brick_wall.json | 1 - .../blocks/small_crimsite_bricks.json | 1 - .../blocks/small_deepslate_brick_slab.json | 2 - .../blocks/small_deepslate_brick_stairs.json | 1 - .../blocks/small_deepslate_brick_wall.json | 1 - .../blocks/small_deepslate_bricks.json | 1 - .../blocks/small_diorite_brick_slab.json | 2 - .../blocks/small_diorite_brick_stairs.json | 1 - .../blocks/small_diorite_brick_wall.json | 1 - .../blocks/small_diorite_bricks.json | 1 - .../blocks/small_dripstone_brick_slab.json | 2 - .../blocks/small_dripstone_brick_stairs.json | 1 - .../blocks/small_dripstone_brick_wall.json | 1 - .../blocks/small_dripstone_bricks.json | 1 - .../blocks/small_granite_brick_slab.json | 2 - .../blocks/small_granite_brick_stairs.json | 1 - .../blocks/small_granite_brick_wall.json | 1 - .../blocks/small_granite_bricks.json | 1 - .../blocks/small_limestone_brick_slab.json | 2 - .../blocks/small_limestone_brick_stairs.json | 1 - .../blocks/small_limestone_brick_wall.json | 1 - .../blocks/small_limestone_bricks.json | 1 - .../blocks/small_ochrum_brick_slab.json | 2 - .../blocks/small_ochrum_brick_stairs.json | 1 - .../blocks/small_ochrum_brick_wall.json | 1 - .../blocks/small_ochrum_bricks.json | 1 - .../blocks/small_rose_quartz_tiles.json | 1 - .../blocks/small_scorchia_brick_slab.json | 2 - .../blocks/small_scorchia_brick_stairs.json | 1 - .../blocks/small_scorchia_brick_wall.json | 1 - .../blocks/small_scorchia_bricks.json | 1 - .../blocks/small_scoria_brick_slab.json | 2 - .../blocks/small_scoria_brick_stairs.json | 1 - .../blocks/small_scoria_brick_wall.json | 1 - .../blocks/small_scoria_bricks.json | 1 - .../blocks/small_tuff_brick_slab.json | 2 - .../blocks/small_tuff_brick_stairs.json | 1 - .../blocks/small_tuff_brick_wall.json | 1 - .../loot_table/blocks/small_tuff_bricks.json | 1 - .../blocks/small_veridium_brick_slab.json | 2 - .../blocks/small_veridium_brick_stairs.json | 1 - .../blocks/small_veridium_brick_wall.json | 1 - .../blocks/small_veridium_bricks.json | 1 - .../create/loot_table/blocks/smart_chute.json | 1 - .../loot_table/blocks/smart_fluid_pipe.json | 1 - .../create/loot_table/blocks/speedometer.json | 1 - .../data/create/loot_table/blocks/spout.json | 1 - .../loot_table/blocks/spruce_window.json | 1 - .../loot_table/blocks/spruce_window_pane.json | 1 - .../loot_table/blocks/steam_engine.json | 1 - .../loot_table/blocks/steam_whistle.json | 1 - .../blocks/steam_whistle_extension.json | 17 - .../create/loot_table/blocks/sticker.json | 1 - .../blocks/sticky_mechanical_piston.json | 1 - .../create/loot_table/blocks/stock_link.json | 1 - .../loot_table/blocks/stock_ticker.json | 1 - .../loot_table/blocks/stockpile_switch.json | 1 - .../loot_table/blocks/stressometer.json | 1 - .../create/loot_table/blocks/tiled_glass.json | 1 - .../loot_table/blocks/tiled_glass_pane.json | 1 - .../data/create/loot_table/blocks/track.json | 1 - .../loot_table/blocks/track_observer.json | 1 - .../loot_table/blocks/track_signal.json | 1 - .../loot_table/blocks/track_station.json | 1 - .../create/loot_table/blocks/train_door.json | 1 - .../loot_table/blocks/train_trapdoor.json | 1 - .../create/loot_table/blocks/tuff_pillar.json | 1 - .../create/loot_table/blocks/turntable.json | 1 - .../create/loot_table/blocks/veridium.json | 1 - .../loot_table/blocks/veridium_pillar.json | 1 - .../blocks/vertical_framed_glass.json | 1 - .../blocks/vertical_framed_glass_pane.json | 1 - .../loot_table/blocks/warped_window.json | 1 - .../loot_table/blocks/warped_window_pane.json | 1 - .../create/loot_table/blocks/water_wheel.json | 1 - .../blocks/water_wheel_structure.json | 17 - .../blocks/waxed_copper_shingle_slab.json | 2 - .../blocks/waxed_copper_shingle_stairs.json | 1 - .../blocks/waxed_copper_shingles.json | 1 - .../blocks/waxed_copper_tile_slab.json | 2 - .../blocks/waxed_copper_tile_stairs.json | 1 - .../loot_table/blocks/waxed_copper_tiles.json | 1 - .../waxed_exposed_copper_shingle_slab.json | 2 - .../waxed_exposed_copper_shingle_stairs.json | 1 - .../blocks/waxed_exposed_copper_shingles.json | 1 - .../waxed_exposed_copper_tile_slab.json | 2 - .../waxed_exposed_copper_tile_stairs.json | 1 - .../blocks/waxed_exposed_copper_tiles.json | 1 - .../waxed_oxidized_copper_shingle_slab.json | 2 - .../waxed_oxidized_copper_shingle_stairs.json | 1 - .../waxed_oxidized_copper_shingles.json | 1 - .../waxed_oxidized_copper_tile_slab.json | 2 - .../waxed_oxidized_copper_tile_stairs.json | 1 - .../blocks/waxed_oxidized_copper_tiles.json | 1 - .../waxed_weathered_copper_shingle_slab.json | 2 - ...waxed_weathered_copper_shingle_stairs.json | 1 - .../waxed_weathered_copper_shingles.json | 1 - .../waxed_weathered_copper_tile_slab.json | 2 - .../waxed_weathered_copper_tile_stairs.json | 1 - .../blocks/waxed_weathered_copper_tiles.json | 1 - .../blocks/weathered_copper_shingle_slab.json | 2 - .../weathered_copper_shingle_stairs.json | 1 - .../blocks/weathered_copper_shingles.json | 1 - .../blocks/weathered_copper_tile_slab.json | 2 - .../blocks/weathered_copper_tile_stairs.json | 1 - .../blocks/weathered_copper_tiles.json | 1 - .../blocks/weathered_iron_block.json | 1 - .../blocks/weathered_iron_window.json | 1 - .../blocks/weathered_iron_window_pane.json | 1 - .../loot_table/blocks/weighted_ejector.json | 1 - .../loot_table/blocks/white_nixie_tube.json | 1 - .../loot_table/blocks/white_postbox.json | 1 - .../create/loot_table/blocks/white_sail.json | 1 - .../create/loot_table/blocks/white_seat.json | 1 - .../loot_table/blocks/white_table_cloth.json | 1 - .../loot_table/blocks/white_toolbox.json | 1 - .../loot_table/blocks/white_valve_handle.json | 1 - .../loot_table/blocks/windmill_bearing.json | 1 - .../loot_table/blocks/wooden_bracket.json | 1 - .../loot_table/blocks/yellow_nixie_tube.json | 1 - .../loot_table/blocks/yellow_postbox.json | 1 - .../create/loot_table/blocks/yellow_sail.json | 1 - .../create/loot_table/blocks/yellow_seat.json | 1 - .../loot_table/blocks/yellow_table_cloth.json | 1 - .../loot_table/blocks/yellow_toolbox.json | 1 - .../blocks/yellow_valve_handle.json | 1 - .../create/loot_table/blocks/zinc_block.json | 1 - .../create/loot_table/blocks/zinc_ore.json | 1 - .../data/create/recipe/acacia_window.json | 8 +- .../create/recipe/acacia_window_pane.json | 4 +- ...bars_from_andesite_alloy_stonecutting.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...dder_from_andesite_alloy_stonecutting.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...ding_from_andesite_alloy_stonecutting.json | 4 +- ...loth_from_andesite_alloy_stonecutting.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../data/create/recipe/bamboo_window.json | 8 +- .../create/recipe/bamboo_window_pane.json | 4 +- .../data/create/recipe/birch_window.json | 8 +- .../data/create/recipe/birch_window_pane.json | 4 +- .../blasting/copper_ingot_from_crushed.json | 7 +- .../blasting/gold_ingot_from_crushed.json | 7 +- .../blasting/ingot_aluminium_compat_ic2.json | 6 +- ..._aluminum_compat_immersiveengineering.json | 6 +- ...ngot_lead_compat_immersiveengineering.json | 6 +- .../blasting/ingot_lead_compat_mekanism.json | 6 +- ...ot_nickel_compat_immersiveengineering.json | 6 +- .../ingot_osmium_compat_mekanism.json | 6 +- .../blasting/ingot_silver_compat_ic2.json | 6 +- ...ot_silver_compat_immersiveengineering.json | 6 +- .../recipe/blasting/ingot_tin_compat_ic2.json | 6 +- .../blasting/ingot_tin_compat_mekanism.json | 6 +- .../blasting/ingot_uranium_compat_ic2.json | 6 +- ...t_uranium_compat_immersiveengineering.json | 6 +- .../ingot_uranium_compat_mekanism.json | 6 +- .../blasting/iron_ingot_from_crushed.json | 7 +- .../lead_ingot_compat_oreganized.json | 6 +- .../blasting/lead_ingot_compat_thermal.json | 6 +- .../blasting/nickel_ingot_compat_thermal.json | 6 +- .../silver_ingot_compat_galosphere.json | 6 +- .../silver_ingot_compat_iceandfire.json | 6 +- .../silver_ingot_compat_oreganized.json | 6 +- .../blasting/silver_ingot_compat_thermal.json | 6 +- .../blasting/tin_ingot_compat_thermal.json | 6 +- .../blasting/zinc_ingot_from_crushed.json | 7 +- .../recipe/blasting/zinc_ingot_from_ore.json | 7 +- .../blasting/zinc_ingot_from_raw_ore.json | 7 +- ...s_bars_from_ingots_brass_stonecutting.json | 4 +- ...ladder_from_ingots_brass_stonecutting.json | 4 +- ...olding_from_ingots_brass_stonecutting.json | 4 +- ..._cloth_from_ingots_brass_stonecutting.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../create/recipe/campfire_cooking/bread.json | 7 +- .../data/create/recipe/cherry_window.json | 8 +- .../create/recipe/cherry_window_pane.json | 4 +- .../compacting/andesite_from_flint.json | 16 +- .../create/recipe/compacting/blaze_cake.json | 12 +- .../create/recipe/compacting/chocolate.json | 4 +- .../recipe/compacting/diorite_from_flint.json | 16 +- .../recipe/compacting/granite_from_flint.json | 16 +- .../data/create/recipe/compacting/honey.json | 4 +- .../data/create/recipe/compacting/ice.json | 36 +- ..._bars_from_ingots_copper_stonecutting.json | 4 +- ...adder_from_ingots_copper_stonecutting.json | 4 +- ...lding_from_ingots_copper_stonecutting.json | 4 +- .../create/recipe/copper_shingle_slab.json | 4 +- ...lab_from_copper_shingles_stonecutting.json | 4 +- .../create/recipe/copper_shingle_stairs.json | 4 +- ...irs_from_copper_shingles_stonecutting.json | 5 +- ...ngles_from_ingots_copper_stonecutting.json | 4 +- ...cloth_from_ingots_copper_stonecutting.json | 4 +- .../data/create/recipe/copper_tile_slab.json | 4 +- ...e_slab_from_copper_tiles_stonecutting.json | 4 +- .../create/recipe/copper_tile_stairs.json | 4 +- ...stairs_from_copper_tiles_stonecutting.json | 5 +- ...tiles_from_ingots_copper_stonecutting.json | 4 +- ...t_panel_from_ingots_zinc_stonecutting.json | 4 +- ...at_step_from_ingots_zinc_stonecutting.json | 4 +- .../appliances/attribute_filter_clear.json | 6 +- .../recipe/crafting/appliances/book.json | 18 +- .../crafting/appliances/cardboard_boots.json | 6 +- .../appliances/cardboard_chestplate.json | 6 +- .../crafting/appliances/cardboard_helmet.json | 6 +- .../appliances/cardboard_leggings.json | 6 +- .../crafting/appliances/cardboard_sword.json | 10 +- .../crafting/appliances/chain_from_zinc.json | 21 - .../recipe/crafting/appliances/clipboard.json | 14 +- .../crafting/appliances/clipboard_clear.json | 6 +- .../crafting/appliances/copper_backtank.json | 18 +- .../appliances/copper_diving_boots.json | 10 +- .../appliances/copper_diving_helmet.json | 10 +- .../appliances/crafting_blueprint.json | 10 +- .../recipe/crafting/appliances/dough.json | 10 +- .../crafting/appliances/filter_clear.json | 6 +- .../appliances/iron_chain_from_zinc.json | 15 + .../crafting/appliances/item_frame.json | 10 +- .../appliances/linked_controller.json | 10 +- .../recipe/crafting/appliances/name_tag.json | 14 +- .../appliances/netherite_backtank.json | 13 +- .../netherite_backtank_from_netherite.json | 13 +- .../appliances/netherite_diving_boots.json | 13 +- ...netherite_diving_boots_from_netherite.json | 13 +- .../appliances/netherite_diving_helmet.json | 13 +- ...etherite_diving_helmet_from_netherite.json | 13 +- .../appliances/package_filter_clear.json | 6 +- .../crafting/appliances/schedule_clear.json | 6 +- .../crafting/appliances/slime_ball.json | 10 +- .../crafting/appliances/tree_fertilizer.json | 33 +- ...ed_copper_shingle_slab_from_honeycomb.json | 9 +- ..._copper_shingle_stairs_from_honeycomb.json | 9 +- .../waxed_copper_shingles_from_honeycomb.json | 9 +- ...waxed_copper_tile_slab_from_honeycomb.json | 9 +- ...xed_copper_tile_stairs_from_honeycomb.json | 9 +- .../waxed_copper_tiles_from_honeycomb.json | 9 +- ...ed_copper_shingle_slab_from_honeycomb.json | 9 +- ..._copper_shingle_stairs_from_honeycomb.json | 9 +- ...xposed_copper_shingles_from_honeycomb.json | 9 +- ...posed_copper_tile_slab_from_honeycomb.json | 9 +- ...sed_copper_tile_stairs_from_honeycomb.json | 9 +- ...d_exposed_copper_tiles_from_honeycomb.json | 9 +- ...ed_copper_shingle_slab_from_honeycomb.json | 9 +- ..._copper_shingle_stairs_from_honeycomb.json | 9 +- ...idized_copper_shingles_from_honeycomb.json | 9 +- ...dized_copper_tile_slab_from_honeycomb.json | 9 +- ...zed_copper_tile_stairs_from_honeycomb.json | 9 +- ..._oxidized_copper_tiles_from_honeycomb.json | 9 +- ...ed_copper_shingle_slab_from_honeycomb.json | 9 +- ..._copper_shingle_stairs_from_honeycomb.json | 9 +- ...thered_copper_shingles_from_honeycomb.json | 9 +- ...hered_copper_tile_slab_from_honeycomb.json | 9 +- ...red_copper_tile_stairs_from_honeycomb.json | 9 +- ...weathered_copper_tiles_from_honeycomb.json | 9 +- .../crafting/curiosities/brown_toolbox.json | 18 +- .../recipe/crafting/curiosities/cake.json | 18 +- .../crafting/curiosities/item_copying.json | 3 +- .../curiosities/minecart_coupling.json | 10 +- .../crafting/curiosities/peculiar_bell.json | 10 +- .../crafting/curiosities/toolbox_dyeing.json | 3 +- .../kinetics/adjustable_chain_gearshift.json | 10 +- .../crafting/kinetics/analog_lever.json | 10 +- .../crafting/kinetics/andesite_door.json | 10 +- .../crafting/kinetics/attribute_filter.json | 10 +- .../recipe/crafting/kinetics/basin.json | 6 +- .../crafting/kinetics/belt_connector.json | 6 +- .../recipe/crafting/kinetics/black_seat.json | 9 +- .../kinetics/black_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/blue_seat.json | 9 +- .../kinetics/blue_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/brass_door.json | 10 +- .../recipe/crafting/kinetics/brass_hand.json | 10 +- .../recipe/crafting/kinetics/brown_seat.json | 9 +- .../kinetics/brown_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/cart_assembler.json | 14 +- .../crafting/kinetics/chain_conveyor.json | 9 +- .../recipe/crafting/kinetics/chute.json | 9 +- .../crafting/kinetics/clockwork_bearing.json | 14 +- .../recipe/crafting/kinetics/clutch.json | 14 +- .../recipe/crafting/kinetics/cogwheel.json | 10 +- .../kinetics/contraption_controls.json | 14 +- .../crafting/kinetics/controller_rail.json | 13 +- .../recipe/crafting/kinetics/controls.json | 14 +- .../recipe/crafting/kinetics/copper_door.json | 10 +- .../kinetics/copper_valve_handle.json | 10 +- .../copper_valve_handle_from_others.json | 6 +- .../crafting/kinetics/crafter_slot_cover.json | 6 +- .../crafting/kinetics/cuckoo_clock.json | 14 +- .../recipe/crafting/kinetics/cyan_seat.json | 9 +- .../kinetics/cyan_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/deployer.json | 14 +- .../recipe/crafting/kinetics/depot.json | 10 +- .../crafting/kinetics/display_board.json | 9 +- .../crafting/kinetics/elevator_pulley.json | 14 +- .../crafting/kinetics/empty_blaze_burner.json | 10 +- .../kinetics/encased_chain_drive.json | 18 +- .../encased_chain_drive_from_zinc.json | 18 +- .../recipe/crafting/kinetics/encased_fan.json | 14 +- .../recipe/crafting/kinetics/filter.json | 10 +- .../recipe/crafting/kinetics/fluid_pipe.json | 9 +- .../kinetics/fluid_pipe_vertical.json | 9 +- .../recipe/crafting/kinetics/fluid_tank.json | 10 +- .../recipe/crafting/kinetics/fluid_valve.json | 10 +- .../recipe/crafting/kinetics/flywheel.json | 10 +- .../crafting/kinetics/framed_glass_door.json | 10 +- .../kinetics/framed_glass_trapdoor.json | 10 +- ...urnace_minecart_from_contraption_cart.json | 6 +- .../crafting/kinetics/gantry_carriage.json | 14 +- .../crafting/kinetics/gantry_shaft.json | 9 +- .../recipe/crafting/kinetics/gearbox.json | 10 +- .../kinetics/gearbox_from_conversion.json | 6 +- .../recipe/crafting/kinetics/gearshift.json | 14 +- .../recipe/crafting/kinetics/goggles.json | 14 +- .../recipe/crafting/kinetics/gray_seat.json | 9 +- .../kinetics/gray_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/green_seat.json | 9 +- .../kinetics/green_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/hand_crank.json | 10 +- .../recipe/crafting/kinetics/hose_pulley.json | 14 +- .../recipe/crafting/kinetics/item_drain.json | 10 +- .../recipe/crafting/kinetics/item_vault.json | 10 +- .../crafting/kinetics/large_cogwheel.json | 14 +- .../kinetics/large_cogwheel_from_little.json | 10 +- .../crafting/kinetics/large_water_wheel.json | 10 +- .../crafting/kinetics/light_blue_seat.json | 9 +- .../light_blue_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/light_gray_seat.json | 9 +- .../light_gray_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/lime_seat.json | 9 +- .../kinetics/lime_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/linear_chassis.json | 9 +- .../linear_chassis_from_conversion.json | 6 +- .../crafting/kinetics/magenta_seat.json | 9 +- .../magenta_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/mechanical_arm.json | 18 +- .../crafting/kinetics/mechanical_bearing.json | 14 +- .../crafting/kinetics/mechanical_crafter.json | 13 +- .../crafting/kinetics/mechanical_drill.json | 14 +- .../kinetics/mechanical_harvester.json | 14 +- .../crafting/kinetics/mechanical_mixer.json | 14 +- .../crafting/kinetics/mechanical_piston.json | 14 +- .../crafting/kinetics/mechanical_plough.json | 14 +- .../crafting/kinetics/mechanical_press.json | 14 +- .../crafting/kinetics/mechanical_pump.json | 10 +- .../crafting/kinetics/mechanical_roller.json | 14 +- .../crafting/kinetics/mechanical_saw.json | 14 +- .../crafting/kinetics/metal_bracket.json | 13 +- .../crafting/kinetics/metal_girder.json | 9 +- .../recipe/crafting/kinetics/millstone.json | 14 +- .../minecart_from_contraption_cart.json | 6 +- .../kinetics/mysterious_cuckoo_clock.json | 10 +- .../recipe/crafting/kinetics/nixie_tube.json | 9 +- .../recipe/crafting/kinetics/nozzle.json | 10 +- .../recipe/crafting/kinetics/orange_seat.json | 9 +- .../kinetics/orange_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/package_filter.json | 10 +- .../recipe/crafting/kinetics/pink_seat.json | 9 +- .../kinetics/pink_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../kinetics/piston_extension_pole.json | 9 +- .../recipe/crafting/kinetics/placard.json | 10 +- .../kinetics/portable_fluid_interface.json | 10 +- .../kinetics/portable_storage_interface.json | 10 +- .../recipe/crafting/kinetics/propeller.json | 10 +- .../recipe/crafting/kinetics/purple_seat.json | 9 +- .../kinetics/purple_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/radial_chassis.json | 9 +- .../recipe/crafting/kinetics/red_seat.json | 9 +- .../kinetics/red_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../recipe/crafting/kinetics/rope_pulley.json | 14 +- .../crafting/kinetics/rose_quartz_lamp.json | 14 +- .../kinetics/rotation_speed_controller.json | 10 +- .../kinetics/sail_frame_from_conversion.json | 6 +- .../recipe/crafting/kinetics/schedule.json | 9 +- ...ondary_linear_chassis_from_conversion.json | 6 +- .../kinetics/sequenced_gearshift.json | 14 +- .../recipe/crafting/kinetics/shaft.json | 5 +- .../recipe/crafting/kinetics/smart_chute.json | 14 +- .../crafting/kinetics/smart_fluid_pipe.json | 14 +- .../recipe/crafting/kinetics/speedometer.json | 10 +- .../kinetics/speedometer_from_conversion.json | 6 +- .../recipe/crafting/kinetics/spout.json | 10 +- .../crafting/kinetics/steam_engine.json | 14 +- .../crafting/kinetics/steam_whistle.json | 10 +- .../recipe/crafting/kinetics/sticker.json | 18 +- .../kinetics/sticky_mechanical_piston.json | 10 +- .../stressometer_from_conversion.json | 6 +- .../recipe/crafting/kinetics/super_glue.json | 14 +- .../crafting/kinetics/track_observer.json | 9 +- .../track_observer_from_other_plates.json | 21 +- .../crafting/kinetics/track_signal.json | 9 +- .../crafting/kinetics/track_station.json | 9 +- .../recipe/crafting/kinetics/train_door.json | 10 +- .../crafting/kinetics/train_trapdoor.json | 10 +- .../recipe/crafting/kinetics/turntable.json | 10 +- .../crafting/kinetics/vertical_gearbox.json | 10 +- .../vertical_gearbox_from_conversion.json | 6 +- .../recipe/crafting/kinetics/water_wheel.json | 10 +- .../crafting/kinetics/weighted_ejector.json | 14 +- .../recipe/crafting/kinetics/whisk.json | 10 +- .../recipe/crafting/kinetics/white_sail.json | 13 +- .../kinetics/white_sail_from_conversion.json | 6 +- .../recipe/crafting/kinetics/white_seat.json | 9 +- .../kinetics/white_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/kinetics/windmill_bearing.json | 14 +- .../crafting/kinetics/wooden_bracket.json | 13 +- .../recipe/crafting/kinetics/wrench.json | 14 +- .../recipe/crafting/kinetics/yellow_seat.json | 9 +- .../kinetics/yellow_seat_from_other_seat.json | 9 +- ..._valve_handle_from_other_valve_handle.json | 10 +- .../crafting/logistics/andesite_funnel.json | 9 +- .../logistics/andesite_table_cloth_clear.json | 6 +- .../crafting/logistics/andesite_tunnel.json | 9 +- .../crafting/logistics/black_postbox.json | 13 +- .../black_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/black_table_cloth.json | 8 +- .../logistics/black_table_cloth_clear.json | 6 +- ...ck_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/blue_postbox.json | 13 +- .../blue_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/blue_table_cloth.json | 8 +- .../logistics/blue_table_cloth_clear.json | 6 +- ...ue_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/brass_funnel.json | 13 +- .../logistics/brass_table_cloth_clear.json | 6 +- .../crafting/logistics/brass_tunnel.json | 13 +- .../crafting/logistics/brown_postbox.json | 13 +- .../brown_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/brown_table_cloth.json | 8 +- .../logistics/brown_table_cloth_clear.json | 6 +- ...wn_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/content_observer.json | 14 +- .../logistics/copper_table_cloth_clear.json | 6 +- .../crafting/logistics/cyan_postbox.json | 13 +- .../cyan_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/cyan_table_cloth.json | 8 +- .../logistics/cyan_table_cloth_clear.json | 6 +- ...an_table_cloth_from_other_table_cloth.json | 9 +- .../recipe/crafting/logistics/desk_bell.json | 10 +- .../crafting/logistics/display_link.json | 10 +- .../crafting/logistics/factory_gauge.json | 9 +- .../logistics/factory_gauge_clear.json | 6 +- .../crafting/logistics/gray_postbox.json | 13 +- .../gray_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/gray_table_cloth.json | 8 +- .../logistics/gray_table_cloth_clear.json | 6 +- ...ay_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/green_postbox.json | 13 +- .../green_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/green_table_cloth.json | 8 +- .../logistics/green_table_cloth_clear.json | 6 +- ...en_table_cloth_from_other_table_cloth.json | 9 +- .../recipe/crafting/logistics/item_hatch.json | 10 +- .../logistics/light_blue_postbox.json | 13 +- ...light_blue_postbox_from_other_postbox.json | 9 +- .../logistics/light_blue_table_cloth.json | 8 +- .../light_blue_table_cloth_clear.json | 6 +- ...ue_table_cloth_from_other_table_cloth.json | 9 +- .../logistics/light_gray_postbox.json | 13 +- ...light_gray_postbox_from_other_postbox.json | 9 +- .../logistics/light_gray_table_cloth.json | 8 +- .../light_gray_table_cloth_clear.json | 6 +- ...ay_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/lime_postbox.json | 13 +- .../lime_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/lime_table_cloth.json | 8 +- .../logistics/lime_table_cloth_clear.json | 6 +- ...me_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/magenta_postbox.json | 13 +- .../magenta_postbox_from_other_postbox.json | 9 +- .../logistics/magenta_table_cloth.json | 8 +- .../logistics/magenta_table_cloth_clear.json | 6 +- ...ta_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/orange_postbox.json | 13 +- .../orange_postbox_from_other_postbox.json | 9 +- .../logistics/orange_table_cloth.json | 8 +- .../logistics/orange_table_cloth_clear.json | 6 +- ...ge_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/package_frogport.json | 14 +- .../recipe/crafting/logistics/packager.json | 14 +- .../logistics/packager_from_conversion.json | 6 +- .../crafting/logistics/pink_postbox.json | 13 +- .../pink_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/pink_table_cloth.json | 8 +- .../logistics/pink_table_cloth_clear.json | 6 +- ...nk_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/powered_latch.json | 18 +- .../logistics/powered_toggle_latch.json | 14 +- .../crafting/logistics/pulse_extender.json | 18 +- .../crafting/logistics/pulse_repeater.json | 18 +- .../crafting/logistics/pulse_timer.json | 18 +- .../crafting/logistics/purple_postbox.json | 13 +- .../purple_postbox_from_other_postbox.json | 9 +- .../logistics/purple_table_cloth.json | 8 +- .../logistics/purple_table_cloth_clear.json | 6 +- ...le_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/red_postbox.json | 13 +- .../red_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/red_table_cloth.json | 8 +- .../logistics/red_table_cloth_clear.json | 6 +- ...ed_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/redstone_contact.json | 13 +- .../crafting/logistics/redstone_link.json | 9 +- .../logistics/redstone_requester.json | 14 +- .../logistics/redstone_requester_clear.json | 6 +- .../logistics/repackager_from_conversion.json | 6 +- .../recipe/crafting/logistics/stock_link.json | 10 +- .../crafting/logistics/stock_link_clear.json | 6 +- .../crafting/logistics/stock_ticker.json | 14 +- .../logistics/stock_ticker_clear.json | 6 +- .../crafting/logistics/stockpile_switch.json | 14 +- .../crafting/logistics/white_postbox.json | 13 +- .../white_postbox_from_other_postbox.json | 9 +- .../crafting/logistics/white_table_cloth.json | 8 +- .../logistics/white_table_cloth_clear.json | 6 +- ...te_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/logistics/yellow_postbox.json | 13 +- .../yellow_postbox_from_other_postbox.json | 9 +- .../logistics/yellow_table_cloth.json | 8 +- .../logistics/yellow_table_cloth_clear.json | 6 +- ...ow_table_cloth_from_other_table_cloth.json | 9 +- .../crafting/materials/andesite_alloy.json | 10 +- .../materials/andesite_alloy_block.json | 6 +- .../materials/andesite_alloy_from_block.json | 5 +- .../materials/andesite_alloy_from_zinc.json | 10 +- .../materials/bound_cardboard_block.json | 10 +- .../brass_block_from_compacting.json | 6 +- .../brass_ingot_from_compacting.json | 6 +- .../brass_ingot_from_decompacting.json | 5 +- .../brass_nugget_from_decompacting.json | 5 +- .../crafting/materials/cardboard_block.json | 6 +- .../materials/cardboard_from_block.json | 5 +- .../materials/cardboard_from_bound_block.json | 5 +- .../crafting/materials/copper_ingot.json | 6 +- .../crafting/materials/copper_nugget.json | 5 +- .../crafting/materials/electron_tube.json | 10 +- .../crafting/materials/experience_block.json | 6 +- .../experience_nugget_from_block.json | 5 +- .../recipe/crafting/materials/raw_zinc.json | 5 +- .../crafting/materials/raw_zinc_block.json | 6 +- .../crafting/materials/red_sand_paper.json | 10 +- .../crafting/materials/rose_quartz.json | 38 +- .../rose_quartz_tiles_from_conversion.json | 6 +- .../recipe/crafting/materials/sand_paper.json | 10 +- ...all_rose_quartz_tiles_from_conversion.json | 6 +- .../crafting/materials/transmitter.json | 14 +- .../materials/zinc_block_from_compacting.json | 6 +- .../materials/zinc_ingot_from_compacting.json | 6 +- .../zinc_ingot_from_decompacting.json | 5 +- .../zinc_nugget_from_decompacting.json | 5 +- .../recipe/crafting/palettes/scorchia.json | 9 +- .../crafting/schematics/empty_schematic.json | 10 +- .../schematics/schematic_and_quill.json | 10 +- .../crafting/schematics/schematic_table.json | 10 +- .../crafting/schematics/schematicannon.json | 18 +- .../recipe/crafting/tree_fertilizer.json | 17 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../data/create/recipe/crimson_window.json | 8 +- .../create/recipe/crimson_window_pane.json | 4 +- .../create/recipe/crushing/aluminum_ore.json | 4 +- .../recipe/crushing/amethyst_block.json | 4 +- .../recipe/crushing/amethyst_cluster.json | 4 +- .../data/create/recipe/crushing/asurine.json | 4 +- .../recipe/crushing/asurine_recycling.json | 4 +- .../create/recipe/crushing/blaze_rod.json | 4 +- .../data/create/recipe/crushing/coal_ore.json | 4 +- .../crushing/compat/aether/ambrosium_ore.json | 2 +- .../crushing/compat/aether/zanite_ore.json | 2 +- .../compat/biomesoplenty/rose_quartz.json | 2 +- .../compat/biomeswevegone/red_rock.json | 2 +- .../crushing/compat/druidcraft/amber_ore.json | 2 +- .../compat/druidcraft/fiery_glass_ore.json | 2 +- .../compat/druidcraft/moonstone_ore.json | 2 +- .../compat/elementaryores/ore_coal_end.json | 2 +- .../elementaryores/ore_coal_nether.json | 2 +- .../compat/elementaryores/ore_copper_end.json | 2 +- .../elementaryores/ore_copper_nether.json | 2 +- .../elementaryores/ore_diamond_end.json | 2 +- .../elementaryores/ore_diamond_nether.json | 2 +- .../elementaryores/ore_emerald_end.json | 2 +- .../elementaryores/ore_emerald_nether.json | 2 +- .../compat/elementaryores/ore_ender_end.json | 2 +- .../elementaryores/ore_ghast_nether.json | 2 +- .../elementaryores/ore_iron_nether.json | 2 +- .../compat/elementaryores/ore_lapis_end.json | 2 +- .../elementaryores/ore_lapis_nether.json | 2 +- .../elementaryores/ore_redstone_end.json | 2 +- .../compat/exnihilosequentia/andesite.json | 2 +- .../exnihilosequentia/crushed_diorite.json | 2 +- .../exnihilosequentia/crushed_netherrack.json | 2 +- .../compat/exnihilosequentia/diorite.json | 2 +- .../compat/exnihilosequentia/dust.json | 4 +- .../compat/exnihilosequentia/end_stone.json | 2 +- .../compat/exnihilosequentia/granite.json | 2 +- .../compat/exnihilosequentia/netherrack.json | 2 +- .../crushing/compat/galosphere/allurite.json | 4 +- .../crushing/compat/galosphere/amethyst.json | 4 +- .../crushing/compat/galosphere/lumiere.json | 4 +- .../immersiveengineering/coal_coke.json | 2 +- .../immersiveengineering/coke_block.json | 2 +- .../compat/immersiveengineering/slag.json | 2 +- .../crushing/compat/neapolitan/ice.json | 4 +- .../crushing/compat/quark/moss_block.json | 4 +- .../compat/silentgems/alexandrite_ore.json | 2 +- .../compat/silentgems/ammolite_ore.json | 2 +- .../compat/silentgems/aquamarine_ore.json | 2 +- .../compat/silentgems/black_diamond_ore.json | 2 +- .../compat/silentgems/carnelian_ore.json | 2 +- .../compat/silentgems/citrine_ore.json | 2 +- .../silentgems/deepslate_alexandrite_ore.json | 2 +- .../silentgems/deepslate_ammolite_ore.json | 2 +- .../silentgems/deepslate_aquamarine_ore.json | 2 +- .../deepslate_black_diamond_ore.json | 2 +- .../silentgems/deepslate_carnelian_ore.json | 2 +- .../silentgems/deepslate_citrine_ore.json | 2 +- .../silentgems/deepslate_garnet_ore.json | 2 +- .../silentgems/deepslate_heliodor_ore.json | 2 +- .../silentgems/deepslate_iolite_ore.json | 2 +- .../silentgems/deepslate_kyanite_ore.json | 2 +- .../silentgems/deepslate_moldavite_ore.json | 2 +- .../compat/silentgems/deepslate_opal_ore.json | 2 +- .../silentgems/deepslate_pearl_ore.json | 2 +- .../silentgems/deepslate_peridot_ore.json | 2 +- .../silentgems/deepslate_rose_quartz_ore.json | 2 +- .../compat/silentgems/deepslate_ruby_ore.json | 2 +- .../silentgems/deepslate_sapphire_ore.json | 2 +- .../silentgems/deepslate_tanzanite_ore.json | 2 +- .../silentgems/deepslate_topaz_ore.json | 2 +- .../silentgems/deepslate_turquoise_ore.json | 2 +- .../deepslate_white_diamond_ore.json | 2 +- .../silentgems/end_alexandrite_ore.json | 2 +- .../compat/silentgems/end_ammolite_ore.json | 2 +- .../compat/silentgems/end_aquamarine_ore.json | 2 +- .../silentgems/end_black_diamond_ore.json | 2 +- .../compat/silentgems/end_carnelian_ore.json | 2 +- .../compat/silentgems/end_citrine_ore.json | 2 +- .../compat/silentgems/end_garnet_ore.json | 2 +- .../compat/silentgems/end_heliodor_ore.json | 2 +- .../compat/silentgems/end_iolite_ore.json | 2 +- .../compat/silentgems/end_kyanite_ore.json | 2 +- .../compat/silentgems/end_moldavite_ore.json | 2 +- .../compat/silentgems/end_opal_ore.json | 2 +- .../compat/silentgems/end_pearl_ore.json | 2 +- .../compat/silentgems/end_peridot_ore.json | 2 +- .../silentgems/end_rose_quartz_ore.json | 2 +- .../compat/silentgems/end_ruby_ore.json | 2 +- .../compat/silentgems/end_sapphire_ore.json | 2 +- .../compat/silentgems/end_tanzanite_ore.json | 2 +- .../compat/silentgems/end_topaz_ore.json | 2 +- .../compat/silentgems/end_turquoise_ore.json | 2 +- .../silentgems/end_white_diamond_ore.json | 2 +- .../compat/silentgems/garnet_ore.json | 2 +- .../compat/silentgems/heliodor_ore.json | 2 +- .../compat/silentgems/iolite_ore.json | 2 +- .../compat/silentgems/kyanite_ore.json | 2 +- .../compat/silentgems/moldavite_ore.json | 2 +- .../silentgems/nether_alexandrite_ore.json | 2 +- .../silentgems/nether_ammolite_ore.json | 2 +- .../silentgems/nether_aquamarine_ore.json | 2 +- .../silentgems/nether_black_diamond_ore.json | 2 +- .../silentgems/nether_carnelian_ore.json | 2 +- .../compat/silentgems/nether_citrine_ore.json | 2 +- .../compat/silentgems/nether_garnet_ore.json | 2 +- .../silentgems/nether_heliodor_ore.json | 2 +- .../compat/silentgems/nether_iolite_ore.json | 2 +- .../compat/silentgems/nether_kyanite_ore.json | 2 +- .../silentgems/nether_moldavite_ore.json | 2 +- .../compat/silentgems/nether_opal_ore.json | 2 +- .../compat/silentgems/nether_pearl_ore.json | 2 +- .../compat/silentgems/nether_peridot_ore.json | 2 +- .../silentgems/nether_rose_quartz_ore.json | 2 +- .../compat/silentgems/nether_ruby_ore.json | 2 +- .../silentgems/nether_sapphire_ore.json | 2 +- .../silentgems/nether_tanzanite_ore.json | 2 +- .../compat/silentgems/nether_topaz_ore.json | 2 +- .../silentgems/nether_turquoise_ore.json | 2 +- .../silentgems/nether_white_diamond_ore.json | 2 +- .../crushing/compat/silentgems/opal_ore.json | 2 +- .../crushing/compat/silentgems/pearl_ore.json | 2 +- .../compat/silentgems/peridot_ore.json | 2 +- .../compat/silentgems/rose_quartz_ore.json | 2 +- .../crushing/compat/silentgems/ruby_ore.json | 2 +- .../compat/silentgems/sapphire_ore.json | 2 +- .../compat/silentgems/tanzanite_ore.json | 2 +- .../crushing/compat/silentgems/topaz_ore.json | 2 +- .../compat/silentgems/turquoise_ore.json | 2 +- .../compat/silentgems/white_diamond_ore.json | 2 +- .../crushing/compat/simplefarming/barley.json | 2 +- .../crushing/compat/simplefarming/oat.json | 2 +- .../crushing/compat/simplefarming/rice.json | 2 +- .../crushing/compat/simplefarming/rye.json | 2 +- .../crushing/compat/thermal/apatite_ore.json | 2 +- .../crushing/compat/thermal/cinnabar_ore.json | 2 +- .../crushing/compat/thermal/niter_ore.json | 2 +- .../crushing/compat/thermal/sulfur_ore.json | 2 +- .../create/recipe/crushing/copper_ore.json | 4 +- .../data/create/recipe/crushing/crimsite.json | 4 +- .../recipe/crushing/crimsite_recycling.json | 4 +- .../recipe/crushing/deepslate_coal_ore.json | 4 +- .../recipe/crushing/deepslate_copper_ore.json | 4 +- .../crushing/deepslate_diamond_ore.json | 4 +- .../crushing/deepslate_emerald_ore.json | 4 +- .../recipe/crushing/deepslate_gold_ore.json | 4 +- .../recipe/crushing/deepslate_iron_ore.json | 4 +- .../recipe/crushing/deepslate_lapis_ore.json | 4 +- .../crushing/deepslate_redstone_ore.json | 4 +- .../recipe/crushing/deepslate_zinc_ore.json | 4 +- .../recipe/crushing/diamond_horse_armor.json | 4 +- .../create/recipe/crushing/diamond_ore.json | 4 +- .../data/create/recipe/crushing/diorite.json | 4 +- .../recipe/crushing/diorite_recycling.json | 4 +- .../create/recipe/crushing/emerald_ore.json | 4 +- .../recipe/crushing/gilded_blackstone.json | 4 +- .../create/recipe/crushing/glowstone.json | 4 +- .../data/create/recipe/crushing/gold_ore.json | 4 +- .../recipe/crushing/golden_horse_armor.json | 4 +- .../data/create/recipe/crushing/gravel.json | 4 +- .../recipe/crushing/iron_horse_armor.json | 4 +- .../data/create/recipe/crushing/iron_ore.json | 4 +- .../create/recipe/crushing/lapis_ore.json | 4 +- .../data/create/recipe/crushing/lead_ore.json | 4 +- .../recipe/crushing/leather_horse_armor.json | 4 +- .../recipe/crushing/nether_gold_ore.json | 4 +- .../recipe/crushing/nether_quartz_ore.json | 4 +- .../recipe/crushing/nether_wart_block.json | 4 +- .../create/recipe/crushing/netherrack.json | 4 +- .../create/recipe/crushing/nickel_ore.json | 4 +- .../data/create/recipe/crushing/obsidian.json | 4 +- .../data/create/recipe/crushing/ochrum.json | 4 +- .../recipe/crushing/ochrum_recycling.json | 4 +- .../create/recipe/crushing/osmium_ore.json | 4 +- .../create/recipe/crushing/platinum_ore.json | 4 +- .../recipe/crushing/prismarine_crystals.json | 4 +- .../recipe/crushing/quicksilver_ore.json | 4 +- .../create/recipe/crushing/raw_aluminum.json | 4 +- .../recipe/crushing/raw_aluminum_block.json | 4 +- .../create/recipe/crushing/raw_copper.json | 4 +- .../recipe/crushing/raw_copper_block.json | 4 +- .../data/create/recipe/crushing/raw_gold.json | 4 +- .../recipe/crushing/raw_gold_block.json | 4 +- .../data/create/recipe/crushing/raw_iron.json | 4 +- .../recipe/crushing/raw_iron_block.json | 4 +- .../data/create/recipe/crushing/raw_lead.json | 4 +- .../recipe/crushing/raw_lead_block.json | 4 +- .../create/recipe/crushing/raw_nickel.json | 4 +- .../recipe/crushing/raw_nickel_block.json | 4 +- .../create/recipe/crushing/raw_osmium.json | 4 +- .../recipe/crushing/raw_osmium_block.json | 4 +- .../create/recipe/crushing/raw_platinum.json | 4 +- .../recipe/crushing/raw_platinum_block.json | 4 +- .../recipe/crushing/raw_quicksilver.json | 4 +- .../crushing/raw_quicksilver_block.json | 4 +- .../create/recipe/crushing/raw_silver.json | 4 +- .../recipe/crushing/raw_silver_block.json | 4 +- .../data/create/recipe/crushing/raw_tin.json | 4 +- .../create/recipe/crushing/raw_tin_block.json | 4 +- .../create/recipe/crushing/raw_uranium.json | 4 +- .../recipe/crushing/raw_uranium_block.json | 4 +- .../data/create/recipe/crushing/raw_zinc.json | 4 +- .../recipe/crushing/raw_zinc_block.json | 4 +- .../create/recipe/crushing/redstone_ore.json | 4 +- .../create/recipe/crushing/silver_ore.json | 4 +- .../data/create/recipe/crushing/tin_ore.json | 4 +- .../data/create/recipe/crushing/tuff.json | 4 +- .../recipe/crushing/tuff_recycling.json | 4 +- .../create/recipe/crushing/uranium_ore.json | 4 +- .../data/create/recipe/crushing/veridium.json | 4 +- .../recipe/crushing/veridium_recycling.json | 4 +- .../data/create/recipe/crushing/wool.json | 4 +- .../data/create/recipe/crushing/zinc_ore.json | 4 +- .../recipe/cut_andesite_brick_slab.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 4 +- .../cut_andesite_brick_slab_recycling.json | 9 +- .../recipe/cut_andesite_brick_stairs.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../recipe/cut_andesite_brick_wall.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../data/create/recipe/cut_andesite_slab.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 4 +- .../recipe/cut_andesite_slab_recycling.json | 9 +- .../create/recipe/cut_andesite_stairs.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../data/create/recipe/cut_andesite_wall.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../create/recipe/cut_asurine_brick_slab.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 4 +- .../cut_asurine_brick_slab_recycling.json | 9 +- .../recipe/cut_asurine_brick_stairs.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../create/recipe/cut_asurine_brick_wall.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../data/create/recipe/cut_asurine_slab.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 4 +- .../recipe/cut_asurine_slab_recycling.json | 9 +- .../create/recipe/cut_asurine_stairs.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../data/create/recipe/cut_asurine_wall.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../create/recipe/cut_calcite_brick_slab.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 4 +- .../cut_calcite_brick_slab_recycling.json | 9 +- .../recipe/cut_calcite_brick_stairs.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../create/recipe/cut_calcite_brick_wall.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../data/create/recipe/cut_calcite_slab.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 4 +- .../recipe/cut_calcite_slab_recycling.json | 9 +- .../create/recipe/cut_calcite_stairs.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../data/create/recipe/cut_calcite_wall.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../recipe/cut_crimsite_brick_slab.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 4 +- .../cut_crimsite_brick_slab_recycling.json | 9 +- .../recipe/cut_crimsite_brick_stairs.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/cut_crimsite_brick_wall.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../data/create/recipe/cut_crimsite_slab.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 4 +- .../recipe/cut_crimsite_slab_recycling.json | 9 +- .../create/recipe/cut_crimsite_stairs.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../data/create/recipe/cut_crimsite_wall.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/cut_deepslate_brick_slab.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 4 +- .../cut_deepslate_brick_slab_recycling.json | 9 +- .../recipe/cut_deepslate_brick_stairs.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../recipe/cut_deepslate_brick_wall.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../create/recipe/cut_deepslate_slab.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 4 +- .../recipe/cut_deepslate_slab_recycling.json | 9 +- .../create/recipe/cut_deepslate_stairs.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../create/recipe/cut_deepslate_wall.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../create/recipe/cut_diorite_brick_slab.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 4 +- .../cut_diorite_brick_slab_recycling.json | 9 +- .../recipe/cut_diorite_brick_stairs.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../create/recipe/cut_diorite_brick_wall.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../data/create/recipe/cut_diorite_slab.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 4 +- .../recipe/cut_diorite_slab_recycling.json | 9 +- .../create/recipe/cut_diorite_stairs.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../data/create/recipe/cut_diorite_wall.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../recipe/cut_dripstone_brick_slab.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 4 +- .../cut_dripstone_brick_slab_recycling.json | 9 +- .../recipe/cut_dripstone_brick_stairs.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../recipe/cut_dripstone_brick_wall.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../create/recipe/cut_dripstone_slab.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 4 +- .../recipe/cut_dripstone_slab_recycling.json | 9 +- .../create/recipe/cut_dripstone_stairs.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../create/recipe/cut_dripstone_wall.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../create/recipe/cut_granite_brick_slab.json | 4 +- ...from_stone_types_granite_stonecutting.json | 4 +- .../cut_granite_brick_slab_recycling.json | 9 +- .../recipe/cut_granite_brick_stairs.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../create/recipe/cut_granite_brick_wall.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../data/create/recipe/cut_granite_slab.json | 4 +- ...from_stone_types_granite_stonecutting.json | 4 +- .../recipe/cut_granite_slab_recycling.json | 9 +- .../create/recipe/cut_granite_stairs.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../data/create/recipe/cut_granite_wall.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../recipe/cut_limestone_brick_slab.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 4 +- .../cut_limestone_brick_slab_recycling.json | 9 +- .../recipe/cut_limestone_brick_stairs.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../recipe/cut_limestone_brick_wall.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../create/recipe/cut_limestone_slab.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 4 +- .../recipe/cut_limestone_slab_recycling.json | 9 +- .../create/recipe/cut_limestone_stairs.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../create/recipe/cut_limestone_wall.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../create/recipe/cut_ochrum_brick_slab.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 4 +- .../cut_ochrum_brick_slab_recycling.json | 9 +- .../recipe/cut_ochrum_brick_stairs.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../create/recipe/cut_ochrum_brick_wall.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../data/create/recipe/cut_ochrum_slab.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 4 +- .../recipe/cut_ochrum_slab_recycling.json | 9 +- .../data/create/recipe/cut_ochrum_stairs.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../data/create/recipe/cut_ochrum_wall.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../recipe/cut_scorchia_brick_slab.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 4 +- .../cut_scorchia_brick_slab_recycling.json | 9 +- .../recipe/cut_scorchia_brick_stairs.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../recipe/cut_scorchia_brick_wall.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../data/create/recipe/cut_scorchia_slab.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 4 +- .../recipe/cut_scorchia_slab_recycling.json | 9 +- .../create/recipe/cut_scorchia_stairs.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../data/create/recipe/cut_scorchia_wall.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../create/recipe/cut_scoria_brick_slab.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 4 +- .../cut_scoria_brick_slab_recycling.json | 9 +- .../recipe/cut_scoria_brick_stairs.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../create/recipe/cut_scoria_brick_wall.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../data/create/recipe/cut_scoria_slab.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 4 +- .../recipe/cut_scoria_slab_recycling.json | 9 +- .../data/create/recipe/cut_scoria_stairs.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../data/create/recipe/cut_scoria_wall.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../create/recipe/cut_tuff_brick_slab.json | 4 +- ...ab_from_stone_types_tuff_stonecutting.json | 4 +- .../recipe/cut_tuff_brick_slab_recycling.json | 9 +- .../create/recipe/cut_tuff_brick_stairs.json | 4 +- ...rs_from_stone_types_tuff_stonecutting.json | 5 +- .../create/recipe/cut_tuff_brick_wall.json | 4 +- ...ll_from_stone_types_tuff_stonecutting.json | 5 +- ...ks_from_stone_types_tuff_stonecutting.json | 5 +- ...ff_from_stone_types_tuff_stonecutting.json | 5 +- .../data/create/recipe/cut_tuff_slab.json | 4 +- ...ab_from_stone_types_tuff_stonecutting.json | 4 +- .../recipe/cut_tuff_slab_recycling.json | 9 +- .../data/create/recipe/cut_tuff_stairs.json | 4 +- ...rs_from_stone_types_tuff_stonecutting.json | 5 +- .../data/create/recipe/cut_tuff_wall.json | 4 +- ...ll_from_stone_types_tuff_stonecutting.json | 5 +- .../recipe/cut_veridium_brick_slab.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 4 +- .../cut_veridium_brick_slab_recycling.json | 9 +- .../recipe/cut_veridium_brick_stairs.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../recipe/cut_veridium_brick_wall.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../data/create/recipe/cut_veridium_slab.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 4 +- .../recipe/cut_veridium_slab_recycling.json | 9 +- .../create/recipe/cut_veridium_stairs.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../data/create/recipe/cut_veridium_wall.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../create/recipe/cutting/andesite_alloy.json | 4 +- .../create/recipe/cutting/bamboo_planks.json | 4 +- .../stripped_yellow_archwood.json | 2 +- .../stripped_yellow_archwood_log.json | 2 +- .../stripped_green_archwood_log.json | 2 +- .../stripped_green_archwood_wood.json | 2 +- .../stripped_purple_archwood_log.json | 2 +- .../stripped_purple_archwood_wood.json | 2 +- .../stripped_red_archwood_log.json | 2 +- .../stripped_red_archwood_wood.json | 2 +- .../compat/atmospheric/crustose_log.json | 2 +- .../compat/atmospheric/crustose_wood.json | 2 +- .../atmospheric/watchful_aspen_log.json | 2 +- .../atmospheric/watchful_aspen_wood.json | 2 +- .../compat/autumnity/sappy_maple_log.json | 2 +- .../compat/autumnity/sappy_maple_wood.json | 2 +- .../stripped_palo_verde_log.json | 2 +- .../stripped_palo_verde_wood.json | 2 +- .../compat/endergetic/glowing_poise_stem.json | 2 +- .../compat/endergetic/glowing_poise_wood.json | 2 +- .../immersiveengineering/wire_aluminum.json | 4 +- .../immersiveengineering/wire_copper.json | 4 +- .../immersiveengineering/wire_electrum.json | 4 +- .../immersiveengineering/wire_lead.json | 4 +- .../immersiveengineering/wire_steel.json | 4 +- .../netherexp/cerebrage_claret_hyphae.json | 2 +- .../netherexp/cerebrage_claret_stem.json | 2 +- .../compat/regions_unexplored/ashen_log.json | 2 +- .../compat/regions_unexplored/ashen_wood.json | 2 +- .../brimwood_log_magma.json | 2 +- .../regions_unexplored/silver_birch_log.json | 2 +- .../regions_unexplored/silver_birch_wood.json | 2 +- .../data/create/recipe/dark_oak_window.json | 8 +- .../create/recipe/dark_oak_window_pane.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../chiseled_copper_from_deoxidising.json | 8 +- .../chiseled_copper_from_removing_wax.json | 8 +- .../create/recipe/deploying/cogwheel.json | 8 +- .../copper_block_from_deoxidising.json | 8 +- .../copper_block_from_removing_wax.json | 8 +- .../copper_bulb_from_deoxidising.json | 8 +- .../copper_bulb_from_removing_wax.json | 8 +- .../copper_door_from_deoxidising.json | 8 +- .../copper_door_from_removing_wax.json | 8 +- .../copper_grate_from_deoxidising.json | 8 +- .../copper_grate_from_removing_wax.json | 8 +- .../copper_shingle_slab_from_deoxidising.json | 8 +- ...copper_shingle_slab_from_removing_wax.json | 8 +- ...opper_shingle_stairs_from_deoxidising.json | 8 +- ...pper_shingle_stairs_from_removing_wax.json | 8 +- .../copper_shingles_from_deoxidising.json | 8 +- .../copper_shingles_from_removing_wax.json | 8 +- .../copper_tile_slab_from_deoxidising.json | 8 +- .../copper_tile_slab_from_removing_wax.json | 8 +- .../copper_tile_stairs_from_deoxidising.json | 8 +- .../copper_tile_stairs_from_removing_wax.json | 8 +- .../copper_tiles_from_deoxidising.json | 8 +- .../copper_tiles_from_removing_wax.json | 8 +- .../copper_trapdoor_from_deoxidising.json | 8 +- .../copper_trapdoor_from_removing_wax.json | 8 +- .../cut_copper_from_deoxidising.json | 8 +- .../cut_copper_from_removing_wax.json | 8 +- .../cut_copper_slab_from_deoxidising.json | 8 +- .../cut_copper_slab_from_removing_wax.json | 8 +- .../cut_copper_stairs_from_deoxidising.json | 8 +- .../cut_copper_stairs_from_removing_wax.json | 8 +- ...osed_chiseled_copper_from_deoxidising.json | 8 +- ...sed_chiseled_copper_from_removing_wax.json | 8 +- .../exposed_copper_bulb_from_deoxidising.json | 8 +- ...exposed_copper_bulb_from_removing_wax.json | 8 +- .../exposed_copper_door_from_deoxidising.json | 8 +- ...exposed_copper_door_from_removing_wax.json | 8 +- .../exposed_copper_from_deoxidising.json | 8 +- .../exposed_copper_from_removing_wax.json | 8 +- ...exposed_copper_grate_from_deoxidising.json | 8 +- ...xposed_copper_grate_from_removing_wax.json | 8 +- ..._copper_shingle_slab_from_deoxidising.json | 8 +- ...copper_shingle_slab_from_removing_wax.json | 8 +- ...opper_shingle_stairs_from_deoxidising.json | 8 +- ...pper_shingle_stairs_from_removing_wax.json | 8 +- ...osed_copper_shingles_from_deoxidising.json | 8 +- ...sed_copper_shingles_from_removing_wax.json | 8 +- ...sed_copper_tile_slab_from_deoxidising.json | 8 +- ...ed_copper_tile_slab_from_removing_wax.json | 8 +- ...d_copper_tile_stairs_from_deoxidising.json | 8 +- ..._copper_tile_stairs_from_removing_wax.json | 8 +- ...exposed_copper_tiles_from_deoxidising.json | 8 +- ...xposed_copper_tiles_from_removing_wax.json | 8 +- ...osed_copper_trapdoor_from_deoxidising.json | 8 +- ...sed_copper_trapdoor_from_removing_wax.json | 8 +- .../exposed_cut_copper_from_deoxidising.json | 8 +- .../exposed_cut_copper_from_removing_wax.json | 8 +- ...osed_cut_copper_slab_from_deoxidising.json | 8 +- ...sed_cut_copper_slab_from_removing_wax.json | 8 +- ...ed_cut_copper_stairs_from_deoxidising.json | 8 +- ...d_cut_copper_stairs_from_removing_wax.json | 8 +- .../recipe/deploying/large_cogwheel.json | 8 +- ...zed_chiseled_copper_from_removing_wax.json | 8 +- ...xidized_copper_bulb_from_removing_wax.json | 8 +- ...xidized_copper_door_from_removing_wax.json | 8 +- .../oxidized_copper_from_removing_wax.json | 8 +- ...idized_copper_grate_from_removing_wax.json | 8 +- ...copper_shingle_slab_from_removing_wax.json | 8 +- ...pper_shingle_stairs_from_removing_wax.json | 8 +- ...zed_copper_shingles_from_removing_wax.json | 8 +- ...ed_copper_tile_slab_from_removing_wax.json | 8 +- ..._copper_tile_stairs_from_removing_wax.json | 8 +- ...idized_copper_tiles_from_removing_wax.json | 8 +- ...zed_copper_trapdoor_from_removing_wax.json | 8 +- ...oxidized_cut_copper_from_removing_wax.json | 8 +- ...zed_cut_copper_slab_from_removing_wax.json | 8 +- ...d_cut_copper_stairs_from_removing_wax.json | 8 +- ...waxed_chiseled_copper_from_adding_wax.json | 8 +- .../waxed_copper_block_from_adding_wax.json | 8 +- .../waxed_copper_bulb_from_adding_wax.json | 8 +- .../waxed_copper_door_from_adding_wax.json | 8 +- .../waxed_copper_grate_from_adding_wax.json | 8 +- ...d_copper_shingle_slab_from_adding_wax.json | 8 +- ...copper_shingle_stairs_from_adding_wax.json | 8 +- ...waxed_copper_shingles_from_adding_wax.json | 8 +- ...axed_copper_tile_slab_from_adding_wax.json | 8 +- ...ed_copper_tile_stairs_from_adding_wax.json | 8 +- .../waxed_copper_tiles_from_adding_wax.json | 8 +- ...waxed_copper_trapdoor_from_adding_wax.json | 8 +- .../waxed_cut_copper_from_adding_wax.json | 8 +- ...waxed_cut_copper_slab_from_adding_wax.json | 8 +- ...xed_cut_copper_stairs_from_adding_wax.json | 8 +- ...posed_chiseled_copper_from_adding_wax.json | 8 +- ...d_exposed_copper_bulb_from_adding_wax.json | 8 +- ...d_exposed_copper_door_from_adding_wax.json | 8 +- .../waxed_exposed_copper_from_adding_wax.json | 8 +- ..._exposed_copper_grate_from_adding_wax.json | 8 +- ...d_copper_shingle_slab_from_adding_wax.json | 8 +- ...copper_shingle_stairs_from_adding_wax.json | 8 +- ...posed_copper_shingles_from_adding_wax.json | 8 +- ...osed_copper_tile_slab_from_adding_wax.json | 8 +- ...ed_copper_tile_stairs_from_adding_wax.json | 8 +- ..._exposed_copper_tiles_from_adding_wax.json | 8 +- ...posed_copper_trapdoor_from_adding_wax.json | 8 +- ...ed_exposed_cut_copper_from_adding_wax.json | 8 +- ...posed_cut_copper_slab_from_adding_wax.json | 8 +- ...sed_cut_copper_stairs_from_adding_wax.json | 8 +- ...dized_chiseled_copper_from_adding_wax.json | 8 +- ..._oxidized_copper_bulb_from_adding_wax.json | 8 +- ..._oxidized_copper_door_from_adding_wax.json | 8 +- ...waxed_oxidized_copper_from_adding_wax.json | 8 +- ...oxidized_copper_grate_from_adding_wax.json | 8 +- ...d_copper_shingle_slab_from_adding_wax.json | 8 +- ...copper_shingle_stairs_from_adding_wax.json | 8 +- ...dized_copper_shingles_from_adding_wax.json | 8 +- ...ized_copper_tile_slab_from_adding_wax.json | 8 +- ...ed_copper_tile_stairs_from_adding_wax.json | 8 +- ...oxidized_copper_tiles_from_adding_wax.json | 8 +- ...dized_copper_trapdoor_from_adding_wax.json | 8 +- ...d_oxidized_cut_copper_from_adding_wax.json | 8 +- ...dized_cut_copper_slab_from_adding_wax.json | 8 +- ...zed_cut_copper_stairs_from_adding_wax.json | 8 +- ...hered_chiseled_copper_from_adding_wax.json | 8 +- ...weathered_copper_bulb_from_adding_wax.json | 8 +- ...weathered_copper_door_from_adding_wax.json | 8 +- ...axed_weathered_copper_from_adding_wax.json | 8 +- ...eathered_copper_grate_from_adding_wax.json | 8 +- ...d_copper_shingle_slab_from_adding_wax.json | 8 +- ...copper_shingle_stairs_from_adding_wax.json | 8 +- ...hered_copper_shingles_from_adding_wax.json | 8 +- ...ered_copper_tile_slab_from_adding_wax.json | 8 +- ...ed_copper_tile_stairs_from_adding_wax.json | 8 +- ...eathered_copper_tiles_from_adding_wax.json | 8 +- ...hered_copper_trapdoor_from_adding_wax.json | 8 +- ..._weathered_cut_copper_from_adding_wax.json | 8 +- ...hered_cut_copper_slab_from_adding_wax.json | 8 +- ...red_cut_copper_stairs_from_adding_wax.json | 8 +- ...ered_chiseled_copper_from_deoxidising.json | 8 +- ...red_chiseled_copper_from_removing_wax.json | 8 +- ...eathered_copper_bulb_from_deoxidising.json | 8 +- ...athered_copper_bulb_from_removing_wax.json | 8 +- ...eathered_copper_door_from_deoxidising.json | 8 +- ...athered_copper_door_from_removing_wax.json | 8 +- .../weathered_copper_from_deoxidising.json | 8 +- .../weathered_copper_from_removing_wax.json | 8 +- ...athered_copper_grate_from_deoxidising.json | 8 +- ...thered_copper_grate_from_removing_wax.json | 8 +- ..._copper_shingle_slab_from_deoxidising.json | 8 +- ...copper_shingle_slab_from_removing_wax.json | 8 +- ...opper_shingle_stairs_from_deoxidising.json | 8 +- ...pper_shingle_stairs_from_removing_wax.json | 8 +- ...ered_copper_shingles_from_deoxidising.json | 8 +- ...red_copper_shingles_from_removing_wax.json | 8 +- ...red_copper_tile_slab_from_deoxidising.json | 8 +- ...ed_copper_tile_slab_from_removing_wax.json | 8 +- ...d_copper_tile_stairs_from_deoxidising.json | 8 +- ..._copper_tile_stairs_from_removing_wax.json | 8 +- ...athered_copper_tiles_from_deoxidising.json | 8 +- ...thered_copper_tiles_from_removing_wax.json | 8 +- ...ered_copper_trapdoor_from_deoxidising.json | 8 +- ...red_copper_trapdoor_from_removing_wax.json | 8 +- ...weathered_cut_copper_from_deoxidising.json | 8 +- ...eathered_cut_copper_from_removing_wax.json | 8 +- ...ered_cut_copper_slab_from_deoxidising.json | 8 +- ...red_cut_copper_slab_from_removing_wax.json | 8 +- ...ed_cut_copper_stairs_from_deoxidising.json | 8 +- ...d_cut_copper_stairs_from_removing_wax.json | 8 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../create/recipe/emptying/builders_tea.json | 4 +- .../compat/alexsmobs/lava_bottle.json | 2 +- .../compat/farmersdelight/milk_bottle.json | 2 +- .../compat/neapolitan/milk_bottle.json | 2 +- .../create/recipe/emptying/honey_bottle.json | 4 +- .../recipe/exposed_copper_shingle_slab.json | 4 +- ..._exposed_copper_shingles_stonecutting.json | 4 +- .../recipe/exposed_copper_shingle_stairs.json | 4 +- ..._exposed_copper_shingles_stonecutting.json | 5 +- .../recipe/exposed_copper_tile_slab.json | 4 +- ...rom_exposed_copper_tiles_stonecutting.json | 4 +- .../recipe/exposed_copper_tile_stairs.json | 4 +- ...rom_exposed_copper_tiles_stonecutting.json | 5 +- .../create/recipe/filling/blaze_cake.json | 8 +- .../create/recipe/filling/builders_tea.json | 8 +- .../filling/chocolate_glazed_berries.json | 8 +- .../compat/aether/aether_grass_block.json | 6 +- .../filling/compat/alexsmobs/lava_bottle.json | 8 +- .../biomeswevegone/lush_grass_block.json | 6 +- .../compat/farmersdelight/milk_bottle.json | 8 +- .../treated_wood_in_spout.json | 8 +- .../compat/neapolitan/milk_bottle.json | 8 +- .../regions_unexplored/peat_grass_block.json | 6 +- .../regions_unexplored/silt_grass_block.json | 6 +- .../compat/vampirism/cursed_grass.json | 6 +- .../data/create/recipe/filling/glowstone.json | 23 +- .../create/recipe/filling/grass_block.json | 8 +- .../data/create/recipe/filling/gunpowder.json | 23 +- .../create/recipe/filling/honey_bottle.json | 8 +- .../create/recipe/filling/honeyed_apple.json | 8 +- .../data/create/recipe/filling/redstone.json | 23 +- .../create/recipe/filling/sweet_roll.json | 8 +- ...m_glass_blocks_colorless_stonecutting.json | 5 +- .../data/create/recipe/framed_glass_pane.json | 4 +- ...om_glass_panes_colorless_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../create/recipe/haunting/blackstone.json | 4 +- .../compat/farmersdelight/rotten_tomato.json | 2 +- .../compat/hauntedharvest/rotten_apple.json | 4 +- .../recipe/haunting/crimson_fungus.json | 4 +- .../create/recipe/haunting/glow_berries.json | 4 +- .../create/recipe/haunting/glow_ink_sac.json | 4 +- .../create/recipe/haunting/haunted_bell.json | 4 +- .../infested_chiseled_stone_bricks.json | 4 +- .../infested_cracked_stone_bricks.json | 4 +- .../recipe/haunting/infested_deepslate.json | 4 +- .../haunting/infested_mossy_stone_bricks.json | 4 +- .../recipe/haunting/infested_stone.json | 4 +- .../haunting/infested_stone_bricks.json | 4 +- .../recipe/haunting/lapis_recycling.json | 4 +- .../create/recipe/haunting/nether_brick.json | 4 +- .../recipe/haunting/poisonous_potato.json | 4 +- .../create/recipe/haunting/soul_campfire.json | 4 +- .../create/recipe/haunting/soul_lantern.json | 4 +- .../create/recipe/haunting/soul_sand.json | 4 +- .../create/recipe/haunting/soul_soil.json | 4 +- .../create/recipe/haunting/soul_torch.json | 4 +- .../create/recipe/haunting/warped_fungus.json | 4 +- ...m_glass_blocks_colorless_stonecutting.json | 5 +- .../recipe/horizontal_framed_glass_pane.json | 4 +- ...om_glass_panes_colorless_stonecutting.json | 5 +- ...n_block_from_ingots_iron_stonecutting.json | 4 +- .../create/recipe/industrial_iron_window.json | 8 +- .../recipe/industrial_iron_window_pane.json | 4 +- .../andesite_casing_from_log.json | 8 +- .../andesite_casing_from_wood.json | 8 +- .../bound_cardboard_inworld.json | 8 +- .../brass_casing_from_log.json | 8 +- .../brass_casing_from_wood.json | 8 +- .../copper_casing_from_log.json | 8 +- .../copper_casing_from_wood.json | 8 +- .../item_application/railway_casing.json | 8 +- .../data/create/recipe/jungle_window.json | 8 +- .../create/recipe/jungle_window_pane.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ...ff_from_stone_types_tuff_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../data/create/recipe/mangrove_window.json | 8 +- .../create/recipe/mangrove_window_pane.json | 4 +- .../mechanical_crafting/crushing_wheel.json | 16 +- .../mechanical_crafting/extendo_grip.json | 21 +- .../mechanical_crafting/potato_cannon.json | 18 +- .../mechanical_crafting/wand_of_symmetry.json | 22 +- .../data/create/recipe/milling/allium.json | 4 +- .../data/create/recipe/milling/andesite.json | 4 +- .../create/recipe/milling/azure_bluet.json | 4 +- .../data/create/recipe/milling/beetroot.json | 4 +- .../create/recipe/milling/blue_orchid.json | 4 +- .../data/create/recipe/milling/bone.json | 4 +- .../data/create/recipe/milling/bone_meal.json | 4 +- .../data/create/recipe/milling/cactus.json | 4 +- .../data/create/recipe/milling/calcite.json | 4 +- .../data/create/recipe/milling/charcoal.json | 4 +- .../data/create/recipe/milling/clay.json | 4 +- .../data/create/recipe/milling/coal.json | 4 +- .../create/recipe/milling/cobblestone.json | 4 +- .../create/recipe/milling/cocoa_beans.json | 4 +- .../milling/compat/ae2/certus_quartz.json | 4 +- .../milling/compat/ae2/ender_pearl.json | 4 +- .../milling/compat/ae2/fluix_crystal.json | 2 +- .../milling/compat/ae2/sky_stone_block.json | 2 +- .../compat/atmospheric/arid_sandstone.json | 2 +- .../compat/atmospheric/barrel_cactus.json | 2 +- .../milling/compat/atmospheric/firethorn.json | 2 +- .../milling/compat/atmospheric/forsythia.json | 2 +- .../milling/compat/atmospheric/gilia.json | 2 +- .../compat/atmospheric/hot_monkey_brush.json | 2 +- .../atmospheric/red_arid_sandstone.json | 2 +- .../atmospheric/scalding_monkey_brush.json | 2 +- .../compat/atmospheric/tall_yucca_flower.json | 2 +- .../compat/atmospheric/warm_monkey_brush.json | 2 +- .../compat/atmospheric/water_hyacinth.json | 2 +- .../compat/atmospheric/yucca_flower.json | 2 +- .../compat/autumnity/autumn_crocus.json | 2 +- .../compat/biomesoplenty/black_sandstone.json | 2 +- .../compat/biomesoplenty/blue_hydrangea.json | 2 +- .../compat/biomesoplenty/burning_blossom.json | 2 +- .../milling/compat/biomesoplenty/cattail.json | 2 +- .../compat/biomesoplenty/endbloom.json | 2 +- .../compat/biomesoplenty/glowflower.json | 2 +- .../compat/biomesoplenty/goldenrod.json | 2 +- .../compat/biomesoplenty/icy_iris.json | 2 +- .../compat/biomesoplenty/lavender.json | 2 +- .../compat/biomesoplenty/orange_cosmos.json | 2 +- .../biomesoplenty/orange_sandstone.json | 2 +- .../compat/biomesoplenty/pink_daffodil.json | 2 +- .../compat/biomesoplenty/pink_hibiscus.json | 2 +- .../milling/compat/biomesoplenty/rose.json | 2 +- .../compat/biomesoplenty/tall_lavender.json | 2 +- .../biomesoplenty/tall_white_lavender.json | 2 +- .../compat/biomesoplenty/tiny_cactus.json | 2 +- .../milling/compat/biomesoplenty/violet.json | 2 +- .../compat/biomesoplenty/waterlily.json | 2 +- .../compat/biomesoplenty/white_lavender.json | 2 +- .../compat/biomesoplenty/white_petals.json | 2 +- .../compat/biomesoplenty/white_sandstone.json | 2 +- .../compat/biomesoplenty/wildflower.json | 2 +- .../compat/biomesoplenty/wilted_lily.json | 2 +- .../biomeswevegone/allium_flower_bush.json | 2 +- .../biomeswevegone/alpine_bellflower.json | 2 +- .../compat/biomeswevegone/amaranth.json | 2 +- .../compat/biomeswevegone/angelica.json | 2 +- .../compat/biomeswevegone/begonia.json | 2 +- .../compat/biomeswevegone/bistort.json | 2 +- .../compat/biomeswevegone/black_rose.json | 2 +- .../biomeswevegone/black_sandstone.json | 2 +- .../compat/biomeswevegone/blue_rose_bush.json | 2 +- .../compat/biomeswevegone/blue_sage.json | 2 +- .../compat/biomeswevegone/blue_sandstone.json | 2 +- .../biomeswevegone/california_poppy.json | 2 +- .../milling/compat/biomeswevegone/crocus.json | 2 +- .../compat/biomeswevegone/cyan_amaranth.json | 2 +- .../compat/biomeswevegone/cyan_rose.json | 2 +- .../compat/biomeswevegone/cyan_tulip.json | 2 +- .../compat/biomeswevegone/daffodil.json | 2 +- .../compat/biomeswevegone/delphinium.json | 2 +- .../compat/biomeswevegone/fairy_slipper.json | 2 +- .../firecracker_flower_bush.json | 2 +- .../compat/biomeswevegone/foxglove.json | 2 +- .../biomeswevegone/golden_spined_cactus.json | 2 +- .../compat/biomeswevegone/green_tulip.json | 2 +- .../compat/biomeswevegone/guzmania.json | 2 +- .../compat/biomeswevegone/horseweed.json | 2 +- .../compat/biomeswevegone/hydrangea_bush.json | 2 +- .../compat/biomeswevegone/incan_lily.json | 2 +- .../milling/compat/biomeswevegone/iris.json | 2 +- .../biomeswevegone/japanese_orchid.json | 2 +- .../compat/biomeswevegone/kovan_flower.json | 2 +- .../biomeswevegone/lazarus_bellflower.json | 2 +- .../biomeswevegone/lollipop_flower.json | 2 +- .../biomeswevegone/magenta_amaranth.json | 2 +- .../compat/biomeswevegone/magenta_tulip.json | 2 +- .../compat/biomeswevegone/mini_cactus.json | 2 +- .../biomeswevegone/orange_amaranth.json | 2 +- .../compat/biomeswevegone/orange_daisy.json | 2 +- .../compat/biomeswevegone/osiria_rose.json | 2 +- .../biomeswevegone/peach_leather_flower.json | 2 +- .../compat/biomeswevegone/pink_allium.json | 2 +- .../pink_allium_flower_bush.json | 2 +- .../compat/biomeswevegone/pink_anemone.json | 2 +- .../compat/biomeswevegone/pink_daffodil.json | 2 +- .../compat/biomeswevegone/pink_sandstone.json | 2 +- .../biomeswevegone/prickly_pear_cactus.json | 2 +- .../compat/biomeswevegone/protea_flower.json | 2 +- .../biomeswevegone/purple_amaranth.json | 2 +- .../compat/biomeswevegone/purple_sage.json | 2 +- .../biomeswevegone/purple_sandstone.json | 2 +- .../compat/biomeswevegone/purple_tulip.json | 2 +- .../milling/compat/biomeswevegone/richea.json | 2 +- .../milling/compat/biomeswevegone/rose.json | 2 +- .../biomeswevegone/silver_vase_flower.json | 2 +- .../compat/biomeswevegone/snowdrops.json | 2 +- .../compat/biomeswevegone/tall_allium.json | 2 +- .../biomeswevegone/tall_pink_allium.json | 2 +- .../biomeswevegone/tall_white_allium.json | 2 +- .../biomeswevegone/violet_leather_flower.json | 2 +- .../compat/biomeswevegone/white_allium.json | 2 +- .../white_allium_flower_bush.json | 2 +- .../compat/biomeswevegone/white_anemone.json | 2 +- .../biomeswevegone/white_puffball_cap.json | 2 +- .../compat/biomeswevegone/white_sage.json | 2 +- .../biomeswevegone/white_sandstone.json | 2 +- .../biomeswevegone/windswept_sandstone.json | 2 +- .../biomeswevegone/winter_cyclamen.json | 2 +- .../compat/biomeswevegone/winter_rose.json | 2 +- .../compat/biomeswevegone/winter_scilla.json | 2 +- .../biomeswevegone/winter_succulent.json | 2 +- .../biomeswevegone/yellow_daffodil.json | 2 +- .../compat/biomeswevegone/yellow_tulip.json | 2 +- .../milling/compat/botania/black_petal.json | 4 +- .../milling/compat/botania/blue_petal.json | 4 +- .../milling/compat/botania/brown_petal.json | 4 +- .../milling/compat/botania/cyan_petal.json | 4 +- .../milling/compat/botania/gray_petal.json | 4 +- .../milling/compat/botania/green_petal.json | 4 +- .../compat/botania/light_blue_petal.json | 4 +- .../compat/botania/light_gray_petal.json | 4 +- .../milling/compat/botania/lime_petal.json | 4 +- .../milling/compat/botania/magenta_petal.json | 4 +- .../milling/compat/botania/orange_petal.json | 4 +- .../milling/compat/botania/pink_petal.json | 4 +- .../milling/compat/botania/purple_petal.json | 4 +- .../milling/compat/botania/red_petal.json | 4 +- .../milling/compat/botania/white_petal.json | 4 +- .../milling/compat/botania/yellow_petal.json | 4 +- .../compat/buzzier_bees/buttercup.json | 2 +- .../compat/buzzier_bees/pink_clover.json | 2 +- .../compat/buzzier_bees/white_clover.json | 2 +- .../milling/compat/druidcraft/lavender.json | 2 +- .../environmental/bird_of_paradise.json | 2 +- .../compat/environmental/blue_delphinium.json | 2 +- .../compat/environmental/bluebell.json | 2 +- .../compat/environmental/cartwheel.json | 2 +- .../compat/environmental/dianthus.json | 2 +- .../environmental/magenta_hibiscus.json | 2 +- .../compat/environmental/orange_hibiscus.json | 2 +- .../compat/environmental/pink_delphinium.json | 2 +- .../compat/environmental/pink_hibiscus.json | 2 +- .../environmental/purple_delphinium.json | 2 +- .../compat/environmental/purple_hibiscus.json | 2 +- .../compat/environmental/red_hibiscus.json | 2 +- .../environmental/red_lotus_flower.json | 2 +- .../compat/environmental/tasselflower.json | 2 +- .../milling/compat/environmental/violet.json | 2 +- .../environmental/white_delphinium.json | 2 +- .../environmental/white_lotus_flower.json | 2 +- .../compat/environmental/yellow_hibiscus.json | 2 +- .../regions_unexplored/alpha_dandelion.json | 2 +- .../compat/regions_unexplored/alpha_rose.json | 2 +- .../compat/regions_unexplored/aster.json | 2 +- .../regions_unexplored/black_snowbelle.json | 2 +- .../regions_unexplored/bleeding_heart.json | 2 +- .../regions_unexplored/blue_lupine.json | 2 +- .../regions_unexplored/blue_snowbelle.json | 2 +- .../regions_unexplored/brown_snowbelle.json | 2 +- .../regions_unexplored/cactus_flower.json | 2 +- .../regions_unexplored/cyan_snowbelle.json | 2 +- .../compat/regions_unexplored/daisy.json | 2 +- .../compat/regions_unexplored/day_lily.json | 2 +- .../compat/regions_unexplored/dorcel.json | 2 +- .../regions_unexplored/felicia_daisy.json | 2 +- .../compat/regions_unexplored/fireweed.json | 2 +- .../regions_unexplored/glistering_bloom.json | 2 +- .../regions_unexplored/gray_snowbelle.json | 2 +- .../regions_unexplored/green_snowbelle.json | 2 +- .../compat/regions_unexplored/hibiscus.json | 2 +- .../compat/regions_unexplored/hyssop.json | 2 +- .../light_blue_snowbelle.json | 2 +- .../light_gray_snowbelle.json | 2 +- .../regions_unexplored/lime_snowbelle.json | 2 +- .../regions_unexplored/magenta_snowbelle.json | 2 +- .../compat/regions_unexplored/mallow.json | 2 +- .../regions_unexplored/orange_coneflower.json | 2 +- .../regions_unexplored/orange_snowbelle.json | 2 +- .../regions_unexplored/pink_lupine.json | 2 +- .../regions_unexplored/pink_snowbelle.json | 2 +- .../compat/regions_unexplored/poppy_bush.json | 2 +- .../regions_unexplored/purple_coneflower.json | 2 +- .../regions_unexplored/purple_lupine.json | 2 +- .../regions_unexplored/purple_snowbelle.json | 2 +- .../compat/regions_unexplored/red_lupine.json | 2 +- .../regions_unexplored/red_snowbelle.json | 2 +- .../regions_unexplored/salmon_poppy_bush.json | 2 +- .../compat/regions_unexplored/tassel.json | 2 +- .../compat/regions_unexplored/tsubaki.json | 2 +- .../compat/regions_unexplored/waratah.json | 2 +- .../regions_unexplored/white_snowbelle.json | 2 +- .../regions_unexplored/white_trillium.json | 2 +- .../regions_unexplored/wilting_trillium.json | 2 +- .../regions_unexplored/yellow_lupine.json | 2 +- .../regions_unexplored/yellow_snowbelle.json | 2 +- .../milling/compat/supplementaries/flax.json | 2 +- .../compat/tconstruct/nercotic_bone.json | 2 +- .../upgrade_aquatic/flowering_rush.json | 2 +- .../upgrade_aquatic/pink_searocket.json | 2 +- .../upgrade_aquatic/white_searocket.json | 2 +- .../create/recipe/milling/cornflower.json | 4 +- .../data/create/recipe/milling/dandelion.json | 4 +- .../recipe/milling/dripstone_block.json | 4 +- .../data/create/recipe/milling/fern.json | 4 +- .../data/create/recipe/milling/granite.json | 4 +- .../data/create/recipe/milling/gravel.json | 4 +- .../data/create/recipe/milling/ink_sac.json | 4 +- .../create/recipe/milling/lapis_lazuli.json | 4 +- .../create/recipe/milling/large_fern.json | 4 +- .../data/create/recipe/milling/lilac.json | 4 +- .../recipe/milling/lily_of_the_valley.json | 4 +- .../create/recipe/milling/orange_tulip.json | 4 +- .../create/recipe/milling/oxeye_daisy.json | 4 +- .../data/create/recipe/milling/peony.json | 4 +- .../create/recipe/milling/pink_petals.json | 4 +- .../create/recipe/milling/pink_tulip.json | 4 +- .../create/recipe/milling/pitcher_plant.json | 4 +- .../data/create/recipe/milling/poppy.json | 4 +- .../data/create/recipe/milling/red_tulip.json | 4 +- .../data/create/recipe/milling/rose_bush.json | 4 +- .../data/create/recipe/milling/saddle.json | 4 +- .../data/create/recipe/milling/sandstone.json | 4 +- .../create/recipe/milling/sea_pickle.json | 4 +- .../create/recipe/milling/short_grass.json | 4 +- .../create/recipe/milling/sugar_cane.json | 4 +- .../data/create/recipe/milling/sunflower.json | 4 +- .../create/recipe/milling/tall_grass.json | 4 +- .../create/recipe/milling/terracotta.json | 4 +- .../create/recipe/milling/torchflower.json | 4 +- .../data/create/recipe/milling/wheat.json | 4 +- .../create/recipe/milling/white_tulip.json | 4 +- .../create/recipe/milling/wither_rose.json | 4 +- .../data/create/recipe/milling/wool.json | 4 +- .../create/recipe/mixing/andesite_alloy.json | 8 +- .../mixing/andesite_alloy_from_zinc.json | 8 +- .../create/recipe/mixing/brass_ingot.json | 8 +- .../create/recipe/mixing/cardboard_pulp.json | 20 +- .../data/create/recipe/mixing/chocolate.json | 12 +- .../recipe/mixing/chocolate_melting.json | 4 +- .../mixing/compat/ae2/fluix_crystal.json | 14 +- .../compat/regions_unexplored/peat_mud.json | 6 +- .../compat/regions_unexplored/silt_mud.json | 6 +- .../create/recipe/mixing/dough_by_mixing.json | 8 +- .../data/create/recipe/mixing/honey.json | 4 +- .../recipe/mixing/lava_from_cobble.json | 4 +- .../create/recipe/mixing/mud_by_mixing.json | 6 +- .../data/create/recipe/mixing/tea.json | 12 +- .../data/create/recipe/oak_window.json | 8 +- .../data/create/recipe/oak_window_pane.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../create/recipe/ornate_iron_window.json | 8 +- .../recipe/ornate_iron_window_pane.json | 4 +- .../recipe/oxidized_copper_shingle_slab.json | 4 +- ...oxidized_copper_shingles_stonecutting.json | 4 +- .../oxidized_copper_shingle_stairs.json | 4 +- ...oxidized_copper_shingles_stonecutting.json | 5 +- .../recipe/oxidized_copper_tile_slab.json | 4 +- ...om_oxidized_copper_tiles_stonecutting.json | 4 +- .../recipe/oxidized_copper_tile_stairs.json | 4 +- ...om_oxidized_copper_tiles_stonecutting.json | 5 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../recipe/polished_cut_andesite_slab.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 4 +- .../polished_cut_andesite_slab_recycling.json | 9 +- .../recipe/polished_cut_andesite_stairs.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../recipe/polished_cut_andesite_wall.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../recipe/polished_cut_asurine_slab.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 4 +- .../polished_cut_asurine_slab_recycling.json | 9 +- .../recipe/polished_cut_asurine_stairs.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../recipe/polished_cut_asurine_wall.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../recipe/polished_cut_calcite_slab.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 4 +- .../polished_cut_calcite_slab_recycling.json | 9 +- .../recipe/polished_cut_calcite_stairs.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../recipe/polished_cut_calcite_wall.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/polished_cut_crimsite_slab.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 4 +- .../polished_cut_crimsite_slab_recycling.json | 9 +- .../recipe/polished_cut_crimsite_stairs.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/polished_cut_crimsite_wall.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../recipe/polished_cut_deepslate_slab.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 4 +- ...polished_cut_deepslate_slab_recycling.json | 9 +- .../recipe/polished_cut_deepslate_stairs.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../recipe/polished_cut_deepslate_wall.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../recipe/polished_cut_diorite_slab.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 4 +- .../polished_cut_diorite_slab_recycling.json | 9 +- .../recipe/polished_cut_diorite_stairs.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../recipe/polished_cut_diorite_wall.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../recipe/polished_cut_dripstone_slab.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 4 +- ...polished_cut_dripstone_slab_recycling.json | 9 +- .../recipe/polished_cut_dripstone_stairs.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../recipe/polished_cut_dripstone_wall.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../recipe/polished_cut_granite_slab.json | 4 +- ...from_stone_types_granite_stonecutting.json | 4 +- .../polished_cut_granite_slab_recycling.json | 9 +- .../recipe/polished_cut_granite_stairs.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../recipe/polished_cut_granite_wall.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../recipe/polished_cut_limestone_slab.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 4 +- ...polished_cut_limestone_slab_recycling.json | 9 +- .../recipe/polished_cut_limestone_stairs.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../recipe/polished_cut_limestone_wall.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../recipe/polished_cut_ochrum_slab.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 4 +- .../polished_cut_ochrum_slab_recycling.json | 9 +- .../recipe/polished_cut_ochrum_stairs.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../recipe/polished_cut_ochrum_wall.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../recipe/polished_cut_scorchia_slab.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 4 +- .../polished_cut_scorchia_slab_recycling.json | 9 +- .../recipe/polished_cut_scorchia_stairs.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../recipe/polished_cut_scorchia_wall.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../recipe/polished_cut_scoria_slab.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 4 +- .../polished_cut_scoria_slab_recycling.json | 9 +- .../recipe/polished_cut_scoria_stairs.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../recipe/polished_cut_scoria_wall.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ...ff_from_stone_types_tuff_stonecutting.json | 5 +- .../create/recipe/polished_cut_tuff_slab.json | 4 +- ...ab_from_stone_types_tuff_stonecutting.json | 4 +- .../polished_cut_tuff_slab_recycling.json | 9 +- .../recipe/polished_cut_tuff_stairs.json | 4 +- ...rs_from_stone_types_tuff_stonecutting.json | 5 +- .../create/recipe/polished_cut_tuff_wall.json | 4 +- ...ll_from_stone_types_tuff_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../recipe/polished_cut_veridium_slab.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 4 +- .../polished_cut_veridium_slab_recycling.json | 9 +- .../recipe/polished_cut_veridium_stairs.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../recipe/polished_cut_veridium_wall.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../recipe/pressing/aether_dirt_path.json | 2 +- .../pressing/aether_dirt_path_from_grass.json | 2 +- .../create/recipe/pressing/brass_ingot.json | 4 +- .../create/recipe/pressing/cardboard.json | 4 +- .../compat/atmospheric/crustose_path.json | 2 +- .../betterendforge/amber_moss_path.json | 2 +- .../compat/betterendforge/cave_moss_path.json | 2 +- .../betterendforge/chorus_nylium_path.json | 2 +- .../betterendforge/crystal_moss_path.json | 2 +- .../compat/betterendforge/end_moss_path.json | 2 +- .../betterendforge/end_mycelium_path.json | 2 +- .../betterendforge/jungle_moss_path.json | 2 +- .../compat/betterendforge/pink_moss_path.json | 2 +- .../betterendforge/shadow_grass_path.json | 2 +- .../compat/biomeswevegone/lush_dirt_path.json | 2 +- .../biomeswevegone/lush_grass_path.json | 2 +- .../biomeswevegone/sandy_dirt_path.json | 2 +- .../compat/environmental/dirt_path.json | 12 +- .../compat/environmental/mycelium_path.json | 4 +- .../compat/environmental/podzol_path.json | 4 +- .../immersiveengineering/plate_aluminum.json | 4 +- .../plate_constantan.json | 4 +- .../immersiveengineering/plate_electrum.json | 4 +- .../immersiveengineering/plate_lead.json | 4 +- .../immersiveengineering/plate_nickel.json | 4 +- .../immersiveengineering/plate_silver.json | 4 +- .../immersiveengineering/plate_steel.json | 4 +- .../immersiveengineering/plate_uranium.json | 4 +- .../infernalexp/crimson_nylium_path.json | 4 +- .../compat/infernalexp/soul_soil_path.json | 4 +- .../infernalexp/warped_nylium_path.json | 4 +- .../compat/vampirism/cursed_earth_path.json | 2 +- .../create/recipe/pressing/copper_ingot.json | 4 +- .../cursed_earth_path_from_grass.json | 2 +- .../create/recipe/pressing/gold_ingot.json | 4 +- .../create/recipe/pressing/iron_ingot.json | 4 +- .../data/create/recipe/pressing/path.json | 20 +- .../recipe/pressing/path_from_grass.json | 4 +- .../recipe/pressing/peat_dirt_path.json | 2 +- .../pressing/peat_dirt_path_from_grass.json | 2 +- .../recipe/pressing/silt_dirt_path.json | 2 +- .../pressing/silt_dirt_path_from_grass.json | 2 +- .../create/recipe/pressing/sugar_cane.json | 4 +- ...z_block_from_rose_quartz_stonecutting.json | 4 +- ...rom_polished_rose_quartz_stonecutting.json | 4 +- .../sandpaper_polishing/rose_quartz.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../precision_mechanism.json | 28 +- .../sequenced_assembly/sturdy_sheet.json | 20 +- .../recipe/sequenced_assembly/track.json | 42 +- .../recipe/small_andesite_brick_slab.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 4 +- .../small_andesite_brick_slab_recycling.json | 9 +- .../recipe/small_andesite_brick_stairs.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../recipe/small_andesite_brick_wall.json | 4 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- ...rom_stone_types_andesite_stonecutting.json | 5 +- .../recipe/small_asurine_brick_slab.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 4 +- .../small_asurine_brick_slab_recycling.json | 9 +- .../recipe/small_asurine_brick_stairs.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../recipe/small_asurine_brick_wall.json | 4 +- ...from_stone_types_asurine_stonecutting.json | 5 +- ...from_stone_types_asurine_stonecutting.json | 5 +- .../recipe/small_calcite_brick_slab.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 4 +- .../small_calcite_brick_slab_recycling.json | 9 +- .../recipe/small_calcite_brick_stairs.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../recipe/small_calcite_brick_wall.json | 4 +- ...from_stone_types_calcite_stonecutting.json | 5 +- ...from_stone_types_calcite_stonecutting.json | 5 +- .../recipe/small_crimsite_brick_slab.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 4 +- .../small_crimsite_brick_slab_recycling.json | 9 +- .../recipe/small_crimsite_brick_stairs.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/small_crimsite_brick_wall.json | 4 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- ...rom_stone_types_crimsite_stonecutting.json | 5 +- .../recipe/small_deepslate_brick_slab.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 4 +- .../small_deepslate_brick_slab_recycling.json | 9 +- .../recipe/small_deepslate_brick_stairs.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../recipe/small_deepslate_brick_wall.json | 4 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- ...om_stone_types_deepslate_stonecutting.json | 5 +- .../recipe/small_diorite_brick_slab.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 4 +- .../small_diorite_brick_slab_recycling.json | 9 +- .../recipe/small_diorite_brick_stairs.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../recipe/small_diorite_brick_wall.json | 4 +- ...from_stone_types_diorite_stonecutting.json | 5 +- ...from_stone_types_diorite_stonecutting.json | 5 +- .../recipe/small_dripstone_brick_slab.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 4 +- .../small_dripstone_brick_slab_recycling.json | 9 +- .../recipe/small_dripstone_brick_stairs.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../recipe/small_dripstone_brick_wall.json | 4 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- ...om_stone_types_dripstone_stonecutting.json | 5 +- .../recipe/small_granite_brick_slab.json | 4 +- ...from_stone_types_granite_stonecutting.json | 4 +- .../small_granite_brick_slab_recycling.json | 9 +- .../recipe/small_granite_brick_stairs.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../recipe/small_granite_brick_wall.json | 4 +- ...from_stone_types_granite_stonecutting.json | 5 +- ...from_stone_types_granite_stonecutting.json | 5 +- .../recipe/small_limestone_brick_slab.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 4 +- .../small_limestone_brick_slab_recycling.json | 9 +- .../recipe/small_limestone_brick_stairs.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../recipe/small_limestone_brick_wall.json | 4 +- ...om_stone_types_limestone_stonecutting.json | 5 +- ...om_stone_types_limestone_stonecutting.json | 5 +- .../recipe/small_ochrum_brick_slab.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 4 +- .../small_ochrum_brick_slab_recycling.json | 9 +- .../recipe/small_ochrum_brick_stairs.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- .../recipe/small_ochrum_brick_wall.json | 4 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ..._from_stone_types_ochrum_stonecutting.json | 5 +- ...rom_polished_rose_quartz_stonecutting.json | 4 +- .../recipe/small_scorchia_brick_slab.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 4 +- .../small_scorchia_brick_slab_recycling.json | 9 +- .../recipe/small_scorchia_brick_stairs.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../recipe/small_scorchia_brick_wall.json | 4 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- ...rom_stone_types_scorchia_stonecutting.json | 5 +- .../recipe/small_scoria_brick_slab.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 4 +- .../small_scoria_brick_slab_recycling.json | 9 +- .../recipe/small_scoria_brick_stairs.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../recipe/small_scoria_brick_wall.json | 4 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- ..._from_stone_types_scoria_stonecutting.json | 5 +- .../create/recipe/small_tuff_brick_slab.json | 4 +- ...ab_from_stone_types_tuff_stonecutting.json | 4 +- .../small_tuff_brick_slab_recycling.json | 9 +- .../recipe/small_tuff_brick_stairs.json | 4 +- ...rs_from_stone_types_tuff_stonecutting.json | 5 +- .../create/recipe/small_tuff_brick_wall.json | 4 +- ...ll_from_stone_types_tuff_stonecutting.json | 5 +- ...ks_from_stone_types_tuff_stonecutting.json | 5 +- .../recipe/small_veridium_brick_slab.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 4 +- .../small_veridium_brick_slab_recycling.json | 9 +- .../recipe/small_veridium_brick_stairs.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../recipe/small_veridium_brick_wall.json | 4 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- .../data/create/recipe/smelting/bread.json | 8 +- .../smelting/copper_ingot_from_crushed.json | 7 +- .../smelting/glass_from_framed_glass.json | 7 +- .../glass_from_horizontal_framed_glass.json | 7 +- .../smelting/glass_from_tiled_glass.json | 7 +- .../glass_from_vertical_framed_glass.json | 7 +- .../glass_pane_from_framed_glass_pane.json | 7 +- ...ane_from_horizontal_framed_glass_pane.json | 7 +- .../glass_pane_from_tiled_glass_pane.json | 7 +- ..._pane_from_vertical_framed_glass_pane.json | 7 +- .../smelting/gold_ingot_from_crushed.json | 7 +- .../smelting/ingot_aluminium_compat_ic2.json | 6 +- ..._aluminum_compat_immersiveengineering.json | 6 +- ...ngot_lead_compat_immersiveengineering.json | 6 +- .../smelting/ingot_lead_compat_mekanism.json | 6 +- ...ot_nickel_compat_immersiveengineering.json | 6 +- .../ingot_osmium_compat_mekanism.json | 6 +- .../smelting/ingot_silver_compat_ic2.json | 6 +- ...ot_silver_compat_immersiveengineering.json | 6 +- .../recipe/smelting/ingot_tin_compat_ic2.json | 6 +- .../smelting/ingot_tin_compat_mekanism.json | 6 +- .../smelting/ingot_uranium_compat_ic2.json | 6 +- ...t_uranium_compat_immersiveengineering.json | 6 +- .../ingot_uranium_compat_mekanism.json | 6 +- .../smelting/iron_ingot_from_crushed.json | 7 +- .../lead_ingot_compat_oreganized.json | 6 +- .../smelting/lead_ingot_compat_thermal.json | 6 +- .../smelting/nickel_ingot_compat_thermal.json | 6 +- .../data/create/recipe/smelting/scoria.json | 8 +- .../silver_ingot_compat_galosphere.json | 6 +- .../silver_ingot_compat_iceandfire.json | 6 +- .../silver_ingot_compat_oreganized.json | 6 +- .../smelting/silver_ingot_compat_thermal.json | 6 +- .../smelting/tin_ingot_compat_thermal.json | 6 +- .../smelting/zinc_ingot_from_crushed.json | 7 +- .../recipe/smelting/zinc_ingot_from_ore.json | 7 +- .../smelting/zinc_ingot_from_raw_ore.json | 7 +- .../data/create/recipe/smoking/bread.json | 8 +- .../splashing/atmospheric/arid_sand.json | 2 +- .../splashing/atmospheric/red_arid_sand.json | 2 +- .../recipe/splashing/crushed_raw_copper.json | 4 +- .../recipe/splashing/crushed_raw_gold.json | 4 +- .../recipe/splashing/crushed_raw_iron.json | 4 +- .../recipe/splashing/crushed_raw_zinc.json | 4 +- .../endergetic/petrified_end_corrock.json | 2 +- .../petrified_end_corrock_block.json | 2 +- .../petrified_end_corrock_crown.json | 2 +- .../endergetic/petrified_nether_corrock.json | 2 +- .../petrified_nether_corrock_block.json | 2 +- .../petrified_nether_corrock_crown.json | 2 +- .../petrified_overworld_corrock.json | 2 +- .../petrified_overworld_corrock_block.json | 2 +- .../petrified_overworld_corrock_crown.json | 2 +- .../galosphere/crushed_raw_silver.json | 4 +- .../data/create/recipe/splashing/gravel.json | 4 +- .../splashing/ic2/crushed_raw_aluminum.json | 4 +- .../splashing/ic2/crushed_raw_silver.json | 4 +- .../recipe/splashing/ic2/crushed_raw_tin.json | 4 +- .../splashing/ic2/crushed_raw_uranium.json | 4 +- .../data/create/recipe/splashing/ice.json | 4 +- .../iceandfire/crushed_raw_silver.json | 4 +- .../crushed_raw_aluminum.json | 4 +- .../crushed_raw_lead.json | 4 +- .../crushed_raw_nickel.json | 4 +- .../crushed_raw_silver.json | 4 +- .../crushed_raw_uranium.json | 4 +- .../splashing/industrial_iron_block.json | 4 +- .../splashing/industrial_iron_window.json | 4 +- .../industrial_iron_window_pane.json | 4 +- .../create/recipe/splashing/magma_block.json | 4 +- .../splashing/mekanism/crushed_raw_lead.json | 4 +- .../mekanism/crushed_raw_osmium.json | 4 +- .../splashing/mekanism/crushed_raw_tin.json | 4 +- .../mekanism/crushed_raw_uranium.json | 4 +- .../oreganized/crushed_raw_lead.json | 4 +- .../oreganized/crushed_raw_silver.json | 4 +- .../splashing/quark/rusty_iron_plate.json | 2 +- .../create/recipe/splashing/red_sand.json | 4 +- .../data/create/recipe/splashing/sand.json | 4 +- .../create/recipe/splashing/soul_sand.json | 4 +- .../recipe/splashing/stained_glass.json | 4 +- .../recipe/splashing/stained_glass_pane.json | 4 +- .../splashing/supplementaries/blackboard.json | 2 +- .../the_vault/ornate_chain_rusty.json | 2 +- .../splashing/thermal/crushed_raw_lead.json | 4 +- .../splashing/thermal/crushed_raw_nickel.json | 4 +- .../splashing/thermal/crushed_raw_silver.json | 4 +- .../splashing/thermal/crushed_raw_tin.json | 4 +- .../create/recipe/splashing/wheat_flour.json | 4 +- .../data/create/recipe/splashing/wool.json | 4 +- .../data/create/recipe/spruce_window.json | 8 +- .../create/recipe/spruce_window_pane.json | 4 +- ...m_glass_blocks_colorless_stonecutting.json | 5 +- .../data/create/recipe/tiled_glass_pane.json | 4 +- ...om_glass_panes_colorless_stonecutting.json | 5 +- ...ff_from_stone_types_tuff_stonecutting.json | 5 +- ...ar_from_stone_types_tuff_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...rom_stone_types_veridium_stonecutting.json | 5 +- ...m_glass_blocks_colorless_stonecutting.json | 5 +- .../recipe/vertical_framed_glass_pane.json | 4 +- ...om_glass_panes_colorless_stonecutting.json | 5 +- .../data/create/recipe/warped_window.json | 8 +- .../create/recipe/warped_window_pane.json | 4 +- .../recipe/waxed_copper_shingle_slab.json | 4 +- ...om_waxed_copper_shingles_stonecutting.json | 4 +- .../recipe/waxed_copper_shingle_stairs.json | 4 +- ...om_waxed_copper_shingles_stonecutting.json | 5 +- .../create/recipe/waxed_copper_tile_slab.json | 4 +- ..._from_waxed_copper_tiles_stonecutting.json | 4 +- .../recipe/waxed_copper_tile_stairs.json | 4 +- ..._from_waxed_copper_tiles_stonecutting.json | 5 +- .../waxed_exposed_copper_shingle_slab.json | 4 +- ..._exposed_copper_shingles_stonecutting.json | 4 +- .../waxed_exposed_copper_shingle_stairs.json | 4 +- ..._exposed_copper_shingles_stonecutting.json | 5 +- .../waxed_exposed_copper_tile_slab.json | 4 +- ...xed_exposed_copper_tiles_stonecutting.json | 4 +- .../waxed_exposed_copper_tile_stairs.json | 4 +- ...xed_exposed_copper_tiles_stonecutting.json | 5 +- .../waxed_oxidized_copper_shingle_slab.json | 4 +- ...oxidized_copper_shingles_stonecutting.json | 4 +- .../waxed_oxidized_copper_shingle_stairs.json | 4 +- ...oxidized_copper_shingles_stonecutting.json | 5 +- .../waxed_oxidized_copper_tile_slab.json | 4 +- ...ed_oxidized_copper_tiles_stonecutting.json | 4 +- .../waxed_oxidized_copper_tile_stairs.json | 4 +- ...ed_oxidized_copper_tiles_stonecutting.json | 5 +- .../waxed_weathered_copper_shingle_slab.json | 4 +- ...eathered_copper_shingles_stonecutting.json | 4 +- ...waxed_weathered_copper_shingle_stairs.json | 4 +- ...eathered_copper_shingles_stonecutting.json | 5 +- .../waxed_weathered_copper_tile_slab.json | 4 +- ...d_weathered_copper_tiles_stonecutting.json | 4 +- .../waxed_weathered_copper_tile_stairs.json | 4 +- ...d_weathered_copper_tiles_stonecutting.json | 5 +- .../recipe/weathered_copper_shingle_slab.json | 4 +- ...eathered_copper_shingles_stonecutting.json | 4 +- .../weathered_copper_shingle_stairs.json | 4 +- ...eathered_copper_shingles_stonecutting.json | 5 +- .../recipe/weathered_copper_tile_slab.json | 4 +- ...m_weathered_copper_tiles_stonecutting.json | 4 +- .../recipe/weathered_copper_tile_stairs.json | 4 +- ...m_weathered_copper_tiles_stonecutting.json | 5 +- ...n_block_from_ingots_iron_stonecutting.json | 4 +- .../create/recipe/weathered_iron_window.json | 8 +- .../recipe/weathered_iron_window_pane.json | 4 +- .../item/{doors.json => wooden_doors.json} | 0 .../{trapdoors.json => wooden_trapdoors.json} | 0 .../create/AllBlockSpoutingBehaviours.java | 18 +- .../java/com/simibubi/create/AllBlocks.java | 556 +- .../com/simibubi/create/AllBogeyStyles.java | 14 +- .../simibubi/create/AllCreativeModeTabs.java | 17 +- .../simibubi/create/AllDataComponents.java | 4 +- .../simibubi/create/AllDisplaySources.java | 21 +- .../simibubi/create/AllDisplayTargets.java | 6 +- .../com/simibubi/create/AllEnchantments.java | 6 +- .../create/AllEntityDataSerializers.java | 9 + .../com/simibubi/create/AllEntityTypes.java | 7 +- .../java/com/simibubi/create/AllFluids.java | 80 +- .../java/com/simibubi/create/AllItems.java | 78 +- .../java/com/simibubi/create/AllKeys.java | 10 +- .../AllMountedDispenseItemBehaviors.java | 16 +- .../com/simibubi/create/AllPartialModels.java | 18 +- .../com/simibubi/create/AllParticleTypes.java | 16 +- .../create/AllParticleTypesClient.java | 57 + .../com/simibubi/create/AllRecipeTypes.java | 29 +- .../java/com/simibubi/create/AllShapes.java | 2 +- .../com/simibubi/create/AllSoundEvents.java | 50 +- .../simibubi/create/AllSpecialTextures.java | 13 +- .../com/simibubi/create/AllSpriteShifts.java | 8 +- .../create/AllStructureProcessorTypes.java | 9 +- .../java/com/simibubi/create/AllTags.java | 21 +- src/main/java/com/simibubi/create/Create.java | 12 +- .../com/simibubi/create/CreateClient.java | 39 +- .../api/behaviour/display/DisplaySource.java | 15 +- .../api/behaviour/display/DisplayTarget.java | 15 +- .../ConductorBlockInteractionBehavior.java | 21 +- .../MovingInteractionBehaviour.java | 2 +- .../behaviour/movement/MovementBehaviour.java | 7 +- .../spouting/CauldronSpoutingBehavior.java | 2 +- .../api/connectivity/ConnectivityHandler.java | 2 +- .../api/contraption/ContraptionType.java | 8 +- .../DefaultMountedDispenseBehavior.java | 8 +- .../dispenser/MountedDispenseBehavior.java | 7 +- .../storage/item/MountedItemStorage.java | 2 +- .../storage/item/MountedItemStorageType.java | 2 +- .../item/simple/SimpleMountedStorage.java | 5 +- .../item/simple/SimpleMountedStorageType.java | 5 +- .../train/PortalTrackProvider.java | 2 +- .../create/api/data/TrainHatInfoProvider.java | 4 +- .../api/data/recipe/BaseRecipeProvider.java | 111 +- .../api/data/recipe/CrushingRecipeGen.java | 6 +- .../create/api/data/recipe/DatagenMod.java | 22 +- .../api/data/recipe/DeployingRecipeGen.java | 4 +- .../api/data/recipe/HauntingRecipeGen.java | 2 +- .../data/recipe/ItemApplicationRecipeGen.java | 6 +- .../MechanicalCraftingRecipeBuilder.java | 20 +- .../recipe/MechanicalCraftingRecipeGen.java | 6 +- .../api/data/recipe/MillingRecipeGen.java | 2 +- .../api/data/recipe/ProcessingRecipeGen.java | 18 +- .../recipe/StandardProcessingRecipeGen.java | 10 +- .../goggles/IHaveGoggleInformation.java | 60 +- .../PotatoCannonProjectileType.java | 35 +- .../PotatoProjectileRenderMode.java | 2 - .../api/packager/InventoryIdentifier.java | 2 +- .../CreateRegistrateRegistrationCallback.java | 4 +- .../java/com/simibubi/create/compat/Mods.java | 20 +- .../AbstractComputerBehaviour.java | 2 +- .../compat/computercraft/ComputerScreen.java | 42 +- .../implementation/ComputerUtil.java | 33 +- .../luaObjects/LuaBigItemStack.java | 5 +- .../luaObjects/LuaItemStack.java | 4 +- .../luaObjects/PackageOrderLuaObject.java | 8 +- .../peripherals/DisplayLinkPeripheral.java | 6 +- .../peripherals/NixieTubePeripheral.java | 3 +- .../RedstoneRequesterPeripheral.java | 15 +- .../peripherals/SignalPeripheral.java | 2 +- .../peripherals/StationPeripheral.java | 21 +- .../peripherals/StockTickerPeripheral.java | 5 +- .../peripherals/SyncedPeripheral.java | 2 +- .../peripherals/TableClothShopPeripheral.java | 19 +- .../simibubi/create/compat/curios/Curios.java | 2 +- .../compat/curios/CuriosDataGenerator.java | 25 - .../create/compat/curios/CuriosRenderers.java | 2 - .../compat/curios/GogglesCurioRenderer.java | 8 +- .../FramedBlocksInSchematics.java | 18 +- .../create/compat/ftb/FTBIntegration.java | 2 +- .../compat/jei/BlueprintTransferHandler.java | 11 +- .../create/compat/jei/ConversionRecipe.java | 10 +- .../simibubi/create/compat/jei/CreateJEI.java | 48 +- .../create/compat/jei/DoubleItemIcon.java | 39 +- .../create/compat/jei/EmptyBackground.java | 4 +- .../compat/jei/GhostIngredientHandler.java | 6 +- .../simibubi/create/compat/jei/ItemIcon.java | 23 +- .../jei/PotionFluidSubtypeInterpreter.java | 5 - .../compat/jei/ScreenResourceWrapper.java | 7 +- .../jei/StockKeeperTransferHandler.java | 9 +- .../jei/ToolboxColoringRecipeMaker.java | 25 +- .../compat/jei/category/BasinCategory.java | 12 +- .../jei/category/BlockCuttingCategory.java | 15 +- .../jei/category/CreateRecipeCategory.java | 73 +- .../compat/jei/category/CrushingCategory.java | 6 +- .../jei/category/DeployingCategory.java | 7 +- .../jei/category/FanBlastingCategory.java | 8 +- .../jei/category/FanHauntingCategory.java | 8 +- .../jei/category/FanSmokingCategory.java | 8 +- .../jei/category/FanWashingCategory.java | 8 +- .../jei/category/ItemApplicationCategory.java | 26 +- .../jei/category/ItemDrainCategory.java | 31 +- .../category/MechanicalCraftingCategory.java | 92 +- .../compat/jei/category/MillingCategory.java | 4 +- .../compat/jei/category/MixingCategory.java | 4 +- .../MysteriousItemConversionCategory.java | 4 +- .../compat/jei/category/PackingCategory.java | 4 +- .../jei/category/PolishingCategory.java | 19 +- .../compat/jei/category/PressingCategory.java | 4 +- .../category/ProcessingViaFanCategory.java | 34 +- .../compat/jei/category/SawingCategory.java | 4 +- .../category/SequencedAssemblyCategory.java | 55 +- .../compat/jei/category/SpoutCategory.java | 39 +- .../animations/AnimatedBlazeBurner.java | 71 +- .../category/animations/AnimatedCrafter.java | 25 +- .../animations/AnimatedCrushingWheels.java | 21 +- .../category/animations/AnimatedDeployer.java | 36 +- .../animations/AnimatedItemDrain.java | 29 +- .../category/animations/AnimatedKinetics.java | 9 +- .../animations/AnimatedMillstone.java | 21 +- .../category/animations/AnimatedMixer.java | 32 +- .../category/animations/AnimatedPress.java | 30 +- .../jei/category/animations/AnimatedSaw.java | 27 +- .../category/animations/AnimatedSpout.java | 66 +- .../SequencedAssemblySubCategory.java | 71 +- .../create/compat/pojav/PojavChecker.java | 4 +- .../compat/pojav/PojavWarningScreen.java | 2 +- .../create/compat/sodium/SodiumCompat.java | 26 +- .../compat/tconstruct/SpoutCasting.java | 7 +- .../thresholdSwitch/FunctionalStorage.java | 2 +- .../thresholdSwitch/SophisticatedStorage.java | 2 +- .../thresholdSwitch/StorageDrawers.java | 2 +- .../compat/trainmap/FTBChunksTrainMap.java | 12 +- .../compat/trainmap/JourneyTrainMap.java | 12 +- .../compat/trainmap/TrainMapEvents.java | 18 - .../compat/trainmap/TrainMapManager.java | 96 +- .../compat/trainmap/TrainMapRenderer.java | 94 +- .../create/compat/trainmap/TrainMapSync.java | 11 +- .../compat/trainmap/TrainMapSyncClient.java | 8 +- .../compat/trainmap/TrainMapSyncPacket.java | 10 +- .../create/compat/trainmap/XaeroTrainMap.java | 10 +- .../AbstractContraptionEntity.java | 77 +- .../contraptions/AssemblyException.java | 11 +- .../content/contraptions/Contraption.java | 150 +- .../ContraptionBlockChangedPacket.java | 8 +- .../contraptions/ContraptionCollider.java | 27 +- .../ContraptionColliderLockPacket.java | 8 +- .../ContraptionDisassemblyPacket.java | 6 +- .../contraptions/ContraptionHandler.java | 10 +- .../ContraptionHandlerClient.java | 23 +- .../ContraptionRelocationPacket.java | 6 +- .../contraptions/ContraptionStallPacket.java | 6 +- .../contraptions/ContraptionWorld.java | 4 +- .../ControlledContraptionEntity.java | 23 +- .../DirectionalExtenderScrollOptionSlot.java | 4 +- .../contraptions/IControlContraption.java | 2 +- .../IDisplayAssemblyExceptions.java | 2 +- .../contraptions/MountedStorageManager.java | 35 +- .../MountedStorageSyncPacket.java | 4 +- .../OrientedContraptionEntity.java | 74 +- .../contraptions/StructureTransform.java | 10 +- .../actors/AttachedActorBlock.java | 9 +- .../ContraptionControlsBlock.java | 4 +- .../ContraptionControlsBlockEntity.java | 12 +- .../ContraptionControlsMovement.java | 17 +- .../ContraptionControlsMovingInteraction.java | 11 +- .../ContraptionControlsRenderer.java | 28 +- .../ContraptionDisableActorPacket.java | 8 +- .../harvester/HarvesterActorVisual.java | 8 +- .../harvester/HarvesterMovementBehaviour.java | 12 +- .../actors/harvester/HarvesterRenderer.java | 24 +- .../plough/PloughMovementBehaviour.java | 10 +- .../contraptions/actors/psi/PIInstance.java | 2 +- .../actors/psi/PSIActorVisual.java | 6 +- .../PortableFluidInterfaceBlockEntity.java | 5 +- .../psi/PortableItemInterfaceBlockEntity.java | 9 +- .../psi/PortableStorageInterfaceBlock.java | 8 +- .../PortableStorageInterfaceBlockEntity.java | 14 +- .../psi/PortableStorageInterfaceMovement.java | 33 +- .../psi/PortableStorageInterfaceRenderer.java | 24 +- .../contraptions/actors/roller/PaveTask.java | 2 +- .../actors/roller/RollerBlock.java | 16 +- .../actors/roller/RollerBlockEntity.java | 8 +- .../roller/RollerMovementBehaviour.java | 40 +- .../actors/roller/RollerRenderer.java | 24 +- .../actors/roller/TrackPaverV2.java | 6 +- .../ContraptionPlayerPassengerRotation.java | 4 +- .../contraptions/actors/seat/SeatBlock.java | 66 +- .../contraptions/actors/seat/SeatEntity.java | 36 +- .../actors/seat/SeatMovementBehaviour.java | 4 +- .../actors/trainControls/ControlsBlock.java | 8 +- .../actors/trainControls/ControlsHandler.java | 20 +- .../trainControls/ControlsInputPacket.java | 4 +- .../ControlsInteractionBehaviour.java | 2 +- .../ControlsMovementBehaviour.java | 14 +- .../trainControls/ControlsRenderer.java | 22 +- .../trainControls/ControlsServerHandler.java | 4 +- .../ControlsStopControllingPacket.java | 6 +- .../contraptions/bearing/BearingBlock.java | 2 +- .../bearing/BearingContraption.java | 4 +- .../contraptions/bearing/BearingRenderer.java | 12 +- .../contraptions/bearing/BearingVisual.java | 2 +- .../bearing/BlankSailBlockItem.java | 8 - .../bearing/ClockworkBearingBlock.java | 16 +- .../bearing/ClockworkBearingBlockEntity.java | 32 +- .../bearing/ClockworkContraption.java | 6 +- .../bearing/MechanicalBearingBlock.java | 16 +- .../bearing/MechanicalBearingBlockEntity.java | 22 +- .../contraptions/bearing/SailBlock.java | 59 +- .../StabilizedBearingMovementBehaviour.java | 18 +- .../bearing/StabilizedBearingVisual.java | 4 +- .../bearing/StabilizedContraption.java | 2 +- .../bearing/WindmillBearingBlock.java | 16 +- .../bearing/WindmillBearingBlockEntity.java | 8 +- .../behaviour/CampfireMovementBehaviour.java | 4 +- .../behaviour/DoorMovingInteraction.java | 2 +- .../behaviour/FenceGateMovingInteraction.java | 2 +- .../behaviour/MovementContext.java | 18 +- .../behaviour/TrapdoorMovingInteraction.java | 2 +- .../dispenser/DropperMovementBehaviour.java | 6 +- .../chassis/AbstractChassisBlock.java | 35 +- .../chassis/ChassisBlockEntity.java | 8 +- .../chassis/ChassisRangeDisplay.java | 2 +- .../chassis/LinearChassisBlock.java | 9 +- .../contraptions/chassis/StickerBlock.java | 30 +- .../chassis/StickerBlockEntity.java | 25 +- .../contraptions/chassis/StickerClient.java | 20 + .../contraptions/chassis/StickerRenderer.java | 16 +- .../contraptions/chassis/StickerVisual.java | 2 +- .../data/ContraptionPickupLimiting.java | 2 +- .../data/ContraptionSyncLimiting.java | 2 +- .../contraptions/elevator/ElevatorColumn.java | 14 +- .../elevator/ElevatorContactBlock.java | 44 +- .../elevator/ElevatorContactBlockEntity.java | 14 +- .../elevator/ElevatorContactClient.java | 14 + .../elevator/ElevatorContactScreen.java | 25 +- .../elevator/ElevatorContraption.java | 16 +- .../elevator/ElevatorControlsHandler.java | 4 +- .../elevator/ElevatorFloorListPacket.java | 16 +- .../elevator/ElevatorPulleyBlock.java | 16 +- .../elevator/ElevatorPulleyBlockEntity.java | 14 +- .../elevator/ElevatorPulleyRenderer.java | 16 +- .../elevator/ElevatorPulleyVisual.java | 2 +- .../elevator/ElevatorTargetFloorPacket.java | 2 +- .../gantry/GantryCarriageBlock.java | 23 +- .../gantry/GantryCarriageBlockEntity.java | 5 +- .../gantry/GantryCarriageRenderer.java | 18 +- .../gantry/GantryCarriageVisual.java | 4 +- .../gantry/GantryContraption.java | 2 +- .../gantry/GantryContraptionEntity.java | 31 +- .../gantry/GantryContraptionUpdatePacket.java | 6 +- .../contraptions/glue/GlueEffectPacket.java | 8 +- .../contraptions/glue/SuperGlueEntity.java | 41 +- .../contraptions/glue/SuperGlueHandler.java | 13 +- .../contraptions/glue/SuperGlueItem.java | 17 +- .../contraptions/glue/SuperGlueRenderer.java | 10 +- .../glue/SuperGlueSelectionHandler.java | 10 +- .../glue/SuperGlueSelectionHelper.java | 7 +- .../glue/SuperGlueSelectionPacket.java | 3 +- .../minecart/CouplingCreationPacket.java | 2 +- .../minecart/CouplingHandler.java | 8 +- .../minecart/CouplingHandlerClient.java | 12 +- .../minecart/CouplingPhysics.java | 16 +- .../minecart/CouplingRenderer.java | 56 +- .../minecart/MinecartCouplingItem.java | 14 +- .../minecart/MinecartSim2020.java | 130 +- .../minecart/TrainCargoManager.java | 2 +- .../CapabilityMinecartController.java | 12 +- .../capability/MinecartController.java | 140 +- .../MinecartControllerUpdatePacket.java | 10 +- .../mounted/CartAssembleRailType.java | 2 +- .../mounted/CartAssemblerBlock.java | 36 +- .../mounted/CartAssemblerBlockEntity.java | 41 +- .../mounted/CartAssemblerBlockItem.java | 2 +- .../mounted/MinecartContraptionItem.java | 71 +- .../mounted/MountedContraption.java | 8 +- .../piston/LinearActuatorBlockEntity.java | 28 +- .../piston/MechanicalPistonBlock.java | 38 +- .../piston/MechanicalPistonBlockEntity.java | 8 +- .../piston/MechanicalPistonGenerator.java | 6 +- .../piston/MechanicalPistonHeadBlock.java | 10 +- .../piston/PistonContraption.java | 8 +- .../piston/PistonExtensionPoleBlock.java | 27 +- .../pulley/AbstractPulleyRenderer.java | 18 +- .../pulley/AbstractPulleyVisual.java | 8 +- .../contraptions/pulley/HosePulleyVisual.java | 2 +- .../contraptions/pulley/PulleyBlock.java | 59 +- .../pulley/PulleyBlockEntity.java | 24 +- .../pulley/PulleyContraption.java | 2 +- .../contraptions/pulley/PulleyRenderer.java | 6 +- .../contraptions/pulley/RopePulleyVisual.java | 2 +- .../contraptions/render/ActorVisual.java | 12 +- .../render/ClientContraption.java | 9 +- .../render/ContraptionEntityRenderer.java | 95 +- .../render/ContraptionMatrices.java | 5 +- .../render/ContraptionVisual.java | 2 +- .../contraptions/render/package-info.java | 5 +- .../contraptions/sync/ClientMotionPacket.java | 4 +- .../sync/ContraptionInteractionPacket.java | 4 +- .../sync/ContraptionSeatMappingPacket.java | 10 +- .../sync/LimbSwingUpdatePacket.java | 13 +- .../wrench/NonVisualizationLevel.java | 2 +- .../wrench/RadialWrenchHandler.java | 2 +- .../contraptions/wrench/RadialWrenchMenu.java | 178 +- .../wrench/RadialWrenchMenuSubmitPacket.java | 2 +- .../contraptions/wrench/package-info.java | 4 +- .../content/decoration/MetalLadderBlock.java | 35 +- .../decoration/MetalScaffoldingBlock.java | 6 +- .../decoration/MetalScaffoldingBlockItem.java | 4 +- .../MetalScaffoldingCTBehaviour.java | 2 +- .../decoration/RoofBlockCTBehaviour.java | 4 +- .../decoration/TrainTrapdoorBlock.java | 2 +- .../decoration/TrapdoorCTBehaviour.java | 2 +- .../decoration/bracket/BracketBlock.java | 2 +- .../decoration/bracket/BracketBlockItem.java | 2 +- .../decoration/bracket/BracketGenerator.java | 20 +- .../BracketedBlockEntityBehaviour.java | 10 +- .../decoration/copycat/CopycatBarsModel.java | 10 +- .../decoration/copycat/CopycatBlock.java | 111 +- .../copycat/CopycatBlockEntity.java | 14 +- .../decoration/copycat/CopycatModel.java | 32 +- .../decoration/copycat/CopycatPanelBlock.java | 26 +- .../decoration/copycat/CopycatPanelModel.java | 17 +- .../decoration/copycat/CopycatStepBlock.java | 22 +- .../decoration/copycat/CopycatStepModel.java | 12 +- .../copycat/FilteredBlockAndTintGetter.java | 18 +- .../SpecialCopycatPanelBlockState.java | 8 +- .../copycat/WaterloggedCopycatBlock.java | 8 +- .../decoration/encasing/EncasableBlock.java | 12 +- .../encasing/EncasedCTBehaviour.java | 2 +- .../girder/ConnectedGirderModel.java | 23 +- .../decoration/girder/GirderBlock.java | 43 +- .../girder/GirderBlockStateGenerator.java | 10 +- .../decoration/girder/GirderCTBehaviour.java | 2 +- .../girder/GirderEncasedShaftBlock.java | 8 +- .../girder/GirderPlacementHelper.java | 4 +- .../girder/GirderWrenchBehavior.java | 30 +- .../decoration/palettes/AllPaletteBlocks.java | 26 +- .../palettes/AllPaletteStoneTypes.java | 2 +- .../palettes/ConnectedGlassBlock.java | 5 +- .../palettes/ConnectedGlassPaneBlock.java | 2 - .../palettes/ConnectedPillarBlock.java | 11 +- .../palettes/PaletteBlockPartial.java | 76 +- .../palettes/PaletteBlockPattern.java | 77 +- .../palettes/PalettesVariantEntry.java | 14 +- .../WeatheredIronWindowCTBehaviour.java | 2 +- .../WeatheredIronWindowPaneCTBehaviour.java | 2 +- .../decoration/palettes/WindowBlock.java | 2 - .../decoration/placard/PlacardBlock.java | 42 +- .../placard/PlacardBlockEntity.java | 19 +- .../decoration/placard/PlacardRenderer.java | 11 +- .../decoration/slidingDoor/DoorControl.java | 10 +- .../slidingDoor/DoorControlBehaviour.java | 2 +- .../slidingDoor/SlidingDoorBlock.java | 15 +- .../slidingDoor/SlidingDoorBlockEntity.java | 6 +- .../SlidingDoorMovementBehaviour.java | 11 +- .../slidingDoor/SlidingDoorRenderer.java | 22 +- .../decoration/steamWhistle/WhistleBlock.java | 33 +- .../steamWhistle/WhistleBlockEntity.java | 65 +- .../steamWhistle/WhistleClient.java | 71 + .../steamWhistle/WhistleExtenderBlock.java | 25 +- .../steamWhistle/WhistleGenerator.java | 21 +- .../steamWhistle/WhistleRenderer.java | 14 +- .../content/equipment/BuildersTeaItem.java | 6 +- .../content/equipment/TreeFertilizerItem.java | 7 +- .../equipment/armor/AllArmorMaterials.java | 71 +- .../equipment/armor/BacktankArmorLayer.java | 96 +- .../equipment/armor/BacktankBlock.java | 34 +- .../equipment/armor/BacktankBlockEntity.java | 38 +- .../content/equipment/armor/BacktankItem.java | 27 +- .../equipment/armor/BacktankRenderer.java | 16 +- .../content/equipment/armor/BacktankUtil.java | 5 +- .../equipment/armor/BaseArmorItem.java | 29 +- .../armor/CardboardArmorHandler.java | 9 +- .../armor/CardboardArmorHandlerClient.java | 44 +- .../equipment/armor/CardboardArmorItem.java | 4 +- .../armor/CardboardArmorStealthOverlay.java | 27 +- .../equipment/armor/DivingBootsItem.java | 13 +- .../equipment/armor/DivingHelmetItem.java | 26 +- .../NetheriteBacktankFirstPersonRenderer.java | 29 +- .../armor/NetheriteDivingHandler.java | 7 +- .../equipment/armor/RemainingAirOverlay.java | 39 +- .../armor/TrimmableArmorModelGenerator.java | 52 +- .../equipment/bell/AbstractBellBlock.java | 8 +- .../bell/AbstractBellBlockEntity.java | 4 +- .../equipment/bell/BasicParticleData.java | 27 +- .../content/equipment/bell/BellRenderer.java | 12 +- .../bell/CustomRotationParticle.java | 7 +- .../equipment/bell/HauntedBellBlock.java | 2 +- .../bell/HauntedBellBlockEntity.java | 6 +- .../bell/HauntedBellMovementBehaviour.java | 2 +- .../equipment/bell/HauntedBellPulser.java | 4 +- .../equipment/bell/PeculiarBellBlock.java | 9 +- .../bell/PeculiarBellBlockEntity.java | 2 - .../equipment/bell/SoulBaseParticle.java | 4 - .../content/equipment/bell/SoulParticle.java | 14 +- .../equipment/bell/SoulPulseEffect.java | 8 +- .../equipment/bell/SoulPulseEffectPacket.java | 6 +- .../BlueprintAssignCompleteRecipePacket.java | 13 +- .../equipment/blueprint/BlueprintEntity.java | 130 +- .../equipment/blueprint/BlueprintItem.java | 109 +- .../equipment/blueprint/BlueprintMenu.java | 14 +- .../blueprint/BlueprintOverlayRenderer.java | 85 +- .../blueprint/BlueprintRenderer.java | 105 +- .../equipment/blueprint/BlueprintScreen.java | 16 +- .../equipment/clipboard/ClipboardBlock.java | 36 +- .../clipboard/ClipboardBlockEntity.java | 15 +- .../clipboard/ClipboardBlockItem.java | 31 +- .../equipment/clipboard/ClipboardClient.java | 126 + .../equipment/clipboard/ClipboardContent.java | 2 +- .../clipboard/ClipboardEditPacket.java | 7 +- .../clipboard/ClipboardOverrides.java | 23 +- .../equipment/clipboard/ClipboardScreen.java | 107 +- .../ClipboardValueSettingsHandler.java | 123 +- .../extendoGrip/ExtendoGripClient.java | 128 + .../ExtendoGripInteractionPacket.java | 8 +- .../extendoGrip/ExtendoGripItem.java | 112 +- .../extendoGrip/ExtendoGripItemRenderer.java | 4 +- .../extendoGrip/ExtendoGripRenderHandler.java | 98 +- .../equipment/goggles/GoggleConfigScreen.java | 10 +- .../goggles/GoggleOverlayRenderer.java | 46 +- .../equipment/goggles/GogglesItem.java | 21 +- .../equipment/goggles/GogglesModel.java | 16 +- .../equipment/hats/CreateHatArmorLayer.java | 116 +- .../content/equipment/hats/EntityHats.java | 4 +- .../AllPotatoProjectileEntityHitActions.java | 36 +- .../AllPotatoProjectileRenderModes.java | 7 +- .../AllPotatoProjectileTypes.java | 4 +- .../potatoCannon/PotatoCannonClient.java | 91 + .../potatoCannon/PotatoCannonItem.java | 122 +- .../PotatoCannonItemRenderer.java | 17 +- .../potatoCannon/PotatoCannonPacket.java | 5 +- .../PotatoCannonRenderHandler.java | 8 +- .../potatoCannon/PotatoProjectileEntity.java | 112 +- .../PotatoProjectileRenderer.java | 27 +- .../equipment/sandPaper/SandPaperItem.java | 70 +- .../sandPaper/SandPaperItemRenderer.java | 10 +- .../sandPaper/SandPaperPolishingRecipe.java | 11 +- .../ConfigureSymmetryWandPacket.java | 2 +- .../symmetryWand/SymmetryEffectPacket.java | 14 +- .../symmetryWand/SymmetryHandler.java | 159 +- .../symmetryWand/SymmetryWandClient.java | 145 + .../symmetryWand/SymmetryWandItem.java | 40 +- .../SymmetryWandItemRenderer.java | 8 +- .../symmetryWand/SymmetryWandScreen.java | 29 +- .../symmetryWand/mirror/CrossPlaneMirror.java | 2 - .../symmetryWand/mirror/EmptyMirror.java | 2 - .../symmetryWand/mirror/PlaneMirror.java | 2 - .../symmetryWand/mirror/SymmetryMirror.java | 14 +- .../mirror/TriplePlaneMirror.java | 2 - .../equipment/tool/AllToolMaterials.java | 66 +- .../equipment/tool/CardboardSwordItem.java | 21 +- .../tool/CardboardSwordItemRenderer.java | 2 +- .../equipment/tool/KnockbackPacket.java | 6 +- .../equipment/toolbox/RadialToolboxMenu.java | 108 +- .../equipment/toolbox/ToolBoxVisual.java | 2 +- .../equipment/toolbox/ToolboxBlock.java | 42 +- .../equipment/toolbox/ToolboxBlockEntity.java | 49 +- .../toolbox/ToolboxDisposeAllPacket.java | 6 +- .../toolbox/ToolboxDyeingRecipe.java | 19 +- .../equipment/toolbox/ToolboxEquipPacket.java | 6 +- .../equipment/toolbox/ToolboxHandler.java | 22 +- .../toolbox/ToolboxHandlerClient.java | 56 +- .../equipment/toolbox/ToolboxInventory.java | 16 +- .../equipment/toolbox/ToolboxMenu.java | 12 +- .../equipment/toolbox/ToolboxRenderer.java | 12 +- .../equipment/toolbox/ToolboxScreen.java | 73 +- .../content/equipment/wrench/IWrenchable.java | 6 +- .../wrench/IWrenchableWithBracket.java | 4 +- .../content/equipment/wrench/WrenchItem.java | 5 +- .../equipment/wrench/WrenchItemRenderer.java | 4 +- .../equipment/zapper/PlacementPatterns.java | 4 +- .../equipment/zapper/ShootGadgetPacket.java | 8 +- .../zapper/ShootableGadgetItemMethods.java | 4 +- .../zapper/ShootableGadgetRenderHandler.java | 72 +- .../equipment/zapper/ZapperBeamPacket.java | 5 +- .../equipment/zapper/ZapperClient.java | 13 + .../zapper/ZapperInteractionHandler.java | 2 +- .../content/equipment/zapper/ZapperItem.java | 77 +- .../equipment/zapper/ZapperItemRenderer.java | 13 +- .../equipment/zapper/ZapperRenderHandler.java | 4 +- .../equipment/zapper/ZapperScreen.java | 32 +- .../ConfigureWorldshaperPacket.java | 4 +- .../zapper/terrainzapper/CylinderBrush.java | 2 +- .../terrainzapper/PlacementOptions.java | 4 +- .../zapper/terrainzapper/SphereBrush.java | 2 +- .../zapper/terrainzapper/TerrainBrushes.java | 4 +- .../zapper/terrainzapper/TerrainTools.java | 4 +- .../terrainzapper/WorldshaperClient.java | 22 + .../zapper/terrainzapper/WorldshaperItem.java | 13 +- .../WorldshaperItemRenderer.java | 8 +- .../WorldshaperRenderHandler.java | 4 +- .../terrainzapper/WorldshaperScreen.java | 8 +- .../create/content/fluids/FlowSource.java | 22 +- .../content/fluids/FluidBottleItemHook.java | 2 +- .../create/content/fluids/FluidFX.java | 4 +- .../create/content/fluids/FluidMesh.java | 6 +- .../create/content/fluids/FluidNetwork.java | 6 +- .../content/fluids/FluidPropagator.java | 9 +- .../fluids/FluidTransportBehaviour.java | 8 +- .../create/content/fluids/OpenEndedPipe.java | 35 +- .../content/fluids/PipeAttachmentModel.java | 56 +- .../create/content/fluids/PipeConnection.java | 43 +- .../content/fluids/drain/ItemDrainBlock.java | 39 +- .../fluids/drain/ItemDrainBlockEntity.java | 28 +- .../fluids/drain/ItemDrainRenderer.java | 23 +- .../fluids/hosePulley/HosePulleyBlock.java | 2 +- .../hosePulley/HosePulleyBlockEntity.java | 18 +- .../fluids/hosePulley/HosePulleyRenderer.java | 6 +- .../fluids/particle/BasinFluidParticle.java | 15 +- .../fluids/particle/FluidParticleData.java | 9 +- .../fluids/particle/FluidStackParticle.java | 40 +- .../content/fluids/pipes/AxisPipeBlock.java | 35 +- .../fluids/pipes/EncasedPipeBlock.java | 22 +- .../content/fluids/pipes/FluidPipeBlock.java | 54 +- .../fluids/pipes/FluidPipeBlockEntity.java | 2 +- .../fluids/pipes/FluidPipeBlockRotation.java | 2 +- .../fluids/pipes/GlassFluidPipeBlock.java | 2 - .../content/fluids/pipes/GlassPipeVisual.java | 17 +- .../fluids/pipes/SmartFluidPipeBlock.java | 27 +- .../pipes/SmartFluidPipeBlockEntity.java | 6 +- .../fluids/pipes/SmartFluidPipeGenerator.java | 6 +- .../fluids/pipes/StraightPipeBlockEntity.java | 2 +- .../TransparentStraightPipeRenderer.java | 6 +- .../fluids/pipes/valve/FluidValveBlock.java | 23 +- .../pipes/valve/FluidValveBlockEntity.java | 8 +- .../pipes/valve/FluidValveRenderer.java | 12 +- .../fluids/pipes/valve/FluidValveVisual.java | 2 +- .../content/fluids/potion/PotionFluid.java | 20 +- .../fluids/potion/PotionFluidHandler.java | 11 +- .../fluids/potion/PotionMixingRecipes.java | 20 +- .../create/content/fluids/pump/PumpBlock.java | 28 +- .../content/fluids/pump/PumpBlockEntity.java | 18 +- .../content/fluids/pump/PumpRenderer.java | 4 +- .../content/fluids/spout/FillingBySpout.java | 21 +- .../content/fluids/spout/SpoutBlock.java | 9 +- .../fluids/spout/SpoutBlockEntity.java | 16 +- .../content/fluids/spout/SpoutRenderer.java | 10 +- .../content/fluids/tank/BoilerData.java | 28 +- .../tank/CreativeFluidTankBlockEntity.java | 5 +- .../content/fluids/tank/FluidTankBlock.java | 46 +- .../fluids/tank/FluidTankBlockEntity.java | 44 +- .../fluids/tank/FluidTankCTBehaviour.java | 2 +- .../fluids/tank/FluidTankGenerator.java | 6 +- .../content/fluids/tank/FluidTankItem.java | 15 +- .../content/fluids/tank/FluidTankModel.java | 16 +- .../tank/FluidTankMovementBehavior.java | 2 +- .../fluids/tank/FluidTankRenderer.java | 15 +- .../create/content/fluids/tank/SoundPool.java | 2 +- .../tank/storage/FluidTankMountedStorage.java | 6 +- .../CreativeFluidTankMountedStorage.java | 4 +- .../fluids/transfer/EmptyingRecipe.java | 3 +- .../fluids/transfer/FillingRecipe.java | 7 +- .../transfer/FluidDrainingBehaviour.java | 4 +- .../transfer/FluidFillingBehaviour.java | 11 +- .../transfer/FluidManipulationBehaviour.java | 14 +- .../fluids/transfer/FluidSplashPacket.java | 6 +- .../fluids/transfer/GenericItemEmptying.java | 10 +- .../fluids/transfer/GenericItemFilling.java | 11 +- .../content/kinetics/KineticDebugger.java | 10 +- .../content/kinetics/RotationPropagator.java | 9 +- .../content/kinetics/TorquePropagator.java | 2 +- .../base/AbstractEncasedShaftBlock.java | 2 - .../base/BlockBreakingKineticBlockEntity.java | 23 +- .../base/BlockBreakingMovementBehaviour.java | 30 +- .../base/DirectionalAxisKineticBlock.java | 2 +- .../base/DirectionalKineticBlock.java | 6 +- .../DirectionalShaftHalvesBlockEntity.java | 4 +- .../base/GeneratingKineticBlockEntity.java | 2 +- .../base/HorizontalAxisKineticBlock.java | 2 +- .../kinetics/base/HorizontalKineticBlock.java | 2 +- .../create/content/kinetics/base/IRotate.java | 4 +- .../content/kinetics/base/KineticBlock.java | 9 +- .../kinetics/base/KineticBlockEntity.java | 40 +- .../base/KineticBlockEntityRenderer.java | 41 +- .../base/KineticBlockEntityVisual.java | 2 +- .../kinetics/base/KineticEffectHandler.java | 8 +- .../base/RotatedPillarKineticBlock.java | 2 +- .../kinetics/base/RotatingInstance.java | 2 +- .../base/RotationIndicatorParticle.java | 18 +- .../base/RotationIndicatorParticleData.java | 11 +- .../content/kinetics/belt/BeltBlock.java | 99 +- .../kinetics/belt/BeltBlockEntity.java | 34 +- .../content/kinetics/belt/BeltGenerator.java | 10 +- .../content/kinetics/belt/BeltHelper.java | 12 +- .../content/kinetics/belt/BeltModel.java | 21 +- .../content/kinetics/belt/BeltPart.java | 2 +- .../content/kinetics/belt/BeltRenderer.java | 38 +- .../content/kinetics/belt/BeltShapes.java | 2 +- .../content/kinetics/belt/BeltSlicer.java | 70 +- .../content/kinetics/belt/BeltSlope.java | 2 +- .../content/kinetics/belt/BeltVisual.java | 4 +- .../behaviour/DirectBeltInputBehaviour.java | 7 +- .../TransportedItemStackHandlerBehaviour.java | 2 +- .../belt/item/BeltConnectorHandler.java | 10 +- .../kinetics/belt/item/BeltConnectorItem.java | 13 +- .../BeltFunnelInteractionHandler.java | 2 +- .../belt/transport/BeltInventory.java | 10 +- .../belt/transport/BeltMovementHandler.java | 6 +- .../BeltTunnelInteractionHandler.java | 4 +- .../belt/transport/TransportedItemStack.java | 31 +- .../chainConveyor/ChainConveyorBlock.java | 20 +- .../ChainConveyorBlockEntity.java | 40 +- .../ChainConveyorConnectionHandler.java | 19 +- .../ChainConveyorConnectionPacket.java | 2 +- .../ChainConveyorInteractionHandler.java | 22 +- .../chainConveyor/ChainConveyorPackage.java | 17 +- .../chainConveyor/ChainConveyorRenderer.java | 42 +- .../ChainConveyorRidingHandler.java | 13 +- .../chainConveyor/ChainConveyorShape.java | 2 +- .../chainConveyor/ChainConveyorVisual.java | 16 +- .../ChainPackageInteractionHandler.java | 6 +- .../ChainPackageInteractionPacket.java | 4 +- .../ClientboundChainConveyorRidingPacket.java | 6 +- .../ServerChainConveyorHandler.java | 2 +- .../kinetics/chainDrive/ChainDriveBlock.java | 19 +- .../chainDrive/ChainDriveGenerator.java | 6 +- .../chainDrive/ChainGearshiftBlock.java | 5 +- .../chainDrive/ChainGearshiftBlockEntity.java | 4 +- .../clock/CuckooClockBlockEntity.java | 24 +- .../kinetics/clock/CuckooClockRenderer.java | 12 +- .../crafter/ConnectedInputHandler.java | 10 +- .../kinetics/crafter/CrafterCTBehaviour.java | 2 +- .../kinetics/crafter/CrafterHelper.java | 32 +- .../crafter/MechanicalCrafterBlock.java | 78 +- .../crafter/MechanicalCrafterBlockEntity.java | 53 +- .../crafter/MechanicalCrafterRenderer.java | 29 +- .../crafter/MechanicalCraftingRecipe.java | 86 +- .../kinetics/crafter/RecipeGridHandler.java | 27 +- .../kinetics/crank/HandCrankBlock.java | 25 +- .../kinetics/crank/HandCrankBlockEntity.java | 24 +- .../kinetics/crank/HandCrankRenderer.java | 8 +- .../kinetics/crank/HandCrankVisual.java | 2 +- .../kinetics/crank/ValveHandleBlock.java | 13 +- .../crank/ValveHandleBlockEntity.java | 21 +- .../kinetics/crank/ValveHandleVisual.java | 2 +- .../kinetics/crusher/CrushingWheelBlock.java | 18 +- .../crusher/CrushingWheelBlockEntity.java | 2 +- .../crusher/CrushingWheelControllerBlock.java | 26 +- .../CrushingWheelControllerBlockEntity.java | 42 +- .../deployer/BeltDeployerCallbacks.java | 6 +- .../deployer/DeployerActorVisual.java | 8 +- .../deployer/DeployerApplicationRecipe.java | 37 +- .../kinetics/deployer/DeployerBlock.java | 48 +- .../deployer/DeployerBlockEntity.java | 88 +- .../kinetics/deployer/DeployerFakePlayer.java | 54 +- .../kinetics/deployer/DeployerFilterSlot.java | 6 +- .../kinetics/deployer/DeployerHandler.java | 40 +- .../deployer/DeployerItemHandler.java | 2 +- .../deployer/DeployerMovementBehaviour.java | 62 +- .../deployer/DeployerMovingInteraction.java | 17 +- .../kinetics/deployer/DeployerRenderer.java | 41 +- .../kinetics/deployer/DeployerVisual.java | 4 +- .../deployer/ItemApplicationRecipe.java | 29 +- .../deployer/ItemApplicationRecipeParams.java | 2 +- .../deployer/ManualApplicationRecipe.java | 30 +- .../kinetics/drill/CobbleGenLevel.java | 5 +- .../kinetics/drill/CobbleGenOptimisation.java | 4 +- .../kinetics/drill/DrillActorVisual.java | 6 +- .../content/kinetics/drill/DrillBlock.java | 39 +- .../kinetics/drill/DrillBlockEntity.java | 5 +- .../drill/DrillMovementBehaviour.java | 8 +- .../content/kinetics/drill/DrillRenderer.java | 18 +- .../content/kinetics/fan/AirCurrent.java | 20 +- .../content/kinetics/fan/AirFlowParticle.java | 21 +- .../kinetics/fan/AirFlowParticleData.java | 9 - .../content/kinetics/fan/EncasedFanBlock.java | 6 +- .../kinetics/fan/EncasedFanBlockEntity.java | 4 +- .../kinetics/fan/EncasedFanRenderer.java | 18 +- .../kinetics/fan/IAirCurrentSource.java | 2 - .../content/kinetics/fan/NozzleBlock.java | 9 +- .../kinetics/fan/NozzleBlockEntity.java | 16 +- .../fan/processing/AllFanProcessingTypes.java | 124 +- .../fan/processing/FanProcessing.java | 22 +- .../fan/processing/FanProcessingType.java | 8 +- .../kinetics/flywheel/FlywheelBlock.java | 2 +- .../flywheel/FlywheelBlockEntity.java | 6 +- .../kinetics/flywheel/FlywheelRenderer.java | 12 +- .../kinetics/flywheel/FlywheelVisual.java | 2 +- .../kinetics/gantry/GantryShaftBlock.java | 36 +- .../gantry/GantryShaftBlockEntity.java | 7 +- .../content/kinetics/gauge/GaugeBlock.java | 24 +- .../kinetics/gauge/GaugeBlockEntity.java | 8 +- .../kinetics/gauge/GaugeGenerator.java | 4 +- .../content/kinetics/gauge/GaugeRenderer.java | 12 +- .../content/kinetics/gauge/GaugeShaper.java | 2 +- .../content/kinetics/gauge/GaugeVisual.java | 6 +- .../kinetics/gauge/SpeedGaugeBlockEntity.java | 2 +- .../gauge/StressGaugeBlockEntity.java | 8 +- .../kinetics/gearbox/GearboxBlock.java | 5 +- .../kinetics/gearbox/GearboxRenderer.java | 19 +- .../kinetics/gearbox/GearboxVisual.java | 5 +- .../kinetics/gearbox/VerticalGearboxItem.java | 7 +- .../AllArmInteractionPointTypes.java | 32 +- .../mechanicalArm/ArmAngleTarget.java | 6 +- .../kinetics/mechanicalArm/ArmBlock.java | 18 +- .../mechanicalArm/ArmBlockEntity.java | 42 +- .../mechanicalArm/ArmInteractionPoint.java | 26 +- .../ArmInteractionPointHandler.java | 10 +- .../kinetics/mechanicalArm/ArmItem.java | 5 +- .../mechanicalArm/ArmPlacementPacket.java | 8 +- .../kinetics/mechanicalArm/ArmRenderer.java | 26 +- .../kinetics/mechanicalArm/ArmVisual.java | 13 +- .../kinetics/millstone/MillstoneBlock.java | 27 +- .../millstone/MillstoneBlockEntity.java | 37 +- .../kinetics/millstone/MillstoneRenderer.java | 4 +- .../mixer/MechanicalMixerBlockEntity.java | 30 +- .../mixer/MechanicalMixerRenderer.java | 17 +- .../motor/CreativeMotorBlockEntity.java | 6 +- .../motor/CreativeMotorGenerator.java | 6 +- .../kinetics/motor/CreativeMotorRenderer.java | 4 +- .../press/MechanicalPressBlockEntity.java | 9 +- .../press/MechanicalPressRenderer.java | 11 +- .../content/kinetics/press/PressVisual.java | 2 +- .../kinetics/press/PressingBehaviour.java | 52 +- .../kinetics/press/PressingRecipe.java | 2 - .../content/kinetics/saw/CuttingRecipe.java | 2 - .../create/content/kinetics/saw/SawBlock.java | 43 +- .../content/kinetics/saw/SawBlockEntity.java | 66 +- .../content/kinetics/saw/SawFilterSlot.java | 2 +- .../content/kinetics/saw/SawGenerator.java | 6 +- .../kinetics/saw/SawMovementBehaviour.java | 13 +- .../content/kinetics/saw/SawRenderer.java | 32 +- .../content/kinetics/saw/TreeCutter.java | 7 +- .../simpleRelays/AbstractShaftBlock.java | 8 +- .../AbstractSimpleShaftBlock.java | 10 +- .../BracketedKineticBlockEntityRenderer.java | 14 +- .../BracketedKineticBlockModel.java | 17 +- .../kinetics/simpleRelays/CogWheelBlock.java | 16 +- .../simpleRelays/CogwheelBlockItem.java | 42 +- .../kinetics/simpleRelays/ShaftBlock.java | 28 +- .../encased/EncasedCogCTBehaviour.java | 4 +- .../encased/EncasedCogRenderer.java | 12 +- .../encased/EncasedCogVisual.java | 2 +- .../encased/EncasedCogwheelBlock.java | 17 +- .../encased/EncasedShaftBlock.java | 9 +- .../speedController/SpeedControllerBlock.java | 26 +- .../SpeedControllerBlockEntity.java | 4 +- .../SpeedControllerRenderer.java | 10 +- .../steamEngine/PoweredShaftBlock.java | 20 +- .../steamEngine/PoweredShaftBlockEntity.java | 18 +- .../steamEngine/SteamEngineBlock.java | 37 +- .../steamEngine/SteamEngineBlockEntity.java | 16 +- .../steamEngine/SteamEngineRenderer.java | 17 +- .../steamEngine/SteamEngineValueBox.java | 6 +- .../steamEngine/SteamEngineVisual.java | 2 +- .../steamEngine/SteamJetParticle.java | 75 +- .../steamEngine/SteamJetParticleData.java | 9 - .../kinetics/transmission/ClutchBlock.java | 6 +- .../kinetics/transmission/GearshiftBlock.java | 5 +- .../transmission/SplitShaftRenderer.java | 16 +- .../transmission/SplitShaftVisual.java | 2 +- .../transmission/sequencer/Instruction.java | 4 +- .../sequencer/InstructionSpeedModifiers.java | 4 +- .../sequencer/SequencedGearshiftBlock.java | 33 +- .../SequencedGearshiftBlockEntity.java | 18 +- .../sequencer/SequencedGearshiftClient.java | 14 + .../SequencedGearshiftGenerator.java | 6 +- .../sequencer/SequencedGearshiftScreen.java | 24 +- .../sequencer/SequencerInstructions.java | 4 +- .../kinetics/turntable/TurntableBlock.java | 14 +- .../kinetics/turntable/TurntableHandler.java | 2 +- .../waterwheel/LargeWaterWheelBlock.java | 12 +- .../waterwheel/LargeWaterWheelBlockItem.java | 33 +- .../waterwheel/LargeWaterWheelClient.java | 34 + .../kinetics/waterwheel/WaterWheelBlock.java | 16 +- .../waterwheel/WaterWheelBlockEntity.java | 24 +- .../waterwheel/WaterWheelRenderer.java | 70 +- .../waterwheel/WaterWheelStructuralBlock.java | 22 +- .../kinetics/waterwheel/WaterWheelVisual.java | 4 +- .../legacy/ChromaticCompoundColor.java | 20 +- .../content/legacy/ChromaticCompoundItem.java | 17 +- .../legacy/NoGravMagicalDohickyItem.java | 16 +- .../content/legacy/ShadowSteelItem.java | 2 +- .../content/logistics/AddressEditBox.java | 45 +- .../logistics/AddressEditBoxHelper.java | 2 +- .../create/content/logistics/FlapStuffs.java | 6 +- .../box/PackageClientInteractionHandler.java | 2 - .../logistics/box/PackageDestroyPacket.java | 13 +- .../content/logistics/box/PackageEntity.java | 79 +- .../content/logistics/box/PackageItem.java | 63 +- .../logistics/box/PackageRenderer.java | 32 +- .../content/logistics/box/PackageStyles.java | 6 +- .../logistics/chute/AbstractChuteBlock.java | 46 +- .../content/logistics/chute/ChuteBlock.java | 29 +- .../logistics/chute/ChuteBlockEntity.java | 74 +- .../logistics/chute/ChuteGenerator.java | 6 +- .../content/logistics/chute/ChuteItem.java | 2 +- .../logistics/chute/ChuteRenderer.java | 7 +- .../logistics/chute/SmartChuteBlock.java | 8 +- .../chute/SmartChuteBlockEntity.java | 4 +- .../SmartChuteFilterSlotPositioning.java | 4 +- .../logistics/chute/SmartChuteRenderer.java | 2 +- .../crate/BottomlessItemHandler.java | 2 - .../crate/CreativeCrateBlockEntity.java | 5 +- .../logistics/depot/DepotBehaviour.java | 17 +- .../content/logistics/depot/DepotBlock.java | 26 +- .../logistics/depot/DepotBlockEntity.java | 4 +- .../logistics/depot/DepotRenderer.java | 15 +- .../content/logistics/depot/EjectorBlock.java | 64 +- .../logistics/depot/EjectorBlockEntity.java | 78 +- .../content/logistics/depot/EjectorItem.java | 5 +- .../depot/EjectorPlacementPacket.java | 6 +- .../logistics/depot/EjectorRenderer.java | 34 +- .../logistics/depot/EjectorTargetHandler.java | 34 +- .../logistics/depot/EntityLauncher.java | 4 +- .../MountedDepotInteractionBehaviour.java | 2 +- .../depot/SharedDepotBlockMethods.java | 20 +- .../depot/storage/DepotMountedStorage.java | 3 +- .../factoryBoard/FactoryPanelBehaviour.java | 92 +- .../factoryBoard/FactoryPanelBlock.java | 63 +- .../factoryBoard/FactoryPanelBlockEntity.java | 6 +- .../factoryBoard/FactoryPanelBlockItem.java | 22 +- .../FactoryPanelConfigurationPacket.java | 4 +- .../factoryBoard/FactoryPanelConnection.java | 2 +- .../FactoryPanelConnectionHandler.java | 49 +- .../FactoryPanelEffectPacket.java | 6 +- .../factoryBoard/FactoryPanelModel.java | 60 +- .../factoryBoard/FactoryPanelRenderer.java | 20 +- .../factoryBoard/FactoryPanelScreen.java | 103 +- .../factoryBoard/FactoryPanelSetItemMenu.java | 4 +- .../FactoryPanelSetItemScreen.java | 8 +- .../FactoryPanelSlotPositioning.java | 2 +- .../FactoryPanelSupportBehaviour.java | 2 +- .../filter/AbstractFilterScreen.java | 14 +- .../logistics/filter/AttributeFilterMenu.java | 4 +- .../filter/AttributeFilterScreen.java | 18 +- .../filter/AttributeFilterWhitelistMode.java | 4 +- .../content/logistics/filter/FilterItem.java | 24 +- .../logistics/filter/FilterItemStack.java | 7 +- .../logistics/filter/FilterScreenPacket.java | 10 +- .../logistics/filter/PackageFilterScreen.java | 12 +- .../AbstractDirectionalFunnelBlock.java | 4 +- .../logistics/funnel/AbstractFunnelBlock.java | 23 +- .../funnel/AbstractHorizontalFunnelBlock.java | 4 +- .../logistics/funnel/BeltFunnelBlock.java | 29 +- .../logistics/funnel/BeltFunnelGenerator.java | 18 +- .../content/logistics/funnel/FunnelBlock.java | 50 +- .../logistics/funnel/FunnelBlockEntity.java | 20 +- .../funnel/FunnelFilterSlotPositioning.java | 4 +- .../logistics/funnel/FunnelGenerator.java | 46 +- .../content/logistics/funnel/FunnelItem.java | 2 +- .../funnel/FunnelMovementBehaviour.java | 8 +- .../logistics/funnel/FunnelRenderer.java | 10 +- .../attribute/AllItemAttributeTypes.java | 20 +- .../item/filter/attribute/ItemAttribute.java | 4 +- .../attribute/SingletonItemAttribute.java | 2 +- .../attributes/AddedByAttribute.java | 4 +- .../attribute/attributes/ColorAttribute.java | 5 +- .../attributes/FluidContentsAttribute.java | 8 +- .../attributes/InItemGroupAttribute.java | 10 +- .../attribute/attributes/InTagAttribute.java | 5 +- .../attributes/ItemNameAttribute.java | 14 +- .../attributes/ShulkerFillLevelAttribute.java | 4 +- .../logistics/itemHatch/HatchFilterSlot.java | 4 +- .../logistics/itemHatch/ItemHatchBlock.java | 40 +- .../logistics/itemHatch/ItemHatchHandler.java | 2 +- .../packagePort/PackagePortBlockEntity.java | 32 +- .../packagePort/PackagePortItem.java | 4 +- .../packagePort/PackagePortMenu.java | 2 +- .../PackagePortPlacementPacket.java | 4 +- .../packagePort/PackagePortScreen.java | 21 +- .../packagePort/PackagePortTarget.java | 2 +- .../PackagePortTargetSelectionHandler.java | 12 +- .../packagePort/frogport/FrogportBlock.java | 15 +- .../frogport/FrogportBlockEntity.java | 38 +- .../frogport/FrogportRenderer.java | 22 +- .../packagePort/frogport/FrogportSounds.java | 2 +- .../packagePort/frogport/FrogportVisual.java | 4 +- .../packagePort/postbox/PostboxBlock.java | 18 +- .../postbox/PostboxBlockEntity.java | 14 +- .../packagePort/postbox/PostboxRenderer.java | 13 +- .../packager/AllInventoryIdentifiers.java | 4 +- .../logistics/packager/InventorySummary.java | 2 +- .../logistics/packager/PackagerBlock.java | 49 +- .../packager/PackagerBlockEntity.java | 38 +- .../logistics/packager/PackagerGenerator.java | 6 +- .../logistics/packager/PackagerRenderer.java | 26 +- .../logistics/packager/PackagerVisual.java | 6 +- .../repackager/RepackagerBlockEntity.java | 4 +- .../LogisticallyLinkedBehaviour.java | 22 +- .../LogisticallyLinkedBlockItem.java | 56 +- .../LogisticallyLinkedClientHandler.java | 17 +- .../packagerLink/LogisticsManager.java | 2 +- .../packagerLink/LogisticsNetwork.java | 22 +- .../LogisticsNetworkSavedData.java | 20 +- .../packagerLink/PackagerLinkBlock.java | 21 +- .../packagerLink/PackagerLinkBlockEntity.java | 12 +- .../packagerLink/PackagerLinkGenerator.java | 6 +- .../packagerLink/RequestPromiseQueue.java | 2 +- .../packagerLink/WiFiEffectPacket.java | 8 +- .../logistics/packagerLink/WiFiParticle.java | 7 +- .../redstoneRequester/AutoRequestData.java | 2 +- .../RedstoneRequesterBlock.java | 20 +- .../RedstoneRequesterBlockEntity.java | 16 +- .../RedstoneRequesterBlockItem.java | 15 +- .../RedstoneRequesterConfigurationPacket.java | 2 +- .../RedstoneRequesterEffectPacket.java | 6 +- .../RedstoneRequesterMenu.java | 2 - .../RedstoneRequesterScreen.java | 24 +- .../stockTicker/CraftableBigItemStack.java | 5 +- .../LogisticalStockResponsePacket.java | 8 +- .../logistics/stockTicker/PackageOrder.java | 2 +- .../stockTicker/PackageOrderWithCrafts.java | 2 +- .../StockKeeperCategoryHidingPacket.java | 2 +- .../stockTicker/StockKeeperCategoryMenu.java | 2 +- .../StockKeeperCategoryScreen.java | 98 +- .../stockTicker/StockKeeperRequestScreen.java | 308 +- .../stockTicker/StockTickerBlock.java | 20 +- .../stockTicker/StockTickerBlockEntity.java | 42 +- .../stockTicker/StockTickerClient.java | 19 + .../StockTickerInteractionHandler.java | 10 +- .../tableCloth/ShoppingListItem.java | 20 +- .../logistics/tableCloth/TableClothBlock.java | 39 +- .../tableCloth/TableClothBlockEntity.java | 46 +- .../tableCloth/TableClothBlockItem.java | 15 +- .../tableCloth/TableClothFilterSlot.java | 2 +- .../logistics/tableCloth/TableClothModel.java | 44 +- .../tableCloth/TableClothRenderer.java | 13 +- .../logistics/tunnel/BeltTunnelBlock.java | 29 +- .../tunnel/BeltTunnelBlockEntity.java | 29 +- .../logistics/tunnel/BeltTunnelItem.java | 2 +- .../logistics/tunnel/BeltTunnelRenderer.java | 12 +- .../logistics/tunnel/BeltTunnelShapes.java | 2 +- .../logistics/tunnel/BeltTunnelVisual.java | 2 +- .../logistics/tunnel/BrassTunnelBlock.java | 24 +- .../tunnel/BrassTunnelBlockEntity.java | 51 +- .../tunnel/BrassTunnelCTBehaviour.java | 2 +- .../tunnel/BrassTunnelFilterSlot.java | 2 +- .../logistics/tunnel/TunnelFlapPacket.java | 2 +- .../logistics/vault/ItemVaultBlock.java | 8 +- .../logistics/vault/ItemVaultBlockEntity.java | 23 +- .../logistics/vault/ItemVaultCTBehaviour.java | 2 +- .../logistics/vault/ItemVaultItem.java | 13 +- .../vault/ItemVaultMountedStorage.java | 3 +- .../content/materials/ExperienceBlock.java | 2 +- .../materials/ExperienceNuggetItem.java | 16 +- .../content/processing/basin/BasinBlock.java | 37 +- .../processing/basin/BasinBlockEntity.java | 106 +- .../processing/basin/BasinGenerator.java | 6 +- .../basin/BasinMovementBehaviour.java | 14 +- .../basin/BasinOperatingBlockEntity.java | 14 +- .../content/processing/basin/BasinRecipe.java | 60 +- .../processing/basin/BasinRenderer.java | 18 +- .../processing/burner/BlazeBurnerBlock.java | 75 +- .../burner/BlazeBurnerBlockEntity.java | 33 +- .../burner/BlazeBurnerBlockItem.java | 28 +- .../processing/burner/BlazeBurnerHandler.java | 14 +- .../burner/BlazeBurnerMovementBehaviour.java | 18 +- .../burner/BlazeBurnerRenderer.java | 46 +- .../processing/burner/BlazeBurnerVisual.java | 24 +- .../burner/LitBlazeBurnerBlock.java | 30 +- .../processing/burner/ScrollInstance.java | 2 +- .../burner/ScrollTransformedInstance.java | 2 +- .../processing/recipe/HeatCondition.java | 4 +- .../recipe/ProcessingFluidOutput.java | 69 + .../recipe/ProcessingInventory.java | 14 +- .../processing/recipe/ProcessingOutput.java | 24 +- .../processing/recipe/ProcessingRecipe.java | 45 +- .../recipe/ProcessingRecipeBuilder.java | 43 +- .../recipe/ProcessingRecipeParams.java | 15 +- .../recipe/StandardProcessingRecipe.java | 44 +- .../processing/sequenced/IAssemblyRecipe.java | 2 - .../sequenced/SequencedAssemblyItem.java | 2 +- .../sequenced/SequencedAssemblyRecipe.java | 138 +- .../SequencedAssemblyRecipeBuilder.java | 28 +- .../SequencedAssemblyRecipeClient.java | 67 + .../SequencedAssemblyRecipeSerializer.java | 32 +- .../processing/sequenced/SequencedRecipe.java | 2 +- .../redstone/FilteredDetectorFilterSlot.java | 4 +- .../content/redstone/RoseQuartzLampBlock.java | 8 +- .../analogLever/AnalogLeverBlock.java | 33 +- .../analogLever/AnalogLeverBlockEntity.java | 10 +- .../analogLever/AnalogLeverRenderer.java | 14 +- .../analogLever/AnalogLeverVisual.java | 4 +- .../contact/ContactMovementBehaviour.java | 13 +- .../contact/RedstoneContactBlock.java | 20 +- .../redstone/deskBell/DeskBellBlock.java | 18 +- .../deskBell/DeskBellBlockEntity.java | 12 +- .../redstone/deskBell/DeskBellRenderer.java | 12 +- .../diodes/AbstractDiodeGenerator.java | 26 +- .../redstone/diodes/BrassDiodeBlock.java | 18 +- .../diodes/BrassDiodeBlockEntity.java | 4 +- .../redstone/diodes/BrassDiodeGenerator.java | 8 +- .../redstone/diodes/BrassDiodeRenderer.java | 6 +- .../redstone/diodes/BrassDiodeScrollSlot.java | 4 +- .../BrassDiodeScrollValueBehaviour.java | 2 +- .../redstone/diodes/BrassDiodeVisual.java | 2 +- .../redstone/diodes/PoweredLatchBlock.java | 10 +- .../diodes/PoweredLatchGenerator.java | 10 +- .../diodes/PulseExtenderBlockEntity.java | 2 +- .../diodes/PulseRepeaterBlockEntity.java | 2 +- .../diodes/PulseTimerBlockEntity.java | 2 +- .../redstone/diodes/ToggleLatchBlock.java | 16 +- .../redstone/diodes/ToggleLatchGenerator.java | 10 +- .../displayLink/ClickToLinkBlockItem.java | 86 +- .../displayLink/ClickToLinkClient.java | 44 + .../displayLink/DisplayLinkBlock.java | 36 +- .../displayLink/DisplayLinkBlockEntity.java | 24 +- .../displayLink/DisplayLinkBlockItem.java | 10 +- .../displayLink/DisplayLinkClient.java | 22 + .../DisplayLinkConfigurationPacket.java | 4 +- .../displayLink/DisplayLinkScreen.java | 62 +- .../displayLink/LinkBulbRenderer.java | 16 +- .../displayLink/LinkWithBulbBlockEntity.java | 6 +- .../AccumulatedItemCountDisplaySource.java | 4 +- .../source/ComputerDisplaySource.java | 4 +- .../source/EnchantPowerDisplaySource.java | 4 +- .../source/FactoryGaugeDisplaySource.java | 2 +- .../source/FillLevelDisplaySource.java | 4 +- .../source/FluidListDisplaySource.java | 4 +- .../source/ItemListDisplaySource.java | 2 +- .../source/ItemThroughputDisplaySource.java | 18 +- .../source/KineticSpeedDisplaySource.java | 4 +- .../source/KineticStressDisplaySource.java | 6 +- .../PercentOrProgressBarDisplaySource.java | 2 +- .../source/RedstonePowerDisplaySource.java | 4 +- .../source/ScoreboardDisplaySource.java | 4 +- .../source/SingleLineDisplaySource.java | 9 +- .../source/StatTrackingDisplaySource.java | 4 +- .../source/StationSummaryDisplaySource.java | 10 +- .../source/StopWatchDisplaySource.java | 2 +- .../source/TimeOfDayDisplaySource.java | 18 +- .../source/ValueListDisplaySource.java | 9 +- .../target/DisplayBoardTarget.java | 4 +- .../target/NixieTubeDisplayTarget.java | 5 +- .../displayLink/target/SignDisplayTarget.java | 2 +- .../redstone/link/IRedstoneLinkable.java | 2 +- .../content/redstone/link/LinkBehaviour.java | 29 +- .../content/redstone/link/LinkHandler.java | 2 +- .../content/redstone/link/LinkRenderer.java | 10 +- .../redstone/link/RedstoneLinkBlock.java | 22 +- .../link/RedstoneLinkBlockEntity.java | 16 +- .../link/RedstoneLinkFrequencySlot.java | 4 +- .../redstone/link/RedstoneLinkGenerator.java | 6 +- .../link/RedstoneLinkNetworkHandler.java | 4 +- .../controller/LecternControllerBlock.java | 32 +- .../LecternControllerBlockEntity.java | 15 +- .../controller/LecternControllerRenderer.java | 7 +- .../LinkedControllerClientHandler.java | 47 +- .../LinkedControllerInputPacket.java | 6 +- .../link/controller/LinkedControllerItem.java | 34 +- .../LinkedControllerItemRenderer.java | 14 +- .../controller/LinkedControllerScreen.java | 12 +- .../LinkedControllerServerHandler.java | 6 +- .../nixieTube/DoubleFaceAttachedBlock.java | 2 +- .../redstone/nixieTube/NixieTubeBlock.java | 57 +- .../nixieTube/NixieTubeBlockEntity.java | 15 +- .../nixieTube/NixieTubeGenerator.java | 14 +- .../redstone/nixieTube/NixieTubeRenderer.java | 39 +- .../redstone/rail/ControllerRailBlock.java | 33 +- .../rail/ControllerRailGenerator.java | 8 +- .../smartObserver/SmartObserverBlock.java | 16 +- .../SmartObserverBlockEntity.java | 6 +- .../smartObserver/SmartObserverGenerator.java | 6 +- .../thresholdSwitch/ThresholdSwitchBlock.java | 26 +- .../ThresholdSwitchBlockEntity.java | 26 +- .../ThresholdSwitchClient.java | 14 + .../ThresholdSwitchGenerator.java | 20 +- .../ThresholdSwitchScreen.java | 55 +- .../schematics/SchematicAndQuillItem.java | 20 +- .../content/schematics/SchematicClient.java | 13 + .../content/schematics/SchematicExport.java | 3 +- .../schematics/SchematicInstances.java | 4 +- .../content/schematics/SchematicItem.java | 31 +- .../content/schematics/SchematicPrinter.java | 33 +- .../schematics/SchematicProcessor.java | 23 +- .../schematics/ServerSchematicLoader.java | 18 +- .../cannon/ConfigureSchematicannonPacket.java | 2 +- .../schematics/cannon/LaunchedItem.java | 41 +- .../schematics/cannon/MaterialChecklist.java | 14 +- .../cannon/SchematicannonBlock.java | 11 +- .../cannon/SchematicannonBlockEntity.java | 58 +- .../cannon/SchematicannonRenderer.java | 20 +- .../cannon/SchematicannonScreen.java | 51 +- .../client/ClientSchematicLoader.java | 16 +- .../client/SchematicAndQuillHandler.java | 24 +- .../client/SchematicEditScreen.java | 17 +- .../schematics/client/SchematicHandler.java | 37 +- .../client/SchematicHotbarSlotOverlay.java | 12 +- .../client/SchematicPromptScreen.java | 12 +- .../schematics/client/SchematicRenderer.java | 95 +- .../client/SchematicTransformation.java | 8 +- .../client/ToolSelectionScreen.java | 64 +- .../schematics/client/tools/DeployTool.java | 6 +- .../schematics/client/tools/FlipTool.java | 8 +- .../client/tools/ISchematicTool.java | 6 +- .../schematics/client/tools/MoveTool.java | 4 +- .../client/tools/PlacementToolBase.java | 6 +- .../schematics/client/tools/RotateTool.java | 6 +- .../client/tools/SchematicToolBase.java | 12 +- .../schematics/client/tools/ToolType.java | 2 +- .../packet/SchematicSyncPacket.java | 2 +- .../packet/SchematicUploadPacket.java | 2 +- .../requirement/ItemRequirement.java | 26 +- .../schematics/table/SchematicTableBlock.java | 8 +- .../table/SchematicTableBlockEntity.java | 9 +- .../table/SchematicTableScreen.java | 17 +- .../trains/CameraDistanceModifier.java | 4 +- .../create/content/trains/CubeParticle.java | 74 +- .../content/trains/CubeParticleData.java | 9 - .../content/trains/GlobalRailwayManager.java | 6 +- .../create/content/trains/HonkPacket.java | 8 +- .../content/trains/RailwaySavedData.java | 21 +- .../create/content/trains/TrainHUD.java | 76 +- .../content/trains/TrainHUDUpdatePacket.java | 8 +- .../trains/bogey/AbstractBogeyBlock.java | 66 +- .../bogey/AbstractBogeyBlockEntity.java | 36 +- .../bogey/BogeyBlockEntityRenderer.java | 2 +- .../content/trains/bogey/BogeyRenderer.java | 2 +- .../content/trains/bogey/BogeySizes.java | 12 +- .../content/trains/bogey/BogeyStyle.java | 25 +- .../trains/bogey/StandardBogeyBlock.java | 3 +- .../trains/bogey/StandardBogeyRenderer.java | 18 +- .../trains/bogey/StandardBogeyVisual.java | 2 +- .../trains/display/FlapDisplayBlock.java | 65 +- .../display/FlapDisplayBlockEntity.java | 18 +- .../trains/display/FlapDisplayLayout.java | 6 +- .../trains/display/FlapDisplayRenderer.java | 60 +- .../trains/display/FlapDisplaySection.java | 19 +- .../display/GlobalTrainDisplayData.java | 2 +- .../content/trains/entity/AddTrainPacket.java | 6 +- .../trains/entity/ArrivalSoundQueue.java | 18 +- .../content/trains/entity/Carriage.java | 104 +- .../content/trains/entity/CarriageBogey.java | 36 +- .../trains/entity/CarriageContraption.java | 24 +- .../entity/CarriageContraptionEntity.java | 34 +- .../CarriageContraptionEntityRenderer.java | 6 +- .../entity/CarriageCouplingRenderer.java | 16 +- .../trains/entity/CarriageEntityHandler.java | 4 +- .../trains/entity/CarriageParticles.java | 12 +- .../content/trains/entity/CarriageSounds.java | 12 +- .../trains/entity/CarriageSyncData.java | 8 +- .../content/trains/entity/Navigation.java | 34 +- .../trains/entity/RemoveTrainPacket.java | 6 +- .../create/content/trains/entity/Train.java | 112 +- .../content/trains/entity/TrainIconType.java | 29 +- .../content/trains/entity/TrainMigration.java | 12 +- .../trains/entity/TrainPromptPacket.java | 6 +- .../trains/entity/TrainRelocationPacket.java | 14 +- .../content/trains/entity/TrainRelocator.java | 52 +- .../content/trains/entity/TrainStatus.java | 8 +- .../trains/entity/TravellingPoint.java | 10 +- .../trains/graph/DimensionPalette.java | 16 +- .../content/trains/graph/DiscoveredPath.java | 2 +- .../create/content/trains/graph/EdgeData.java | 25 +- .../trains/graph/EdgePointManager.java | 4 +- .../trains/graph/EdgePointStorage.java | 6 +- .../content/trains/graph/EdgePointType.java | 14 +- .../content/trains/graph/TrackEdge.java | 6 +- .../trains/graph/TrackEdgeIntersection.java | 16 +- .../content/trains/graph/TrackGraph.java | 31 +- .../trains/graph/TrackGraphHelper.java | 2 +- .../trains/graph/TrackGraphLocation.java | 2 +- .../trains/graph/TrackGraphPacket.java | 6 +- .../graph/TrackGraphRollCallPacket.java | 12 +- .../content/trains/graph/TrackGraphSync.java | 6 +- .../trains/graph/TrackGraphSyncPacket.java | 6 +- .../trains/graph/TrackGraphVisualizer.java | 10 +- .../trains/graph/TrackNodeLocation.java | 12 +- .../trains/observer/TrackObserver.java | 9 +- .../trains/observer/TrackObserverBlock.java | 6 +- .../observer/TrackObserverRenderer.java | 2 +- .../schedule/DestinationSuggestions.java | 2 +- .../trains/schedule/IScheduleInput.java | 15 +- .../content/trains/schedule/Schedule.java | 20 +- .../trains/schedule/ScheduleDataEntry.java | 6 +- .../trains/schedule/ScheduleEditPacket.java | 2 +- .../trains/schedule/ScheduleEntry.java | 8 +- .../content/trains/schedule/ScheduleItem.java | 36 +- .../ScheduleItemEntityInteraction.java | 21 +- .../trains/schedule/ScheduleRuntime.java | 32 +- .../trains/schedule/ScheduleScreen.java | 173 +- .../condition/CargoThresholdCondition.java | 10 +- .../condition/FluidThresholdCondition.java | 18 +- .../FluidThresholdConditionClient.java | 14 + .../condition/IdleCargoCondition.java | 6 +- .../condition/ItemThresholdCondition.java | 10 +- .../LazyTickedScheduleCondition.java | 2 +- .../condition/PlayerPassengerCondition.java | 10 +- .../condition/RedstoneLinkCondition.java | 18 +- .../condition/ScheduleWaitCondition.java | 12 +- .../schedule/condition/ScheduledDelay.java | 8 +- .../condition/StationPoweredCondition.java | 6 +- .../condition/StationUnloadedCondition.java | 6 +- .../condition/TimeOfDayCondition.java | 26 +- .../condition/TimedWaitCondition.java | 4 +- .../ChangeThrottleInstruction.java | 8 +- .../destination/ChangeTitleInstruction.java | 6 +- .../DeliverPackagesInstruction.java | 6 +- .../destination/DestinationInstruction.java | 10 +- .../destination/FetchPackagesInstruction.java | 10 +- .../destination/ScheduleInstruction.java | 10 +- .../destination/TextScheduleInstruction.java | 3 - .../hat/TrainHatInfoReloadListener.java | 12 +- .../content/trains/signal/EdgeGroupColor.java | 4 +- .../content/trains/signal/SignalBlock.java | 31 +- .../trains/signal/SignalBlockEntity.java | 6 +- .../content/trains/signal/SignalBoundary.java | 16 +- .../trains/signal/SignalEdgeGroup.java | 18 +- .../trains/signal/SignalEdgeGroupPacket.java | 8 +- .../trains/signal/SignalPropagator.java | 6 +- .../content/trains/signal/SignalRenderer.java | 18 +- .../content/trains/signal/SignalVisual.java | 8 +- .../signal/SingleBlockEntityEdgePoint.java | 6 +- .../content/trains/signal/TrackEdgePoint.java | 13 +- .../trains/station/AbstractStationScreen.java | 37 +- .../trains/station/AssemblyScreen.java | 48 +- .../content/trains/station/GlobalStation.java | 20 +- .../trains/station/NoShadowFontWrapper.java | 112 +- .../content/trains/station/StationBlock.java | 64 +- .../trains/station/StationBlockEntity.java | 69 +- .../content/trains/station/StationClient.java | 21 + .../trains/station/StationEditPacket.java | 2 +- .../content/trains/station/StationMarker.java | 14 +- .../trains/station/StationRenderer.java | 19 +- .../content/trains/station/StationScreen.java | 68 +- .../trains/station/TrainEditPacket.java | 22 +- .../trains/station/WideIconButton.java | 10 +- .../content/trains/track/AllPortalTracks.java | 31 +- .../trains/track/BezierConnection.java | 34 +- .../track/CurvedTrackDestroyPacket.java | 5 +- .../trains/track/CurvedTrackInteraction.java | 16 +- .../track/CurvedTrackSelectionPacket.java | 10 +- .../content/trains/track/FakeTrackBlock.java | 13 +- .../content/trains/track/ITrackBlock.java | 7 +- .../content/trains/track/TrackBlock.java | 71 +- .../trains/track/TrackBlockEntity.java | 34 +- .../trains/track/TrackBlockEntityTilt.java | 6 +- .../content/trains/track/TrackBlockItem.java | 41 +- .../trains/track/TrackBlockOutline.java | 51 +- .../track/TrackBlockStateGenerator.java | 6 +- .../content/trains/track/TrackMaterial.java | 28 +- .../trains/track/TrackMaterialFactory.java | 75 +- .../content/trains/track/TrackModel.java | 12 +- .../content/trains/track/TrackPaver.java | 8 +- .../content/trains/track/TrackPlacement.java | 56 +- .../trains/track/TrackPlacementOverlay.java | 18 +- .../content/trains/track/TrackRenderer.java | 20 +- .../content/trains/track/TrackShape.java | 2 +- .../trains/track/TrackTargetingBehaviour.java | 70 +- .../trains/track/TrackTargetingBlockItem.java | 49 +- .../trains/track/TrackTargetingClient.java | 4 +- .../content/trains/track/TrackVisual.java | 4 +- .../foundation/CreateNBTProcessors.java | 20 +- .../advancement/AdvancementBehaviour.java | 5 +- .../advancement/AllAdvancements.java | 18 +- .../foundation/advancement/AllTriggers.java | 2 +- .../advancement/CreateAdvancement.java | 57 +- .../advancement/CriterionTriggerBase.java | 58 +- .../advancement/SimpleCreateTrigger.java | 8 +- .../create/foundation/block/BigOutlines.java | 8 +- .../foundation/block/CopperBlockSet.java | 59 +- .../simibubi/create/foundation/block/IBE.java | 6 +- .../foundation/block/ItemUseOverrides.java | 10 +- .../block/ProperWaterloggedBlock.java | 7 + .../block/connected/AllCTTypes.java | 8 +- .../foundation/block/connected/CTModel.java | 18 +- .../block/connected/CTSpriteShiftEntry.java | 2 +- .../block/connected/CTSpriteShifter.java | 6 +- .../foundation/block/connected/CTType.java | 4 +- .../block/connected/CTTypeRegistry.java | 8 +- .../connected/ConnectedTextureBehaviour.java | 2 +- .../block/connected/GlassPaneCTBehaviour.java | 2 +- .../connected/RotatedPillarCTBehaviour.java | 2 +- .../block/render/CustomBlockModels.java | 10 +- .../block/render/ReducedDestroyEffects.java | 3 +- .../CachedRenderBBBlockEntity.java | 2 - .../blockEntity/ItemHandlerContainer.java | 2 - .../blockEntity/SmartBlockEntity.java | 23 +- .../blockEntity/SyncedBlockEntity.java | 20 +- .../CenteredSideValueBoxTransform.java | 2 +- .../blockEntity/behaviour/ValueBox.java | 21 +- .../behaviour/ValueBoxRenderer.java | 10 +- .../behaviour/ValueBoxTransform.java | 4 +- .../behaviour/ValueSettingsBehaviour.java | 2 +- .../behaviour/ValueSettingsClient.java | 35 +- .../behaviour/ValueSettingsInputHandler.java | 8 +- .../behaviour/ValueSettingsPacket.java | 6 +- .../behaviour/ValueSettingsScreen.java | 43 +- .../AnimatedContainerBehaviour.java | 8 +- .../EdgeInteractionHandler.java | 4 +- .../EdgeInteractionRenderer.java | 13 +- .../filtering/FilteringBehaviour.java | 28 +- .../filtering/FilteringRenderer.java | 12 +- .../filtering/SidedFilteringBehaviour.java | 8 +- .../fluid/SmartFluidTankBehaviour.java | 18 +- .../CapManipulationBehaviourBase.java | 13 +- .../inventory/InvManipulationBehaviour.java | 15 +- .../inventory/TankManipulationBehaviour.java | 14 +- .../scrollValue/ScrollValueBehaviour.java | 2 +- .../scrollValue/ScrollValueHandler.java | 4 +- .../scrollValue/ScrollValueRenderer.java | 2 +- .../behaviour/simple/DeferralBehaviour.java | 2 +- .../ColoredOverlayBlockEntityRenderer.java | 8 +- .../renderer/SafeBlockEntityRenderer.java | 53 +- .../renderer/SmartBlockEntityRenderer.java | 23 +- .../create/foundation/codec/CreateCodecs.java | 2 +- .../collision/ContinuousOBBCollider.java | 2 +- .../damageTypes/CreateDamageSources.java | 12 +- .../damageTypes/DamageTypeBuilder.java | 2 +- .../create/foundation/data/AssetLookup.java | 49 +- .../create/foundation/data/BlockStateGen.java | 89 +- .../foundation/data/BuilderTransformers.java | 243 +- .../data/CreateBlockEntityBuilder.java | 2 +- .../foundation/data/CreateEntityBuilder.java | 2 +- .../foundation/data/CreateRegistrate.java | 110 +- .../data/CreateRegistrateClient.java | 45 + .../foundation/data/DamageTypeTagGen.java | 7 +- .../create/foundation/data/DatagenModels.java | 32 + .../data/DirectionalAxisBlockStateGen.java | 8 +- .../create/foundation/data/MetalBarsGen.java | 24 +- .../create/foundation/data/ModelGen.java | 14 +- .../foundation/data/RuntimeDataGenerator.java | 74 +- .../foundation/data/SharedProperties.java | 4 +- .../data/SimpleDatagenIngredient.java | 14 +- .../foundation/data/SpecialBlockStateGen.java | 10 +- .../create/foundation/data/TagGen.java | 63 +- .../foundation/data/VirtualFluidBuilder.java | 7 +- .../create/foundation/data/WindowGen.java | 111 +- .../foundation/data/recipe/CommonMetal.java | 10 +- .../data/recipe/CreateCrushingRecipeGen.java | 2 +- .../data/recipe/CreateDeployingRecipeGen.java | 46 +- .../data/recipe/CreateHauntingRecipeGen.java | 7 +- .../CreateMechanicalCraftingRecipeGen.java | 18 +- .../data/recipe/CreateMillingRecipeGen.java | 525 +- .../data/recipe/CreateRecipeProvider.java | 21 +- .../CreateSequencedAssemblyRecipeGen.java | 17 +- .../data/recipe/CreateStandardRecipeGen.java | 185 +- .../data/recipe/CreateWashingRecipeGen.java | 6 +- .../data/recipe/LogStrippingFakeRecipes.java | 14 +- .../foundation/events/ClientEvents.java | 62 +- .../foundation/events/CommonEvents.java | 20 +- .../create/foundation/events/InputEvents.java | 12 +- .../foundation/fluid/CombinedTankWrapper.java | 6 +- .../create/foundation/fluid/FluidHelper.java | 10 +- .../foundation/fluid/FluidIngredientOld.java | 33 +- .../fluid/FluidRenderProperties.java | 45 + .../foundation/fluid/FluidRenderer.java | 26 +- .../fluid/LazyComponentFluidIngredient.java | 116 + .../fluid/LegacyFluidHandlerAdapter.java | 77 + .../fluid/LegacyFluidHandlerItemAdapter.java | 31 + .../fluid/LegacyFluidIngredientBridge.java | 22 + .../fluid/LegacyFluidTransferAdapter.java | 94 + .../create/foundation/gui/AllGuiTextures.java | 31 +- .../create/foundation/gui/AllIcons.java | 37 +- .../gui/CustomLightingSettings.java | 8 +- .../create/foundation/gui/ModularGuiLine.java | 32 +- .../foundation/gui/ModularGuiLineBuilder.java | 5 +- .../foundation/gui/RemovedGuiUtils.java | 159 +- .../gui/menu/AbstractSimiContainerScreen.java | 127 +- .../foundation/gui/menu/GhostItemMenu.java | 8 +- .../gui/menu/HeldItemGhostItemMenu.java | 12 +- .../foundation/gui/menu/IClearableMenu.java | 4 +- .../create/foundation/gui/menu/MenuBase.java | 2 - .../gui/widget/CompositeWidget.java | 8 +- .../foundation/gui/widget/IconButton.java | 19 +- .../foundation/gui/widget/Indicator.java | 6 +- .../create/foundation/gui/widget/Label.java | 12 +- .../foundation/gui/widget/ScreenOverlay.java | 9 +- .../foundation/gui/widget/ScrollInput.java | 2 +- .../foundation/gui/widget/TooltipArea.java | 6 +- .../foundation/item/CountedItemStackList.java | 2 +- .../item/CustomRenderedArmorItem.java | 17 - .../foundation/item/CustomUseEffectsItem.java | 2 +- .../foundation/item/EnchantedBookItem.java | 16 + .../create/foundation/item/ItemColor.java | 12 + .../foundation/item/ItemDescription.java | 26 +- .../create/foundation/item/ItemHelper.java | 31 +- .../create/foundation/item/KineticStats.java | 4 +- .../foundation/item/LayeredArmorItem.java | 67 - .../item/LegacyItemHandlerAdapter.java | 84 + .../item/LegacyItemTransferAdapter.java | 97 + .../foundation/item/SmartInventory.java | 10 +- .../create/foundation/item/TooltipHelper.java | 4 +- .../item/render/CustomItemModels.java | 10 +- .../item/render/CustomRenderedItemModel.java | 29 +- .../CustomRenderedItemModelRenderer.java | 18 +- .../item/render/CustomRenderedItems.java | 3 +- .../item/render/PartialItemModelRenderer.java | 59 +- .../item/render/SimpleCustomRenderer.java | 2 - .../map/StationMapDecorationRenderer.java | 66 +- .../foundation/mixin/ArmorTrimMixin.java | 59 - .../mixin/BuiltInRegistriesMixin.java | 2 +- .../mixin/CustomItemUseEffectsMixin.java | 24 +- .../EnchantedCountIncreaseFunctionMixin.java | 6 +- .../create/foundation/mixin/EntityMixin.java | 2 +- .../foundation/mixin/ItemStackMixin.java | 9 +- .../foundation/mixin/LavaSwimmingMixin.java | 5 +- .../mixin/MapItemSavedDataMixin.java | 108 +- .../foundation/mixin/SmithingMenuMixin.java | 4 +- .../accessor/AgeableListModelAccessor.java | 16 - .../EntityRenderDispatcherAccessor.java | 17 - .../mixin/accessor/FlowingFluidAccessor.java | 4 +- .../mixin/accessor/FontAccessor.java | 16 - .../mixin/accessor/GuiAccessor.java | 25 - .../mixin/accessor/HudAccessor.java | 16 + .../accessor/HumanoidArmorLayerAccessor.java | 29 - .../mixin/accessor/ItemEntityAccessor.java | 12 + .../accessor/ItemModelGeneratorsAccessor.java | 17 - .../mixin/accessor/LevelRendererAccessor.java | 19 - .../accessor/MinecartFurnaceAccessor.java | 2 +- .../mixin/accessor/ShapedRecipeAccessor.java | 4 + .../mixin/accessor/SystemReportAccessor.java | 5 +- .../foundation/mixin/client/CameraMixin.java | 2 +- ...ndererMixin.java => ClientLevelMixin.java} | 24 +- .../EntityContraptionInteractionMixin.java | 11 +- .../mixin/client/EntityRenderStateMixin.java | 29 + .../mixin/client/EntityRendererMixin.java | 20 + .../mixin/client/GameRendererMixin.java | 6 +- .../mixin/client/HumanoidArmorLayerMixin.java | 36 - .../mixin/client/HumanoidModelMixin.java | 30 +- .../mixin/client/PlayerRendererMixin.java | 28 - .../xaeros/XaeroFullscreenMapMixin.java | 10 +- .../create/foundation/model/BakedModel.java | 92 + .../foundation/model/BakedModelHelper.java | 24 +- .../foundation/model/BakedModelWrapper.java | 90 + .../model/BakedModelWrapperWithData.java | 9 +- .../create/foundation/model/BakedQuad.java | 45 + .../foundation/model/BakedQuadHelper.java | 2 +- .../foundation/model/ItemOverrides.java | 10 + .../create/foundation/model/ModelSwapper.java | 52 +- .../foundation/model/QuadTransformers.java | 17 + .../foundation/model/SimpleBakedModel.java | 74 + .../BlockEntityConfigurationPacket.java | 3 +- .../networking/BlockEntityDataPacket.java | 9 +- .../networking/ISyncPersistentData.java | 15 +- .../create/foundation/pack/DynamicPack.java | 29 +- .../foundation/particle/AirParticle.java | 17 +- .../foundation/particle/AirParticleData.java | 9 - .../particle/ICustomParticleData.java | 11 - .../ICustomParticleDataWithSprite.java | 42 - .../foundation/placement/PoleHelper.java | 6 +- .../foundation/ponder/CreatePonderPlugin.java | 18 +- .../foundation/ponder/CreateSceneBuilder.java | 38 +- .../ponder/PonderWorldBlockEntityFix.java | 2 +- .../ponder/element/BeltItemElement.java | 2 +- .../ponder/element/ExpandedParrotElement.java | 6 +- .../ponder/element/package-info.java | 4 +- .../AnimateBlockEntityInstruction.java | 6 +- .../ponder/instruction/package-info.java | 4 +- .../foundation/ponder/package-info.java | 4 +- .../foundation/recipe/AllIngredients.java | 7 + .../recipe/DummyCraftingContainer.java | 1 - .../foundation/recipe/IRecipeTypeInfo.java | 4 +- .../foundation/recipe/ItemCopyingRecipe.java | 19 +- .../foundation/recipe/RecipeApplier.java | 10 +- .../foundation/recipe/RecipeConditions.java | 4 +- .../foundation/recipe/RecipeFinder.java | 5 +- .../foundation/recipe/trie/RecipeTrie.java | 10 +- .../foundation/render/AllInstanceTypes.java | 2 - .../render/BlockEntityRenderHelper.java | 48 +- .../render/BlockRenderDispatcher.java | 23 + .../CreateEntityRenderStateExtension.java | 12 + .../foundation/render/GlStateManager.java | 20 + .../foundation/render/ItemRenderer.java | 38 + .../render/LegacyBlockRendererBridge.java | 16 + .../render/LegacyItemRendererBridge.java | 16 + .../foundation/render/LegacyLightTexture.java | 24 + .../render/LegacyRenderSystemBridge.java | 82 + .../foundation/render/LegacyRenderTypes.java | 32 + .../foundation/render/PanoramaRenderer.java | 11 + .../render/PlayerSkyhookRenderer.java | 27 +- .../create/foundation/render/RenderTypes.java | 149 +- .../foundation/render/ShadowRenderHelper.java | 15 +- .../foundation/sound/RepeatingSound.java | 2 +- .../create/foundation/sound/SoundScape.java | 6 +- .../create/foundation/sound/SoundScapes.java | 6 +- .../foundation/utility/BlockHelper.java | 49 +- .../utility/CameraAngleAnimationService.java | 4 +- .../create/foundation/utility/CreateLang.java | 6 +- .../create/foundation/utility/Debug.java | 10 +- .../foundation/utility/DistExecutor.java | 5 +- .../create/foundation/utility/DyeHelper.java | 36 +- .../foundation/utility/DynamicComponent.java | 24 +- .../utility/FieldsAreNonnullByDefault.java | 20 + .../foundation/utility/FilesHelper.java | 2 +- .../foundation/utility/FluidFormatter.java | 2 +- .../utility/GlobalRegistryAccess.java | 2 +- .../LegacyBlockEntityDataComponentBridge.java | 20 + .../utility/LegacyBlockEntityTagBridge.java | 57 + .../LegacyComponentSerializationBridge.java | 34 + .../utility/LegacyDirectionBridge.java | 18 + .../utility/LegacyFluidNbtBridge.java | 58 + .../utility/LegacyItemStackNbtBridge.java | 68 + .../utility/LegacyNbtUtilsBridge.java | 79 + .../foundation/utility/RaycastHelper.java | 4 +- .../utility/ServerSpeedProvider.java | 13 +- .../utility/flywheel/box/MutableBox.java | 2 +- .../utility/flywheel/light/LightVolume.java | 2 +- .../WrappedBlockAndTintGetter.java | 31 +- .../foundation/virtualWorld/VirtualChunk.java | 10 +- .../virtualWorld/VirtualChunkSection.java | 4 +- .../virtualWorld/VirtualChunkSource.java | 2 +- .../virtualWorld/VirtualRenderWorld.java | 96 +- .../dispenser/DispenserBehaviorConverter.java | 4 +- .../create/impl/effect/MilkEffectHandler.java | 3 +- .../impl/effect/PotionEffectHandler.java | 6 +- .../create/impl/effect/TeaEffectHandler.java | 2 +- ...ateRegistrateRegistrationCallbackImpl.java | 6 +- .../create/impl/registry/TagProviderImpl.java | 6 +- .../unpacking/DefaultUnpackingHandler.java | 5 +- .../create/infrastructure/RemapHelper.java | 22 +- .../infrastructure/command/AllCommands.java | 19 +- .../command/CameraAngleCommand.java | 2 +- .../command/ClearBufferCacheCommand.java | 3 +- .../infrastructure/command/CloneCommand.java | 14 +- .../command/ConfigureConfigCommand.java | 2 +- .../command/CouplingCommand.java | 20 +- .../command/DebugHatsCommand.java | 7 +- .../command/DebugInfoCommand.java | 2 +- .../command/DebugValueCommand.java | 2 +- .../command/DumpRailwaysCommand.java | 14 +- .../command/FixLightingCommand.java | 11 +- .../infrastructure/command/GlueCommand.java | 2 +- .../command/HighlightCommand.java | 4 +- .../command/HighlightPacket.java | 10 +- .../command/KillTPSCommand.java | 2 +- .../command/OverlayConfigCommand.java | 4 +- .../command/PassengerCommand.java | 4 +- .../ReplaceInCommandBlocksCommand.java | 2 +- .../command/ToggleDebugCommand.java | 2 +- .../infrastructure/command/TrainCommand.java | 10 +- .../infrastructure/config/AllConfigs.java | 2 +- .../create/infrastructure/config/CClient.java | 4 +- .../create/infrastructure/config/CCommon.java | 2 +- .../infrastructure/config/CEquipment.java | 2 +- .../create/infrastructure/config/CFluids.java | 2 +- .../infrastructure/config/CKinetics.java | 2 +- .../infrastructure/config/CLogistics.java | 2 +- .../infrastructure/config/CRecipes.java | 2 +- .../infrastructure/config/CSchematics.java | 2 +- .../create/infrastructure/config/CServer.java | 2 +- .../create/infrastructure/config/CStress.java | 22 +- .../create/infrastructure/config/CTrains.java | 2 +- .../infrastructure/config/CWorldGen.java | 2 +- .../CreateContraptionTypeTagsProvider.java | 8 +- .../infrastructure/data/CreateDatagen.java | 89 +- .../data/CreateEnchantmentTagsProvider.java | 8 +- ...ateMountedItemStorageTypeTagsProvider.java | 16 +- .../CreateRecipeSerializerTagsProvider.java | 17 +- .../data/CreateRegistrateTags.java | 39 +- .../data/CreateWikiBlockInfoProvider.java | 6 +- .../infrastructure/data/TagLangGenerator.java | 4 +- .../data/VanillaHatOffsetGenerator.java | 118 +- .../debugInfo/DebugInformation.java | 21 +- .../debugInfo/ServerDebugInfoPacket.java | 6 +- .../gametest/CreateGameTestHelper.java | 14 +- .../gametest/CreateGameTests.java | 6 +- .../gametest/CreateTestFunction.java | 8 +- .../gametest/legacy/GameTest.java | 31 + .../gametest/legacy/GameTestGenerator.java | 16 + .../gametest/legacy/TestFunction.java | 17 + .../gametest/tests/TestContraptions.java | 16 +- .../gametest/tests/TestFluids.java | 22 +- .../gametest/tests/TestItems.java | 12 +- .../gametest/tests/TestMisc.java | 22 +- .../gametest/tests/TestProcessing.java | 17 +- .../gametest/tests/TestRegressions.java | 4 +- .../gui/CreateMainMenuScreen.java | 133 +- .../gui/OpenCreateMenuButton.java | 16 +- .../ponder/AllCreatePonderScenes.java | 6 +- .../ponder/AllCreatePonderTags.java | 16 +- .../ponder/scenes/ArmScenes.java | 16 +- .../ponder/scenes/BearingScenes.java | 22 +- .../ponder/scenes/BeltScenes.java | 30 +- .../ponder/scenes/CartAssemblerScenes.java | 62 +- .../ponder/scenes/ChainDriveScenes.java | 16 +- .../ponder/scenes/ChassisScenes.java | 14 +- .../ponder/scenes/ChuteScenes.java | 22 +- .../ponder/scenes/CrafterScenes.java | 16 +- .../ponder/scenes/DeployerScenes.java | 42 +- .../ponder/scenes/DetectorScenes.java | 14 +- .../ponder/scenes/DisplayScenes.java | 18 +- .../ponder/scenes/EjectorScenes.java | 22 +- .../ponder/scenes/ElevatorScenes.java | 20 +- .../ponder/scenes/FanScenes.java | 20 +- .../ponder/scenes/FunnelScenes.java | 16 +- .../ponder/scenes/GantryScenes.java | 16 +- .../ponder/scenes/ItemVaultScenes.java | 14 +- .../ponder/scenes/KineticsScenes.java | 16 +- .../ponder/scenes/MechanicalDrillScenes.java | 14 +- .../ponder/scenes/MechanicalSawScenes.java | 16 +- .../ponder/scenes/MovementActorScenes.java | 20 +- .../ponder/scenes/PistonScenes.java | 18 +- .../ponder/scenes/ProcessingScenes.java | 51 +- .../ponder/scenes/PulleyScenes.java | 14 +- .../ponder/scenes/RedstoneScenes.java | 32 +- .../ponder/scenes/RedstoneScenes2.java | 14 +- .../ponder/scenes/RollerScenes.java | 18 +- .../ponder/scenes/SteamScenes.java | 16 +- .../ponder/scenes/TemplateScenes.java | 4 +- .../ponder/scenes/TunnelScenes.java | 20 +- .../ponder/scenes/fluid/DrainScenes.java | 19 +- .../fluid/FluidMovementActorScenes.java | 37 +- .../ponder/scenes/fluid/FluidTankScenes.java | 21 +- .../ponder/scenes/fluid/HosePulleyScenes.java | 21 +- .../ponder/scenes/fluid/PipeScenes.java | 21 +- .../ponder/scenes/fluid/PumpScenes.java | 14 +- .../ponder/scenes/fluid/SpoutScenes.java | 16 +- .../highLogistics/FactoryGaugeScenes.java | 20 +- .../highLogistics/FrogAndConveyorScenes.java | 90 +- .../scenes/highLogistics/PackagerScenes.java | 14 +- .../scenes/highLogistics/PonderHilo.java | 4 +- .../scenes/highLogistics/PostboxScenes.java | 18 +- .../highLogistics/RepackagerScenes.java | 15 +- .../highLogistics/RequesterAndShopScenes.java | 16 +- .../scenes/highLogistics/StockLinkScenes.java | 16 +- .../highLogistics/StockTickerScenes.java | 16 +- .../highLogistics/TableClothScenes.java | 12 +- .../scenes/trains/TrackObserverScenes.java | 18 +- .../ponder/scenes/trains/TrackScenes.java | 18 +- .../ponder/scenes/trains/TrainScenes.java | 18 +- .../scenes/trains/TrainSignalScenes.java | 18 +- .../scenes/trains/TrainStationScenes.java | 18 +- .../infrastructure/worldgen/LayerPattern.java | 2 +- src/main/resources/create.mixins.json | 21 +- src/main/resources/pack.mcmeta | 11 +- .../templates/META-INF/neoforge.mods.toml | 17 - 5549 files changed, 34063 insertions(+), 36864 deletions(-) delete mode 100644 src/generated/resources/.cache/059f70d822f3fe46a7addb0bb70dc58ad8353903 rename src/generated/resources/.cache/{af1b4964b4b67530aeb67585e9573385e8cab38a => bc41f1e6e54e9f04587ef53e896703c8bdada17c} (70%) create mode 100644 src/generated/resources/assets/create/items/acacia_window.json create mode 100644 src/generated/resources/assets/create/items/acacia_window_pane.json create mode 100644 src/generated/resources/assets/create/items/adjustable_chain_gearshift.json create mode 100644 src/generated/resources/assets/create/items/analog_lever.json create mode 100644 src/generated/resources/assets/create/items/andesite_alloy.json create mode 100644 src/generated/resources/assets/create/items/andesite_alloy_block.json create mode 100644 src/generated/resources/assets/create/items/andesite_bars.json create mode 100644 src/generated/resources/assets/create/items/andesite_casing.json create mode 100644 src/generated/resources/assets/create/items/andesite_door.json create mode 100644 src/generated/resources/assets/create/items/andesite_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/items/andesite_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/items/andesite_encased_shaft.json create mode 100644 src/generated/resources/assets/create/items/andesite_funnel.json create mode 100644 src/generated/resources/assets/create/items/andesite_ladder.json create mode 100644 src/generated/resources/assets/create/items/andesite_pillar.json create mode 100644 src/generated/resources/assets/create/items/andesite_scaffolding.json create mode 100644 src/generated/resources/assets/create/items/andesite_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/andesite_tunnel.json create mode 100644 src/generated/resources/assets/create/items/asurine.json create mode 100644 src/generated/resources/assets/create/items/asurine_pillar.json create mode 100644 src/generated/resources/assets/create/items/attribute_filter.json create mode 100644 src/generated/resources/assets/create/items/bamboo_window.json create mode 100644 src/generated/resources/assets/create/items/bamboo_window_pane.json create mode 100644 src/generated/resources/assets/create/items/bar_of_chocolate.json create mode 100644 src/generated/resources/assets/create/items/basin.json create mode 100644 src/generated/resources/assets/create/items/belt_connector.json create mode 100644 src/generated/resources/assets/create/items/birch_window.json create mode 100644 src/generated/resources/assets/create/items/birch_window_pane.json create mode 100644 src/generated/resources/assets/create/items/black_postbox.json create mode 100644 src/generated/resources/assets/create/items/black_seat.json create mode 100644 src/generated/resources/assets/create/items/black_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/black_toolbox.json create mode 100644 src/generated/resources/assets/create/items/black_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/blaze_burner.json create mode 100644 src/generated/resources/assets/create/items/blaze_cake.json create mode 100644 src/generated/resources/assets/create/items/blaze_cake_base.json create mode 100644 src/generated/resources/assets/create/items/blue_postbox.json create mode 100644 src/generated/resources/assets/create/items/blue_seat.json create mode 100644 src/generated/resources/assets/create/items/blue_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/blue_toolbox.json create mode 100644 src/generated/resources/assets/create/items/blue_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/bound_cardboard_block.json create mode 100644 src/generated/resources/assets/create/items/brass_bars.json create mode 100644 src/generated/resources/assets/create/items/brass_block.json create mode 100644 src/generated/resources/assets/create/items/brass_casing.json create mode 100644 src/generated/resources/assets/create/items/brass_door.json create mode 100644 src/generated/resources/assets/create/items/brass_encased_cogwheel.json create mode 100644 src/generated/resources/assets/create/items/brass_encased_large_cogwheel.json create mode 100644 src/generated/resources/assets/create/items/brass_encased_shaft.json create mode 100644 src/generated/resources/assets/create/items/brass_funnel.json create mode 100644 src/generated/resources/assets/create/items/brass_hand.json create mode 100644 src/generated/resources/assets/create/items/brass_ingot.json create mode 100644 src/generated/resources/assets/create/items/brass_ladder.json create mode 100644 src/generated/resources/assets/create/items/brass_nugget.json create mode 100644 src/generated/resources/assets/create/items/brass_scaffolding.json create mode 100644 src/generated/resources/assets/create/items/brass_sheet.json create mode 100644 src/generated/resources/assets/create/items/brass_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/brass_tunnel.json create mode 100644 src/generated/resources/assets/create/items/brown_postbox.json create mode 100644 src/generated/resources/assets/create/items/brown_seat.json create mode 100644 src/generated/resources/assets/create/items/brown_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/brown_toolbox.json create mode 100644 src/generated/resources/assets/create/items/brown_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/builders_tea.json create mode 100644 src/generated/resources/assets/create/items/calcite_pillar.json create mode 100644 src/generated/resources/assets/create/items/cardboard.json create mode 100644 src/generated/resources/assets/create/items/cardboard_block.json create mode 100644 src/generated/resources/assets/create/items/cardboard_boots.json create mode 100644 src/generated/resources/assets/create/items/cardboard_chestplate.json create mode 100644 src/generated/resources/assets/create/items/cardboard_helmet.json create mode 100644 src/generated/resources/assets/create/items/cardboard_leggings.json create mode 100644 src/generated/resources/assets/create/items/cardboard_package_10x12.json create mode 100644 src/generated/resources/assets/create/items/cardboard_package_10x8.json create mode 100644 src/generated/resources/assets/create/items/cardboard_package_12x10.json create mode 100644 src/generated/resources/assets/create/items/cardboard_package_12x12.json create mode 100644 src/generated/resources/assets/create/items/cardboard_sword.json create mode 100644 src/generated/resources/assets/create/items/cart_assembler.json create mode 100644 src/generated/resources/assets/create/items/chain_conveyor.json create mode 100644 src/generated/resources/assets/create/items/cherry_window.json create mode 100644 src/generated/resources/assets/create/items/cherry_window_pane.json create mode 100644 src/generated/resources/assets/create/items/chest_minecart_contraption.json create mode 100644 src/generated/resources/assets/create/items/chocolate_bucket.json create mode 100644 src/generated/resources/assets/create/items/chocolate_glazed_berries.json create mode 100644 src/generated/resources/assets/create/items/chromatic_compound.json create mode 100644 src/generated/resources/assets/create/items/chute.json create mode 100644 src/generated/resources/assets/create/items/cinder_flour.json create mode 100644 src/generated/resources/assets/create/items/clipboard.json create mode 100644 src/generated/resources/assets/create/items/clockwork_bearing.json create mode 100644 src/generated/resources/assets/create/items/clutch.json create mode 100644 src/generated/resources/assets/create/items/cogwheel.json create mode 100644 src/generated/resources/assets/create/items/content_observer.json create mode 100644 src/generated/resources/assets/create/items/contraption_controls.json create mode 100644 src/generated/resources/assets/create/items/controller_rail.json create mode 100644 src/generated/resources/assets/create/items/controls.json create mode 100644 src/generated/resources/assets/create/items/copper_backtank.json create mode 100644 src/generated/resources/assets/create/items/copper_backtank_placeable.json create mode 100644 src/generated/resources/assets/create/items/copper_bars.json create mode 100644 src/generated/resources/assets/create/items/copper_casing.json create mode 100644 src/generated/resources/assets/create/items/copper_diving_boots.json create mode 100644 src/generated/resources/assets/create/items/copper_diving_helmet.json create mode 100644 src/generated/resources/assets/create/items/copper_door.json create mode 100644 src/generated/resources/assets/create/items/copper_ladder.json create mode 100644 src/generated/resources/assets/create/items/copper_nugget.json create mode 100644 src/generated/resources/assets/create/items/copper_scaffolding.json create mode 100644 src/generated/resources/assets/create/items/copper_sheet.json create mode 100644 src/generated/resources/assets/create/items/copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/copper_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/copper_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/copycat_panel.json create mode 100644 src/generated/resources/assets/create/items/copycat_step.json create mode 100644 src/generated/resources/assets/create/items/crafter_slot_cover.json create mode 100644 src/generated/resources/assets/create/items/crafting_blueprint.json create mode 100644 src/generated/resources/assets/create/items/creative_blaze_cake.json create mode 100644 src/generated/resources/assets/create/items/creative_crate.json create mode 100644 src/generated/resources/assets/create/items/creative_fluid_tank.json create mode 100644 src/generated/resources/assets/create/items/creative_motor.json create mode 100644 src/generated/resources/assets/create/items/crimsite.json create mode 100644 src/generated/resources/assets/create/items/crimsite_pillar.json create mode 100644 src/generated/resources/assets/create/items/crimson_window.json create mode 100644 src/generated/resources/assets/create/items/crimson_window_pane.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_aluminum.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_copper.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_gold.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_iron.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_lead.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_nickel.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_osmium.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_platinum.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_quicksilver.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_silver.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_tin.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_uranium.json create mode 100644 src/generated/resources/assets/create/items/crushed_raw_zinc.json create mode 100644 src/generated/resources/assets/create/items/crushing_wheel.json create mode 100644 src/generated/resources/assets/create/items/cuckoo_clock.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_andesite_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_asurine_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_calcite_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_crimsite_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_deepslate_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_diorite_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_dripstone_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_granite.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_granite_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_limestone_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_ochrum_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_scorchia_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_scoria_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_tuff_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_bricks.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_slab.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_stairs.json create mode 100644 src/generated/resources/assets/create/items/cut_veridium_wall.json create mode 100644 src/generated/resources/assets/create/items/cyan_postbox.json create mode 100644 src/generated/resources/assets/create/items/cyan_seat.json create mode 100644 src/generated/resources/assets/create/items/cyan_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/cyan_toolbox.json create mode 100644 src/generated/resources/assets/create/items/cyan_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/dark_oak_window.json create mode 100644 src/generated/resources/assets/create/items/dark_oak_window_pane.json create mode 100644 src/generated/resources/assets/create/items/deepslate_pillar.json create mode 100644 src/generated/resources/assets/create/items/deepslate_zinc_ore.json create mode 100644 src/generated/resources/assets/create/items/deployer.json create mode 100644 src/generated/resources/assets/create/items/depot.json create mode 100644 src/generated/resources/assets/create/items/desk_bell.json create mode 100644 src/generated/resources/assets/create/items/diorite_pillar.json create mode 100644 src/generated/resources/assets/create/items/display_board.json create mode 100644 src/generated/resources/assets/create/items/display_link.json create mode 100644 src/generated/resources/assets/create/items/dough.json create mode 100644 src/generated/resources/assets/create/items/dripstone_pillar.json create mode 100644 src/generated/resources/assets/create/items/electron_tube.json create mode 100644 src/generated/resources/assets/create/items/elevator_contact.json create mode 100644 src/generated/resources/assets/create/items/elevator_pulley.json create mode 100644 src/generated/resources/assets/create/items/empty_blaze_burner.json create mode 100644 src/generated/resources/assets/create/items/empty_schematic.json create mode 100644 src/generated/resources/assets/create/items/encased_chain_drive.json create mode 100644 src/generated/resources/assets/create/items/encased_fan.json create mode 100644 src/generated/resources/assets/create/items/experience_block.json create mode 100644 src/generated/resources/assets/create/items/experience_nugget.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/exposed_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/extendo_grip.json create mode 100644 src/generated/resources/assets/create/items/factory_gauge.json create mode 100644 src/generated/resources/assets/create/items/filter.json create mode 100644 src/generated/resources/assets/create/items/fluid_pipe.json create mode 100644 src/generated/resources/assets/create/items/fluid_tank.json create mode 100644 src/generated/resources/assets/create/items/fluid_valve.json create mode 100644 src/generated/resources/assets/create/items/flywheel.json create mode 100644 src/generated/resources/assets/create/items/framed_glass.json create mode 100644 src/generated/resources/assets/create/items/framed_glass_door.json create mode 100644 src/generated/resources/assets/create/items/framed_glass_pane.json create mode 100644 src/generated/resources/assets/create/items/framed_glass_trapdoor.json create mode 100644 src/generated/resources/assets/create/items/furnace_minecart_contraption.json create mode 100644 src/generated/resources/assets/create/items/gantry_carriage.json create mode 100644 src/generated/resources/assets/create/items/gantry_shaft.json create mode 100644 src/generated/resources/assets/create/items/gearbox.json create mode 100644 src/generated/resources/assets/create/items/gearshift.json create mode 100644 src/generated/resources/assets/create/items/goggles.json create mode 100644 src/generated/resources/assets/create/items/golden_sheet.json create mode 100644 src/generated/resources/assets/create/items/granite_pillar.json create mode 100644 src/generated/resources/assets/create/items/gray_postbox.json create mode 100644 src/generated/resources/assets/create/items/gray_seat.json create mode 100644 src/generated/resources/assets/create/items/gray_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/gray_toolbox.json create mode 100644 src/generated/resources/assets/create/items/gray_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/green_postbox.json create mode 100644 src/generated/resources/assets/create/items/green_seat.json create mode 100644 src/generated/resources/assets/create/items/green_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/green_toolbox.json create mode 100644 src/generated/resources/assets/create/items/green_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/hand_crank.json create mode 100644 src/generated/resources/assets/create/items/handheld_worldshaper.json create mode 100644 src/generated/resources/assets/create/items/haunted_bell.json create mode 100644 src/generated/resources/assets/create/items/honey_bucket.json create mode 100644 src/generated/resources/assets/create/items/honeyed_apple.json create mode 100644 src/generated/resources/assets/create/items/horizontal_framed_glass.json create mode 100644 src/generated/resources/assets/create/items/horizontal_framed_glass_pane.json create mode 100644 src/generated/resources/assets/create/items/hose_pulley.json create mode 100644 src/generated/resources/assets/create/items/incomplete_precision_mechanism.json create mode 100644 src/generated/resources/assets/create/items/incomplete_track.json create mode 100644 src/generated/resources/assets/create/items/industrial_iron_block.json create mode 100644 src/generated/resources/assets/create/items/industrial_iron_window.json create mode 100644 src/generated/resources/assets/create/items/industrial_iron_window_pane.json create mode 100644 src/generated/resources/assets/create/items/iron_sheet.json create mode 100644 src/generated/resources/assets/create/items/item_drain.json create mode 100644 src/generated/resources/assets/create/items/item_hatch.json create mode 100644 src/generated/resources/assets/create/items/item_vault.json create mode 100644 src/generated/resources/assets/create/items/jungle_window.json create mode 100644 src/generated/resources/assets/create/items/jungle_window_pane.json create mode 100644 src/generated/resources/assets/create/items/large_cogwheel.json create mode 100644 src/generated/resources/assets/create/items/large_water_wheel.json create mode 100644 src/generated/resources/assets/create/items/layered_andesite.json create mode 100644 src/generated/resources/assets/create/items/layered_asurine.json create mode 100644 src/generated/resources/assets/create/items/layered_calcite.json create mode 100644 src/generated/resources/assets/create/items/layered_crimsite.json create mode 100644 src/generated/resources/assets/create/items/layered_deepslate.json create mode 100644 src/generated/resources/assets/create/items/layered_diorite.json create mode 100644 src/generated/resources/assets/create/items/layered_dripstone.json create mode 100644 src/generated/resources/assets/create/items/layered_granite.json create mode 100644 src/generated/resources/assets/create/items/layered_limestone.json create mode 100644 src/generated/resources/assets/create/items/layered_ochrum.json create mode 100644 src/generated/resources/assets/create/items/layered_scorchia.json create mode 100644 src/generated/resources/assets/create/items/layered_scoria.json create mode 100644 src/generated/resources/assets/create/items/layered_tuff.json create mode 100644 src/generated/resources/assets/create/items/layered_veridium.json create mode 100644 src/generated/resources/assets/create/items/light_blue_postbox.json create mode 100644 src/generated/resources/assets/create/items/light_blue_seat.json create mode 100644 src/generated/resources/assets/create/items/light_blue_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/light_blue_toolbox.json create mode 100644 src/generated/resources/assets/create/items/light_blue_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/light_gray_postbox.json create mode 100644 src/generated/resources/assets/create/items/light_gray_seat.json create mode 100644 src/generated/resources/assets/create/items/light_gray_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/light_gray_toolbox.json create mode 100644 src/generated/resources/assets/create/items/light_gray_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/lime_postbox.json create mode 100644 src/generated/resources/assets/create/items/lime_seat.json create mode 100644 src/generated/resources/assets/create/items/lime_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/lime_toolbox.json create mode 100644 src/generated/resources/assets/create/items/lime_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/limestone.json create mode 100644 src/generated/resources/assets/create/items/limestone_pillar.json create mode 100644 src/generated/resources/assets/create/items/linear_chassis.json create mode 100644 src/generated/resources/assets/create/items/linked_controller.json create mode 100644 src/generated/resources/assets/create/items/magenta_postbox.json create mode 100644 src/generated/resources/assets/create/items/magenta_seat.json create mode 100644 src/generated/resources/assets/create/items/magenta_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/magenta_toolbox.json create mode 100644 src/generated/resources/assets/create/items/magenta_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/mangrove_window.json create mode 100644 src/generated/resources/assets/create/items/mangrove_window_pane.json create mode 100644 src/generated/resources/assets/create/items/mechanical_arm.json create mode 100644 src/generated/resources/assets/create/items/mechanical_bearing.json create mode 100644 src/generated/resources/assets/create/items/mechanical_crafter.json create mode 100644 src/generated/resources/assets/create/items/mechanical_drill.json create mode 100644 src/generated/resources/assets/create/items/mechanical_harvester.json create mode 100644 src/generated/resources/assets/create/items/mechanical_mixer.json create mode 100644 src/generated/resources/assets/create/items/mechanical_piston.json create mode 100644 src/generated/resources/assets/create/items/mechanical_plough.json create mode 100644 src/generated/resources/assets/create/items/mechanical_press.json create mode 100644 src/generated/resources/assets/create/items/mechanical_pump.json create mode 100644 src/generated/resources/assets/create/items/mechanical_roller.json create mode 100644 src/generated/resources/assets/create/items/mechanical_saw.json create mode 100644 src/generated/resources/assets/create/items/metal_bracket.json create mode 100644 src/generated/resources/assets/create/items/metal_girder.json create mode 100644 src/generated/resources/assets/create/items/millstone.json create mode 100644 src/generated/resources/assets/create/items/minecart_contraption.json create mode 100644 src/generated/resources/assets/create/items/minecart_coupling.json create mode 100644 src/generated/resources/assets/create/items/mysterious_cuckoo_clock.json create mode 100644 src/generated/resources/assets/create/items/netherite_backtank.json create mode 100644 src/generated/resources/assets/create/items/netherite_backtank_placeable.json create mode 100644 src/generated/resources/assets/create/items/netherite_diving_boots.json create mode 100644 src/generated/resources/assets/create/items/netherite_diving_helmet.json create mode 100644 src/generated/resources/assets/create/items/nixie_tube.json create mode 100644 src/generated/resources/assets/create/items/nozzle.json create mode 100644 src/generated/resources/assets/create/items/oak_window.json create mode 100644 src/generated/resources/assets/create/items/oak_window_pane.json create mode 100644 src/generated/resources/assets/create/items/ochrum.json create mode 100644 src/generated/resources/assets/create/items/ochrum_pillar.json create mode 100644 src/generated/resources/assets/create/items/orange_postbox.json create mode 100644 src/generated/resources/assets/create/items/orange_seat.json create mode 100644 src/generated/resources/assets/create/items/orange_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/orange_toolbox.json create mode 100644 src/generated/resources/assets/create/items/orange_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/ornate_iron_window.json create mode 100644 src/generated/resources/assets/create/items/ornate_iron_window_pane.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/oxidized_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/package_filter.json create mode 100644 src/generated/resources/assets/create/items/package_frogport.json create mode 100644 src/generated/resources/assets/create/items/packager.json create mode 100644 src/generated/resources/assets/create/items/peculiar_bell.json create mode 100644 src/generated/resources/assets/create/items/pink_postbox.json create mode 100644 src/generated/resources/assets/create/items/pink_seat.json create mode 100644 src/generated/resources/assets/create/items/pink_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/pink_toolbox.json create mode 100644 src/generated/resources/assets/create/items/pink_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/piston_extension_pole.json create mode 100644 src/generated/resources/assets/create/items/placard.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_andesite.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_andesite_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_andesite_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_andesite_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_asurine.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_asurine_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_asurine_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_asurine_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_calcite.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_calcite_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_calcite_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_calcite_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_crimsite.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_crimsite_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_crimsite_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_crimsite_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_deepslate.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_deepslate_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_deepslate_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_deepslate_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_diorite.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_diorite_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_diorite_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_diorite_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_dripstone.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_dripstone_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_dripstone_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_dripstone_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_granite.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_granite_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_granite_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_granite_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_limestone.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_limestone_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_limestone_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_limestone_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_ochrum.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_ochrum_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_ochrum_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_ochrum_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scorchia.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scorchia_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scorchia_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scorchia_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scoria.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scoria_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scoria_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_scoria_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_tuff.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_tuff_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_tuff_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_tuff_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_veridium.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_veridium_slab.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_veridium_stairs.json create mode 100644 src/generated/resources/assets/create/items/polished_cut_veridium_wall.json create mode 100644 src/generated/resources/assets/create/items/polished_rose_quartz.json create mode 100644 src/generated/resources/assets/create/items/portable_fluid_interface.json create mode 100644 src/generated/resources/assets/create/items/portable_storage_interface.json create mode 100644 src/generated/resources/assets/create/items/potato_cannon.json create mode 100644 src/generated/resources/assets/create/items/powdered_obsidian.json create mode 100644 src/generated/resources/assets/create/items/powered_latch.json create mode 100644 src/generated/resources/assets/create/items/powered_toggle_latch.json create mode 100644 src/generated/resources/assets/create/items/precision_mechanism.json create mode 100644 src/generated/resources/assets/create/items/propeller.json create mode 100644 src/generated/resources/assets/create/items/pulp.json create mode 100644 src/generated/resources/assets/create/items/pulse_extender.json create mode 100644 src/generated/resources/assets/create/items/pulse_repeater.json create mode 100644 src/generated/resources/assets/create/items/pulse_timer.json create mode 100644 src/generated/resources/assets/create/items/purple_postbox.json create mode 100644 src/generated/resources/assets/create/items/purple_seat.json create mode 100644 src/generated/resources/assets/create/items/purple_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/purple_toolbox.json create mode 100644 src/generated/resources/assets/create/items/purple_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/radial_chassis.json create mode 100644 src/generated/resources/assets/create/items/railway_casing.json create mode 100644 src/generated/resources/assets/create/items/rare_creeper_package.json create mode 100644 src/generated/resources/assets/create/items/rare_darcy_package.json create mode 100644 src/generated/resources/assets/create/items/rare_evan_package.json create mode 100644 src/generated/resources/assets/create/items/rare_jinx_package.json create mode 100644 src/generated/resources/assets/create/items/rare_kryppers_package.json create mode 100644 src/generated/resources/assets/create/items/rare_simi_package.json create mode 100644 src/generated/resources/assets/create/items/rare_starlotte_package.json create mode 100644 src/generated/resources/assets/create/items/rare_thunder_package.json create mode 100644 src/generated/resources/assets/create/items/rare_up_package.json create mode 100644 src/generated/resources/assets/create/items/rare_vector_package.json create mode 100644 src/generated/resources/assets/create/items/raw_zinc.json create mode 100644 src/generated/resources/assets/create/items/raw_zinc_block.json create mode 100644 src/generated/resources/assets/create/items/red_postbox.json create mode 100644 src/generated/resources/assets/create/items/red_sand_paper.json create mode 100644 src/generated/resources/assets/create/items/red_seat.json create mode 100644 src/generated/resources/assets/create/items/red_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/red_toolbox.json create mode 100644 src/generated/resources/assets/create/items/red_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/redstone_contact.json create mode 100644 src/generated/resources/assets/create/items/redstone_link.json create mode 100644 src/generated/resources/assets/create/items/redstone_requester.json create mode 100644 src/generated/resources/assets/create/items/refined_radiance.json create mode 100644 src/generated/resources/assets/create/items/refined_radiance_casing.json create mode 100644 src/generated/resources/assets/create/items/repackager.json create mode 100644 src/generated/resources/assets/create/items/rope_pulley.json create mode 100644 src/generated/resources/assets/create/items/rose_quartz.json create mode 100644 src/generated/resources/assets/create/items/rose_quartz_block.json create mode 100644 src/generated/resources/assets/create/items/rose_quartz_lamp.json create mode 100644 src/generated/resources/assets/create/items/rose_quartz_tiles.json create mode 100644 src/generated/resources/assets/create/items/rotation_speed_controller.json create mode 100644 src/generated/resources/assets/create/items/sail_frame.json create mode 100644 src/generated/resources/assets/create/items/sand_paper.json create mode 100644 src/generated/resources/assets/create/items/schedule.json create mode 100644 src/generated/resources/assets/create/items/schematic.json create mode 100644 src/generated/resources/assets/create/items/schematic_and_quill.json create mode 100644 src/generated/resources/assets/create/items/schematic_table.json create mode 100644 src/generated/resources/assets/create/items/schematicannon.json create mode 100644 src/generated/resources/assets/create/items/scorchia.json create mode 100644 src/generated/resources/assets/create/items/scorchia_pillar.json create mode 100644 src/generated/resources/assets/create/items/scoria.json create mode 100644 src/generated/resources/assets/create/items/scoria_pillar.json create mode 100644 src/generated/resources/assets/create/items/secondary_linear_chassis.json create mode 100644 src/generated/resources/assets/create/items/sequenced_gearshift.json create mode 100644 src/generated/resources/assets/create/items/shadow_steel.json create mode 100644 src/generated/resources/assets/create/items/shadow_steel_casing.json create mode 100644 src/generated/resources/assets/create/items/shaft.json create mode 100644 src/generated/resources/assets/create/items/shopping_list.json create mode 100644 src/generated/resources/assets/create/items/small_andesite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_andesite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_andesite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_andesite_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_asurine_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_asurine_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_asurine_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_asurine_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_calcite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_calcite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_calcite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_calcite_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_crimsite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_crimsite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_crimsite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_crimsite_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_deepslate_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_deepslate_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_deepslate_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_deepslate_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_diorite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_diorite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_diorite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_diorite_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_dripstone_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_dripstone_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_dripstone_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_dripstone_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_granite_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_granite_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_granite_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_granite_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_limestone_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_limestone_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_limestone_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_limestone_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_ochrum_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_ochrum_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_ochrum_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_ochrum_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_rose_quartz_tiles.json create mode 100644 src/generated/resources/assets/create/items/small_scorchia_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_scorchia_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_scorchia_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_scorchia_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_scoria_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_scoria_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_scoria_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_scoria_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_tuff_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_tuff_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_tuff_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_tuff_bricks.json create mode 100644 src/generated/resources/assets/create/items/small_veridium_brick_slab.json create mode 100644 src/generated/resources/assets/create/items/small_veridium_brick_stairs.json create mode 100644 src/generated/resources/assets/create/items/small_veridium_brick_wall.json create mode 100644 src/generated/resources/assets/create/items/small_veridium_bricks.json create mode 100644 src/generated/resources/assets/create/items/smart_chute.json create mode 100644 src/generated/resources/assets/create/items/smart_fluid_pipe.json create mode 100644 src/generated/resources/assets/create/items/speedometer.json create mode 100644 src/generated/resources/assets/create/items/spout.json create mode 100644 src/generated/resources/assets/create/items/spruce_window.json create mode 100644 src/generated/resources/assets/create/items/spruce_window_pane.json create mode 100644 src/generated/resources/assets/create/items/steam_engine.json create mode 100644 src/generated/resources/assets/create/items/steam_whistle.json create mode 100644 src/generated/resources/assets/create/items/sticker.json create mode 100644 src/generated/resources/assets/create/items/sticky_mechanical_piston.json create mode 100644 src/generated/resources/assets/create/items/stock_link.json create mode 100644 src/generated/resources/assets/create/items/stock_ticker.json create mode 100644 src/generated/resources/assets/create/items/stockpile_switch.json create mode 100644 src/generated/resources/assets/create/items/stressometer.json create mode 100644 src/generated/resources/assets/create/items/sturdy_sheet.json create mode 100644 src/generated/resources/assets/create/items/super_glue.json create mode 100644 src/generated/resources/assets/create/items/sweet_roll.json create mode 100644 src/generated/resources/assets/create/items/tiled_glass.json create mode 100644 src/generated/resources/assets/create/items/tiled_glass_pane.json create mode 100644 src/generated/resources/assets/create/items/track.json create mode 100644 src/generated/resources/assets/create/items/track_observer.json create mode 100644 src/generated/resources/assets/create/items/track_signal.json create mode 100644 src/generated/resources/assets/create/items/track_station.json create mode 100644 src/generated/resources/assets/create/items/train_door.json create mode 100644 src/generated/resources/assets/create/items/train_trapdoor.json create mode 100644 src/generated/resources/assets/create/items/transmitter.json create mode 100644 src/generated/resources/assets/create/items/tree_fertilizer.json create mode 100644 src/generated/resources/assets/create/items/tuff_pillar.json create mode 100644 src/generated/resources/assets/create/items/turntable.json create mode 100644 src/generated/resources/assets/create/items/unprocessed_obsidian_sheet.json create mode 100644 src/generated/resources/assets/create/items/veridium.json create mode 100644 src/generated/resources/assets/create/items/veridium_pillar.json create mode 100644 src/generated/resources/assets/create/items/vertical_framed_glass.json create mode 100644 src/generated/resources/assets/create/items/vertical_framed_glass_pane.json create mode 100644 src/generated/resources/assets/create/items/vertical_gearbox.json create mode 100644 src/generated/resources/assets/create/items/wand_of_symmetry.json create mode 100644 src/generated/resources/assets/create/items/warped_window.json create mode 100644 src/generated/resources/assets/create/items/warped_window_pane.json create mode 100644 src/generated/resources/assets/create/items/water_wheel.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_exposed_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_oxidized_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/waxed_weathered_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_shingle_slab.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_shingle_stairs.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_shingles.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_tile_slab.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_tile_stairs.json create mode 100644 src/generated/resources/assets/create/items/weathered_copper_tiles.json create mode 100644 src/generated/resources/assets/create/items/weathered_iron_block.json create mode 100644 src/generated/resources/assets/create/items/weathered_iron_window.json create mode 100644 src/generated/resources/assets/create/items/weathered_iron_window_pane.json create mode 100644 src/generated/resources/assets/create/items/weighted_ejector.json create mode 100644 src/generated/resources/assets/create/items/wheat_flour.json create mode 100644 src/generated/resources/assets/create/items/whisk.json create mode 100644 src/generated/resources/assets/create/items/white_postbox.json create mode 100644 src/generated/resources/assets/create/items/white_sail.json create mode 100644 src/generated/resources/assets/create/items/white_seat.json create mode 100644 src/generated/resources/assets/create/items/white_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/white_toolbox.json create mode 100644 src/generated/resources/assets/create/items/white_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/windmill_bearing.json create mode 100644 src/generated/resources/assets/create/items/wooden_bracket.json create mode 100644 src/generated/resources/assets/create/items/wrench.json create mode 100644 src/generated/resources/assets/create/items/yellow_postbox.json create mode 100644 src/generated/resources/assets/create/items/yellow_seat.json create mode 100644 src/generated/resources/assets/create/items/yellow_table_cloth.json create mode 100644 src/generated/resources/assets/create/items/yellow_toolbox.json create mode 100644 src/generated/resources/assets/create/items/yellow_valve_handle.json create mode 100644 src/generated/resources/assets/create/items/zinc_block.json create mode 100644 src/generated/resources/assets/create/items/zinc_ingot.json create mode 100644 src/generated/resources/assets/create/items/zinc_nugget.json create mode 100644 src/generated/resources/assets/create/items/zinc_ore.json delete mode 100644 src/generated/resources/assets/create/models/block/chocolate.json delete mode 100644 src/generated/resources/assets/create/models/block/honey.json delete mode 100644 src/generated/resources/assets/create/models/item/acacia_window.json delete mode 100644 src/generated/resources/assets/create/models/item/andesite_alloy_block.json delete mode 100644 src/generated/resources/assets/create/models/item/andesite_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/andesite_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/asurine_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/bamboo_window.json delete mode 100644 src/generated/resources/assets/create/models/item/birch_window.json delete mode 100644 src/generated/resources/assets/create/models/item/black_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/black_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/blue_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/blue_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/bound_cardboard_block.json delete mode 100644 src/generated/resources/assets/create/models/item/brass_block.json delete mode 100644 src/generated/resources/assets/create/models/item/brass_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/brown_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/brown_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/calcite_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_block.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_amethyst_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_copper_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_diamond_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_emerald_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_gold_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_iron_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_lapis_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_netherite_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_quartz_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_boots_redstone_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_amethyst_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_copper_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_diamond_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_emerald_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_gold_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_iron_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_lapis_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_netherite_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_quartz_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_chestplate_redstone_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_amethyst_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_copper_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_diamond_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_emerald_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_gold_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_iron_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_lapis_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_netherite_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_quartz_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_helmet_redstone_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_amethyst_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_copper_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_diamond_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_emerald_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_gold_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_iron_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_lapis_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_netherite_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_quartz_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cardboard_leggings_redstone_trim.json delete mode 100644 src/generated/resources/assets/create/models/item/cherry_window.json delete mode 100644 src/generated/resources/assets/create/models/item/cogwheel.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/copper_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/crimsite_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/crimson_window.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_andesite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_asurine_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_calcite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_crimsite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_deepslate_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_diorite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_dripstone_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_granite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_limestone_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_ochrum_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scorchia_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_scoria_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_tuff_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/cut_veridium_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/cyan_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/cyan_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/dark_oak_window.json delete mode 100644 src/generated/resources/assets/create/models/item/deepslate_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/deepslate_zinc_ore.json delete mode 100644 src/generated/resources/assets/create/models/item/diorite_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/dripstone_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/experience_block.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/exposed_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/framed_glass_trapdoor.json delete mode 100644 src/generated/resources/assets/create/models/item/granite_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/gray_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/gray_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/green_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/green_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/industrial_iron_block.json delete mode 100644 src/generated/resources/assets/create/models/item/industrial_iron_window.json delete mode 100644 src/generated/resources/assets/create/models/item/item_drain.json delete mode 100644 src/generated/resources/assets/create/models/item/item_vault.json delete mode 100644 src/generated/resources/assets/create/models/item/jungle_window.json delete mode 100644 src/generated/resources/assets/create/models/item/large_cogwheel.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_andesite.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_asurine.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_calcite.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_crimsite.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_deepslate.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_diorite.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_dripstone.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_granite.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_limestone.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_ochrum.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_scorchia.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_scoria.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_tuff.json delete mode 100644 src/generated/resources/assets/create/models/item/layered_veridium.json delete mode 100644 src/generated/resources/assets/create/models/item/light_blue_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/light_blue_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/light_gray_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/light_gray_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/lime_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/lime_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/limestone_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/linear_chassis.json delete mode 100644 src/generated/resources/assets/create/models/item/magenta_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/magenta_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/mangrove_window.json delete mode 100644 src/generated/resources/assets/create/models/item/mechanical_plough.json delete mode 100644 src/generated/resources/assets/create/models/item/oak_window.json delete mode 100644 src/generated/resources/assets/create/models/item/ochrum_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/orange_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/orange_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/ornate_iron_window.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/oxidized_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/pink_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/pink_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/piston_extension_pole.json delete mode 100644 src/generated/resources/assets/create/models/item/placard.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_andesite.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_andesite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_andesite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_asurine.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_asurine_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_asurine_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_calcite.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_calcite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_calcite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_crimsite.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_crimsite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_crimsite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_deepslate.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_deepslate_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_deepslate_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_diorite.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_diorite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_diorite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_dripstone.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_dripstone_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_dripstone_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_granite.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_granite_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_granite_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_limestone.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_limestone_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_limestone_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_ochrum.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_ochrum_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_ochrum_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scorchia.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scorchia_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scorchia_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scoria.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scoria_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_scoria_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_tuff.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_tuff_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_tuff_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_veridium.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_veridium_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/polished_cut_veridium_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/powered_latch.json delete mode 100644 src/generated/resources/assets/create/models/item/purple_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/purple_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/railway_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/raw_zinc_block.json delete mode 100644 src/generated/resources/assets/create/models/item/red_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/red_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/refined_radiance_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/rose_quartz_block.json delete mode 100644 src/generated/resources/assets/create/models/item/rose_quartz_lamp.json delete mode 100644 src/generated/resources/assets/create/models/item/rose_quartz_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/sail_frame.json delete mode 100644 src/generated/resources/assets/create/models/item/schematic_table.json delete mode 100644 src/generated/resources/assets/create/models/item/scorchia_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/scoria_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/secondary_linear_chassis.json delete mode 100644 src/generated/resources/assets/create/models/item/shadow_steel_casing.json delete mode 100644 src/generated/resources/assets/create/models/item/shaft.json delete mode 100644 src/generated/resources/assets/create/models/item/small_andesite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_andesite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_andesite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_asurine_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_asurine_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_asurine_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_calcite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_calcite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_calcite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_crimsite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_crimsite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_crimsite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_deepslate_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_deepslate_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_deepslate_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_diorite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_diorite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_diorite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_dripstone_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_dripstone_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_dripstone_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_granite_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_granite_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_granite_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_limestone_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_limestone_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_limestone_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_ochrum_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_ochrum_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_ochrum_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_rose_quartz_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scorchia_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scorchia_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scorchia_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scoria_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scoria_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_scoria_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_tuff_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_tuff_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_tuff_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/small_veridium_brick_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/small_veridium_brick_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/small_veridium_bricks.json delete mode 100644 src/generated/resources/assets/create/models/item/spruce_window.json delete mode 100644 src/generated/resources/assets/create/models/item/stock_ticker.json delete mode 100644 src/generated/resources/assets/create/models/item/tiled_glass.json delete mode 100644 src/generated/resources/assets/create/models/item/train_trapdoor.json delete mode 100644 src/generated/resources/assets/create/models/item/tuff_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/turntable.json delete mode 100644 src/generated/resources/assets/create/models/item/veridium_pillar.json delete mode 100644 src/generated/resources/assets/create/models/item/warped_window.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_exposed_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/waxed_weathered_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_shingle_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_shingle_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_shingles.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_tile_slab.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_tile_stairs.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_copper_tiles.json delete mode 100644 src/generated/resources/assets/create/models/item/weathered_iron_block.json delete mode 100644 src/generated/resources/assets/create/models/item/white_sail.json delete mode 100644 src/generated/resources/assets/create/models/item/white_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/white_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/yellow_seat.json delete mode 100644 src/generated/resources/assets/create/models/item/yellow_valve_handle.json delete mode 100644 src/generated/resources/assets/create/models/item/zinc_block.json delete mode 100644 src/generated/resources/assets/create/models/item/zinc_ore.json rename src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/{chain_from_zinc.json => iron_chain_from_zinc.json} (79%) delete mode 100644 src/generated/resources/data/create/curios/entities/players.json delete mode 100644 src/generated/resources/data/create/loot_table/blocks/mechanical_piston_head.json delete mode 100644 src/generated/resources/data/create/loot_table/blocks/piston_extension_pole.json delete mode 100644 src/generated/resources/data/create/recipe/crafting/appliances/chain_from_zinc.json create mode 100644 src/generated/resources/data/create/recipe/crafting/appliances/iron_chain_from_zinc.json rename src/generated/resources/data/minecraft/tags/item/{doors.json => wooden_doors.json} (100%) rename src/generated/resources/data/minecraft/tags/item/{trapdoors.json => wooden_trapdoors.json} (100%) create mode 100644 src/main/java/com/simibubi/create/AllParticleTypesClient.java delete mode 100644 src/main/java/com/simibubi/create/compat/curios/CuriosDataGenerator.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/chassis/StickerClient.java create mode 100644 src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactClient.java create mode 100644 src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/zapper/ZapperClient.java create mode 100644 src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperClient.java create mode 100644 src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftClient.java create mode 100644 src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelClient.java create mode 100644 src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerClient.java create mode 100644 src/main/java/com/simibubi/create/content/processing/recipe/ProcessingFluidOutput.java create mode 100644 src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeClient.java create mode 100644 src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkClient.java create mode 100644 src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkClient.java create mode 100644 src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchClient.java create mode 100644 src/main/java/com/simibubi/create/content/schematics/SchematicClient.java create mode 100644 src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdConditionClient.java create mode 100644 src/main/java/com/simibubi/create/content/trains/station/StationClient.java create mode 100644 src/main/java/com/simibubi/create/foundation/data/CreateRegistrateClient.java create mode 100644 src/main/java/com/simibubi/create/foundation/data/DatagenModels.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/FluidRenderProperties.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/LazyComponentFluidIngredient.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerAdapter.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerItemAdapter.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidIngredientBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidTransferAdapter.java delete mode 100644 src/main/java/com/simibubi/create/foundation/item/CustomRenderedArmorItem.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/EnchantedBookItem.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/ItemColor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/item/LayeredArmorItem.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/LegacyItemHandlerAdapter.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/LegacyItemTransferAdapter.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/ArmorTrimMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/AgeableListModelAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/EntityRenderDispatcherAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/FontAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/GuiAccessor.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/HudAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/HumanoidArmorLayerAccessor.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemEntityAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemModelGeneratorsAccessor.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/accessor/LevelRendererAccessor.java rename src/main/java/com/simibubi/create/foundation/mixin/client/{LevelRendererMixin.java => ClientLevelMixin.java} (82%) create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/client/EntityRenderStateMixin.java create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/client/EntityRendererMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/BakedModel.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/BakedModelWrapper.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/BakedQuad.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/ItemOverrides.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/QuadTransformers.java create mode 100644 src/main/java/com/simibubi/create/foundation/model/SimpleBakedModel.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/BlockRenderDispatcher.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/CreateEntityRenderStateExtension.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/GlStateManager.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/ItemRenderer.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/LegacyBlockRendererBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/LegacyItemRendererBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/LegacyLightTexture.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/LegacyRenderSystemBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/LegacyRenderTypes.java create mode 100644 src/main/java/com/simibubi/create/foundation/render/PanoramaRenderer.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/FieldsAreNonnullByDefault.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityDataComponentBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityTagBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyComponentSerializationBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyDirectionBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyFluidNbtBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyItemStackNbtBridge.java create mode 100644 src/main/java/com/simibubi/create/foundation/utility/LegacyNbtUtilsBridge.java create mode 100644 src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTest.java create mode 100644 src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTestGenerator.java create mode 100644 src/main/java/com/simibubi/create/infrastructure/gametest/legacy/TestFunction.java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a3826e6c3a..b628cf64b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,8 +17,8 @@ jobs: - name: Checkout Repository uses: actions/checkout@v4 - - name: Setup Java 21 - run: echo "JAVA_HOME=$JAVA_HOME_21_X64" >> "$GITHUB_ENV" + - name: Setup Java 25 + run: echo "JAVA_HOME=$JAVA_HOME_25_X64" >> "$GITHUB_ENV" - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 diff --git a/Jenkinsfile b/Jenkinsfile index d472142844..3a8b951dce 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,7 +4,7 @@ pipeline { agent any tools { - jdk "jdk-21" + jdk "jdk-25" } stages { diff --git a/build.gradle b/build.gradle index 290f665561..cc33afb023 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,13 @@ String gitHash = calculateGitHash() + (hasUnstaged() ? "-modified" : "") group = "com.simibubi.create" version = mod_version + (dev && buildNumber != null ? "-${buildNumber}" : "") -java.toolchain.languageVersion = JavaLanguageVersion.of(21) +java.toolchain.languageVersion = JavaLanguageVersion.of(25) + +tasks.withType(net.neoforged.nfrtgradle.NeoFormRuntimeTask).configureEach { + javaExecutable.set(javaToolchains.launcherFor { + languageVersion = JavaLanguageVersion.of(25) + }.map { it.executablePath.asFile.absolutePath }) +} println("Java: ${System.getProperty("java.version")}, JVM: ${System.getProperty("java.vm.version")} (${System.getProperty("java.vendor")}), Arch: ${System.getProperty("os.arch")}") @@ -75,7 +81,7 @@ neoForge { } data { - data() + clientData() programArguments.addAll( "--mod", mod_id as String, @@ -92,6 +98,9 @@ neoForge { } repositories { + if (project.hasProperty("create.useMavenLocal")) { + mavenLocal() + } maven { url = "https://maven.createmod.net" } // Ponder, Flywheel maven { url = "https://maven.ithundxr.dev/snapshots" } // Registrate maven { url = "https://maven.blamejared.com" } // JEI, Vazkii's Mods @@ -146,8 +155,10 @@ dependencies { localImplementation("mezz.jei:jei-$minecraft_version-neoforge:$jei_version") - compileOnly("top.theillusivec4.curios:curios-neoforge:$curios_version+$minecraft_version:api") - localRuntimeOnly("top.theillusivec4.curios:curios-neoforge:$curios_version+$minecraft_version") + if (curios_enable.toBoolean()) { + compileOnly("top.theillusivec4.curios:curios-neoforge:$curios_version:api") + localRuntimeOnly("top.theillusivec4.curios:curios-neoforge:$curios_version") + } compileOnly("maven.modrinth:sodium:mc$minecraft_version-$sodium_version-neoforge") @@ -157,30 +168,53 @@ dependencies { localRuntimeOnly("cc.tweaked:cc-tweaked-$minecraft_version-forge:$cc_tweaked_version") } - compileOnly("maven.modrinth:farmers-delight:${farmers_delight_version}") if (farmers_delight_enable.toBoolean()) { + compileOnly("maven.modrinth:farmers-delight:${farmers_delight_version}") localImplementation("maven.modrinth:farmers-delight:${farmers_delight_version}") } - localRuntimeOnly("dev.architectury:architectury-neoforge:13d.0.8") - localImplementation("dev.ftb.mods:ftb-chunks-neoforge:2101.1.1") - localImplementation("dev.ftb.mods:ftb-teams-neoforge:2101.1.0") - localImplementation("dev.ftb.mods:ftb-library-neoforge:2101.1.3") + if (ftb_enable.toBoolean()) { + localRuntimeOnly("dev.architectury:architectury-neoforge:13d.0.8") + localImplementation("dev.ftb.mods:ftb-chunks-neoforge:2101.1.1") + localImplementation("dev.ftb.mods:ftb-teams-neoforge:2101.1.0") + localImplementation("dev.ftb.mods:ftb-library-neoforge:2101.1.3") + } - localImplementation("maven.modrinth:journeymap:1.21.1-6.0.0-beta.54+neoforge") - localImplementation("info.journeymap:journeymap-api-neoforge:2.0.0-1.21.1-20260205.200232-15") { - exclude(group: "curse.maven") // Pulls in a old version of journey map which is for forge + if (journeymap_enable.toBoolean()) { + localImplementation("maven.modrinth:journeymap:1.21.1-6.0.0-beta.54+neoforge") + localImplementation("info.journeymap:journeymap-api-neoforge:2.0.0-1.21.1-20260205.200232-15") { + exclude(group: "curse.maven") // Pulls in a old version of journey map which is for forge + } } - compileOnly("xaero.lib:xaerolib-neoforge-1.21:1.0.42") - compileOnly("curse.maven:xaeros-world-map-317780:7401095") + if (xaero_enable.toBoolean()) { + compileOnly("xaero.lib:xaerolib-neoforge-1.21:1.0.42") + compileOnly("curse.maven:xaeros-world-map-317780:7401095") + } } sourceSets.main { java { + if (!curios_enable.toBoolean()) { + exclude("com/simibubi/create/compat/curios/**") + } if (!cc_tweaked_enable.toBoolean()) { exclude("com/simibubi/create/compat/computercraft/implementation/**") } + if (!farmers_delight_enable.toBoolean()) { + exclude("com/simibubi/create/compat/farmersdelight/**") + } + if (!ftb_enable.toBoolean()) { + exclude("com/simibubi/create/compat/ftb/**") + exclude("com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java") + } + if (!journeymap_enable.toBoolean()) { + exclude("com/simibubi/create/compat/trainmap/JourneyTrainMap.java") + } + if (!xaero_enable.toBoolean()) { + exclude("com/simibubi/create/compat/trainmap/XaeroTrainMap.java") + exclude("com/simibubi/create/foundation/mixin/compat/xaeros/**") + } } resources { diff --git a/gradle.properties b/gradle.properties index ddd0360c6b..8cd14fbf72 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.parallel = true org.gradle.caching = true # Mod Info -mod_version = 6.0.11 -minecraft_version = 1.21.1 +mod_version = 6.1.0 +minecraft_version = 26.2 mod_id = create mod_name = Create @@ -15,7 +15,7 @@ mod_license = Read attached LICENSE.md # NeoForge # https://neoforged.net/ -neo_version = 21.1.219 +neo_version = 26.2.0.8-beta # Mappings # https://parchmentmc.org/docs/getting-started @@ -23,40 +23,46 @@ neo_version = 21.1.219 # parchment_minecraft_version being set to "same" will use minecraft_version # parchment_version set to "none" will disable parchment mappings parchment_minecraft_version = same -parchment_version = 2024.11.17 +parchment_version = none # Registrate -registrate_version = MC1.21-1.3.0+67 +registrate_version = MC26.2-1.6.0+2e4d67c # Ponder # https://maven.createmod.net/net/createmod/ponder/ -ponder_version = 1.0.82 +ponder_version = 1.0.90 # Flywheel & Vanillin # https://maven.createmod.net/dev/engine-room/flywheel/ -flywheel_version = 1.0.6 +flywheel_version = 1.0.7 flywheel_version_range = [1.0.0,2.0) # https://maven.createmod.net/dev/engine-room/vanillin/ -vanillin_version = 1.1.3-41 +vanillin_version = 1.1.4 # Just Enough Items # https://modrinth.com/mod/jei/versions -jei_version = 19.21.0.247 +jei_version = 30.7.0.40 # Curios # https://modrinth.com/mod/curios/versions -curios_version = 9.2.2 +curios_enable = false +curios_version = 15.0.0-beta.2+26.1.2 # Sodium # https://modrinth.com/mod/sodium/versions -sodium_version = 0.6.9 +sodium_version = 0.9.1-beta.4 # CC: Tweaked # https://modrinth.com/mod/cc-tweaked/versions cc_tweaked_enable = true -cc_tweaked_version = 1.116.1 +cc_tweaked_version = 1.120.1 # Farmer's Delight # https://modrinth.com/mod/farmers-delight -farmers_delight_enable = true +farmers_delight_enable = false farmers_delight_version = 1.21.1-1.2.9 + +# Local development/runtime integrations waiting for official 26.2 artifacts +ftb_enable = false +journeymap_enable = false +xaero_enable = false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da476..a351597e62 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle b/settings.gradle index 319996bbdf..0de3c166fc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,12 +1,14 @@ pluginManagement { repositories { - mavenLocal() + if (providers.gradleProperty("create.useMavenLocal").isPresent()) { + mavenLocal() + } gradlePluginPortal() maven { url = "https://maven.neoforged.net/releases" } } } -if (file("Ponder").exists()) { +if (providers.gradleProperty("create.useLocalPonderComposite").isPresent() && file("Ponder").exists()) { includeBuild(".") includeBuild("Ponder") { dependencySubstitution { diff --git a/src/generated/resources/.cache/059f70d822f3fe46a7addb0bb70dc58ad8353903 b/src/generated/resources/.cache/059f70d822f3fe46a7addb0bb70dc58ad8353903 deleted file mode 100644 index 4a7c79272e..0000000000 --- a/src/generated/resources/.cache/059f70d822f3fe46a7addb0bb70dc58ad8353903 +++ /dev/null @@ -1,2 +0,0 @@ -// 1.21.1 2025-11-02T10:48:42.585535754 Curios for create -4346f33a498b3b430f1c4d978e8121dd6bb996c3 data/create/curios/entities/players.json diff --git a/src/generated/resources/.cache/08d7d1f6914a92f0d41b89f305f0c78840f3400a b/src/generated/resources/.cache/08d7d1f6914a92f0d41b89f305f0c78840f3400a index 0ebc981804..ec0270e3ef 100644 --- a/src/generated/resources/.cache/08d7d1f6914a92f0d41b89f305f0c78840f3400a +++ b/src/generated/resources/.cache/08d7d1f6914a92f0d41b89f305f0c78840f3400a @@ -1,5 +1,5 @@ -// 1.21.1 2025-11-02T10:48:42.611425877 create's mechanical crafting recipes -c525511634e4dcd29ff707cfea7c24570c4b8b9c data/create/recipe/mechanical_crafting/crushing_wheel.json -26079bcc4010920b0b9e294103ad6bf40e0d04aa data/create/recipe/mechanical_crafting/extendo_grip.json -b02bb2a27f3225d2993b9fa5f9369cdff19ea440 data/create/recipe/mechanical_crafting/potato_cannon.json -ad748f351a175305d8a988ac7f8657f9dcc7918c data/create/recipe/mechanical_crafting/wand_of_symmetry.json +// 26.2 2026-07-08T18:29:28.9128298 create's mechanical crafting recipes +d4e712c345c100401633fe32f1fd6473f8395299 data/create/recipe/mechanical_crafting/crushing_wheel.json +11961184ebb9ce66e75465a96508699aa4112cff data/create/recipe/mechanical_crafting/extendo_grip.json +bf2c843a3f1c6d450965176925aa353f67aaadec data/create/recipe/mechanical_crafting/potato_cannon.json +df3d63488c7f34e08e43384baf6e1d3394478bed data/create/recipe/mechanical_crafting/wand_of_symmetry.json diff --git a/src/generated/resources/.cache/09230360b5e965ba1bee059b2d819a45920e92bd b/src/generated/resources/.cache/09230360b5e965ba1bee059b2d819a45920e92bd index 91cbd439d1..58baf9e6af 100644 --- a/src/generated/resources/.cache/09230360b5e965ba1bee059b2d819a45920e92bd +++ b/src/generated/resources/.cache/09230360b5e965ba1bee059b2d819a45920e92bd @@ -1,4 +1,4 @@ -// 1.21.1 2025-11-02T10:48:42.61324115 Create's Wiki Block Info Provider +// 26.2 2026-07-08T18:29:28.9158307 Create's Wiki Block Info Provider f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/acacia_window.json 242ad940aee145de757a2baead60e779cb269340 data/create/.wiki/block_info/acacia_window_pane.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/adjustable_chain_gearshift.json @@ -77,19 +77,19 @@ abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/clipboard. 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/contraption_controls.json 6ecd720d3cdb19d4e0d201435d6e85bbf63a7be9 data/create/.wiki/block_info/controller_rail.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/controls.json -d7c0f5c01447894c80da8b2e470dbc9a7aaf1f29 data/create/.wiki/block_info/copper_backtank.json +e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_backtank.json dca1f08b43cc17c380d6d460514d4bcb958be371 data/create/.wiki/block_info/copper_bars.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/copper_casing.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_door.json 1ad11a405a5602f379f37f9a79eb61b2cb7ed8fd data/create/.wiki/block_info/copper_ladder.json ccf4d12f2f289c905ad1ca7c4002b3c9c29717cc data/create/.wiki/block_info/copper_scaffolding.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_shingles.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_table_cloth.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/copper_valve_handle.json a31927db217c98cf02d2c0ba972b7f2d93573279 data/create/.wiki/block_info/copycat_bars.json 44ff927e10096a9e038344509b5dfbfc0ba2514a data/create/.wiki/block_info/copycat_base.json @@ -106,114 +106,114 @@ f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/crimson_wi a31927db217c98cf02d2c0ba972b7f2d93573279 data/create/.wiki/block_info/crushing_wheel_controller.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/cuckoo_clock.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_andesite.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_andesite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_andesite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_andesite_wall.json cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_asurine.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_asurine_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_asurine_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_asurine_wall.json 88cd849058c6db37ca20b5ed570a70df061278ab data/create/.wiki/block_info/cut_calcite.json +88cd849058c6db37ca20b5ed570a70df061278ab data/create/.wiki/block_info/cut_calcite_bricks.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_brick_slab.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_brick_stairs.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_brick_wall.json -88cd849058c6db37ca20b5ed570a70df061278ab data/create/.wiki/block_info/cut_calcite_bricks.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_slab.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_stairs.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/cut_calcite_wall.json cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_crimsite.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_crimsite_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_crimsite_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_crimsite_wall.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/cut_deepslate.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/cut_deepslate_bricks.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_brick_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_brick_stairs.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_brick_wall.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/cut_deepslate_bricks.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_stairs.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/cut_deepslate_wall.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_diorite.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_diorite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_diorite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_diorite_wall.json a7724632b0f5e71c8d6dcaeb36f14a2feceb81aa data/create/.wiki/block_info/cut_dripstone.json +a7724632b0f5e71c8d6dcaeb36f14a2feceb81aa data/create/.wiki/block_info/cut_dripstone_bricks.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_brick_slab.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_brick_stairs.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_brick_wall.json -a7724632b0f5e71c8d6dcaeb36f14a2feceb81aa data/create/.wiki/block_info/cut_dripstone_bricks.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_slab.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_stairs.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/cut_dripstone_wall.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_granite.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_granite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_granite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_granite_wall.json 99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/cut_limestone.json +99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/cut_limestone_bricks.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_brick_slab.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_brick_stairs.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_brick_wall.json -99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/cut_limestone_bricks.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_slab.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_stairs.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/cut_limestone_wall.json 9d4d88d176647e4690929be15e3cc498cb54a4b1 data/create/.wiki/block_info/cut_ochrum.json +9d4d88d176647e4690929be15e3cc498cb54a4b1 data/create/.wiki/block_info/cut_ochrum_bricks.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_brick_slab.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_brick_stairs.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_brick_wall.json -9d4d88d176647e4690929be15e3cc498cb54a4b1 data/create/.wiki/block_info/cut_ochrum_bricks.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_slab.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_stairs.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/cut_ochrum_wall.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scorchia.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scorchia_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scorchia_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scorchia_wall.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scoria.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scoria_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_scoria_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_scoria_wall.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_tuff.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_tuff_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/cut_tuff_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/cut_tuff_wall.json cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_veridium.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_veridium_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/cut_veridium_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/cut_veridium_wall.json @@ -241,12 +241,12 @@ e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/elevator_p 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/encased_fan.json 44ff927e10096a9e038344509b5dfbfc0ba2514a data/create/.wiki/block_info/encased_fluid_pipe.json b856a1a87bf6b4f674d88a56363fce5b64ff10fc data/create/.wiki/block_info/experience_block.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/exposed_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/exposed_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/exposed_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/exposed_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/exposed_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/exposed_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/exposed_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/exposed_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/factory_gauge.json 464c005ca91ecfbcb723affa45f8567c45510612 data/create/.wiki/block_info/fake_track.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/fluid_pipe.json @@ -323,6 +323,8 @@ abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/light_gray 3fc935c68621fb98d4d216d5f0e801ec6513fad0 data/create/.wiki/block_info/light_gray_table_cloth.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/light_gray_toolbox.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/light_gray_valve_handle.json +99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/limestone.json +99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/limestone_pillar.json 2b70760f9c3d6dd2ad43ecdf5949153e4eb5d5c2 data/create/.wiki/block_info/lime_nixie_tube.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/lime_postbox.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/lime_sail.json @@ -330,8 +332,6 @@ abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/lime_seat. 3fc935c68621fb98d4d216d5f0e801ec6513fad0 data/create/.wiki/block_info/lime_table_cloth.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/lime_toolbox.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/lime_valve_handle.json -99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/limestone.json -99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/limestone_pillar.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/linear_chassis.json a57145d58edac8e186ec747d1aa8662b64ff9ab0 data/create/.wiki/block_info/lit_blaze_burner.json 2b70760f9c3d6dd2ad43ecdf5949153e4eb5d5c2 data/create/.wiki/block_info/magenta_nixie_tube.json @@ -362,7 +362,7 @@ d7c0f5c01447894c80da8b2e470dbc9a7aaf1f29 data/create/.wiki/block_info/metal_gird 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/millstone.json 8f0d098c880b036a3599954aaf12b766cd229cd2 data/create/.wiki/block_info/minecart_anchor.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/mysterious_cuckoo_clock.json -4a18673c571a815290e0c8cc898adb3e94d6ef41 data/create/.wiki/block_info/netherite_backtank.json +469181c4c459aac3bbf6598c47ef8c9161b9d8c7 data/create/.wiki/block_info/netherite_backtank.json 749134310b5726bf8c61e2773194edb3ad583d18 data/create/.wiki/block_info/nixie_tube.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/nozzle.json f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/oak_window.json @@ -377,14 +377,14 @@ abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/orange_too e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/orange_valve_handle.json f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/ornate_iron_window.json 242ad940aee145de757a2baead60e779cb269340 data/create/.wiki/block_info/ornate_iron_window_pane.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/oxidized_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/oxidized_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/oxidized_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/oxidized_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/oxidized_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/oxidized_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/oxidized_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/oxidized_copper_tiles.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/package_frogport.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/packager.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/package_frogport.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/peculiar_bell.json 2b70760f9c3d6dd2ad43ecdf5949153e4eb5d5c2 data/create/.wiki/block_info/pink_nixie_tube.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/pink_postbox.json @@ -470,6 +470,9 @@ e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/purple_val 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/radial_chassis.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/railway_casing.json d27452fbface23a1437113b43cb2bed2466a2ed8 data/create/.wiki/block_info/raw_zinc_block.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/redstone_contact.json +7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/redstone_link.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/redstone_requester.json 2b70760f9c3d6dd2ad43ecdf5949153e4eb5d5c2 data/create/.wiki/block_info/red_nixie_tube.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/red_postbox.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/red_sail.json @@ -477,9 +480,6 @@ abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/red_seat.j 3fc935c68621fb98d4d216d5f0e801ec6513fad0 data/create/.wiki/block_info/red_table_cloth.json abfc8cef7d37f0fc830ce65263bbae56420e5146 data/create/.wiki/block_info/red_toolbox.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/red_valve_handle.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/redstone_contact.json -7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/redstone_link.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/redstone_requester.json 5b61f9baac9bd7aa799d83cb81c394265a9c040c data/create/.wiki/block_info/refined_radiance_casing.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/repackager.json 464c005ca91ecfbcb723affa45f8567c45510612 data/create/.wiki/block_info/rope.json @@ -489,8 +489,8 @@ f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/rose_quart e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/rose_quartz_tiles.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/rotation_speed_controller.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/sail_frame.json -1d424bb13cd56895889caf564dafdda056852692 data/create/.wiki/block_info/schematic_table.json e597c0acb8eae32f78b322cc8b878af88b6ce6cf data/create/.wiki/block_info/schematicannon.json +1d424bb13cd56895889caf564dafdda056852692 data/create/.wiki/block_info/schematic_table.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/scorchia.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/scorchia_pillar.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/scoria.json @@ -499,64 +499,64 @@ e597c0acb8eae32f78b322cc8b878af88b6ce6cf data/create/.wiki/block_info/schematica 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/sequenced_gearshift.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/shadow_steel_casing.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/shaft.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_andesite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_andesite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_andesite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_andesite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_andesite_bricks.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_asurine_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_asurine_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_asurine_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_asurine_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_asurine_bricks.json d7c0f5c01447894c80da8b2e470dbc9a7aaf1f29 data/create/.wiki/block_info/small_bogey.json +88cd849058c6db37ca20b5ed570a70df061278ab data/create/.wiki/block_info/small_calcite_bricks.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/small_calcite_brick_slab.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/small_calcite_brick_stairs.json 5c21a0c58553e8b18d8008b654175acaf198693f data/create/.wiki/block_info/small_calcite_brick_wall.json -88cd849058c6db37ca20b5ed570a70df061278ab data/create/.wiki/block_info/small_calcite_bricks.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_crimsite_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_crimsite_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_crimsite_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_crimsite_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_crimsite_bricks.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/small_deepslate_bricks.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/small_deepslate_brick_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/small_deepslate_brick_stairs.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/small_deepslate_brick_wall.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/small_deepslate_bricks.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_diorite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_diorite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_diorite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_diorite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_diorite_bricks.json +a7724632b0f5e71c8d6dcaeb36f14a2feceb81aa data/create/.wiki/block_info/small_dripstone_bricks.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/small_dripstone_brick_slab.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/small_dripstone_brick_stairs.json 97dd1b806a4944ad744183f5c23b644c537f0cac data/create/.wiki/block_info/small_dripstone_brick_wall.json -a7724632b0f5e71c8d6dcaeb36f14a2feceb81aa data/create/.wiki/block_info/small_dripstone_bricks.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_granite_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_granite_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_granite_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_granite_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_granite_bricks.json +99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/small_limestone_bricks.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/small_limestone_brick_slab.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/small_limestone_brick_stairs.json 49f07d3908ae1edbcfb10e98a74433e2356dc9b9 data/create/.wiki/block_info/small_limestone_brick_wall.json -99fd90aa2d73877046def894e4d8d24256b7929a data/create/.wiki/block_info/small_limestone_bricks.json +9d4d88d176647e4690929be15e3cc498cb54a4b1 data/create/.wiki/block_info/small_ochrum_bricks.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/small_ochrum_brick_slab.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/small_ochrum_brick_stairs.json 286a8729f523016ac6a0eb0c225b7ef960950a7e data/create/.wiki/block_info/small_ochrum_brick_wall.json -9d4d88d176647e4690929be15e3cc498cb54a4b1 data/create/.wiki/block_info/small_ochrum_bricks.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/small_rose_quartz_tiles.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_scorchia_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scorchia_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scorchia_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scorchia_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_scorchia_bricks.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_scoria_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scoria_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scoria_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_scoria_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_scoria_bricks.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_tuff_bricks.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_tuff_brick_slab.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_tuff_brick_stairs.json 78e5192797e68bfb114c28bd77d02cfbfc5fc8c3 data/create/.wiki/block_info/small_tuff_brick_wall.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/small_tuff_bricks.json +cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_veridium_bricks.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_veridium_brick_slab.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_veridium_brick_stairs.json 46b55a12112e8d88e0a0c2475aea1127c6a6c761 data/create/.wiki/block_info/small_veridium_brick_wall.json -cf769af99d1c2a8d3a5898d3abde5439f30fb68b data/create/.wiki/block_info/small_veridium_bricks.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/smart_chute.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/smart_fluid_pipe.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/speedometer.json @@ -568,9 +568,9 @@ e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/steam_whis 44ff927e10096a9e038344509b5dfbfc0ba2514a data/create/.wiki/block_info/steam_whistle_extension.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/sticker.json 316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/sticky_mechanical_piston.json +316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/stockpile_switch.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/stock_link.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/stock_ticker.json -316dde19f6eb5e8a28675870f6e727eb0bdfcfe2 data/create/.wiki/block_info/stockpile_switch.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/stressometer.json f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/tiled_glass.json 242ad940aee145de757a2baead60e779cb269340 data/create/.wiki/block_info/tiled_glass_pane.json @@ -590,36 +590,36 @@ f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/warped_win 242ad940aee145de757a2baead60e779cb269340 data/create/.wiki/block_info/warped_window_pane.json 7a2cc33bbda41cbf46689067cab41498286d315f data/create/.wiki/block_info/water_wheel.json ca69d2eb0fa6e4de9acf151b245cb1406b429a9e data/create/.wiki/block_info/water_wheel_structure.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_copper_tiles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_exposed_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_exposed_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_exposed_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_exposed_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_exposed_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_exposed_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_exposed_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_exposed_copper_tiles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_oxidized_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_oxidized_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_oxidized_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_oxidized_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_oxidized_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_oxidized_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_oxidized_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_oxidized_copper_tiles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_weathered_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_weathered_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_weathered_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_weathered_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_weathered_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_weathered_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/waxed_weathered_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/waxed_weathered_copper_tiles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/weathered_copper_shingles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/weathered_copper_shingle_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/weathered_copper_shingle_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/weathered_copper_shingles.json +e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/weathered_copper_tiles.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/weathered_copper_tile_slab.json e08896c876723ba9c2678e5fa9b341ff907da7af data/create/.wiki/block_info/weathered_copper_tile_stairs.json -e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/weathered_copper_tiles.json e0b89caf7a560c75cb5bd98ba7bbdf76620ac228 data/create/.wiki/block_info/weathered_iron_block.json f7c5a556b1485698a47e098a98b9568110bd2907 data/create/.wiki/block_info/weathered_iron_window.json 242ad940aee145de757a2baead60e779cb269340 data/create/.wiki/block_info/weathered_iron_window_pane.json diff --git a/src/generated/resources/.cache/09b09528b5a04742cfcd63e3a8074da9ae609954 b/src/generated/resources/.cache/09b09528b5a04742cfcd63e3a8074da9ae609954 index 262201e5df..9902796395 100644 --- a/src/generated/resources/.cache/09b09528b5a04742cfcd63e3a8074da9ae609954 +++ b/src/generated/resources/.cache/09b09528b5a04742cfcd63e3a8074da9ae609954 @@ -1,4 +1,4 @@ -// 1.21.1 2025-11-02T10:48:42.611519144 create's sequenced assembly recipes -fd38f2d0991c148cfafaeef53c54d48da6ac8c4f data/create/recipe/sequenced_assembly/precision_mechanism.json -b2e0953132bad63b8e0dba38883883427443b95f data/create/recipe/sequenced_assembly/sturdy_sheet.json -5cba3b8f97f01bde7caf3155ce20efec924f0b59 data/create/recipe/sequenced_assembly/track.json +// 26.2 2026-07-08T18:29:28.9128298 create's sequenced assembly recipes +70a6a9025581b08e0688a58fb0ef0f653c44d435 data/create/recipe/sequenced_assembly/precision_mechanism.json +85222d62637d1dfbb9a9a24de5b96060baa25db8 data/create/recipe/sequenced_assembly/sturdy_sheet.json +6ad91be74d21711366aa81827f899a2ef1554524 data/create/recipe/sequenced_assembly/track.json diff --git a/src/generated/resources/.cache/455c485c9c8ef171bbc1ce4d435b3110ba1557ba b/src/generated/resources/.cache/455c485c9c8ef171bbc1ce4d435b3110ba1557ba index 34c50504a2..b510250519 100644 --- a/src/generated/resources/.cache/455c485c9c8ef171bbc1ce4d435b3110ba1557ba +++ b/src/generated/resources/.cache/455c485c9c8ef171bbc1ce4d435b3110ba1557ba @@ -1,103 +1,103 @@ -// 1.21.1 2025-11-02T10:48:42.611601776 Create's Advancements -5876d95160eca4e05f94dbc9c4ff44ce83cbbb2b data/create/advancement/andesite_alloy.json -b124cd0229367b711f4e9650115a5579825e44e2 data/create/advancement/andesite_casing.json -ee674ceca35306b53838dde10ed55d8f506650f8 data/create/advancement/anvil_plough.json -e04bfcf28cc35bc8e8b03885252497d258c57d75 data/create/advancement/arm_blaze_burner.json -d7f9a3048e4b8689432af27c7d5e9efbf085f3a2 data/create/advancement/arm_many_targets.json -e64dbc76eb0b8501e8b5561a46bb818691cb6ff5 data/create/advancement/backtank.json -fbe7e7239f2a64aff69243f6f2c297de928fca32 data/create/advancement/belt.json -00dda70308b1d718d8d94121c7a2cc8ad293cdb2 data/create/advancement/belt_funnel_kiss.json -1e8be3291f7a9be6defd2a5fa25b616faddab7b2 data/create/advancement/brass.json -d9c2665c4281784a7afbf123384c73eac66af1c1 data/create/advancement/brass_casing.json -a177c4e2b21d20c5aa4f17ce2c302514f077bade data/create/advancement/burner.json -893453d5c8d8a81433f8a97984164bc8464869b9 data/create/advancement/cardboard.json -0c7c9b5eb333daca2e936519e681d321cad8aff5 data/create/advancement/cardboard_armor.json -d0d98663fd72c0a275e7ccdb7259b6e532ee4f50 data/create/advancement/cardboard_armor_trim.json -a757fd567dab2849e132ee607431a50f415c3872 data/create/advancement/cart_pickup.json -d7751a643b612bd2a32aef4396280f833e1ee337 data/create/advancement/chained_drain.json -3e90be77f0450f4354184905b029793f7e77089b data/create/advancement/chocolate_bucket.json -9fbd0ac69910f812a381cb590a26a5b2535d2e54 data/create/advancement/chute.json -2f12747f64ba783eb090f2a1431f0a47a4dcdd95 data/create/advancement/clockwork_bearing.json -d809d3fc40eb9259ab59669395837656bd98f4fc data/create/advancement/compacting.json -198da9a77307de36f977aec3da0d85f847e203d4 data/create/advancement/conductor.json -fe57a5af84ddd714adc54eceeebb7cd626c8cc4e data/create/advancement/contraption_actors.json -116e1fa9d135080fad44eb18cca4ab0c72befaaa data/create/advancement/copper.json -d144defabbafd7dc25c781798192f638f70aa71e data/create/advancement/copper_casing.json -6f4abd2a2f60c00f82003d036d59b928600e4880 data/create/advancement/crafter_lazy_000.json -809f0b26a642b144e5b5fd6076b88889fc92b6a9 data/create/advancement/cross_streams.json -efd233f5a57a526dc566541b742b7d2a97e36ee3 data/create/advancement/crusher_maxed_0000.json -b40b046af8dcbdb69656d7fd2da6f4f0f50a1507 data/create/advancement/crushing_wheel.json -cbc874074d6eabbb65d0da7203e49a0d81af6959 data/create/advancement/cuckoo_clock.json -c20716783b0cb43b6324588a47bacc45ed08902e data/create/advancement/deployer.json -d8ede9c9fceeba07a548d9226463bafdab875563 data/create/advancement/display_board_0.json -3d1c5aafd4904db7cabe12c9a383c09d67d12780 data/create/advancement/display_link.json -e8d5c2f61dd328980089be68fea8408ca0f0fd80 data/create/advancement/diving_suit.json -d9072d6568e8da4bf242d8832cacc5d79d3d04f7 data/create/advancement/diving_suit_lava.json -3d6f1dc64660183c6b3204139c786672ec6ed63c data/create/advancement/drain.json -6c176e8f2a362e8427eea375ddc6a0f3ddc7f188 data/create/advancement/ejector_maxed.json -7a5c39d93104265712efe5c5b21c4a586e1728a2 data/create/advancement/encased_fan.json -1819821510a9bd3782ed0405cb29a61ecff1f995 data/create/advancement/extendo_grip.json -72743d43d203555fa61177fcad28e6a4094a53fd data/create/advancement/extendo_grip_dual.json -e6a3c2f1f6119f25a51f3ef08eaddc7b3f7f493a data/create/advancement/factory_gauge.json -2e4bface4cf2ceb2e3dba802c84d409880642b3e data/create/advancement/fan_processing.json -66ac0fbbb07d756bd7b370ddc236837aee051ee9 data/create/advancement/fist_bump.json -843d403279fcb3e2058d9d87355ea3440c3f7c0b data/create/advancement/foods.json -0cc36b8cf526c02c2e8f56efe56c7d3ee207f8f3 data/create/advancement/frogport.json -2d13c0f9c7d663224d62924bbd1486953a3efd16 data/create/advancement/funnel.json -f8d0361a57f2341d6ac3aef847296b856c65bac9 data/create/advancement/glass_pipe.json -41ded9276d0a1fb6e3eadbb837e4c4f6a153b2d2 data/create/advancement/hand_crank_000.json -da63db048d25d95a3efcef8b762da4246f515038 data/create/advancement/haunted_bell.json -3bdc10c5365bb4022e15f768140ce7dfea9a9e2c data/create/advancement/honey_drain.json -3abb735406af72f806ab1d8077a9a81d7e6798cd data/create/advancement/hose_pulley.json -c9ff3a0988578b6b0b53ddc08f2495565fd27853 data/create/advancement/hose_pulley_lava.json -b5de2c65a86168a2950a298c083a3f270ae57f55 data/create/advancement/lava_wheel_00000.json -3c464f8fb5fcb49a9d9515f1234f76cee7fd9882 data/create/advancement/linked_controller.json -0a56f8a31ff31000778c9a0a49c9e38fb249784f data/create/advancement/long_train.json -ade484b152ea06387ec1e105820564c8846a7932 data/create/advancement/long_travel.json -43dcf9b4270d9ae44458d16e6351d3d475b8b495 data/create/advancement/mechanical_arm.json -3e8a5db9546757f774c0221dbe022a1717e9b3b1 data/create/advancement/mechanical_crafter.json -bb32face592f3c0be0b3a81cf11a9a7f0a2c0d8c data/create/advancement/mechanical_mixer.json -d3d5db28c9997262c18a1ac3906e573150b77975 data/create/advancement/mechanical_press.json -213511913bc129a6c0b6f2742e8c0b75bb3d7141 data/create/advancement/mechanical_pump_0.json -27fbaeed944dec5536262e199c03f2c59488375e data/create/advancement/millstone.json -b1ec5fdada815373bb9b93396fb4395bacac31a9 data/create/advancement/musical_arm.json -400a9ecfe4eec29b009f12cb5b7e38cb433dead0 data/create/advancement/package_chute_throw.json -996597053ec9a5c3fbd3edd3ec678964768e4219 data/create/advancement/packager.json -00da13ba89426acc57a0bb6695fd240cef798e36 data/create/advancement/pipe_organ.json -27ec1ced6e27b8818a4769efaee627edfeca5216 data/create/advancement/portable_storage_interface.json -402328e7ca2ccbe1ccbf0932df7356ed46742d7c data/create/advancement/potato_cannon.json -6d0310d7935ef9a72f55d797ede8a38b0679162d data/create/advancement/potato_cannon_collide.json -3740c0a5c97b58fdb3eb273d468e074e93d951c1 data/create/advancement/precision_mechanism.json -e5ea72bc864434c6d7f06c5a0815351b7f01ae5c data/create/advancement/pulley_maxed.json -d483b115e34255011b5aa258a255e7bc70ec4bc8 data/create/advancement/red_signal.json -df01d0414d491d4a1fcf3129aec45dc48f4d1af8 data/create/advancement/root.json -797c85136d9a8aba3e267ae4773633e034679716 data/create/advancement/rose_quartz.json -711edb511436b60afd078277bdb5c3cdaf412d5d data/create/advancement/saw_processing.json -6b535eb6f77ac4683ea5c464155abc790ec37e0f data/create/advancement/self_deploying.json -b5a8dcd1a80140890150719f59de355d40ed558d data/create/advancement/shifting_gears.json -688131e47bc9698e59b8021503a96e9361d0a930 data/create/advancement/speed_controller.json -e3c896f1a423e2dc00d4aeaf5182ac4b6d840f04 data/create/advancement/spout.json -3bb442287f6d8009bb4e0c5a887f7983ea18e62e data/create/advancement/steam_engine.json -90b3b7ccfac3fc589c7c749f1f2ca22c189187cf data/create/advancement/steam_engine_maxed.json -ad1ff92c6f4203852be712b141af32a904f9ce35 data/create/advancement/steam_whistle.json -fb8cbb74d5a44d915bfb0a8ae4216fd558c15ad4 data/create/advancement/stock_ticker.json -a63d58823476f03abbc9b157e201600660f59cb7 data/create/advancement/stressometer.json -66aaf0ca545e06424f8a2dfca07e440104dd7c0a data/create/advancement/stressometer_maxed.json -db98c53c06d8269cf8c3b3ba3035ccfa4409cbf1 data/create/advancement/sturdy_sheet.json -8aa5518b0f9cd1faa83a26c2b419461aa4099c21 data/create/advancement/super_glue.json -7915178476c517c478af745bbdc8898c9cc4ba01 data/create/advancement/table_cloth_shop.json -e30748e3136556c5cb98894ce03e3e63868b6637 data/create/advancement/track_0.json -2af5894ec13fc37b5c59d7b3794b2fe7a042e7e8 data/create/advancement/track_crafting_factory.json -a15e9e8b25bf66a0e6091fb6ae2adaa7c57ca208 data/create/advancement/track_signal.json -fae7e96231ee29296c8f71948719b1d84e5449d3 data/create/advancement/train.json -13b8647ca4ae5dd4273966401a50d208163a9895 data/create/advancement/train_casing_00.json -432df9bc7527e0c0978a750cd439e5c7737a80ae data/create/advancement/train_crash.json -281db6c1ed6603d80bf0f28f50c33fdb856c23dd data/create/advancement/train_crash_backwards.json -05a98087ed503577c63e50e7be9cabd273fed024 data/create/advancement/train_portal.json -e8e04266de039b5daa909328533e048bee3964b8 data/create/advancement/train_roadkill.json -a4ee9149e4c1e87b6817c496563a354af2ffa4dd data/create/advancement/train_whistle.json -d2a73b5e07c042a7992614995a97292d5a1f1c56 data/create/advancement/water_supply.json -a541b76e55e040aabfa021f0d8cb790f7fa44d82 data/create/advancement/water_wheel.json -b700a648393ac509df59721b32323bd85f0a811f data/create/advancement/windmill.json -9a555fee3d09b26912f1d8b00d3677be451e8390 data/create/advancement/windmill_maxed.json -b9b883504335709d878f92f131e56e1bf549ffb4 data/create/advancement/wrench_goggles.json +// 26.2 2026-07-08T18:29:28.9138299 Create's Advancements +526e361b5c565e2e570651d208991c975a28e039 data/create/advancement/andesite_alloy.json +c15fcc5aaf39bc64541d5d537960f04ac03fc839 data/create/advancement/andesite_casing.json +e8d9842af704845adeabfe5c930e6d4df7251f9d data/create/advancement/anvil_plough.json +4b79c9fbec6f8309c7d952c42b7828b5085939cf data/create/advancement/arm_blaze_burner.json +7f2c5aa594e4513b7c517724fc5e179f237c07f9 data/create/advancement/arm_many_targets.json +a6d599f61e93f75aaf47e49bc7f243452ee7ae99 data/create/advancement/backtank.json +7b0b6385fc008d253718134d55a28b0b7c771d5a data/create/advancement/belt.json +88b5f7f9cb512d6a51f633f4ec0e29f41c012c62 data/create/advancement/belt_funnel_kiss.json +9e0b95ff3e9e8d28783c62669d7a2bea79db1bff data/create/advancement/brass.json +f3336aa4587719dc5173a1af78c39e712cf751ef data/create/advancement/brass_casing.json +e37e607513d2521e796ffd94bc8c45cd09481f3d data/create/advancement/burner.json +7eb839b20c78ff730bb6396e0cbca9e4b2e575a5 data/create/advancement/cardboard.json +450018df578edccf70b2be7722e21c3884977079 data/create/advancement/cardboard_armor.json +d7b113129f11dbb8abdf4bce17aec37dde5debc6 data/create/advancement/cardboard_armor_trim.json +d2deb4c8235e83a119e914e6170303cdcfda32ec data/create/advancement/cart_pickup.json +129f9dc936b70af0ec9939cefea6a819b48f45ce data/create/advancement/chained_drain.json +29e95ee6f4e152f42cec825b9f7f178484918f33 data/create/advancement/chocolate_bucket.json +6cbe92efd1cc6f05437503c5b6b5aef534064380 data/create/advancement/chute.json +02327b0f57546a345c0713ddf2e7e35e11bb77ca data/create/advancement/clockwork_bearing.json +1711379be5e86a71aee716b18b3f1a0d6c33adff data/create/advancement/compacting.json +f67311ab0acdb3c6297acc2dce1a4eb8d4af28a8 data/create/advancement/conductor.json +2383ba2246fcb2db4a8ccd9139d27fdb04b2d8f5 data/create/advancement/contraption_actors.json +5741e2d5c5b8b91b038ee28157b56b911563ea7b data/create/advancement/copper.json +0c389aeaece5aec3ce6a8133dbdf6003d8a57fbe data/create/advancement/copper_casing.json +c8d060729ac590f3988c0a3168ae8dcf168b7cfe data/create/advancement/crafter_lazy_000.json +95ef18cfff15d7d6c400bc240700bdafc51ef45c data/create/advancement/cross_streams.json +970360881e8a8e849a6d652e88af304ac73c52cb data/create/advancement/crusher_maxed_0000.json +b691a0da4e6acb2cb3dc83ad1151109774026bc9 data/create/advancement/crushing_wheel.json +7250c6ffec2c9544ea761bdd1bc43b57278e3acd data/create/advancement/cuckoo_clock.json +975e83d9275c99bbfbe836beae9d0bdad2012e61 data/create/advancement/deployer.json +4bd64d1e50114d8b404c8243162c00a26f2539e2 data/create/advancement/display_board_0.json +5607ca2da2a1445aa4e8862457793e153bae0239 data/create/advancement/display_link.json +6a30696d777116f19678446db3fe3a14e4aeb6bb data/create/advancement/diving_suit.json +a1b0f1ddf576ebc42e97514d0d5e091e120dbe9e data/create/advancement/diving_suit_lava.json +d1f485a8f4f192c8eb10927be6f27f14cd9ec3ca data/create/advancement/drain.json +cffdb92822b826b012f12ed1588d80f8631c6eac data/create/advancement/ejector_maxed.json +d8cd3cea2480fa6a2983a4e81e59b700bf2a2656 data/create/advancement/encased_fan.json +c732b9db7a4b515ff60b281a27ce344d3a282746 data/create/advancement/extendo_grip.json +c40a6351f2841902ae1a5728c4740de3d20d0408 data/create/advancement/extendo_grip_dual.json +54bc11fb9637041b8c2a35d7a048125b528792cd data/create/advancement/factory_gauge.json +f9d297348ab16cd02d18239a7c651b27f84e7122 data/create/advancement/fan_processing.json +d1b438c4cea95bf67dee0adaff0056e84f0d0729 data/create/advancement/fist_bump.json +0cd9a44eaea30bb9d175138dfa03d475d694e8e5 data/create/advancement/foods.json +81b080d076110bf15e54e8fc5a83e4fa2a7c4a82 data/create/advancement/frogport.json +f2fa8f8cd0d8b06d7b381e42dc8f06c646607394 data/create/advancement/funnel.json +2a109bc3dafa50b14784da5dcee0aa1acad6e399 data/create/advancement/glass_pipe.json +373e6c4d95a6ad8bd1f67a14b787110e791aa117 data/create/advancement/hand_crank_000.json +9e76481070920cbb884d5089eae2b160ab7e5b93 data/create/advancement/haunted_bell.json +c789bf5ec9504a47eb8d01c4c3253d0d19865e54 data/create/advancement/honey_drain.json +db776447cf85bc8997fbe92bff3afb13275dde4f data/create/advancement/hose_pulley.json +ac58dc8fba32f50ee5257959db23d30435002468 data/create/advancement/hose_pulley_lava.json +b8742c77e5ed065b78e4e9e3fdca8b30d4b511e7 data/create/advancement/lava_wheel_00000.json +08762a3e1ccc27d5eb49a21a067defbb2334bf9f data/create/advancement/linked_controller.json +e1d29804b999f859f7e17594dd330fed9caef1af data/create/advancement/long_train.json +837ebf408def4b4178e72c28b5b499bac9c3b085 data/create/advancement/long_travel.json +0b39caddac88dad32cf033cbe8850fde6dba99dc data/create/advancement/mechanical_arm.json +cf626f79582db537a3c8c60c1aadf105213fe948 data/create/advancement/mechanical_crafter.json +96934dd3eccad4c382f2446a74ff57679f9d5bbf data/create/advancement/mechanical_mixer.json +78d9cb220c1c6e5d358f166bb9e9f6b6529b411c data/create/advancement/mechanical_press.json +fa2d91aabc3ec8ce5a07b4a2233f35c9bef09d0c data/create/advancement/mechanical_pump_0.json +6ac17400b75e8e115cb55dd7edcf81d7f7caaabd data/create/advancement/millstone.json +495e689217349fe8214a59d7729a421688ea26c0 data/create/advancement/musical_arm.json +dad7923d38d67023bd688b828707530329b10f88 data/create/advancement/packager.json +26a631ecb96535007581f40774c153dd4b98fe1a data/create/advancement/package_chute_throw.json +6c9ccbb443f660209446ee933341fbb592219dbe data/create/advancement/pipe_organ.json +e5ca23f261e41419e9f50ae97d42b5eaaa98c07e data/create/advancement/portable_storage_interface.json +729b44bb2dd707a6a93a5557ac495daf5222e613 data/create/advancement/potato_cannon.json +3558f6743f956d89a1149be84dbbdb6fa7f85880 data/create/advancement/potato_cannon_collide.json +c7e7f3e9b2a709b23d6c760da77fe25db9bd14ea data/create/advancement/precision_mechanism.json +3d603689cb906f8044da946036ebb7d03e57d5ed data/create/advancement/pulley_maxed.json +92ad1d017294766a00980548c8ea9c40c3185ec2 data/create/advancement/red_signal.json +92c739911f183a27996d3b394e42e53e0d54d12d data/create/advancement/root.json +0c67c4449c76a9c59e81bb8658b3c59f9420a704 data/create/advancement/rose_quartz.json +69dc06022f0f22201888f91fe1ff29770b5e5b6c data/create/advancement/saw_processing.json +b8bc4e786cafceaa01ee98fd86316d03a508078b data/create/advancement/self_deploying.json +81f624a409c1e73a98ccdf27229a76df1b29f9c8 data/create/advancement/shifting_gears.json +150642bbf8b1997f4c7dcbb45f7764dd85f4b494 data/create/advancement/speed_controller.json +9980b6c2a81c9e4fdc8c776487709215af3fb005 data/create/advancement/spout.json +a02ee278eadbb7c4b9ca41fa603e1d8724f2bb2c data/create/advancement/steam_engine.json +ba19a4b52f2e7dcc6b1255127079d5508839f602 data/create/advancement/steam_engine_maxed.json +3e9da31a97c3648a023d2d0a712b5ad40ba03fdf data/create/advancement/steam_whistle.json +728707972258823ea4e55284ed0d4996d8922a9d data/create/advancement/stock_ticker.json +76b3bf2a50db49f6ffa60daafeaaa0351904f5e7 data/create/advancement/stressometer.json +0397b321aab2fe415547e573d3da39c20aabb944 data/create/advancement/stressometer_maxed.json +7a81f3ca3d238cd2ffeeacf844a8bd011d86b6b8 data/create/advancement/sturdy_sheet.json +3a46cff349e8161e5b5363801ff497a0fdad50a0 data/create/advancement/super_glue.json +62067c54dca44b7947eb77b830a74406d7961083 data/create/advancement/table_cloth_shop.json +a96bef966fec2669321f347619f9567c64685a45 data/create/advancement/track_0.json +9d7faddfab7920d8f1726dd4accf928609a52f95 data/create/advancement/track_crafting_factory.json +8bc8deaa17f589fa756c2996f1569f24710e0b62 data/create/advancement/track_signal.json +f6f20080d528830b9b6474d1663e6f09831e7717 data/create/advancement/train.json +0a315c5dfb00f7e825b81af839fde1d85509ff8c data/create/advancement/train_casing_00.json +68bf490d803644d6db6439bccf70662269396cc6 data/create/advancement/train_crash.json +6cc3d6855c1db0da28cce3b4e9ca843c2306ad40 data/create/advancement/train_crash_backwards.json +f3b8fe9e6c53c59a1f21cd247b5d25397b68fc7b data/create/advancement/train_portal.json +b227e316a0a7299f99e73d5d7b145cfb6f1f2097 data/create/advancement/train_roadkill.json +32ebb5bbeb6dfdb06766142b765bdbcebea9c187 data/create/advancement/train_whistle.json +4d9d5e78e69624204816daa12abc48ba31f027aa data/create/advancement/water_supply.json +67942f017f68d9a0ce448396ca77a289f1de66e3 data/create/advancement/water_wheel.json +0cf81875672c20c4b3a808317db31c2020b00d0a data/create/advancement/windmill.json +8e59b8ebbe390d6a3500400f566f8cd0da027022 data/create/advancement/windmill_maxed.json +9fe7fd95b5ad956060506b6a44470e9eea2857a3 data/create/advancement/wrench_goggles.json diff --git a/src/generated/resources/.cache/499d9d953ee69b539ff4dd4c95a6cbd849f63f67 b/src/generated/resources/.cache/499d9d953ee69b539ff4dd4c95a6cbd849f63f67 index b3688c23ce..459af432f9 100644 --- a/src/generated/resources/.cache/499d9d953ee69b539ff4dd4c95a6cbd849f63f67 +++ b/src/generated/resources/.cache/499d9d953ee69b539ff4dd4c95a6cbd849f63f67 @@ -1,4 +1,4 @@ -// 1.21.1 2025-11-02T10:48:42.581185757 Create Train Hat Information +// 26.2 2026-07-08T18:29:28.8468316 Create Train Hat Information f96cf653d7d3355a079bcb148a3002755ca2d5c1 assets/minecraft/train_hat_info/armadillo.json be16d47aa64e673b1107a36ce06475016e316fca assets/minecraft/train_hat_info/axolotl.json a09db970df9dc17e30bf6433945d4d5174ba6a17 assets/minecraft/train_hat_info/bat.json diff --git a/src/generated/resources/.cache/7d46d12a3645c7522a1eb5ebfbd8f5637c3a20d8 b/src/generated/resources/.cache/7d46d12a3645c7522a1eb5ebfbd8f5637c3a20d8 index da6cf4f2c5..d1ab833016 100644 --- a/src/generated/resources/.cache/7d46d12a3645c7522a1eb5ebfbd8f5637c3a20d8 +++ b/src/generated/resources/.cache/7d46d12a3645c7522a1eb5ebfbd8f5637c3a20d8 @@ -1,3 +1,3 @@ -// 1.21.1 2025-11-02T10:48:42.613083805 Create's Contraption Type Tags +// 26.2 2026-07-08T18:29:28.9158307 Create's Contraption Type Tags 700982b6682ea583e7f08e44198af1b3219531d5 data/create/tags/create/contraption_type/opens_controls.json 08384ffb27c43caadbd36c2d390ed9af1c357084 data/create/tags/create/contraption_type/requires_vehicle_for_render.json diff --git a/src/generated/resources/.cache/7fbec16def6919d7023cd104d800477d6f3414bc b/src/generated/resources/.cache/7fbec16def6919d7023cd104d800477d6f3414bc index 42bf4ada3c..4156c9482e 100644 --- a/src/generated/resources/.cache/7fbec16def6919d7023cd104d800477d6f3414bc +++ b/src/generated/resources/.cache/7fbec16def6919d7023cd104d800477d6f3414bc @@ -1,3 +1,3 @@ -// 1.21.1 2025-11-02T10:48:42.58577128 Tags for minecraft:enchantment mod id create +// 26.2 2026-07-08T18:29:28.8608303 Tags for minecraft:enchantment mod id create 7a2f1612bcbf260055ae80377f4e5761f8367a2e data/minecraft/tags/enchantment/in_enchanting_table.json 7a2f1612bcbf260055ae80377f4e5761f8367a2e data/minecraft/tags/enchantment/non_treasure.json diff --git a/src/generated/resources/.cache/82992cbf8f2794d83ac94034835eac0acd7915b9 b/src/generated/resources/.cache/82992cbf8f2794d83ac94034835eac0acd7915b9 index 7a5fbd33e8..bbc8874111 100644 --- a/src/generated/resources/.cache/82992cbf8f2794d83ac94034835eac0acd7915b9 +++ b/src/generated/resources/.cache/82992cbf8f2794d83ac94034835eac0acd7915b9 @@ -1,4 +1,4 @@ -// 1.21.1 2026-03-01T00:30:11.9425136 Create's Standard Recipes +// 26.2 2026-07-08T18:29:28.9208295 Create's Standard Recipes 489f0a3e3d8571c4897f49eada95a23290a472dc data/create/advancement/recipes/combat/crafting/appliances/netherite_backtank.json b024ae44179c47b9be8fa35acc763c22b7b01b2e data/create/advancement/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json 41d2909fcf45f9098c0ee306810c16168d4e8ae4 data/create/advancement/recipes/combat/crafting/appliances/netherite_diving_boots.json @@ -40,7 +40,6 @@ ecf0cc0a7dd25701afe1609b89b2377114e2b57b data/create/advancement/recipes/misc/cr 27433b201dac7ce768cfe2dbbf6435865a0fbf84 data/create/advancement/recipes/misc/crafting/appliances/cardboard_helmet.json dd57f1cff9d114204b37aa09d5fe74bf662e1a72 data/create/advancement/recipes/misc/crafting/appliances/cardboard_leggings.json 7ac19c9016845ae72271a2ec9e93b97fe8545e18 data/create/advancement/recipes/misc/crafting/appliances/cardboard_sword.json -3c7b1e07e03c4a2cb088b2e93b7979960ddeba9d data/create/advancement/recipes/misc/crafting/appliances/chain_from_zinc.json 8bc5f5c343835ad2b2d9277887f170bf845e46dd data/create/advancement/recipes/misc/crafting/appliances/clipboard.json 04c7520d86686181632d7d5017dcfbece45478d3 data/create/advancement/recipes/misc/crafting/appliances/clipboard_clear.json ba345a5d4998aa6f917b2155d0c1951f9fac5a59 data/create/advancement/recipes/misc/crafting/appliances/copper_backtank.json @@ -49,6 +48,7 @@ f060ae9fa716f3366e48d424c2dcfb79eaeb3cba data/create/advancement/recipes/misc/cr 2bda4851d4016b82caca75ef807cbcf5cd196497 data/create/advancement/recipes/misc/crafting/appliances/crafting_blueprint.json 7362bb69f2ae7febad4493bfbc0d61fb16dc55f8 data/create/advancement/recipes/misc/crafting/appliances/dough.json 82383149bab2c672417d4b7733e1527d9f6f3afc data/create/advancement/recipes/misc/crafting/appliances/filter_clear.json +1df6bf94c03269ce9f083fdd9e7de9a132dafc16 data/create/advancement/recipes/misc/crafting/appliances/iron_chain_from_zinc.json 700419628f398c7c7069a3f691c6bf33fb7d90f6 data/create/advancement/recipes/misc/crafting/appliances/item_frame.json bb78c55281989f321af9b13a6c0d21adb5dd80ec data/create/advancement/recipes/misc/crafting/appliances/linked_controller.json d6b2140f640ba3d3e12ec1c9b91ce95d3b46640e data/create/advancement/recipes/misc/crafting/appliances/name_tag.json @@ -277,283 +277,283 @@ a9a213c4bb97bd339718b1b3500f1adc827f8865 data/create/advancement/recipes/misc/sm c9506679484a2eb19bd5d15360dca85a68d39080 data/create/advancement/recipes/misc/smelting/zinc_ingot_from_ore.json c02643b3c46bd238e0232e895dfda5f49601f023 data/create/advancement/recipes/misc/smelting/zinc_ingot_from_raw_ore.json b0afc4adace88ec4b1c03473f6d04b71ac4b3498 data/create/advancement/recipes/misc/smoking/bread.json -91c650a6ec5be1c560ee7840fa5da9eaf04ebc05 data/create/recipe/blasting/copper_ingot_from_crushed.json -79de83614de46f9c8837bd1f67f4ccab89f7ffae data/create/recipe/blasting/gold_ingot_from_crushed.json -7fe78875661f058381974fea3f3f8ad627c9f5e2 data/create/recipe/blasting/ingot_aluminium_compat_ic2.json -92ede3a1506478be4307effe26da56a9fe3d6557 data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json -4fd0e26d31adb68e23313c46583d6dac879ce11d data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json -88d7f41dd280a6a1e85b45b92b15d89e33a8ce25 data/create/recipe/blasting/ingot_lead_compat_mekanism.json -31bd3176f8d8726b3f5065d0403e31b89459661d data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json -58495c3125344906e1f839d03bd75e32c6fe1615 data/create/recipe/blasting/ingot_osmium_compat_mekanism.json -46f988b3ca48f36db69da2fae8e6006e1b659a0d data/create/recipe/blasting/ingot_silver_compat_ic2.json -06f62921a3ff7435fda4d8459150ec3cfb77f2ac data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json -a59f3ca95c640095ad2d47cbed670d3b16971747 data/create/recipe/blasting/ingot_tin_compat_ic2.json -110bc4364f39d96458a1a133b57effdaeaac6b0d data/create/recipe/blasting/ingot_tin_compat_mekanism.json -27357c2bb6c80a8f420959c4a50a4c31ad78e1db data/create/recipe/blasting/ingot_uranium_compat_ic2.json -b5048a7d11209b9c9ab9a96dd9a378ccdfa90184 data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json -a5901e9091686dd359efe0936a7fef5aa68bd7c5 data/create/recipe/blasting/ingot_uranium_compat_mekanism.json -54ffb47259e1a289e5cfd26cb44d912f8367d33f data/create/recipe/blasting/iron_ingot_from_crushed.json -5ba596bb54eed06193c10c9c4b12eaf7c24a20a7 data/create/recipe/blasting/lead_ingot_compat_oreganized.json -5bbe2c29bf148e2b53deab0411b0c245ab7e74e4 data/create/recipe/blasting/lead_ingot_compat_thermal.json -e0c2e733bb5b1c897b934a207fbcbff365798704 data/create/recipe/blasting/nickel_ingot_compat_thermal.json -4138d7eab1b49bc15b264804972cbd1df4cf574c data/create/recipe/blasting/silver_ingot_compat_galosphere.json -f35bc9aee7919cd50872dd3c3ef359c2c32d1d8b data/create/recipe/blasting/silver_ingot_compat_iceandfire.json -c41b436485e97de097268e037d7169c32135b487 data/create/recipe/blasting/silver_ingot_compat_oreganized.json -7530f62797fbd5b5768a62435768725135808ac2 data/create/recipe/blasting/silver_ingot_compat_thermal.json -c8c43be1a0f56192cff3918d99a2e8bad350232a data/create/recipe/blasting/tin_ingot_compat_thermal.json -e1dac719133601a10a7ed782b0390122cd7fa9db data/create/recipe/blasting/zinc_ingot_from_crushed.json -33be088b1da1654ecdbf23d8b8aa2bc949635611 data/create/recipe/blasting/zinc_ingot_from_ore.json -cca9ca07471ad257fe06e37d723124855f7e7fd4 data/create/recipe/blasting/zinc_ingot_from_raw_ore.json -6c9dfc975355afda4433bba4ae9158b5c4b38ebf data/create/recipe/campfire_cooking/bread.json -58ff412c29ae5e8f5203ad14abc098bf92b6ec6b data/create/recipe/crafting/appliances/attribute_filter_clear.json -f49fad5f1144362e74809d4d26f8085c769e1a8d data/create/recipe/crafting/appliances/book.json -7844676279a53315f6d50b612b3047c435fb2209 data/create/recipe/crafting/appliances/cardboard_boots.json -bfc2013edf506a82e1aa96b29a2d775a82e51ea5 data/create/recipe/crafting/appliances/cardboard_chestplate.json -dfe42416c6aee803c28cfccb39101b0960fa0fad data/create/recipe/crafting/appliances/cardboard_helmet.json -6c39be7f39eef71ab3678b1f3b11dbedf7c6f6ce data/create/recipe/crafting/appliances/cardboard_leggings.json -1ef40e1bd1ad3f7a831e18d84d9836a8ebe872ab data/create/recipe/crafting/appliances/cardboard_sword.json -9d7f27ee39f06da55ee23f94c59602e174648b95 data/create/recipe/crafting/appliances/chain_from_zinc.json -d4c6ac08150ba0d34c56ff236220150eb5ccc7e4 data/create/recipe/crafting/appliances/clipboard.json -36f771ab2ee275af3a4607df499d626bc415142e data/create/recipe/crafting/appliances/clipboard_clear.json -4928961d207e90d6bcc341a6144702d1327e10eb data/create/recipe/crafting/appliances/copper_backtank.json -4e73aeffa9807cc37476429e1590d7fad61a11dc data/create/recipe/crafting/appliances/copper_diving_boots.json -a0051d3e5ed8ed9ae143bdf7c7bce787c797d74d data/create/recipe/crafting/appliances/copper_diving_helmet.json -b4edece143a8806464ff266fb0147532ee4f2623 data/create/recipe/crafting/appliances/crafting_blueprint.json -ca635dd856dd11423d6cdbaf684f9865b1afb116 data/create/recipe/crafting/appliances/dough.json -40e1d850d19a059a11d94230e53db4fcddc36626 data/create/recipe/crafting/appliances/filter_clear.json -d21ec4b727ec9eedf7be7b6e2c1ef9aa0a3f0526 data/create/recipe/crafting/appliances/item_frame.json -265741381f910843fcec64483c12cb7b3e45c47a data/create/recipe/crafting/appliances/linked_controller.json -7428f33dc60bafef7c51fcb72c42eb5be4c3e400 data/create/recipe/crafting/appliances/name_tag.json -18a8299d6aa07e2c582bec33f03b81371e08f664 data/create/recipe/crafting/appliances/netherite_backtank.json -b479cb7e4ae5c237ff4259d6aec3958012b25468 data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json -4fae1488b486aa90cd41ab9da1b8853d0305bc90 data/create/recipe/crafting/appliances/netherite_diving_boots.json -d8be133b862fa2aa68d8a3923c72caf7899fb092 data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json -f26a9ecafc2105943f6a9354f5716126becd33ee data/create/recipe/crafting/appliances/netherite_diving_helmet.json -c7a35d43c82bc110337ba29e9b0454829286a33d data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json -66a981faec6b4b8904f302ec1f9d5f718256fe75 data/create/recipe/crafting/appliances/package_filter_clear.json -3ac61925d0040abcf4c682063b9296464969d2e9 data/create/recipe/crafting/appliances/schedule_clear.json -c53527b57c3ccf08a6d10502144f9dd7bf9b326d data/create/recipe/crafting/appliances/slime_ball.json -0c2b293c731a36f0616e13040278073fcc7af701 data/create/recipe/crafting/appliances/tree_fertilizer.json -f13567bac676eb8b9b153a1907fdc18d57235b46 data/create/recipe/crafting/curiosities/brown_toolbox.json -12a19f3976fd1b6b81e7d64586ce8fd8b8882fbe data/create/recipe/crafting/curiosities/cake.json -b961ce60986ebfed1b0cc0f7053d6e558de13e86 data/create/recipe/crafting/curiosities/item_copying.json -1ee1e18ab9214dff72ed5d886c7a6db1ddefe9df data/create/recipe/crafting/curiosities/minecart_coupling.json -bc6f3e762f559a89e0ae848bb4bdb5533def2d07 data/create/recipe/crafting/curiosities/peculiar_bell.json -e54646485af774e490409e9912a3799f7ac44e01 data/create/recipe/crafting/curiosities/toolbox_dyeing.json -bcdf54ea43cbf474c4acaac86ff616a3752e4b1a data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json -a0910274ebd8c5027eed0c6ecd459cc023a9de73 data/create/recipe/crafting/kinetics/analog_lever.json -ae56372fdd40239e25284b71c1588bf020116ef5 data/create/recipe/crafting/kinetics/andesite_door.json -25514766c93ddec2f5eda27bd3c8d4f995090114 data/create/recipe/crafting/kinetics/attribute_filter.json -49824e6f06129b162d087ef799bdf5bba119581f data/create/recipe/crafting/kinetics/basin.json -83b20f2972608f274f18a0276079e02911dee9ad data/create/recipe/crafting/kinetics/belt_connector.json -61906123e6bb5c8361b2193480f2aefa04fb2f32 data/create/recipe/crafting/kinetics/brass_door.json -ed21c0d5c07f90b67e49f848197c8fd869efe275 data/create/recipe/crafting/kinetics/brass_hand.json -be1c5b291ad280f76a87dea8e0f11a5a71db05a9 data/create/recipe/crafting/kinetics/cart_assembler.json -02ab9cf69e826f2a4a463db2d6befcb4b5ab7c48 data/create/recipe/crafting/kinetics/chain_conveyor.json -7debac8b1a7a42094ac9486488fc42049e2c6300 data/create/recipe/crafting/kinetics/chute.json -f075257a3cdefe560de0b1661265db930e8b040e data/create/recipe/crafting/kinetics/clockwork_bearing.json -1d95fd1255662b7a172cae42198ce1bbbe3fd2b7 data/create/recipe/crafting/kinetics/clutch.json -1094ad94a4ea248d8b86486d143610f18ca9476a data/create/recipe/crafting/kinetics/cogwheel.json -6c6e9bfd601c51851b405153b4146fd1d98e094f data/create/recipe/crafting/kinetics/contraption_controls.json -d51b28ed5736ee4417f0ef58eaef88a6e5e85739 data/create/recipe/crafting/kinetics/controller_rail.json -e9e279c753bd5403e91202cdc3bf41aff24c4113 data/create/recipe/crafting/kinetics/controls.json -6f11d70bfc7bb23b28ba4e8fc1e642badae8a0a8 data/create/recipe/crafting/kinetics/copper_door.json -427deb2e6614b0ae2cbb8e01eee96ebb9731824e data/create/recipe/crafting/kinetics/copper_valve_handle.json -71be526107101386270bc44546150ac0106f3c9a data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json -d8516c97ea658129021b311106a2c4d51f109e8e data/create/recipe/crafting/kinetics/crafter_slot_cover.json -32eff8b33171e5fa172d67b2ae842e1e7fceac4c data/create/recipe/crafting/kinetics/cuckoo_clock.json -339b691fe73ae54d9213ef270bf0395f622efa53 data/create/recipe/crafting/kinetics/deployer.json -f24c427cabcd1490701bd741af4db1b8f7510542 data/create/recipe/crafting/kinetics/depot.json -7f58ffaa1ad6c7faac48f14a7c1c38a220a55c82 data/create/recipe/crafting/kinetics/display_board.json -564dcef0dca47aed29fa4edc335557f32ea460ce data/create/recipe/crafting/kinetics/elevator_pulley.json -d34985d87483fedda608642cba98e36646fad80d data/create/recipe/crafting/kinetics/empty_blaze_burner.json -e45a93b4c5386f297074ff334ff734bdd1ddc762 data/create/recipe/crafting/kinetics/encased_chain_drive.json -a56f725421446a1149c6e6d528f9fda3eb360e5a data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json -fc64ca8dd49a7656e183aacc7420f1910d6e1b56 data/create/recipe/crafting/kinetics/encased_fan.json -64ff9afd1ba176d71c4ab5796cffc3f3015c799b data/create/recipe/crafting/kinetics/filter.json -bb6574796b3403c01bdd354dc230d1cc5db5db31 data/create/recipe/crafting/kinetics/fluid_pipe.json -a5597021103ec4a552be56c5d4e8c158ee8d7380 data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json -9e191c329d9be6d2f330183fd3348343eb827d64 data/create/recipe/crafting/kinetics/fluid_tank.json -28bc0a98f0c76a6d7d4d4dbb45dbb8c3afaae926 data/create/recipe/crafting/kinetics/fluid_valve.json -12f33671d135a5963a16df154b3d3b97519644c6 data/create/recipe/crafting/kinetics/flywheel.json -41ab86aa853b43c80dbc4d5bf485093e09f07cda data/create/recipe/crafting/kinetics/framed_glass_door.json -97f811915d8b692ed946f3bf219cf68a0463f34d data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json -4af3bafc5ca34d1829da1f9b33ea8394577f8a45 data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json -272d9ebf69e58140b522b8995b4e29e7b6a0f0df data/create/recipe/crafting/kinetics/gantry_carriage.json -24f93dfc9852620d20aa948f8ecccc62ddfe51ec data/create/recipe/crafting/kinetics/gantry_shaft.json -9d9ad94e4cb0c986d78ceba80fd47b30af23ae80 data/create/recipe/crafting/kinetics/gearbox.json -5289b3e7cec2bf02ce84ada347e5effd19ab117e data/create/recipe/crafting/kinetics/gearbox_from_conversion.json -734456745c0c5e73597d7a68a090bfea68c5315d data/create/recipe/crafting/kinetics/gearshift.json -67eee3e7adea4acece803f372ba59280160c887d data/create/recipe/crafting/kinetics/goggles.json -2b307918b6af92bf2afb159fbde9aedc3cc9ffd9 data/create/recipe/crafting/kinetics/hand_crank.json -c33ee49f054da3cd3aa858957a4aba1ad09c5aff data/create/recipe/crafting/kinetics/hose_pulley.json -5b0798e5c610181ed615cbc01bc58125ed28b919 data/create/recipe/crafting/kinetics/item_drain.json -683e57198933a1b404d88a3e6b12cfdc3e8d301c data/create/recipe/crafting/kinetics/item_vault.json -edd8c96cf678e73311fc2ec014955717f6f53f0e data/create/recipe/crafting/kinetics/large_cogwheel.json -0cbb3c4124e0203484fc5156d67fd62384c3e0a3 data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json -47bb7bcb6cb727f003be0a5231a09baf34e39027 data/create/recipe/crafting/kinetics/large_water_wheel.json -981d00bac081ef4da61dbf34db5e2045074eddbe data/create/recipe/crafting/kinetics/linear_chassis.json -1ae9597208cabc0d81a342841f4aab2c9fd13073 data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json -858fa718c4a0a7bae1d5980fd373a69b8df3bea1 data/create/recipe/crafting/kinetics/mechanical_arm.json -bcdf958dd6d49aff2d9c80c00753a754cebdf89e data/create/recipe/crafting/kinetics/mechanical_bearing.json -6f9c9679f1cca7887ee479714f3f614b7b2ae507 data/create/recipe/crafting/kinetics/mechanical_crafter.json -4bb1abfbc2a62b4b5e1ecaa526042eb742834f0d data/create/recipe/crafting/kinetics/mechanical_drill.json -9be89f9077035420bbc87fe1052abc3e6e0f81f3 data/create/recipe/crafting/kinetics/mechanical_harvester.json -cd7e6aa0b650ea867b4ec091090e86eab2c321a5 data/create/recipe/crafting/kinetics/mechanical_mixer.json -e5f0a778f41a61a4e474c8711b7437b92553e554 data/create/recipe/crafting/kinetics/mechanical_piston.json -d33b5a82c29d20e6f1b9ffbe05effcb3c52eea53 data/create/recipe/crafting/kinetics/mechanical_plough.json -1ca7bf4f45bad9022dee67193e9a661eb615621d data/create/recipe/crafting/kinetics/mechanical_press.json -7f3153fc90b1499d5b3ff97dfd67b6f5131b1816 data/create/recipe/crafting/kinetics/mechanical_pump.json -dcb2362429b35d8c7b9fb84fdcb6003fe095c6ee data/create/recipe/crafting/kinetics/mechanical_roller.json -ce0379a69f4af7700259cb201a8e2d8d7c0afb30 data/create/recipe/crafting/kinetics/mechanical_saw.json -4b6528c69bdef24a74e97034938da02a90841395 data/create/recipe/crafting/kinetics/metal_bracket.json -d9cf4c2d35d4eeeb117eddac8da0ce69433824ac data/create/recipe/crafting/kinetics/metal_girder.json -8c5df08113f828d41cd668915ad3b929cbdb90e6 data/create/recipe/crafting/kinetics/millstone.json -f32b6738258319776c7bbe987e77a3db7badcf72 data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json -f7e1954cab2ebeea4a2efa1a4b7b1ae70ec7e170 data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json -5ece4bc411f0fbaf9bc3403cde791bbbabe88ad1 data/create/recipe/crafting/kinetics/nixie_tube.json -d2a9cbe194aa0d1cfa794a5695b55d1de1385411 data/create/recipe/crafting/kinetics/nozzle.json -50824f40e8a74be41a82bc4525d50e0796d4c798 data/create/recipe/crafting/kinetics/package_filter.json -13bd3816307916f1896ca40500eac5361a76e071 data/create/recipe/crafting/kinetics/piston_extension_pole.json -51275800a6081e6efe726844e3a81816d9b33cb7 data/create/recipe/crafting/kinetics/placard.json -7468f03ebb731824f8d2142ae51f9740f1fa5698 data/create/recipe/crafting/kinetics/portable_fluid_interface.json -70f833b51838a1f0f23ca09a36bbe93d76fd5ed4 data/create/recipe/crafting/kinetics/portable_storage_interface.json -6fab493f0638aa9e3ff1f5cacce544bb3f77d847 data/create/recipe/crafting/kinetics/propeller.json -fc0c2cc1d47ce2c9db381f09d8541ce26f37b642 data/create/recipe/crafting/kinetics/radial_chassis.json -8b09e7d47d34c6fde3d7ae24312ea4f1acc88518 data/create/recipe/crafting/kinetics/rope_pulley.json -19c339f98ed51ba8435bf5c5881858e01b643370 data/create/recipe/crafting/kinetics/rose_quartz_lamp.json -67ba2a8df02aeb02305252eff4f77a513017c435 data/create/recipe/crafting/kinetics/rotation_speed_controller.json -67362e1423aa2258e43ec9112a25dca5de410540 data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json -39a09defe6ef1e1629241e4ec881e6a9edd842e0 data/create/recipe/crafting/kinetics/schedule.json -b7a4071bd3b9bb728fc0aaddd9560d1072346bc3 data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json -bf9ab11177141bf2e997a0b8eb3ab454f5d2c551 data/create/recipe/crafting/kinetics/sequenced_gearshift.json -8ec06bc8ab2e2529970cda5a5fa0aa8fc0b14e03 data/create/recipe/crafting/kinetics/shaft.json -42af6a214d8f083fb2be2e9c720777b8d8a902d1 data/create/recipe/crafting/kinetics/smart_chute.json -bba896bab03069f46d9ab8cbcf3f98ac9ce2c6a1 data/create/recipe/crafting/kinetics/smart_fluid_pipe.json -918771f7d6bde869256f00d92dd03d562b614df4 data/create/recipe/crafting/kinetics/speedometer.json -24af47263d896f5fc06e4d90aca3246b18d55ea5 data/create/recipe/crafting/kinetics/speedometer_from_conversion.json -4406ea0e0b015e5f25bdbc1d44161775927184e3 data/create/recipe/crafting/kinetics/spout.json -e5b5e00b9392854b604889f6a711e678e3367642 data/create/recipe/crafting/kinetics/steam_engine.json -192687d3c645799f6e4d9ddfe796fc0e443c8047 data/create/recipe/crafting/kinetics/steam_whistle.json -f60e1a9e39c31173dd4782d84c4f7dcfb8ecd7b3 data/create/recipe/crafting/kinetics/sticker.json -ae312855a2ab2da2eff17872aa94dec076281103 data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json -87dabf4828f6248830e6867e30ff219a2a6ac25e data/create/recipe/crafting/kinetics/stressometer_from_conversion.json -a4217e1fa85cbfa2307b3430c3465f40141107ca data/create/recipe/crafting/kinetics/super_glue.json -1605f776a2496ab0e8ce76017b00442a2e335047 data/create/recipe/crafting/kinetics/track_observer.json -5744758dda98b3e8238490811048502c3bd831e4 data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json -c85bffdedde24013cf9f0144452c98032e131d35 data/create/recipe/crafting/kinetics/track_signal.json -0a3c335c727a8fd93d3a28fbb985e8d6ae4011d1 data/create/recipe/crafting/kinetics/track_station.json -56fd3d2acb1ff9bd0c340f94bdf935d21c65738f data/create/recipe/crafting/kinetics/train_door.json -d90d24494e383fbb9894e0a614cfea4d9e6c09f4 data/create/recipe/crafting/kinetics/train_trapdoor.json -d63864ce2369609339233cc5e27d72fbef3b4266 data/create/recipe/crafting/kinetics/turntable.json -b2dceeaf8301a25bae19bed44b12867ad9bb9158 data/create/recipe/crafting/kinetics/vertical_gearbox.json -0115d53da074064a8e5cb92774824ec7f5767f9b data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json -174ba25aa22c12a5404c2202a1a017e79c842241 data/create/recipe/crafting/kinetics/water_wheel.json -042fed8bbe93531780bfa0abaf85d45eba987f8f data/create/recipe/crafting/kinetics/weighted_ejector.json -8157a983302cd659a4125b6a09e542cdecb3de10 data/create/recipe/crafting/kinetics/whisk.json -1c2073adf02bdf2eb764abecd67d440173301042 data/create/recipe/crafting/kinetics/white_sail.json -b4600d7ba501c8a2000c512fa901fdd225927c77 data/create/recipe/crafting/kinetics/white_sail_from_conversion.json -9b44f186bb97a64368041c56399eb54751face43 data/create/recipe/crafting/kinetics/windmill_bearing.json -272240421fed26f1294955196e43847bf8db5d1e data/create/recipe/crafting/kinetics/wooden_bracket.json -98cf39a420499a20a20cc2050e3fbb370c7f6f37 data/create/recipe/crafting/kinetics/wrench.json -29fafa8d2f7cf7e7bcda28e116bbe6ad0d13d340 data/create/recipe/crafting/logistics/andesite_funnel.json -df0c64ad1443b63cb399d13de7dca32da784378f data/create/recipe/crafting/logistics/andesite_tunnel.json -b67c9a65220f22461c042dde1dad3a70960a9d9e data/create/recipe/crafting/logistics/brass_funnel.json -bed27def92a44e09a5427c64e253d766f53d4f49 data/create/recipe/crafting/logistics/brass_tunnel.json -382104d4e49fdc3e5df79db457516732f2c41282 data/create/recipe/crafting/logistics/content_observer.json -de46a9a5c277238431adcfa413c7c30a5742c562 data/create/recipe/crafting/logistics/desk_bell.json -d439c719d4091a68a77138efa47ce353cb7e6b8a data/create/recipe/crafting/logistics/display_link.json -352b6a1a8f3b0a70d15cf3eaea95c77515ee4f0a data/create/recipe/crafting/logistics/factory_gauge.json -7b09481688982f7b1f78550db94736c91da4364e data/create/recipe/crafting/logistics/factory_gauge_clear.json -28295e21a01b3e28a8b6b4d8e803b82e5520b008 data/create/recipe/crafting/logistics/item_hatch.json -4785e7a3830d18aee2dc3db2013b79b99b74e05e data/create/recipe/crafting/logistics/packager.json -1500607d23fede3c0cc81b84de772f136c17e445 data/create/recipe/crafting/logistics/packager_from_conversion.json -d08ad62fbc754be2f73f4fd4652a992864f602da data/create/recipe/crafting/logistics/package_frogport.json -c58be916b2f7cb728d182b0d4ad3a66bbdb36b75 data/create/recipe/crafting/logistics/powered_latch.json -3fe7cd194a137bc1ceafb4169463c1c6929e3b49 data/create/recipe/crafting/logistics/powered_toggle_latch.json -eaa697a040bdf8a8572534bcbd9b8f96bb9dfe90 data/create/recipe/crafting/logistics/pulse_extender.json -e773fe1a3baf579257c0871cd5d73a9d7dcb5534 data/create/recipe/crafting/logistics/pulse_repeater.json -4cd61c6d6d8dbb94365eface8916b961530ecd7e data/create/recipe/crafting/logistics/pulse_timer.json -f5898d87a6ba614a03c9ea160230868e32f9fddb data/create/recipe/crafting/logistics/redstone_contact.json -c48677fbce18cb7076b8e7c096e954fc860cf957 data/create/recipe/crafting/logistics/redstone_link.json -e6cea336ce6c34777236b08981b0c136fd49759e data/create/recipe/crafting/logistics/redstone_requester.json -ced496591848f04f328b3a172a92d319d86dd623 data/create/recipe/crafting/logistics/redstone_requester_clear.json -d3faeadd5658ad6b5a259eb7998b8dea5625c8d4 data/create/recipe/crafting/logistics/repackager_from_conversion.json -4a0e13f4fb9970f8d567c579d56e8e1d8d7160d8 data/create/recipe/crafting/logistics/stockpile_switch.json -ba9ebe90fc60b310423ae59938cf3c501376f4b1 data/create/recipe/crafting/logistics/stock_link.json -a5c159b421d293d78c3eff019a0c4679ee7b27f6 data/create/recipe/crafting/logistics/stock_link_clear.json -92009c38319c560efd70a6c237b65fdb0aae155a data/create/recipe/crafting/logistics/stock_ticker.json -224f788956f101d9519dd4f29c6021317fa01305 data/create/recipe/crafting/logistics/stock_ticker_clear.json -9977c29c5187e7d960d45418ebf10d683c3aa33a data/create/recipe/crafting/materials/andesite_alloy.json -1fb9b09ffee15f90f7c5f40ca0bd091bb478111e data/create/recipe/crafting/materials/andesite_alloy_block.json -156eb4e2b4751735a4fde6c19909c2c1a176b100 data/create/recipe/crafting/materials/andesite_alloy_from_block.json -e2dc9c6465a56670f7faa24863f278e8acbfbdd1 data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json -20f9ea9b3eea2ad83b946548d9643525a9f9505c data/create/recipe/crafting/materials/bound_cardboard_block.json -f90e384c97e6de444d7b77bc1742fdc5297b09b1 data/create/recipe/crafting/materials/brass_block_from_compacting.json -9791c35874f96fdb3d96be6c2c9d03bdba7871a8 data/create/recipe/crafting/materials/brass_ingot_from_compacting.json -319647782ae788242af731daa11d550ad73f0660 data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json -348841e06c4623774757c51f149fe06714a0c6eb data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json -048ae2b4891eeb8efd5f96f1e606fdd8e3c66d34 data/create/recipe/crafting/materials/cardboard_block.json -974f9d630f05e9fa22de0f8fc2599e9c892bb95b data/create/recipe/crafting/materials/cardboard_from_block.json -c29d7286370fb8e71f4c0d0808a4821e7380a758 data/create/recipe/crafting/materials/cardboard_from_bound_block.json -195e44f534a1a4a1c47b28d1425d0b3192c9355b data/create/recipe/crafting/materials/copper_ingot.json -37bdb93446b64c8a98e942f724c8a32395457ef3 data/create/recipe/crafting/materials/copper_nugget.json -035ba96bf2470c72a9beb8cde26aa303330de1d3 data/create/recipe/crafting/materials/electron_tube.json -41ca156cbb3bd963c77cfd1a7ec49afa3f4ceeb5 data/create/recipe/crafting/materials/experience_block.json -a77386c15ac46fb7e4123b649262aba1633593d7 data/create/recipe/crafting/materials/experience_nugget_from_block.json -0d71acba6aa9a962ae2a6ed55db94c67ab699153 data/create/recipe/crafting/materials/raw_zinc.json -064fe51ac2b50c415916c73e86ba0637e098ac29 data/create/recipe/crafting/materials/raw_zinc_block.json -7acd9ee7c79ce5550a7673928d804a174e17eca1 data/create/recipe/crafting/materials/red_sand_paper.json -81ac8eb7dedfea79170c7062cb4f19c720b6862b data/create/recipe/crafting/materials/rose_quartz.json -09b3ff5e9aa1b024dccc7c5ee5dd8962a158dabc data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json -5105166da5c6c896428167b39889ad583c8766bc data/create/recipe/crafting/materials/sand_paper.json -9a8db81cde10a99596891aaff81b5378755abfd5 data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json -70f6695e746d1665f077eec2316e3f8c3c783dab data/create/recipe/crafting/materials/transmitter.json -7a2640e45fb577643b4d48d2e5b1c4e2875bb7bc data/create/recipe/crafting/materials/zinc_block_from_compacting.json -6f7666916d95395f3efec3dc6f2c7e02cd7a9f20 data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json -1c0ad481e5ad5ebce7e3ad34f46bcdcd3ecd2b07 data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json -84a564917585b07938ab5f3ffd29d8a7a0cd01a4 data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json -3535d2e052bebd0bb86cb648900a52279af0171b data/create/recipe/crafting/palettes/scorchia.json -e73a660925d6cf80e1b8d81d35f53d56b28b7af2 data/create/recipe/crafting/schematics/empty_schematic.json -8b4fd3bc6a3be08b9eb9de3dc3d346bda4701050 data/create/recipe/crafting/schematics/schematicannon.json -ee1bf4fe136d0d10ab786b3a7b4a759fb6ef60ea data/create/recipe/crafting/schematics/schematic_and_quill.json -a6dac63c7b0c818c0ab461310a352092a4b61083 data/create/recipe/crafting/schematics/schematic_table.json -df12fba0450d64ed82637777fb77ce5f2ccde5b7 data/create/recipe/crafting/tree_fertilizer.json -be41a76d909d0d6fe0ae73482a3f4ad4cd7aac85 data/create/recipe/smelting/bread.json -19c396a20a7b784a739e4b532ed1852186c50923 data/create/recipe/smelting/copper_ingot_from_crushed.json -e6fe59961d4e33bfd702ca62e0d71059f410429d data/create/recipe/smelting/glass_from_framed_glass.json -c82aa77bfb62d1921ec7ce4e85728573a2eca95c data/create/recipe/smelting/glass_from_horizontal_framed_glass.json -322e2f93b4fbe82c949416c3cd1dffdce4ddfce5 data/create/recipe/smelting/glass_from_tiled_glass.json -fb5569e38cf230f4dc621d04b0a52b6bf7846674 data/create/recipe/smelting/glass_from_vertical_framed_glass.json -e49c30540436a347adba22e80a715741e17f4c7f data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json -64a401bbbc1901d0cb5cd07a63a9d97eb4dda4bc data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json -91e071a7176a1d331b4247366056770dc05a91e0 data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json -a99fbcef3585f594d3f17236433da2662f9dbf89 data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json -c5934a45cd713b8acae4867272e00c430c9a501a data/create/recipe/smelting/gold_ingot_from_crushed.json -1004ed22d2891d8bef672d2e33284e0630c98219 data/create/recipe/smelting/ingot_aluminium_compat_ic2.json -c3fedccd872d53e39810401b18a01be9537e7ce6 data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json -1289ed1709b81464a48d7cdd82b804b9f6988370 data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json -1be0994e6d75db7a7fade0263fcb91dfd9abdbf8 data/create/recipe/smelting/ingot_lead_compat_mekanism.json -96880068b86a403674ea69c8e013048fa4903d0f data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json -9bfebdd8feea67a7db115586904a5121f6683d90 data/create/recipe/smelting/ingot_osmium_compat_mekanism.json -9d7ce93215eb8e56c1468f4f3fdd67fd57f2503b data/create/recipe/smelting/ingot_silver_compat_ic2.json -4561403389de1fa7df5149da62043cda07f081e8 data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json -99e041a84a092af9ad4bf819c94f1b50f36aa02e data/create/recipe/smelting/ingot_tin_compat_ic2.json -f51eb07d759434b987d6a6050bcc5812ecde0a7a data/create/recipe/smelting/ingot_tin_compat_mekanism.json -6e9dba9c922306679cb92524e0d75b33ceedaefd data/create/recipe/smelting/ingot_uranium_compat_ic2.json -ee51afa666e1990d4a8c653790ddae8c7c0ea8e8 data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json -78a77f82e04afae1ed203f3043f585162735919a data/create/recipe/smelting/ingot_uranium_compat_mekanism.json -e03b2d7c6df7a7429dc80b3171ba2dbb9356d6d6 data/create/recipe/smelting/iron_ingot_from_crushed.json -e1ce7ab99b83362f5aa9b7eef816c09de0026d16 data/create/recipe/smelting/lead_ingot_compat_oreganized.json -30f0acfee21c71f73759cf84b2315feb2e23faed data/create/recipe/smelting/lead_ingot_compat_thermal.json -e5f7dc89c6a2f207cc97cd6f9c66d3188813f3ff data/create/recipe/smelting/nickel_ingot_compat_thermal.json -e68eee58cae59fe76855f09581464e433b50759b data/create/recipe/smelting/scoria.json -7fcdb93631754d737543651b5d0e41d153d3b4ff data/create/recipe/smelting/silver_ingot_compat_galosphere.json -7c1aa85789fc55bc32cbc1f05a3d9bdee7856562 data/create/recipe/smelting/silver_ingot_compat_iceandfire.json -3c5d540437caf1180cbe578d365d42b0c33da522 data/create/recipe/smelting/silver_ingot_compat_oreganized.json -2c4aec8d9d874460a6d908e319bb84206f7d7ada data/create/recipe/smelting/silver_ingot_compat_thermal.json -09abc633fa4a0ec269151f68c6ef5716b6cd5bb2 data/create/recipe/smelting/tin_ingot_compat_thermal.json -ec56b1c890b39e51706ec8667b87428de0299d00 data/create/recipe/smelting/zinc_ingot_from_crushed.json -93cccda226ae249a80926f106df68d6d804e5684 data/create/recipe/smelting/zinc_ingot_from_ore.json -97fe1310c701ebd32eab86eb8c836e68dd0df261 data/create/recipe/smelting/zinc_ingot_from_raw_ore.json -c20b820cd07293bfc3fe2f2c98fdc1ad54b6640e data/create/recipe/smoking/bread.json +fc64323a7846c42253cd59ddd21f530c3de1ac05 data/create/recipe/blasting/copper_ingot_from_crushed.json +3436ed10b6196b63751fe39f29e9f663aca715e2 data/create/recipe/blasting/gold_ingot_from_crushed.json +555b34cca5c6eb5171d9cbf5eeafac233fb3f12a data/create/recipe/blasting/ingot_aluminium_compat_ic2.json +dfae229bea977c9830b239643e305494a7375005 data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json +7921221c5576e540b4b3309c6f978407a5cf0b35 data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json +1e09a56e9ab0552f6f9208e71c2ba49e77b7b643 data/create/recipe/blasting/ingot_lead_compat_mekanism.json +2209449b55fe2d636b11adf277ccb10853387969 data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json +62f7f155fa7e23d7489b62e99b8c34ff9c14d594 data/create/recipe/blasting/ingot_osmium_compat_mekanism.json +fae2fbc163af9abe3fb7e5ad0dde7fb4f0dfd40f data/create/recipe/blasting/ingot_silver_compat_ic2.json +1dced2dc7404dd1c9726744e4cd52440b1bbda9e data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json +c4965bbcc757a854a54caab2b3858bdb3acabdb5 data/create/recipe/blasting/ingot_tin_compat_ic2.json +104de8c3c2db2214ee5e8803ea6b9b525bad6f8c data/create/recipe/blasting/ingot_tin_compat_mekanism.json +b6e662c41872b820b5f71ed48335754ecb423e5c data/create/recipe/blasting/ingot_uranium_compat_ic2.json +717824ba437b1a1baa88e86d6efed7765e46c0c2 data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json +ee670f154a4c10be97e1886e8eebc1f3e3fd7e5f data/create/recipe/blasting/ingot_uranium_compat_mekanism.json +c53117ae866fa58efe092a664758e5c0932d2317 data/create/recipe/blasting/iron_ingot_from_crushed.json +ab721da7a6726927247b2e22626b664dd964393a data/create/recipe/blasting/lead_ingot_compat_oreganized.json +dae737186f0dc48b0486e45a190caf250541c2e8 data/create/recipe/blasting/lead_ingot_compat_thermal.json +659dd9be3be049733081b6589c3beffc36e79b1c data/create/recipe/blasting/nickel_ingot_compat_thermal.json +af0a82ca0a61d7ffd22d123d16129759b778dd2f data/create/recipe/blasting/silver_ingot_compat_galosphere.json +ef256593e916d5b21cd532ca7ed5d25a3323018c data/create/recipe/blasting/silver_ingot_compat_iceandfire.json +dd0ddc90fe1ac8ba619852197e8c2c644327c45d data/create/recipe/blasting/silver_ingot_compat_oreganized.json +50c84b792f17683615bb4a8b841029a92696c473 data/create/recipe/blasting/silver_ingot_compat_thermal.json +83ff564efbfa995e6d45384e2685c57c9546ecd8 data/create/recipe/blasting/tin_ingot_compat_thermal.json +7dc24501ba594b292bc4fe24ae23cf7e67dde98f data/create/recipe/blasting/zinc_ingot_from_crushed.json +4a7c3093316a73dcafc0cd8981af0e9339b2366b data/create/recipe/blasting/zinc_ingot_from_ore.json +a036302d9fa9c6ecbbf2ec767b6eeb899f9a43c0 data/create/recipe/blasting/zinc_ingot_from_raw_ore.json +f0ccaab1b51838ff9e9300c8e930e4d0e6516380 data/create/recipe/campfire_cooking/bread.json +068e4a55694ee6afc37fbe3aa36ecb8a3e9e1bf6 data/create/recipe/crafting/appliances/attribute_filter_clear.json +5bdb52e078a0bca0890f405d3b0afff7d21eb9b8 data/create/recipe/crafting/appliances/book.json +cf51105d401a079efb58cc8726e336d9fadab129 data/create/recipe/crafting/appliances/cardboard_boots.json +08e18a8e8c49ae4d18a988497125d974c71091fa data/create/recipe/crafting/appliances/cardboard_chestplate.json +dbebe7b4a289894270c28556b2df9ceb0dba9193 data/create/recipe/crafting/appliances/cardboard_helmet.json +04ab8c62691a8e0035a42966b4aa08af6ddb008d data/create/recipe/crafting/appliances/cardboard_leggings.json +d7eae6a74748b13331b8e5edc401aec9fefa5741 data/create/recipe/crafting/appliances/cardboard_sword.json +203c51d5088b5cf8238abfdd9d7f323987f511fa data/create/recipe/crafting/appliances/clipboard.json +69e74f209aa31d17267bf1543d5dbae534cba67d data/create/recipe/crafting/appliances/clipboard_clear.json +e965bf5a88ee29b09c369584f909f0fb12e5c206 data/create/recipe/crafting/appliances/copper_backtank.json +15d34e46e6976621cab30c5a22bd4da0f94422aa data/create/recipe/crafting/appliances/copper_diving_boots.json +4e5c574768e6602e403532333ef8c2f474fb8af1 data/create/recipe/crafting/appliances/copper_diving_helmet.json +e8c810819d05bac8abb1d5a01b426fbaa40799e9 data/create/recipe/crafting/appliances/crafting_blueprint.json +124e1c70765002718383738887d2cee916a2d88f data/create/recipe/crafting/appliances/dough.json +607af5b7f4418255738d69bd219a6efbda38e33a data/create/recipe/crafting/appliances/filter_clear.json +1e63155ef99c2bf860eebe142ab1d4729e93719a data/create/recipe/crafting/appliances/iron_chain_from_zinc.json +be0e523152f6f3819b363953fda931b915b53581 data/create/recipe/crafting/appliances/item_frame.json +be5b21917a12b563a1e8b9ddb3d67fc079a937f6 data/create/recipe/crafting/appliances/linked_controller.json +9c32a9a1d945b01ed7ca9e9c28e8c0ee12730af9 data/create/recipe/crafting/appliances/name_tag.json +128a526bcf9773c5d2ade3876c9525eb44e2bc8c data/create/recipe/crafting/appliances/netherite_backtank.json +ef9488296153e6375f5439d5d0678d7ec794078d data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json +c148961c7957302ff42ae10e53b7857e9f2d502a data/create/recipe/crafting/appliances/netherite_diving_boots.json +53cbd1bceeb00ff5cadfa4169e5cda7096555880 data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json +c85f6f5e902558e663c68f7e21d7e1f7333bf2f2 data/create/recipe/crafting/appliances/netherite_diving_helmet.json +f1fe259f615a09bee5e0c366b9ee8b4aaa465ad7 data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json +5bef0b1245bd2b4843fe2237978d8bac115c8038 data/create/recipe/crafting/appliances/package_filter_clear.json +ec864fd6728307c496ad27558acda8761a6333f5 data/create/recipe/crafting/appliances/schedule_clear.json +89152822dc665951711e0064cda94957aad2a208 data/create/recipe/crafting/appliances/slime_ball.json +b577ce84f85cc0b13770f4226a49728f0ab6c49a data/create/recipe/crafting/appliances/tree_fertilizer.json +00ee14c1e4be836030e8be97d14f384fb43f0143 data/create/recipe/crafting/curiosities/brown_toolbox.json +03a278e2ea053842cca8ddab73625c1506d54885 data/create/recipe/crafting/curiosities/cake.json +7807915ae82df78d6f34a382b3964ffe18dc867a data/create/recipe/crafting/curiosities/item_copying.json +baf99684cfeb230c5c13d579b0518f6530ad033c data/create/recipe/crafting/curiosities/minecart_coupling.json +e8b40931b548315c8adda38124a68fb95d0b9dbe data/create/recipe/crafting/curiosities/peculiar_bell.json +43b60bbdbb912f0bd8ca46aa0c415e7ab442ad0b data/create/recipe/crafting/curiosities/toolbox_dyeing.json +24eb6e20dd5d26ca0097738b050998fe13ffa6b3 data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json +52c023112033e8a385ec56ae6c6cab53d30a1aae data/create/recipe/crafting/kinetics/analog_lever.json +4cfebfc54412c33b90f0bbdfcf342544964b8dc4 data/create/recipe/crafting/kinetics/andesite_door.json +89352f78542b199b845458dca1dd69e028f3758d data/create/recipe/crafting/kinetics/attribute_filter.json +e0e449f9aec1adfa5028487b6a328a9708e02c0b data/create/recipe/crafting/kinetics/basin.json +58cac51631cf91e10738ab54f045da2de07ba972 data/create/recipe/crafting/kinetics/belt_connector.json +ad2744d9cc95650e833baeba29632ae8165a9b3a data/create/recipe/crafting/kinetics/brass_door.json +7ad0ef8f9fb03e1f3c69260a104a9a482f06a1c1 data/create/recipe/crafting/kinetics/brass_hand.json +5326dd39da6f7d9172b09403f632419fdcc6bcdb data/create/recipe/crafting/kinetics/cart_assembler.json +f3a10db852a9e8d67de026def228089005b8b50b data/create/recipe/crafting/kinetics/chain_conveyor.json +4b48a34b73db86732ece91bdd01e23e3c309146a data/create/recipe/crafting/kinetics/chute.json +9d57b4fccc37a230e64f71e1c533e163d3aa3093 data/create/recipe/crafting/kinetics/clockwork_bearing.json +9bbe3b9a28256e5c0c864e5f1bd46d811358227a data/create/recipe/crafting/kinetics/clutch.json +ac676cfc86de644ce19b1e31cf7d8248ca52acc8 data/create/recipe/crafting/kinetics/cogwheel.json +c7b000cb76d7d3dfd007812fc00766e1bb061464 data/create/recipe/crafting/kinetics/contraption_controls.json +07c1276aaba2948bc045743ade473bbd8f846c72 data/create/recipe/crafting/kinetics/controller_rail.json +311df44aa07eaeda9b64c9019cdf4dd08a1eea51 data/create/recipe/crafting/kinetics/controls.json +922254b78d4e7fe7766a2f4de78f8f84dd6187e7 data/create/recipe/crafting/kinetics/copper_door.json +e0ab5e27b9d5957dfc929a76d61ee97a62c4750a data/create/recipe/crafting/kinetics/copper_valve_handle.json +af7383f91d44890ba50ead1c7a716ee328c361cf data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json +f270162bc60b89e718436a71f17ad5f399f72914 data/create/recipe/crafting/kinetics/crafter_slot_cover.json +bdbc5c688318f233a6bacd6cc6b827089c77ff82 data/create/recipe/crafting/kinetics/cuckoo_clock.json +d320911cc67b3270b6a62100ae57c2b8751ee639 data/create/recipe/crafting/kinetics/deployer.json +0eb444f40a75f772a161521633b3a524b02c5d6e data/create/recipe/crafting/kinetics/depot.json +891004219f7f9b6395db01562d11d0126f5ea3f6 data/create/recipe/crafting/kinetics/display_board.json +8a7a86203613331cfff9b8c1d9f932610d5a7a03 data/create/recipe/crafting/kinetics/elevator_pulley.json +fc2797499fe6896e30053b0a9641735665b8242e data/create/recipe/crafting/kinetics/empty_blaze_burner.json +2e358c0b395a918f41cc1eee57b4aa7b0eeb5f92 data/create/recipe/crafting/kinetics/encased_chain_drive.json +c937f061873a4986d27ef2943034d076828fbbc1 data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json +3be41a869336c92cf70b3a4e4f084fdd97d57445 data/create/recipe/crafting/kinetics/encased_fan.json +b5f9283d4fed1f172ff407a3f1b9c394ba8eb7e1 data/create/recipe/crafting/kinetics/filter.json +554b90bb3e2396fda7be3927387543f494e719c6 data/create/recipe/crafting/kinetics/fluid_pipe.json +e293374f5eddcf952c394ef541ee95ac5e3efa62 data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json +06a70d2073901d0c4729682110bcc9387557f7b3 data/create/recipe/crafting/kinetics/fluid_tank.json +c1edcd6f87cff2abdc5d634d3bcf56e64221bfe2 data/create/recipe/crafting/kinetics/fluid_valve.json +3e579186ff04ec670c0edb59d8fb67ff5bc65334 data/create/recipe/crafting/kinetics/flywheel.json +e8094319128ea8a4696846f790f16275a12686e2 data/create/recipe/crafting/kinetics/framed_glass_door.json +ea46f8b31254b200ef95be427ae5d6c40d86920b data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json +5c1050c51c49c3be5dc408fc694184c4eaf9d4ba data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json +88d49f1ada00cc0989b9b292a4af27846e8357f5 data/create/recipe/crafting/kinetics/gantry_carriage.json +37e704e571a9d278b9d62f7ae591de2ff8236d3d data/create/recipe/crafting/kinetics/gantry_shaft.json +438772479ad6a2d234aa81ee9e0a50b71788174f data/create/recipe/crafting/kinetics/gearbox.json +afe2553a5901659ae7abbd77728c039da255662e data/create/recipe/crafting/kinetics/gearbox_from_conversion.json +008facd943923923c69942c3c73f0884d897f271 data/create/recipe/crafting/kinetics/gearshift.json +47c5223a773462d090a484c9a645a3bb0fdad170 data/create/recipe/crafting/kinetics/goggles.json +4dcbc9f7c27f4693bce71ac374b8ef469d4b2826 data/create/recipe/crafting/kinetics/hand_crank.json +7dd7ac8031385c8241c31b8b4feed6184cd4f5b8 data/create/recipe/crafting/kinetics/hose_pulley.json +828378d129b5910bfbab13508a2423d416103a90 data/create/recipe/crafting/kinetics/item_drain.json +e133b2aa4917098d1a8aa32d1c6ce872ce1fe646 data/create/recipe/crafting/kinetics/item_vault.json +1d37886f3473babcdc06e5ca66e1976eff74dd1b data/create/recipe/crafting/kinetics/large_cogwheel.json +fcffd5a90076c8a13354e6efbbe885022c7aeaac data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json +e53f8d77da51ab551539c480faae24ece1b4ec6b data/create/recipe/crafting/kinetics/large_water_wheel.json +1d0364e02a11012ad0d74e64f929c6cc676ff3ea data/create/recipe/crafting/kinetics/linear_chassis.json +0ab01f3c3a91be3eb3d92de548475d3ad7e950c9 data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json +2818f3b594cbf5bccfe3a09076786695d0f3d863 data/create/recipe/crafting/kinetics/mechanical_arm.json +2f0b3b8e2f33918941e5045f9771b7e489471d6a data/create/recipe/crafting/kinetics/mechanical_bearing.json +c511fa250e22cb4b37fe523da25032d21b7d981b data/create/recipe/crafting/kinetics/mechanical_crafter.json +aebd5cf1c9923929ac38c4f3548e72f408412673 data/create/recipe/crafting/kinetics/mechanical_drill.json +3e49aaa99969e2f3404ff2154f5d20cd9075bfe6 data/create/recipe/crafting/kinetics/mechanical_harvester.json +f4fbc7260af216e6791ae527f48d87d436ab2342 data/create/recipe/crafting/kinetics/mechanical_mixer.json +f80b7c91fd806d2c14d4300ab0ca7fbb1976518e data/create/recipe/crafting/kinetics/mechanical_piston.json +dfcd6a48980bbb0e8cc8ea17e1dd096cb68397b5 data/create/recipe/crafting/kinetics/mechanical_plough.json +64a61627f7490684166afb77eeb55414edb2e560 data/create/recipe/crafting/kinetics/mechanical_press.json +da92cd0dd590d4b070b554add0446e135cf2caf9 data/create/recipe/crafting/kinetics/mechanical_pump.json +6651f196a0d3c8e22291724ec08f72c6777fbdcc data/create/recipe/crafting/kinetics/mechanical_roller.json +a9c612470b195c7ec99fc167dee21096a30e2e44 data/create/recipe/crafting/kinetics/mechanical_saw.json +83a3d69665060318d0335337129289d83f07ebde data/create/recipe/crafting/kinetics/metal_bracket.json +3d572aeaa93e7d3d4c88f5690b35a306aea5cba9 data/create/recipe/crafting/kinetics/metal_girder.json +bc2e81aa08e2dba82eaedb611838d9634f9d0ca3 data/create/recipe/crafting/kinetics/millstone.json +e59fddb715352e84bd70c4d58ef99abdcad61198 data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json +233c6cb44819b463451dbacd4bd1c290d5a6799d data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json +9d93691496dbed96be8f4d237dbedd0b867b44f3 data/create/recipe/crafting/kinetics/nixie_tube.json +6c6ba79d542054cc83179ad88d21b85df4eb6f8b data/create/recipe/crafting/kinetics/nozzle.json +625877ea3ade49f0c58d51da77526049eb7b1ac0 data/create/recipe/crafting/kinetics/package_filter.json +9d2307a691266dc29947518d4c9c13e7890d75f1 data/create/recipe/crafting/kinetics/piston_extension_pole.json +dff03442d938ae5e47e3d8cdcd00a5efdc220b0b data/create/recipe/crafting/kinetics/placard.json +d91d562c3428a4205e45d26896c5b8a6692a284e data/create/recipe/crafting/kinetics/portable_fluid_interface.json +400628547eb1bebbcf311776a06b841d9d7c9c8d data/create/recipe/crafting/kinetics/portable_storage_interface.json +dc9475b9ba85944c7fc77f5b8b9d309cc7249b5b data/create/recipe/crafting/kinetics/propeller.json +be5171f3dfa66790d0efad6e25609ad075823c87 data/create/recipe/crafting/kinetics/radial_chassis.json +53a6c95cb3096940bc2caf921c371920902c12c1 data/create/recipe/crafting/kinetics/rope_pulley.json +d84c98aaef56b301756fe392d3b2b73f3a1b2672 data/create/recipe/crafting/kinetics/rose_quartz_lamp.json +b2d74a5719c5869d9472b2f4d407596b01359e76 data/create/recipe/crafting/kinetics/rotation_speed_controller.json +b62bcedc1788779ac6006e05167789aae39ac822 data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json +cdf33d2d8ee54b2de7a21929e43f298c44e6a88a data/create/recipe/crafting/kinetics/schedule.json +797710506870ad7a754f612a7c5ecd9a41688fac data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json +f36d9d26423bb172b5a30e62b47f1f17311492fc data/create/recipe/crafting/kinetics/sequenced_gearshift.json +8a541affed3efc2f2f78b634b9b4c91d15259a3e data/create/recipe/crafting/kinetics/shaft.json +b1518dcdb6a8e470753251bd41a24501806cda0c data/create/recipe/crafting/kinetics/smart_chute.json +7d3e4ebbd1f2f459a355297056b642174f9ca586 data/create/recipe/crafting/kinetics/smart_fluid_pipe.json +ba1644ffbb3221b17f2e6d863f82e429dfde670b data/create/recipe/crafting/kinetics/speedometer.json +63dbebfb6c1ea16a4c622d75fd4d24924cd14bd3 data/create/recipe/crafting/kinetics/speedometer_from_conversion.json +281b78c66bbc1d8154641f62bfab597adfdac0e5 data/create/recipe/crafting/kinetics/spout.json +f660b5052c5217c4ae0a0ee6cd60f5be6cf823f1 data/create/recipe/crafting/kinetics/steam_engine.json +5539938ca918f35f6cbcefd113cd836bd48234fa data/create/recipe/crafting/kinetics/steam_whistle.json +2af49cd2518f7144784a27c1227816dc6ad4db08 data/create/recipe/crafting/kinetics/sticker.json +54b7fabfc14149b4b38113d8af1dc14b2eece415 data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json +ccbcdf43432445ea1faff08dc22e65c9c02b9576 data/create/recipe/crafting/kinetics/stressometer_from_conversion.json +e7720df8829d0e730ab94427a061bf12f6498863 data/create/recipe/crafting/kinetics/super_glue.json +1400efd8a69997e6a93f87be432e64e8a0c23cc4 data/create/recipe/crafting/kinetics/track_observer.json +9ccc88dfaeb053d1019889f09245d9644f4fc18f data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json +5f0d6587ac33b4b09cc05904cc5e5fa07ad44586 data/create/recipe/crafting/kinetics/track_signal.json +ee4bbb5b8666aff94a6de0868d55fc463eee882b data/create/recipe/crafting/kinetics/track_station.json +689d8d6c755fc255f913964aa3cd28f21738f2bb data/create/recipe/crafting/kinetics/train_door.json +b1cbd60f01f83521509906ade3553ee422a25afa data/create/recipe/crafting/kinetics/train_trapdoor.json +8e28c724011b56458ac1a505a10d847dc1fa2d0c data/create/recipe/crafting/kinetics/turntable.json +3167b439cc646d6b7cb26c2465906bffe6d46e5a data/create/recipe/crafting/kinetics/vertical_gearbox.json +27f04d154bde5c66581ac06915c9ccc7f6f1074e data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json +be8764395a7df5a9b1d76fb0474eb38d345c0bb4 data/create/recipe/crafting/kinetics/water_wheel.json +c9c681ac295036a38fcf27ccde83b0acc449e031 data/create/recipe/crafting/kinetics/weighted_ejector.json +676da692edd7da74f0909b33b2005055c5fd81ed data/create/recipe/crafting/kinetics/whisk.json +2fb08519ee731a1ec959851f0a33a8017c8cd501 data/create/recipe/crafting/kinetics/white_sail.json +4b9a2750f017d660d2c68ac7589e57a79f7e2ac3 data/create/recipe/crafting/kinetics/white_sail_from_conversion.json +99afd4a13ae1de17b9d65b457cac08ce765484c0 data/create/recipe/crafting/kinetics/windmill_bearing.json +107469876bd6e4727ac0eb7b4afb5766c43a6205 data/create/recipe/crafting/kinetics/wooden_bracket.json +f1753f95cc65ed807796cdbaa903313bd4fd95a8 data/create/recipe/crafting/kinetics/wrench.json +70c16f5d379a1395ce16d674e2b347b0ff7ebedc data/create/recipe/crafting/logistics/andesite_funnel.json +c0da832f6a90f12b5856273931896366ee425354 data/create/recipe/crafting/logistics/andesite_tunnel.json +cabf177caf13c881db775838a0ba3ab122aacc13 data/create/recipe/crafting/logistics/brass_funnel.json +0e262b430007ef8565249a43f9c7fb64d25cf37c data/create/recipe/crafting/logistics/brass_tunnel.json +4c863b07a4006c21739bc6bb9a3e23f9842a77ba data/create/recipe/crafting/logistics/content_observer.json +56f1f64cc9d3a275f1f5a1ee1aa1f2bfb23dfa1a data/create/recipe/crafting/logistics/desk_bell.json +74f959fdfdbcac721298884068d0040f105d864e data/create/recipe/crafting/logistics/display_link.json +c33ac808756ea1ea38037355ad87e744e7bc0a84 data/create/recipe/crafting/logistics/factory_gauge.json +25cf761098fe31b513f375c64113cae4947e6bf5 data/create/recipe/crafting/logistics/factory_gauge_clear.json +830c13dbef1021e1c25090e900656911acdbef44 data/create/recipe/crafting/logistics/item_hatch.json +6061a314c9a8d10338a7f8a70ad9dc5cb6fb2038 data/create/recipe/crafting/logistics/packager.json +9cd0d771c19376ec11e7e295f68aa70b2eff5636 data/create/recipe/crafting/logistics/packager_from_conversion.json +71cd7e386ad4abb9a9e9106166bdd9b7cf94d1cd data/create/recipe/crafting/logistics/package_frogport.json +63c469b813af661ba7d702b8fff4aeace4b0792a data/create/recipe/crafting/logistics/powered_latch.json +cff88277f7ea3279eb51fb21532cff16a452b0b9 data/create/recipe/crafting/logistics/powered_toggle_latch.json +654568c3a4b3210f909d28fe96597734562e2035 data/create/recipe/crafting/logistics/pulse_extender.json +cd21f4451b0340cf6ecd404b0b500619447356f0 data/create/recipe/crafting/logistics/pulse_repeater.json +97d270414a277bc9dab675679d3a20e17fb030d2 data/create/recipe/crafting/logistics/pulse_timer.json +402fa95f781cd8e9cf55d9fd2d23331a811c4d13 data/create/recipe/crafting/logistics/redstone_contact.json +0a48db0483d73f26a5094193f719b437e635daea data/create/recipe/crafting/logistics/redstone_link.json +5fc1d0eb02fa2195ecb2968e6de0359af174cd0a data/create/recipe/crafting/logistics/redstone_requester.json +a061a58406bb3abbdb9eebd931206cd0cb851739 data/create/recipe/crafting/logistics/redstone_requester_clear.json +12717f0b63ea39e40a1dd2c51013df0631343e8b data/create/recipe/crafting/logistics/repackager_from_conversion.json +fcf9b1f7a629487c6145a2e8f6e7add3502b7473 data/create/recipe/crafting/logistics/stockpile_switch.json +252247a4632f79c16b8501ca79954a7d91e7e147 data/create/recipe/crafting/logistics/stock_link.json +d3a6e3c294f32be1122b7eabf662cff5b28f741d data/create/recipe/crafting/logistics/stock_link_clear.json +261991e6ecaa78f5cd892f8dad4cec35974f4be6 data/create/recipe/crafting/logistics/stock_ticker.json +7f6dd0aa40fd731e5fdb8bda2215630217de9005 data/create/recipe/crafting/logistics/stock_ticker_clear.json +e4aab3743766f9caee41f61cd35d000ba89c7f03 data/create/recipe/crafting/materials/andesite_alloy.json +9a9d15fe0b4596746ce1849f42789c54ef33a044 data/create/recipe/crafting/materials/andesite_alloy_block.json +38665adbb34fa515a0cd995371da7691df9d47da data/create/recipe/crafting/materials/andesite_alloy_from_block.json +5a4ba1325a7ed72ea020685e9370cd11553b4565 data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json +2f95cac8a3f618165a2c0c72b87b7e4a8f49ac71 data/create/recipe/crafting/materials/bound_cardboard_block.json +4c05e3832efb860632c4e7338dadf4f63ced8219 data/create/recipe/crafting/materials/brass_block_from_compacting.json +321825446556d485d8fc7fbf754c8c58d6670a3e data/create/recipe/crafting/materials/brass_ingot_from_compacting.json +29d1813637eeeadd4d85b8a7e6f8df56b816b08d data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json +ee40c78e4b869f3c77da0c38483494111bc5f8e3 data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json +759309aeb396f682e833ea74936d98c8b839d6d2 data/create/recipe/crafting/materials/cardboard_block.json +bf153a6f0fbc097ff95b88c79ebea1841e294943 data/create/recipe/crafting/materials/cardboard_from_block.json +e673547ffe36008dd3ece9a41875df4fed147f9a data/create/recipe/crafting/materials/cardboard_from_bound_block.json +6a796867ad4088954157c953656c48dd4a06550b data/create/recipe/crafting/materials/copper_ingot.json +2af2988e3c75cb07f274d2137660ded45b79748d data/create/recipe/crafting/materials/copper_nugget.json +de1866f642b80ef9020f353251b51a460d34f60f data/create/recipe/crafting/materials/electron_tube.json +955d4b2bc207b5e1acdda6d4c8c7660c2549a289 data/create/recipe/crafting/materials/experience_block.json +0860fc754b0f8b80e859d2bf161f2169a1924e51 data/create/recipe/crafting/materials/experience_nugget_from_block.json +a80e19b12311661930cb02df7819a6ea5b344b29 data/create/recipe/crafting/materials/raw_zinc.json +ff81533e910bae491d2c4580f78a5b502b757e78 data/create/recipe/crafting/materials/raw_zinc_block.json +807baecab635f6e1a11ed865f716b31051f8d823 data/create/recipe/crafting/materials/red_sand_paper.json +8db031e4eea5ce762e904b29a9e1f0dcfaf17dca data/create/recipe/crafting/materials/rose_quartz.json +47cf296c4dc7193924a72eeb9e223b93ee11a130 data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json +cb36e8b96663018b03c6808717d6be1fe026107a data/create/recipe/crafting/materials/sand_paper.json +f513356c7d189b565aabe9edddad577110d2421b data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json +0f6fcf0b3f0b478f242e71aaa97ca72a2ac36660 data/create/recipe/crafting/materials/transmitter.json +afa4a8ef6b75fd37f320a0901051c2d586dd84d3 data/create/recipe/crafting/materials/zinc_block_from_compacting.json +fcf7832b5aed82a630b71ed90ebb77787ae8d61d data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json +df631315234b6e2d109bb49e1e7429269ca824b7 data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json +df63c176cd94b72c9299c88e4fd038e48059fbfc data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json +f7fff363526cf05dd7f524168bcba99877d761ee data/create/recipe/crafting/palettes/scorchia.json +33474019184e2913fed389158427885907f502c4 data/create/recipe/crafting/schematics/empty_schematic.json +3999147990a282c7c197e333009153f301c05196 data/create/recipe/crafting/schematics/schematicannon.json +541bb84b94a68464ae8206a0927549ad7228a2d8 data/create/recipe/crafting/schematics/schematic_and_quill.json +9568aa65e382df6737efc92b03dd0f7f3470a442 data/create/recipe/crafting/schematics/schematic_table.json +88676efef49a3733cd5dc9b63da6bfb1f720ad3d data/create/recipe/crafting/tree_fertilizer.json +2f9a82f65b987b832288c2d7f53a6e1a78174103 data/create/recipe/smelting/bread.json +9f18e817d028b30a8fcf8f985b01bf8fb092f570 data/create/recipe/smelting/copper_ingot_from_crushed.json +d2aba001aee4621fe183a1720599a921f61ad496 data/create/recipe/smelting/glass_from_framed_glass.json +11d0905b0b86a924f0fb827157cb24258056bf8e data/create/recipe/smelting/glass_from_horizontal_framed_glass.json +51420bd72cd4cc9cf2d6477cc95235dca131bb46 data/create/recipe/smelting/glass_from_tiled_glass.json +06c3c6704b35d663dc67dbd0b4740f29e3fcd623 data/create/recipe/smelting/glass_from_vertical_framed_glass.json +1904d9fe041a9612cf7c9c4e536b16e57adb9b7f data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json +f22c4dd06a237ce81542593f220264aceca8a370 data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json +11abdf66524234125aa940fc95881aff3732beb1 data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json +70b8894f503876fc4f7d9e5675c5d46b2b9f25de data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json +bf03def29bba909ca08416d40088220821f2c2f8 data/create/recipe/smelting/gold_ingot_from_crushed.json +4ab3954a67d41575f1ebecc41c04c79e09ee0ee8 data/create/recipe/smelting/ingot_aluminium_compat_ic2.json +5a4c10be6cdd5b765a6a210034bc00a8bd86d661 data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json +4ac438569b5532bc00e1cea786dd3fa6dd8e1cdc data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json +9fc6cf8a02a5117355218ff603a86cf5c4330c33 data/create/recipe/smelting/ingot_lead_compat_mekanism.json +50e0df33ea1b8f916321fca4bcc593b707eb0ca5 data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json +c989f0bfd1727569a50efc28f008e10949bfda8b data/create/recipe/smelting/ingot_osmium_compat_mekanism.json +32076e0c46020370c0c82bcdb87d09076ce0345f data/create/recipe/smelting/ingot_silver_compat_ic2.json +a59c80422fd4f7963eb52dffeaa34f53281a529d data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json +51304b5496f95dc2404c9254fb40700c5f65191b data/create/recipe/smelting/ingot_tin_compat_ic2.json +1b8bf71c4350f44a3a56e080ad9e725cbd331be9 data/create/recipe/smelting/ingot_tin_compat_mekanism.json +f8d041f95e00efbb55723163bf1582fa8e0d1f4b data/create/recipe/smelting/ingot_uranium_compat_ic2.json +6311d74fe17da8cdc046a373f0ad054a9b5fa0b5 data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json +7bbdad5990d861723f5abd24c0b28e423f805c6a data/create/recipe/smelting/ingot_uranium_compat_mekanism.json +f3a2e37d42f16868f3c8cbf03325fc5f79b54279 data/create/recipe/smelting/iron_ingot_from_crushed.json +f3d6db25566099492b383183aa747663f7e94699 data/create/recipe/smelting/lead_ingot_compat_oreganized.json +45bedfcf1c8e0a1c0eb920a0738acd301982a925 data/create/recipe/smelting/lead_ingot_compat_thermal.json +d86ada65a3bd871b14d765268ea624a4e55f15d4 data/create/recipe/smelting/nickel_ingot_compat_thermal.json +2afb9e8ff8f78d0f3315fdbff2a1c884c7fd0f3c data/create/recipe/smelting/scoria.json +33bd70cace4c953ad00b6eb51ac5a6fa72d2ca28 data/create/recipe/smelting/silver_ingot_compat_galosphere.json +72697c41e8626d6fead801d602bfd6f011988e03 data/create/recipe/smelting/silver_ingot_compat_iceandfire.json +f23bbb4b57cc9bf8d8ec9a108361f9749d130ba7 data/create/recipe/smelting/silver_ingot_compat_oreganized.json +0c10ab67bc39130bae210a7a71e7e85b57f1a10e data/create/recipe/smelting/silver_ingot_compat_thermal.json +ab6c766fa95dd1cf136a160518dbe62b5f3f1a0b data/create/recipe/smelting/tin_ingot_compat_thermal.json +bcd51b9b58f8a637a41579a2beb2c446b24cbae9 data/create/recipe/smelting/zinc_ingot_from_crushed.json +d5499336f91e0a0e9cbf274060ce8b39eb929602 data/create/recipe/smelting/zinc_ingot_from_ore.json +6fca961f7f460701cad7cc909975ed27325a98a3 data/create/recipe/smelting/zinc_ingot_from_raw_ore.json +37e47469bef979e2c0f0d69cad24d4c2a2487e1c data/create/recipe/smoking/bread.json diff --git a/src/generated/resources/.cache/ad9bf59631726a3f24738ebf1a6cd44c7f88ba0f b/src/generated/resources/.cache/ad9bf59631726a3f24738ebf1a6cd44c7f88ba0f index 44a96479a6..41b68a3785 100644 --- a/src/generated/resources/.cache/ad9bf59631726a3f24738ebf1a6cd44c7f88ba0f +++ b/src/generated/resources/.cache/ad9bf59631726a3f24738ebf1a6cd44c7f88ba0f @@ -1,4 +1,4 @@ -// 1.21.1 2025-11-02T10:48:42.611281298 Create's Damage Type Tags +// 26.2 2026-07-08T18:29:28.9118296 Create's Damage Type Tags 7884716b2f4bb1330ff215366bb4bab06e4728c2 data/minecraft/tags/damage_type/bypasses_armor.json 1fcad1f89265fba8bdb05b03a1dfcc88d7b7a550 data/minecraft/tags/damage_type/is_explosion.json 08324c61115b72bb8a6370d7f34d84d9a31afd16 data/minecraft/tags/damage_type/is_fire.json diff --git a/src/generated/resources/.cache/b256105d8411632b0d585496ea8944a751a08034 b/src/generated/resources/.cache/b256105d8411632b0d585496ea8944a751a08034 index 2b29d66c32..1a7b7093fe 100644 --- a/src/generated/resources/.cache/b256105d8411632b0d585496ea8944a751a08034 +++ b/src/generated/resources/.cache/b256105d8411632b0d585496ea8944a751a08034 @@ -1,828 +1,828 @@ -// 1.21.1 2026-03-06T13:40:00.16314244 Create's Processing Recipes -cb988d3be6b4a28e4d13dc73d61eed3670520e8e data/create/recipe/compacting/andesite_from_flint.json -d97f4e06363879d033b2151995a5d4f19ad7ef3a data/create/recipe/compacting/blaze_cake.json -7879a7ba9019a2938363449d3a0e13013a4ad606 data/create/recipe/compacting/chocolate.json -32cbaf5cb5df47c6e68c42faa79ed7216b5f6296 data/create/recipe/compacting/diorite_from_flint.json -37e1437962173cccd5d098147e434e46a271a9a6 data/create/recipe/compacting/granite_from_flint.json -729e748252b9259f2327447ecbedded65397bfa8 data/create/recipe/compacting/honey.json -31a0e8f5db06552d2eeffb65752d2adbd6542781 data/create/recipe/compacting/ice.json -53e1ae485aea119be714cb89baa6e7441054d286 data/create/recipe/crushing/aluminum_ore.json -af69a8b8568b2c3fa5c0f18dc1c7fbc383bcbba4 data/create/recipe/crushing/amethyst_block.json -40bbd9b3f8e70e44d44c89460687767ab9141910 data/create/recipe/crushing/amethyst_cluster.json -558849bb5e2d3c8de1d49444d8237cac50526fe4 data/create/recipe/crushing/asurine.json -20f3de7520c040511f6eefcb06235597d8cf40d8 data/create/recipe/crushing/asurine_recycling.json -d3ae73bfa0f98cf0e8b4111204690a83fcc379ec data/create/recipe/crushing/blaze_rod.json -35047d5ca2fd7f36b657b297b25bb1649cf7b9f0 data/create/recipe/crushing/coal_ore.json -b8c1368d5ef210ae3d387cd7884dfc05c79eb438 data/create/recipe/crushing/compat/aether/ambrosium_ore.json -20b328f6671f30f84af6c63f31359482238b6de1 data/create/recipe/crushing/compat/aether/zanite_ore.json -489e0dbc766d5b474ee9cfa1238efb7f36097c80 data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json -ef00458c06889f4dfb6b905630258cb257702926 data/create/recipe/crushing/compat/biomeswevegone/red_rock.json -f10649abd0b76f75cc9d9459f4fa94f93a97f629 data/create/recipe/crushing/compat/druidcraft/amber_ore.json -c438448b22355d0917b95fbca659c6eba74f3e44 data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json -e3f0b61edc524303cb6719b0e09d9c4ed064ce30 data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json -7cad68c92e5effb220166ba10c15320ce227b3b0 data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json -fcbce1cb6fc74d6cbd04a2920e74ce4a5b01524d data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json -eb1d9a2afb8dfcfa43514b3b101227135009ba8d data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json -be324a10f51fb9d6c42abccc5982b1c11cb026df data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json -3b4d0b18747ae51a811d0c36b7eda6e4882d7c99 data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json -fdc7b4c1d24a89474de4dda007838ae95c190ff4 data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json -9962696e74374955b4fdddfd5f60e4fdd035be0d data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json -00f3f1baa5e64ab44a25638d6f69f5d63ec26f2e data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json -dead205a3e16b74dfd956400b344cbbfc772a7c7 data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json -72a9a0d2fe6adfb9541c0369ef4953e951d08fdd data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json -0faedd7063102ac190548a1def6a889d28a5dcc7 data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json -1352bf8b65a8efc63cdf8d0c6a45cbeb3ccfec18 data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json -a43d9988d95cea9fe8f342495de4701e8e220360 data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json -eaf0f2187180be7eed018656f583fabc0ff6e70c data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json -4c4f077d0b6214d387aea6fe06894c14b984dc6f data/create/recipe/crushing/compat/exnihilosequentia/andesite.json -5c83ba2e5262d8bcd1a4a84748663fca3b72b7e5 data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json -6454bd3d3ebe52d2bdb6ccfb20e939c56928d9d5 data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json -034c621573fcdb3b73d373a450c83b472181b967 data/create/recipe/crushing/compat/exnihilosequentia/diorite.json -966e5a277b5b46f17a5c259b45248e4ee13f98d7 data/create/recipe/crushing/compat/exnihilosequentia/dust.json -0941c7ce5a1e375cdfe55308fb6ff4db6128a8b1 data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json -efe49f1a2f7e975afff43e54bcf28181887aac15 data/create/recipe/crushing/compat/exnihilosequentia/granite.json -643c9a1bf2b6ee371103546eb43f0b338c1cc843 data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json -dd4e0037e7c6bf321857ef6b0ce08584d0105fab data/create/recipe/crushing/compat/galosphere/allurite.json -3cb2f449556c49d747d7e55fc31736063096c5b9 data/create/recipe/crushing/compat/galosphere/amethyst.json -6233206c815626c715934c1c8f138d81986d6d2c data/create/recipe/crushing/compat/galosphere/lumiere.json -192d52e967a24fb2a9b433d8445e4b40ece8dbb5 data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json -4c17a429b8161f13ab1386aa729654410d4b2f49 data/create/recipe/crushing/compat/immersiveengineering/coke_block.json -af753950191fbce9e5fb994f9c3a38318eed9c76 data/create/recipe/crushing/compat/immersiveengineering/slag.json -82883f3ddd6b97d786a67c731c62328078fc2017 data/create/recipe/crushing/compat/neapolitan/ice.json -166058a7f8da408b5c221bd84e20025bd5c0bdea data/create/recipe/crushing/compat/quark/moss_block.json -1d5abe07c9d4f5cf4fd0b7b189452519927705e2 data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json -6906356ec72fee35f68c0c6c085d9d98bb59d813 data/create/recipe/crushing/compat/silentgems/ammolite_ore.json -4a300ee266181b42709655f11066109eb811e216 data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json -60626cc502659ea35bdb032f30f580bc6f08fb9f data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json -065843c29fae9908411b6070c7699d9ec5c77cb4 data/create/recipe/crushing/compat/silentgems/carnelian_ore.json -8a5fd066a66fd9559f0b33c17df6180bf8288be7 data/create/recipe/crushing/compat/silentgems/citrine_ore.json -178be8d4b9aea2adabd9e52e46b62c76f6916781 data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json -252554fd1201841a16faf8b07f79bddf5c2b218b data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json -86d618473368a371e24cd193df5f0389415845f2 data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json -b6a7855a2c1b37c7d390622a8e880941bbea4f5e data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json -ebe9ef62bf0e73bf71fe80f4528299c89321c48a data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json -1ba258724cc670200a9d581f8b98cb9cab0fcf8d data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json -ce790598181cd7fd1c40b438ef902e5756c6a01b data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json -6dc1fbd981d68a4e5e6eb309e0305f1f9f1332ae data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json -d7275733e6d069bbb802ad3f7337cf5be03d9475 data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json -69707522ba04cab9dacf78eb540298adcda85036 data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json -059fc0f7ce7c90fe8cc156294ef2f8f95eed99b8 data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json -44e3e3463ed8db81181d4a4bbaa3b93c9692d729 data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json -caa74d167121056879b27f730b72b24daf23ce34 data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json -859d06078f230f4247c26ff560134c6a2f351de6 data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json -1b4af7d93c37eab35085611036a99436ab306073 data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json -916f9ecea931c3c6ab79aa5657d9faed7f74455c data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json -d8c80943daa70b85c0f4f2defca4c158fcd6e754 data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json -11c9aec33bfa3a18c75af0f2a05a0b4f713b3f03 data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json -75d395db197a2e6a36612fd5e86895a51bf66a14 data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json -43f0d1b78af9fd0a1220addc3e5b01bc2d6c9187 data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json -02d7515d5157980aeeb1f57ce78cc7028e4a3e94 data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json -74160eb77cc843fb5ef580ca3e8639721409486b data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json -5c4f0e236ac4245102b67d2138235392513869a0 data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json -d9748703041e82bed277f2da6eec0eae180aca63 data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json -eb97c619bba4e13981e0237e13c9df5da0006143 data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json -6059a449bfebf1f65e9de26c2bdfd45a28476c39 data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json -78f62af5d2491e29df6bf580185d58dcaa5df4b8 data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json -b5468b88d6f01f7481c19bd73681325e0df154e7 data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json -40418e02f013dbc1a29f0d232f184b2e068eed43 data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json -9e4316e016890b62aae4577daa9f7138c03ebde2 data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json -39b042d76cea0e8b9e205cf6ef2976199c5470e8 data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json -db7f6e34c2a2ea6c62d75c3893311fa181d59d28 data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json -fe4eb85d826951c4ce20f2e61836bbb327eadd2d data/create/recipe/crushing/compat/silentgems/end_opal_ore.json -02b069897b60709ba8f4bf5eb274207ab51e0c9b data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json -f7600479923fb0e908fb76fe901a3993f1a6e900 data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json -ad26053019cea70684f8f8f74841f289c2c500de data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json -253b5cb7505dd42aa0e7cf523367d3c6340531eb data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json -d2f7f79f465a37615e7ba73692e6aa8839ae6d5f data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json -aa9071a86b08be7093d5a01b4764c5f518e449b9 data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json -b87d4c4b6743f5ccca005965489c75c623111866 data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json -ceeaeede69c3e13e7473bb395f1ce2c471265c3a data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json -8459e87ec9b022a02296c5c75108ba0def7e8044 data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json -d52a11c0834e20587c5ac41c20a7f787bc3b8561 data/create/recipe/crushing/compat/silentgems/garnet_ore.json -ea4cce398f8969bd118a3527079bc7436ab45180 data/create/recipe/crushing/compat/silentgems/heliodor_ore.json -143fb5b55ac606ba520af3fe6ccd48bd8b706158 data/create/recipe/crushing/compat/silentgems/iolite_ore.json -7b83344332997cd0cfadadfabe3f045bf04b95b9 data/create/recipe/crushing/compat/silentgems/kyanite_ore.json -0bbfb8d81b270bc33ce79eb2bd463c14a09e869b data/create/recipe/crushing/compat/silentgems/moldavite_ore.json -954134dc9e1cb490f8e8b2129bddc8da85d5c769 data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json -ce6f74bfe10dc1c343a49342bc39d5a539e8c3e6 data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json -c41860d700f053d9e370bf606e7e783d4d248c6f data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json -dd168b3687ba1a056716ddff54fc3b9fdc2291c0 data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json -e133ff1857357d19236bddb61a1a889723d12c21 data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json -8c4fcfd48b2325a5d545c073c28acd640b3fa1ef data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json -81ffd04ca6d00d84b846d06dd81648cbf419d9ba data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json -4a5a7fc48544f5379cd605ee6f6f9e1c19cc9fa3 data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json -461b8b74b473fbf18935c949f14bbc82f804fda6 data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json -04fd7987ed8e6a067c14688d0f6107bb2b0e0d47 data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json -eb06971d4a1f7d8fc05fb1df0ba39a92330490ff data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json -49a783a9e3865101194f3b4838f8366492c6ddca data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json -da393df15412b57e77e145359530ba17fa1c856a data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json -2cf211eee4e28bd3a34bf51a71b4853aa81e4703 data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json -b88b0c91e9e88b2a710a9b4172799d2ef0fa78bd data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json -aeb36ef07316336d333bd1428da76cc46c222888 data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json -4c0c34d1cfd01ad4e21afb953e0fa1d772041971 data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json -5193fb801a3a35eb14f553c06d045ad161201d2d data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json -17b1b5c95bc3d1698f248fd27f94c027dc3eef6d data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json -20cb3a4db598aeeb71d780f3d7c4ca003532bef2 data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json -75344b661582f55bb3cadab74a3c7cdae92706b7 data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json -913ba31d7efce3480fac3d88f132968bfad12802 data/create/recipe/crushing/compat/silentgems/opal_ore.json -947a638aaabe2ee50e1eef4baf2e35837eb6ef67 data/create/recipe/crushing/compat/silentgems/pearl_ore.json -39b9fac12d4a3fd733832e73963307aad4d3c01a data/create/recipe/crushing/compat/silentgems/peridot_ore.json -2a05ee16e1662eb23b0fc0a86316d33216260f1e data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json -ddc77ef1e1c4b62b513a322e1b6e7421d67831d0 data/create/recipe/crushing/compat/silentgems/ruby_ore.json -29bc126ffe2a55dd4727e85f000aea2d4aabd822 data/create/recipe/crushing/compat/silentgems/sapphire_ore.json -a684ae58fdefadd9c015ed9da04b5cf047fa6f50 data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json -c13ec3bda32c253cafe3f45f40434fb255f9027d data/create/recipe/crushing/compat/silentgems/topaz_ore.json -20302224493fcb9fb1ade675d229571ebce12892 data/create/recipe/crushing/compat/silentgems/turquoise_ore.json -c672c3f53d339203c77b3b5598a13e3368b1deea data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json -08d17c9ff75271f6fa08c2ec650e46f284f7f7a9 data/create/recipe/crushing/compat/simplefarming/barley.json -e59a0de11ede480c40039e5091cd252763902719 data/create/recipe/crushing/compat/simplefarming/oat.json -4be33666f22196a673291da62ac8ee1a7baeae83 data/create/recipe/crushing/compat/simplefarming/rice.json -82b1c04e074ff78869371b6b41c780283f1990f1 data/create/recipe/crushing/compat/simplefarming/rye.json -39ce430851db869833648020ab10898a93a7f395 data/create/recipe/crushing/compat/thermal/apatite_ore.json -f4bab0b309b5236c9cb4288c0ea59bbb6d87dbb2 data/create/recipe/crushing/compat/thermal/cinnabar_ore.json -cf22fa86c45a8a2595f83928ec3b6bbae9dbe4bd data/create/recipe/crushing/compat/thermal/niter_ore.json -b65e61a537620f4dde2a1fb04f1376a825fb8bd8 data/create/recipe/crushing/compat/thermal/sulfur_ore.json -60d39118ca4380cbcadb9be48e85fc5ac60b9bdf data/create/recipe/crushing/copper_ore.json -00282ca8e1a5c0fc20a6ae236447369e60b786fe data/create/recipe/crushing/crimsite.json -f340e0338e97a57a1db576d96bffac341fb7f630 data/create/recipe/crushing/crimsite_recycling.json -2db68f5cc91bf123d0c41ea11a43ac8e0eef4d4f data/create/recipe/crushing/deepslate_coal_ore.json -ae783367aad1fa5f81849e27f314401d3fa7835e data/create/recipe/crushing/deepslate_copper_ore.json -d023b502709177f0fc2b6a11042ebbb0ffa4b194 data/create/recipe/crushing/deepslate_diamond_ore.json -f27309a5aff6087f25642888a4e5cb015defbbf0 data/create/recipe/crushing/deepslate_emerald_ore.json -2e4258e8fd44aead4de8feac6cecb39fd6daa5d6 data/create/recipe/crushing/deepslate_gold_ore.json -39540c0f50a9172302ad8052f6c9f287d6e909f0 data/create/recipe/crushing/deepslate_iron_ore.json -8cdf2aa01d3e72e2404fa5ac78f923138a4a41ac data/create/recipe/crushing/deepslate_lapis_ore.json -64ee8fe8c32fdb47791788bca73e6c0ebdf0c775 data/create/recipe/crushing/deepslate_redstone_ore.json -413e22b0095d7f9c248355e8af4bcaca3231ab0e data/create/recipe/crushing/deepslate_zinc_ore.json -c4d90c1117ad0cc2b9cac8572a7bc0276102b285 data/create/recipe/crushing/diamond_horse_armor.json -cc369a3c7e2abd383d25f113ffab9aa545623203 data/create/recipe/crushing/diamond_ore.json -46507f895a7a3d0cbbf90d61610a783f81e59be1 data/create/recipe/crushing/diorite.json -8cbaec58efe96eac5ab1421a2a3f7f1d3bc5ad79 data/create/recipe/crushing/diorite_recycling.json -48232d30661801367335c23273b787e5668e9e42 data/create/recipe/crushing/emerald_ore.json -c7d9beec21b5d68be39380ae961367cf4ba96198 data/create/recipe/crushing/gilded_blackstone.json -909ff736278155eed3bcaa62ed62505a8b95c7c2 data/create/recipe/crushing/glowstone.json -7636f1d378586ff885705da6d9fcf2b013a992b2 data/create/recipe/crushing/gold_ore.json -7e6edd0a8ce2f2f23200ed405e712d27ecfb9ac1 data/create/recipe/crushing/golden_horse_armor.json -9209d2d4c667eda3536014c35b0c159a04ea9b17 data/create/recipe/crushing/gravel.json -66c8f767a9ade1141356e5802a4ad27a7175fddd data/create/recipe/crushing/iron_horse_armor.json -317269c9347b8aa324dda05281ecde7a887e8fd2 data/create/recipe/crushing/iron_ore.json -b5db8ae6408ec4009a98aa5b58901bfd8424e880 data/create/recipe/crushing/lapis_ore.json -280d822c0b946b688bf616e65bbc0f13f07f9351 data/create/recipe/crushing/lead_ore.json -e8e8702dc153e77b3a6948761de64c17bd2556d7 data/create/recipe/crushing/leather_horse_armor.json -997340d36d7d60b6c39af5d4eb9ea5f1612aa3dd data/create/recipe/crushing/nether_gold_ore.json -545a491192ebed43d3d74bcdf1012a20c270b12a data/create/recipe/crushing/nether_quartz_ore.json -1400123bd8e9bd8489e628fd6c8a89ef23ef23de data/create/recipe/crushing/nether_wart_block.json -f864d547d258c4eb1b47eb5c27f19d74ffc90530 data/create/recipe/crushing/netherrack.json -44fcc58cd5bea8f6069dc9358fc613ef66e5370f data/create/recipe/crushing/nickel_ore.json -f1ff519ab32ab0f5d09705e864856a0d32454f2f data/create/recipe/crushing/obsidian.json -9ba3e09ce32bc5ca4a36bee531b155e74841d93c data/create/recipe/crushing/ochrum.json -025433c3601f1531ef7b5e47ba576664622423dd data/create/recipe/crushing/ochrum_recycling.json -28328193d730f39f06b34e3cc2d4e382fd356609 data/create/recipe/crushing/osmium_ore.json -11802f70f4109f628ba8db6f48069300e5b1567c data/create/recipe/crushing/platinum_ore.json -aa083fac8e9b2b347df7e1f69f897170ba03dc0b data/create/recipe/crushing/prismarine_crystals.json -05b21462aaffc15ad2cc1cdb2c7eba0913530493 data/create/recipe/crushing/quicksilver_ore.json -8b8c63129a787c229ab7541dd42032b844b2cffd data/create/recipe/crushing/raw_aluminum.json -f45f9c060ba8bf089caaa55bcf8dcb4aad806192 data/create/recipe/crushing/raw_aluminum_block.json -56ece42114246b2bca7f413e6d7558728cb2972a data/create/recipe/crushing/raw_copper.json -6d2e7e9e827d4e4820fc30b4e0670fb5323d4197 data/create/recipe/crushing/raw_copper_block.json -166360796564363640162b309d3aa5886215ae1e data/create/recipe/crushing/raw_gold.json -79ee41527693026a78e680559815739aa70cb284 data/create/recipe/crushing/raw_gold_block.json -d4e25245338f9fdfc434965ae67ea4a175bc1f8a data/create/recipe/crushing/raw_iron.json -29c34e6e5fb66352fb1e17febba1f5852ba808f2 data/create/recipe/crushing/raw_iron_block.json -b6038983925edade61ca7d33d19d0017876e3da2 data/create/recipe/crushing/raw_lead.json -4dc1f0e4f1b81e3f048bcded1a5ece6fc0ac960b data/create/recipe/crushing/raw_lead_block.json -0e59670d4855cdedff3e6ab8f6dcc3e73ae32ebc data/create/recipe/crushing/raw_nickel.json -03794c6ddc075dfc372b482c4eefae488c8d0626 data/create/recipe/crushing/raw_nickel_block.json -ad6dbf230c3bb94b878a8f0d4a43e4e2bd30206c data/create/recipe/crushing/raw_osmium.json -020c13d09b6adf412836c3990666965135aa87f3 data/create/recipe/crushing/raw_osmium_block.json -9776b641ad40258a9ed44488585db758a39fb958 data/create/recipe/crushing/raw_platinum.json -e73771cc57d3c5c6753a0b97d6faf55db39ae7b4 data/create/recipe/crushing/raw_platinum_block.json -7968f7b1318d7e8e3609b572aeff30b9d2dd9bba data/create/recipe/crushing/raw_quicksilver.json -1e2f808f00dd2502519cfc11079d27ae7281c690 data/create/recipe/crushing/raw_quicksilver_block.json -ad174f153c5c55bf61cb5fb01635725bf993804e data/create/recipe/crushing/raw_silver.json -f0640c2f7ef3e8a2bdb261b1c16ecb03e3dfefb2 data/create/recipe/crushing/raw_silver_block.json -b009cc7151c97c6b96c492d3e9da7307d872a84b data/create/recipe/crushing/raw_tin.json -a4d4e579804ae784177ae93f994072a1f9238033 data/create/recipe/crushing/raw_tin_block.json -89a8f85ac83cf0c080515e6107bf521ede747c22 data/create/recipe/crushing/raw_uranium.json -8c5c4ce99730aa40723014698a71cda8beea90e7 data/create/recipe/crushing/raw_uranium_block.json -8e73efb8133bd1322f137505ec6cab171dcfc596 data/create/recipe/crushing/raw_zinc.json -ef072716c4f1095c163dd29a0026b3c466221bbb data/create/recipe/crushing/raw_zinc_block.json -48bcb3c22188de9305c5a39d501ed8a1cc47c9f7 data/create/recipe/crushing/redstone_ore.json -5508220336ccad4da01da732b9151672501e8096 data/create/recipe/crushing/silver_ore.json -f5d886a24b8cd06b81472480273ed19e3b6691e1 data/create/recipe/crushing/tin_ore.json -8c3cddf1ca3d211445fc4af1583463ea7898ab6a data/create/recipe/crushing/tuff.json -92f3d3eb8b90e9674e93c9b8f5f7a7d434444ca5 data/create/recipe/crushing/tuff_recycling.json -d11be899f2a206f666cbfde5f3d4913d03a9312b data/create/recipe/crushing/uranium_ore.json -3f2868617121dfb08f53e153425465b63e4a9009 data/create/recipe/crushing/veridium.json -426f4b45bc82ead6be5723b59458070ef1dcb372 data/create/recipe/crushing/veridium_recycling.json -b8b161a142ddf66141889ff603b43cecd32b6b3e data/create/recipe/crushing/wool.json -e2265c788c1abd7c3b7a176c64504718ab1d5572 data/create/recipe/crushing/zinc_ore.json -10a9b22e6936a21ee6b6d5ede9ffdb5fe92e2418 data/create/recipe/cutting/andesite_alloy.json -8013353955c146127a4c560ffa7d3e1fd3059d5b data/create/recipe/cutting/bamboo_planks.json -8c41adbc250ab9c2a39fa5d5b4f11f1ac4bb579e data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json -076c36950257dd200fc76380459ba6a41ca99e25 data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json -d2da949e2de98d91716a9340792319f7492eb3bd data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json -4f3585c2f18d6aa1352e893596311744ae7f7ae9 data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json -31eb8ef70f639c55b4a7705cf08e6d3a10a7743a data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json -124591fc07365a788f81a89f73628a1000d971ab data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json -e4d72d5be05b1a4e0cf164b1a9b56cd9565e3c9b data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json -6d928af708a82626c6b20ca4c9034d4f4733a927 data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json -98d7214cfa3c9bf24e599798975af6eb574a6939 data/create/recipe/cutting/compat/atmospheric/crustose_log.json -44c8bb2e46e26fc75d747ed59762350603e63c09 data/create/recipe/cutting/compat/atmospheric/crustose_wood.json -fa95f4eaff379d6a35fdee68ecd0352494124319 data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json -4c80e9aae059aac000b6f72451bbb705e0c82f1a data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json -611e4fc4e306fc12f24985ff936bfb47c257ad2d data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json -fa71994f0c03d95a1575ac5ffc0a5f4bcf7cd5f1 data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json -1d52353b4186152022d830f51a1dc4f9d8fc445f data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json -339455b6ee68a18ac2327b24de6a704f21215303 data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json -479df256f03fd530e9f581ffcb78fad60fa877f7 data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json -193a8bad3433949fa30b0f291eeace262449e060 data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json -919ef6d1531a19ff51cea20dbb87fa8f253b604e data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json -7730551a27411eda38294675a469ef1365439080 data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json -58097f61cd8772e8e663e0bcffa5f9bdb142e07a data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json -c502b1e23f6e82769e96ea99527bc9af4b96cc5e data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json -7068106c12309e20ff683aa5b26309f0a80e61cd data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json -ff3c19f5e988e577bf78915328ddbe45e8796ffd data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json -4fb37caa654cefd018f888c591124b4723e6c7cf data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json -545ed325f4d86e9278fde6ee4327bd41cc711992 data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json -6b7612af6a46a77cea51446966bc3655db63f766 data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json -a3773553476087c114b1844ac5de5c210bf78417 data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json -a12a46ae116eb96a90a3e1af4b9a192e16598719 data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json -21ff6f5610f74d0edb06810e114e563ee03e487d data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json -67ddfcbf17607d08804056b143965e4b75421eef data/create/recipe/deploying/chiseled_copper_from_deoxidising.json -02c8593b2e22793ffd19ee0042eb6f2f5e334890 data/create/recipe/deploying/chiseled_copper_from_removing_wax.json -028d59ddb78acc2bef60eb5ecd6ad8ecc1c83d97 data/create/recipe/deploying/cogwheel.json -6ee9ccf012ae397c88e20905e6e83e62dcda0756 data/create/recipe/deploying/copper_block_from_deoxidising.json -ce2de7aa3ece73c8813cc60d9b34cbd6d175bc87 data/create/recipe/deploying/copper_block_from_removing_wax.json -c1475e08a35fbe8ceea570b54aabf467edfe05d0 data/create/recipe/deploying/copper_bulb_from_deoxidising.json -e902d2ca767d805c3187bd4443b4908008509da6 data/create/recipe/deploying/copper_bulb_from_removing_wax.json -09d3cf3e6b06455a3558b044bae5d3660912f2c9 data/create/recipe/deploying/copper_door_from_deoxidising.json -e4665e13815b50711cedf9e5353c67d2912c4017 data/create/recipe/deploying/copper_door_from_removing_wax.json -cce250ac1f7fd6763dad7d446aa5b4b130050167 data/create/recipe/deploying/copper_grate_from_deoxidising.json -52c6e027fe83c51b4f99c0e003c4b2cf718a3d3c data/create/recipe/deploying/copper_grate_from_removing_wax.json -5ed1ebba152c8a134719fee8e773201db318ddc5 data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json -c8299f90b8a06142dd7527d293481993f2890b1a data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json -dd1c4db467d1516d342ede57ed2cb20b94e7334a data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json -4b709b4dcee86f37fa180571e71417a33aa98c22 data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json -f843184066d8e858f2a565d771f2caf2decfecd0 data/create/recipe/deploying/copper_shingles_from_deoxidising.json -aba584990334fc890b26794bea8d9889460aeeb1 data/create/recipe/deploying/copper_shingles_from_removing_wax.json -52fa92475f6b60ffcdc3e332a1dfba3c608d6dc8 data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json -b25d5c8b0f2314688480688762915c58bbb46ce5 data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json -94319db2dc32f328f108120a9345e611e34852ba data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json -4f844528437316dc81da7f860d14d834e06af054 data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json -a2eca9e382a65e0ac6e25afbb62a7f0278a16b2e data/create/recipe/deploying/copper_tiles_from_deoxidising.json -0b0519a57ec96eeff084cf12a869fba21476d2dd data/create/recipe/deploying/copper_tiles_from_removing_wax.json -3e9b986ef08bc58d0637bda8d08dc59cc680b67c data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json -2645dcd3cfc11931dee01b4a3915c0749e17b1a2 data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json -8298338c20974075d6a806e24bd6ddcba3e331c5 data/create/recipe/deploying/cut_copper_from_deoxidising.json -cef8ffd6a774ba4069271b090de3045f18a8c73f data/create/recipe/deploying/cut_copper_from_removing_wax.json -1c4ae1f4abf91b674d662d313e3028768a1cc49b data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json -561e8f8de393b69e08f6224796f6e5ecb85c3a5c data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json -18abb7c9e2cceec680fdf05c1836ec21dbb4bf66 data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json -62c04c15c35de3839499e5836e8fcb9d99930d13 data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json -52eedacf4806baf625cfe9e57d3b5dd0645d1803 data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json -26775b71ab362cbf593fc69f75393e946cdb62da data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json -2da9b204a5a26311c1cd3bb3ca91d2d176acc825 data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json -2a78455824c9a8dbeb42ee58a3e6bb55a5a5aef7 data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json -a35458498b62748a07b78c3334ec92b35c8007cb data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json -ac54ec420f1ece4525d267eaeebe9f5cb63c683f data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json -6c4a07c3a92a6bf5d64ca718077fe12cda79ebd3 data/create/recipe/deploying/exposed_copper_from_deoxidising.json -888a1804cbe8ab3e53a7e288bbe6dc3fbc0239aa data/create/recipe/deploying/exposed_copper_from_removing_wax.json -8adc902e5d96c967ff73268cb3f82050a33a21d9 data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json -947a230c04b7376618598c33f5cf4afeea3dad48 data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json -f0363523afa7390980790f0be110adf3305ea850 data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json -0eb55445e40248e87e3b1b7360b871fb00e8e388 data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json -a6fa79c7a43bdfcea11f4a5fc6a2f1a6690dd539 data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json -2ddb9ddb0bc47e75d876b15b7463f462d59205f2 data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json -d3f036dc16d90725b5d51319ffc3c0e8f18227c9 data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json -c41b8246e80713059a2614daed488ed3e93ee0e2 data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json -bbda417a8fe017e7eae8effa34148a5bd8670627 data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json -405a4b64b1d0b0799f44e66798941f8ed53e6e2e data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json -77ab007ed3664f05a2a86ff9a9791b7f700f0cef data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json -03110ec5ae75a778650bca9293c794ba6e5b3d4a data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json -7ce7fd7bef944d34344392814b5b34641813f0d1 data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json -153bc06183e851a77a79f18f82fe7f1d5ff601f6 data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json -48fe5700c4d30ea1634e71ef3a0a164d01e9aead data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json -745dd426da651080c1a79f813323718fe3d59a07 data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json -b38c3ae420c857b8cb5061eb4c9fbf4b7f105f6b data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json -f0af0c97e8b67c13f04342fda0677dd7c2a31e36 data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json -5498b3c78b719f623c6542c8cfc3faf41262aa93 data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json -8dfa2cb0cb5ffeb32f30f7302a91ff36ace0f322 data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json -83b8f4260209cda3a720045b4a0d09159e3d4b96 data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json -330217c8f3951665579f2814cbc68691dd2448d8 data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json -a74cb06f432db1e4b02e3d8b39b2e5062aede5c0 data/create/recipe/deploying/large_cogwheel.json -2775911d1e0feff8d909962cdf41f4695ec97cec data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json -b887f75754feb0e15635b875136583c00956f45d data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json -d4487d6dcf98a5cafd72e5f0ede1102817c046ff data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json -46270451b5e03a7e3bb29436e36ee574d127a7c3 data/create/recipe/deploying/oxidized_copper_from_removing_wax.json -4d1058bc6593f33004e9be396c4cdfc1c69a2c3f data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json -ee9a6c12b3d6524e0d298ff7ee697f9facba91b4 data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json -d1bf42c1506417b45c9f82cfe18411928aa6ddac data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json -1a1b4fdecacd8c7a276d800599c86c1c7ab6cb07 data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json -c2aaabc795568765a12f5cc0255162b5688128cd data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json -d7ce7c225e597b83618dc60fa20e087c93e82e52 data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json -5ba94d9511541e7e7c9d7a991dd54ce237f3ec08 data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json -6cb5f66b6bf499ead6d19c0f6ed798b685441baa data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json -aea47af4333a33d63e4e8a930fc108272644978a data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json -b5246c26de881ef75157f5c169ad74a3a32f078b data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json -a8a4f06cdf30e5af737c5eb0fd5f9159dc57b0fc data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json -928c280ade8cd848f51ad015c0aef24e596234b3 data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json -34642b36d8c90964405abf37fb0d7f1aeebf701c data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json -336263e7f76d551470d663f80623c327e5db9f06 data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json -a903db21ec92e1ec54301541739d150dfd6be19a data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json -1f20d718a8a805ae78c8fff1e853faef71f743c2 data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json -f502c5f24b1204921f04268489c111fa4e4d12ac data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json -cdf17a534ea2781251de0f515858870ceaf2108d data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json -6ab710a97c4837993a2525abe629dfbe63a11994 data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json -b06c54bf6e7bcc9cac8654373f31a8b095a0c4f5 data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json -260f4cd83ef5f28781751c082aaa3cf932db74b3 data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json -ccecd566067fb01d885dccf12c9699e88edadef8 data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json -88c0ab8ac5f40745e93605f85f5f8ffb5f67a192 data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json -b35614781b38b05b3d25761a7c36eb4fa7fb27da data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json -d3507081b1b768f5274f4bf9ef11c06231193f46 data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json -1e01561343b56b00601ed96e314fb92951db05a0 data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json -a3ed49604835c73336cd19e4c3020fcc1571dbad data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json -38885de88e200e6e9e307893e6c5194553d04b24 data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json -67e5d504c9ae8a263a30b5478873fea899836795 data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json -0d20ef6d4e738841ac27cc9f8b8672acafb14133 data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json -90b225994f9c10e1a4f7467cd924ff87d00b6ad2 data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json -1e28d26aa29ed51d2b3cf08d2440792b05d67172 data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json -45cd7a31a04fcfd668f6d0954fae391f9c2b466f data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json -26031345f7b94e811b703e871ac2fd9ef4ef0cf3 data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json -f2d644c6d91a42736da2e5792c907ff95057b0aa data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json -ff84cfbf66c08e939c2c6e11e9f5edefb2f2e20b data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json -23aac385e17850c284f29b3f6c2b4ea95c797483 data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json -0790b25ff96b79371688bf75f2d0bfd992c2e072 data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json -1e974c2ae4277e485580cd111730e75d195a0b8b data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json -577022347fa37610d7ae14a59d6d5be3435bef28 data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json -bcfce30ee4a9100b8ba9b28488efc1f223c63a1f data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json -b35548e7656c4a8391dcc718e47fd3bdc5edf5f1 data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json -82dcf9ff209127980d0a66954ee12426f6da47a3 data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json -da2b8b9d0ee59f6442bc249bcd3ebf647b8409bd data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json -ce8637d39abd4be7ac9f20514dc24f313b84a951 data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json -1893ddfe5e7a9324ee60685d120f3c432f51d0e0 data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json -196911d9c8111dbe25e0888afa2168677be6e25b data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json -61cd8952345776c2ffdef6eaecf4b93fe25b597a data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json -8bc8d3b15d25e3eee05dfef49c1b64cd73013afd data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json -9dc4d1805c4869bb51fb5fcf201c444cf1bd963c data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json -437e30d38a5e265dab9f8e656f7e84d8c046574d data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json -124aa56bb9b1249e4eb11d3214269ca9ebcb475b data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json -d4aff87e4749d79362a2cedb076da994b3582d7e data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json -902c704836462905403552dbca9b81120e5eabd3 data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json -44fac1251122a96cba57ab800b6c9b2a592ec65e data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json -4468ec9031f10c7ea9ac01798b930d4a6e8b0004 data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json -bda28d6aeb54c95c37da9e8565abd366c67856f4 data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json -92b1c7f46f286a9b4fb9ec5198b1d3e856a35d89 data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json -6654d433f54c0a57a09642544570eb26db419e70 data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json -89bb3526d172d733ab2e7a67c70a5e4a73aa4abf data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json -1acff57f21961360ac3e681884a02dc62aec9d77 data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json -3e9bd4dccd65a647eb1cc7a0b35b2d8a95220230 data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json -9e4f0003607b44ac0ff7716ff4f4f6f722624bbe data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json -1ca3e241d5407e7c8c796c95cc80b84be317ba5a data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json -bac6349ac41f2a72151d8a60b2be00d58d714a90 data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json -fbf057a4ad6a421871bba60f66dd638b20afb00c data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json -e11f8a3cf6f41d2b8132ab42f4163bc38b9cc773 data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json -e2067426fbbb5f692f1ec1a0323c08e4554c2416 data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json -2aec37a6bbf0b085731301841da79e26781b8651 data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json -45d717cbee2d1eb412fd3d91324d210c496ce0a5 data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json -d2dde1330398db0b4dde0e7c3e1f71e96f58bc81 data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json -6cfd512a67e591def7abb15e6789ebb939a042b5 data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json -92bce71e9a83a8d62cb6d8d411ba427ff8bf7527 data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json -010fb078c5699a75cf429b57add4cd0da3e715dc data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json -3ef7bd25b762b1d6f36fe47e241d7c7e6ea36034 data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json -35eaaccf441c43c5ee0f51f4f1422dc5cb11a0a6 data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json -80a886e9116e8d7e478d20621355fd7b3bd2ea73 data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json -8b9248eeed869c98be0a7ad340aecd538b46ebdb data/create/recipe/deploying/weathered_copper_from_deoxidising.json -62055139ad0bf172596eff2bd18f3514f8eea5c8 data/create/recipe/deploying/weathered_copper_from_removing_wax.json -5717ec56bb78cb9e782d6dd1af161a56ff9d5dbe data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json -bc3063a8f3b0d4f9a0c387850ceb53aaafb5a9bb data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json -d7b71e08cf6d67207d385086bc93c1820baa6474 data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json -91d78abb654b7027429639515de0590724b18029 data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json -6e75010b52513475610b38f9b2715c3f1353c12b data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json -017359a98c2d5b87255e72e1fa6c633bda91a5c7 data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json -380844147b3d034d6a4fe44540a8a66444c97583 data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json -618b4f991b2bdddcb11069e8ca5cfd71f83f7fb5 data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json -3fab63d48637e2eca6ef0a6c644140247481ea93 data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json -7a6e80b9bea0d2c1c9df8d1f266e701bb623a558 data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json -7dd19715e05cf2f3611d7e89b1750aaa72dfa8eb data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json -e6858f2544f5419b2bcd1c1ea3adb7276a8520f6 data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json -07c8949814d3c5cfa472e593d93177d30b03b740 data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json -3f89f2125f778f7de8cc3929a906d2517b6e57be data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json -9a60a122f7065851d8869513ef5590f8bc9f099b data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json -4566b5a50bf75165121223c66e80ae3e4a0134e9 data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json -012f7744aa0e34c0332bfdc76efd435983b67c7b data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json -21469f86f503a7c6bff467175558a5bde1988dd4 data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json -6434ac69c5021ca39018703ba58ae3170c5c139a data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json -7d8c72a593a6a1b295e7cdc5892d13c39f98fad6 data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json -78ff5aa43f23bdf184d7e40c9d1b09c093196f25 data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json -7bf411ccdf292c0bb367061d0befa296765791db data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json -c7f7d1b135507fe1365bce9cbee200cf00b5786c data/create/recipe/emptying/builders_tea.json -b81dc47c4b875c2602ff4c52906754de0a8135fc data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json -5ba4a699215b41e606a429a09f207b92cd3dea13 data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json -a74b7b67a0b60419b28a3a8fa5ebcf86c0d5a9e2 data/create/recipe/emptying/compat/neapolitan/milk_bottle.json -7aa973ac3c046d9eece53d723c72dc123feec522 data/create/recipe/emptying/honey_bottle.json -726cde8bd9c0a7288d603edc6f26adfcf4012864 data/create/recipe/filling/blaze_cake.json -3074896b1df13733a4d4ef742a3e5a015950cc78 data/create/recipe/filling/builders_tea.json -ee8877a8b9ca8445db00484c5a07993944ddd657 data/create/recipe/filling/chocolate_glazed_berries.json -a8cdc10adc82c586901ec5ebd1696c822ed3181a data/create/recipe/filling/compat/aether/aether_grass_block.json -1d37ea04cafc51c46f62383c44b92961a11a2f14 data/create/recipe/filling/compat/alexsmobs/lava_bottle.json -3c89f3befa9eff9ed42ae93fb1e2b1e4fd6ce9d0 data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json -ac38ea159b75150902468db5ed8e60551265ad28 data/create/recipe/filling/compat/farmersdelight/milk_bottle.json -7348af18d09303fe5229660f82f22aed972ae424 data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json -af18e63c14d89c8587e8f20b619fc06f868eaf2f data/create/recipe/filling/compat/neapolitan/milk_bottle.json -573abaf736958525a67ae6640509fc17528aeaac data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json -4427f9180dfc2f2e84c46194ae31481010a1b3af data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json -eec9ef71f382fb32c1dfc6b3bbb5f235d7182b37 data/create/recipe/filling/compat/vampirism/cursed_grass.json -9d0d55bc34ebc809799dd336b8a9ef8106ea213a data/create/recipe/filling/glowstone.json -220af744bf0147b55bf0a6beef6f1714bb108427 data/create/recipe/filling/grass_block.json -62f1a834b4d6aa3a5c8729def72942b63c3c8935 data/create/recipe/filling/gunpowder.json -0c105074403bb03009c1805d4209a046f9aed387 data/create/recipe/filling/honey_bottle.json -c6116a9ebf9a245c0c567f269b63d24e1e84145e data/create/recipe/filling/honeyed_apple.json -66b6d153714da9a5396134977d0057d2eda4d779 data/create/recipe/filling/redstone.json -baba1337144d56c7071636542440ad9e9dc5dc24 data/create/recipe/filling/sweet_roll.json -81417df248686ce6c67450ed0c1673f3cef3ee3e data/create/recipe/haunting/blackstone.json -a932b587fa309ddedbba413671031066f58b2f77 data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json -2ac65718b6ae942243902396e9f4c3cbf80a1d86 data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json -92c8ec54197e94d9da6b1e9620a4e2ebcf30f60a data/create/recipe/haunting/crimson_fungus.json -125943ea74ea5ffaa1f5fac3241929d3c81e1934 data/create/recipe/haunting/glow_berries.json -1143c0ccb1bcc11a1bb8887267781d55a63ead6a data/create/recipe/haunting/glow_ink_sac.json -ea979ae7428c2d8f91aa5adf98e8fc40ef5631d9 data/create/recipe/haunting/haunted_bell.json -584740115b830a2cf0da23c22d4901116e68b047 data/create/recipe/haunting/infested_chiseled_stone_bricks.json -23f362ec138375ed1eb96c78d5aaedf530bcf938 data/create/recipe/haunting/infested_cracked_stone_bricks.json -6360e246668773925007560031b03907152daa68 data/create/recipe/haunting/infested_deepslate.json -ed823da8d088f1c9d0caabe196f2eb2bdb401a24 data/create/recipe/haunting/infested_mossy_stone_bricks.json -a5b69ea3e113936e148a9ab1437af3a1c338c931 data/create/recipe/haunting/infested_stone.json -a6d8f7616be7a2f10aac59c0e45380c3b7495a76 data/create/recipe/haunting/infested_stone_bricks.json -19afdcd61e74737494c2677ffd5b4f70152d3eb7 data/create/recipe/haunting/lapis_recycling.json -b2b410537c1f3d15cdc5317e21b213ce72dfbaaa data/create/recipe/haunting/nether_brick.json -3582049032abe369ed237d7f5aa313232f9f5d65 data/create/recipe/haunting/poisonous_potato.json -c5feac4935f904c61dbfd83b31ae860a79c5660d data/create/recipe/haunting/soul_campfire.json -29d9b983075ac0589b95c342b10ec7ff6400109d data/create/recipe/haunting/soul_lantern.json -497bf1e4ff797dfa6366e22af68370888841e4f1 data/create/recipe/haunting/soul_sand.json -c132d5788ac8742bbb0855fdb6ec251aed08b424 data/create/recipe/haunting/soul_soil.json -e5d01b481ed90eeba24465930951072cf92a7d1d data/create/recipe/haunting/soul_torch.json -77ba897748445ea48d4039052a3f5b71891e31b2 data/create/recipe/haunting/warped_fungus.json -1354bd1e20a354ebdc02f0b64583a84b66710c23 data/create/recipe/item_application/andesite_casing_from_log.json -4a7eba889f00cb78390b2ec2e898765267afd125 data/create/recipe/item_application/andesite_casing_from_wood.json -a695cbc81693c8a5cbeafded996a14878511b019 data/create/recipe/item_application/bound_cardboard_inworld.json -42feb90d9f6e1621d7cb3678a4914d6348cb73f9 data/create/recipe/item_application/brass_casing_from_log.json -33dd2facb59ff5221321f43012907053ea279080 data/create/recipe/item_application/brass_casing_from_wood.json -5ddf3c433e2e1c4a395178b1a29c1a8c59a5a2da data/create/recipe/item_application/copper_casing_from_log.json -322ef2cd670349724a209d6600008eb4ce5326dc data/create/recipe/item_application/copper_casing_from_wood.json -6bfc221fd7a57905ae963bffaa759ad24878e2ee data/create/recipe/item_application/railway_casing.json -9b2e2423169b717b0268291d3947d781a9d3765a data/create/recipe/milling/allium.json -3ef386194ec7b4a6339eb499f549d8716cbf2a19 data/create/recipe/milling/andesite.json -0f9f262ea7d9c9ca302fe6939b040dce8880ac0e data/create/recipe/milling/azure_bluet.json -d4b9358c0c57ca86b16c85a9caedf28692ad577a data/create/recipe/milling/beetroot.json -3e64078c4106c002f20e193811fca7a9cd21779b data/create/recipe/milling/blue_orchid.json -b0eb49032833950997ca0d5ae74c205e243b537e data/create/recipe/milling/bone.json -0460bd1d1d14cea76b1f951d2e7a3d1a34bb0c1d data/create/recipe/milling/bone_meal.json -54a0d4d045884f9780441fa043436fa2964dcb6e data/create/recipe/milling/cactus.json -cdb1e22a2c3fe61118596b1dda9b31050eb50921 data/create/recipe/milling/calcite.json -c1cc76218d3258bf722ce31994497d1d4669676a data/create/recipe/milling/charcoal.json -c693e0392307195893d0fc9556c1ddcd65263f77 data/create/recipe/milling/clay.json -327a07e241b4d48414e3568a461b27104996828e data/create/recipe/milling/coal.json -a91ebb9516f2267b395d872ba802bfcc55b88156 data/create/recipe/milling/cobblestone.json -c5fbc261de0ee7eb24ba7d52141d9604bb6dd45c data/create/recipe/milling/cocoa_beans.json -c5f34ab73d3e29d7dc991be23ddbf03d77a78fdf data/create/recipe/milling/compat/ae2/certus_quartz.json -f3421edb54005a3097d795a13fed4701b57188b9 data/create/recipe/milling/compat/ae2/ender_pearl.json -197d778d96355d38c9409d8de0f9712b4e727877 data/create/recipe/milling/compat/ae2/fluix_crystal.json -9a1a42cc61e5bbcd36d00384e2044fc94c1d828c data/create/recipe/milling/compat/ae2/sky_stone_block.json -16fcdb28abeae66611233a496ce5ac587f988865 data/create/recipe/milling/compat/atmospheric/arid_sandstone.json -636c00721c43dd5038fbf4dbd0ca0886b61093b8 data/create/recipe/milling/compat/atmospheric/barrel_cactus.json -87285ba36a4ff0d3355c29bd459515faaf4d3a39 data/create/recipe/milling/compat/atmospheric/firethorn.json -fd4ec905d5e34dbf258be58552815acc4d87f4ca data/create/recipe/milling/compat/atmospheric/forsythia.json -df0120ae4b343e1ddfc9cd69df92f69922d31c99 data/create/recipe/milling/compat/atmospheric/gilia.json -3f26a3af08e2bec2f50a2b14f38ed7959cfd20b7 data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json -7052492b61af9eff14965863f5d954bf3804dcbf data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json -5dc4eec3a4b5d7f3cf831c7b3f2863d8b7370c83 data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json -137e5c7fe55101b589257d3524999727f3f2dec8 data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json -ce8fd146b73c8ac550feaa6ca1d2f8e9f495f7c3 data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json -764e8ea53a0e6c116b01e345c51344b7d72c6c91 data/create/recipe/milling/compat/atmospheric/water_hyacinth.json -ca8d0772b11d7141a712fbda38efe47542554a37 data/create/recipe/milling/compat/atmospheric/yucca_flower.json -02a058870005c90db10c002ece82ce5a0bd19345 data/create/recipe/milling/compat/autumnity/autumn_crocus.json -840fcc781277319df39f0a076b3df7ab064b613c data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json -e214d96ba41fccafd0596298d6703c6399c35461 data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json -44da4a4fe167ae98f504b2e3c9e78c08130c3750 data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json -1a2d2291420acc27597787c0ac949d5ea67cb753 data/create/recipe/milling/compat/biomesoplenty/cattail.json -3236d52239b1af8af49e5b8b296dd6a8ccea2a68 data/create/recipe/milling/compat/biomesoplenty/endbloom.json -08705585e2644291239202d853105843f6c9063a data/create/recipe/milling/compat/biomesoplenty/glowflower.json -ced7a2c817c13bc49ec233e1bed8b92ca5ea8616 data/create/recipe/milling/compat/biomesoplenty/goldenrod.json -bbf4c9224a49bf44f38a121cf6ff21494216a92e data/create/recipe/milling/compat/biomesoplenty/icy_iris.json -6fb6cac524b119c35c189e588871d819a2fc9dba data/create/recipe/milling/compat/biomesoplenty/lavender.json -9a46a39f8fe62f56cf55f687b06701cf68cdf7fa data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json -d182e866bc16ebb6864eb48a4069e813091f2add data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json -da460e9b565431589377880eae7f59924c4939d5 data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json -8094d169b251a8189c2079fdd1f3fd3ce068b088 data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json -35a325b6dea73b0c6b82f04c62e7d28590ba2ee3 data/create/recipe/milling/compat/biomesoplenty/rose.json -20e4744e1291b4daede18bd5161fa2e8351f982d data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json -19453ebebb50dc11e117d9e85e5858bf591165e1 data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json -655a7dc2045932d9dbb241c9ab45cabdcb1ca607 data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json -35738533cf1dd20bd8b41447cf9cb7906fceca8a data/create/recipe/milling/compat/biomesoplenty/violet.json -28db9dd5297151c87a1a293ea4d82837303a967b data/create/recipe/milling/compat/biomesoplenty/waterlily.json -8ba634ef4e7db1bcf0ea06799d530a9dc839cf56 data/create/recipe/milling/compat/biomesoplenty/white_lavender.json -b71286aed5aa4f8e2cedf836922211f4b6706155 data/create/recipe/milling/compat/biomesoplenty/white_petals.json -220c5f0ee365417f6283168a69380f86022cb615 data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json -e1bd311c5b9374adc747d2fd215683da8d20d9b4 data/create/recipe/milling/compat/biomesoplenty/wildflower.json -d1381de24715ea3a17aac5dd7c4de96252dfa870 data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json -2680e99078a6c37bdce4a5f0ce31400164309bdd data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json -fab5e95874ed2da37730a2e98b9d74cdae941475 data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json -f1b92201e90cb64f72e1f6e18482063779676a99 data/create/recipe/milling/compat/biomeswevegone/amaranth.json -9d6d78a4d083a9a4196aba6b6bad0145fce0d106 data/create/recipe/milling/compat/biomeswevegone/angelica.json -8c0bb6cb0483a720eb3b84d82d60b44302f8a37f data/create/recipe/milling/compat/biomeswevegone/begonia.json -d94ef135a5f2a5c417ac2803d6a8fce700fbff7a data/create/recipe/milling/compat/biomeswevegone/bistort.json -6dee38fd5b93e3249e4c246fb40653db340dcacc data/create/recipe/milling/compat/biomeswevegone/black_rose.json -c7d2359622e514a46aa8f2e337cba2d33269534f data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json -28dc063ec53d855abb790aa59896fa034e19bfc5 data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json -595929276fb57a7852b3ef2121813c9c1198c86c data/create/recipe/milling/compat/biomeswevegone/blue_sage.json -2c464094964f5c017cfb19d6d2754f33e4211392 data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json -5eb3e823098a06424f30ddaa08cd2cfa675a4411 data/create/recipe/milling/compat/biomeswevegone/california_poppy.json -cb0887cdb291d0623063f751d839e3fd90a85646 data/create/recipe/milling/compat/biomeswevegone/crocus.json -12cdd1ba3af2ae58788dd4c34290c5ad89e5289a data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json -6e1db1a8d002d14c532edacafdc5414f268f9740 data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json -8aeb750764cdeb064eb5f0ab2a6943cdb41f5510 data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json -d0db9e14b764208ab43a21e2b838eb3d7c79b1a5 data/create/recipe/milling/compat/biomeswevegone/daffodil.json -a3e0ea34c1258cf71099afd99bd9e27c68cd485c data/create/recipe/milling/compat/biomeswevegone/delphinium.json -b497cc2136d788c6cc0a628001330ee499ecbf90 data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json -01b45347e7e451d2a1e429ed36691f8d806b56c2 data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json -f8e6098f0d76a02706a8d88d7aa97998cbb1ead7 data/create/recipe/milling/compat/biomeswevegone/foxglove.json -39a403e4fb086ae84dda5cfe39f5bb44f9310631 data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json -25372e0e271d4231086d1110edac8a73defa5360 data/create/recipe/milling/compat/biomeswevegone/green_tulip.json -8f839eb5e8b33605463506e007c697a1ecddc1c6 data/create/recipe/milling/compat/biomeswevegone/guzmania.json -97b98566132c2c70941546a87c421fd65d0f8b29 data/create/recipe/milling/compat/biomeswevegone/horseweed.json -20f9a97baebf8dc21471dbba0402702b7eb9859a data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json -43c996e62a364d5e7b60ed3a7a1f11da8551ed72 data/create/recipe/milling/compat/biomeswevegone/incan_lily.json -5c31507cee552b1624be261f3a0bdb7fa776ee32 data/create/recipe/milling/compat/biomeswevegone/iris.json -7d832743a96de0f831384f253b6206647eee0e02 data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json -ce4f5c8050c7970f2d10797c9045e4ac24b2cbdf data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json -4fb2f62a23efbeeb84ffe6802b65ea739668f745 data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json -fe1e1d60420fb8dfa8bca3a590e977e517f40693 data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json -10790abb9c475480036c132df648cfe7bb7c8a6a data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json -7e50c83c8cac57c676a89a85eeef4a86c65f0580 data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json -fe9362cf4c01ee1abe136a97ee8e5d2a8351c5b5 data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json -f6ba1b0f900fcadb0c5e5276b1cffb45a4d2a0dd data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json -1b06b96575654d0ffff5484a35fc65c09431db8b data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json -78fed3671c472331af4dc83986b07a245737ca3c data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json -5ed0e5fc0a36941674ea05d3ae617d8653e4c467 data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json -94ae816896b984ff69cecf7842ac5dffd17fbfee data/create/recipe/milling/compat/biomeswevegone/pink_allium.json -e57bb0de68a62f43846c6440047afc4870e352bf data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json -e3e9e8eed166e6e3a3e1aeeb309f79a8256a7853 data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json -8f491af3d657061f60e267edf50b7c05918d65a7 data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json -ffa8fca6d82717fd68094631fce3ecf765e9bb19 data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json -e7148b0a7343f476d37c745cbd970ce03eb126a0 data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json -380ff88451e60075d1d635913094576a03aa9540 data/create/recipe/milling/compat/biomeswevegone/protea_flower.json -168cafc3ca88bfc12fa549cad0071ea13be87889 data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json -e678d6ada0aff34f50c22c36867a9e9992c79d83 data/create/recipe/milling/compat/biomeswevegone/purple_sage.json -a0d725a39615c937960806243ea9b001f366c0aa data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json -4327801bdc81f55bac0692b8ab7c026aac6a66d5 data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json -ebfeea8f4b3f3100a495b5ac159a19040d4c69ca data/create/recipe/milling/compat/biomeswevegone/richea.json -ffc616e1e7095658a9d24e636dc0d5c0f185a7dc data/create/recipe/milling/compat/biomeswevegone/rose.json -c968a375ef22c30fa52fa8743b8a982057cebada data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json -91561b8747b057a9e7278920f008539cf47f7186 data/create/recipe/milling/compat/biomeswevegone/snowdrops.json -0b1b25bf8ab63fca67977d3b15acd8e278b6e413 data/create/recipe/milling/compat/biomeswevegone/tall_allium.json -4f4ce324ae3212a98060456939575f7bc822de99 data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json -b8711bd3f10a57f6d821a6d0db8b5bcee856ef3e data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json -530f1f806d8b62fed71804b6afb7542a07cb0730 data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json -b162f8e13b49463cd760bac6a231fc0a37f4bdf2 data/create/recipe/milling/compat/biomeswevegone/white_allium.json -0db816c0d094e182c596bd3680383e6208369b6a data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json -d1d319dbddaf7d3156a0871e27715bb1a9482bf6 data/create/recipe/milling/compat/biomeswevegone/white_anemone.json -9dc2e0adcfceac3e955487cad27a8de0362e4536 data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json -8336b928f2fa9fc566d8ec86c6f826b0b3df015c data/create/recipe/milling/compat/biomeswevegone/white_sage.json -68edf7c8e1d974aff1b12cfcf483e8595db5bef5 data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json -b8b09c71880755e1415c6fbf8cca1b043f077a31 data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json -ee3ef95503a29a0064e020c0db4a080da79afc46 data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json -2c206528819748960bc6a5b456c01f69670e44b7 data/create/recipe/milling/compat/biomeswevegone/winter_rose.json -6a72b0e201a36f253fbfd55683e400ea1005c80b data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json -89baeea38295ca66a7f5c4d20b8d825d9e65e859 data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json -601bd54d11f3c6ad1ac23e8fddf1078d491bcb6f data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json -56e8be17e69ba84a7b089bbcd9215405e1ff7216 data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json -a87fcbd1da70b8088b9c57683cb76b3e7ad3a103 data/create/recipe/milling/compat/botania/black_petal.json -85d3ddb55cfac3c0c2de59d990f1d8a44c1781c8 data/create/recipe/milling/compat/botania/blue_petal.json -5d65d42f9caf0c9152682d1e237199b4dcb414bb data/create/recipe/milling/compat/botania/brown_petal.json -876b5da2a4bdfecd5ddff240d559d0dd5618a377 data/create/recipe/milling/compat/botania/cyan_petal.json -6e8d0030d276c700e241bd8cddef4bb3a8cc94a7 data/create/recipe/milling/compat/botania/gray_petal.json -9b82085ee2c2e6ab77712a11ae57174dd9762d84 data/create/recipe/milling/compat/botania/green_petal.json -038f09a736b4b1899d9e55bc007394b802d708a6 data/create/recipe/milling/compat/botania/light_blue_petal.json -73d8b9f05f07d63af71ef8c4d2ee3c569b2944de data/create/recipe/milling/compat/botania/light_gray_petal.json -507a5f78133394de63aab5bc4164cd7375c4af57 data/create/recipe/milling/compat/botania/lime_petal.json -bfd358997716a640b38f7978f5867789913df1c6 data/create/recipe/milling/compat/botania/magenta_petal.json -5b980fb3e3db0e2c53d6bfc510326a97cda972e3 data/create/recipe/milling/compat/botania/orange_petal.json -946518cf82166d3aa1ea00e7eb6f4daac4f3c92c data/create/recipe/milling/compat/botania/pink_petal.json -c064491ca5a4f7b96313840f317313fb5e64169f data/create/recipe/milling/compat/botania/purple_petal.json -9e27600afa27fceae12f26a487be64ebd05ee607 data/create/recipe/milling/compat/botania/red_petal.json -23570f3cdc77b18ab1b9b8d7e7d11e1a555950fe data/create/recipe/milling/compat/botania/white_petal.json -79c01ed4829fdbc2247937694b58ca45aff22d20 data/create/recipe/milling/compat/botania/yellow_petal.json -0b6c594bdc1c0ed446c6b4198056eee79a0cff0c data/create/recipe/milling/compat/buzzier_bees/buttercup.json -d270bb517cfc8b17e51128894f2cb484e114d7fa data/create/recipe/milling/compat/buzzier_bees/pink_clover.json -5a51337ccc252af5216528abe16119eda363f615 data/create/recipe/milling/compat/buzzier_bees/white_clover.json -d128b453db9c8c7a80192f88080d17ea383f0131 data/create/recipe/milling/compat/druidcraft/lavender.json -8191f10be5cd537b3ef667980878729456e1ba03 data/create/recipe/milling/compat/environmental/bird_of_paradise.json -d499f41985b7a7266e5e32f6510795c57ef5d67b data/create/recipe/milling/compat/environmental/blue_delphinium.json -78f85af0e31285281ddc82fba3753e51818bc610 data/create/recipe/milling/compat/environmental/bluebell.json -fa43dbe46a67a651d11774965ae063e517f27711 data/create/recipe/milling/compat/environmental/cartwheel.json -eb55f3aeedbd30edd462f7e7afcf32ee5fdef406 data/create/recipe/milling/compat/environmental/dianthus.json -a995bd9995fefe2f3ad341a4c8876eff3cae3536 data/create/recipe/milling/compat/environmental/magenta_hibiscus.json -2a86f2d8842ac3581408ff488cdfddcd4bdf4488 data/create/recipe/milling/compat/environmental/orange_hibiscus.json -e1350a00c5bae564dc74d5ae53b9f10b7458e6be data/create/recipe/milling/compat/environmental/pink_delphinium.json -aff022284053da7fa2e4faa3f32eb94e1e950541 data/create/recipe/milling/compat/environmental/pink_hibiscus.json -647cb4864c385ce16874a6078ea69cd5a423ace1 data/create/recipe/milling/compat/environmental/purple_delphinium.json -376d0ea791dc124aeb5647325ed7470f1d127f6c data/create/recipe/milling/compat/environmental/purple_hibiscus.json -04b07bf2820547923d2b4990819fddbdddc351c8 data/create/recipe/milling/compat/environmental/red_hibiscus.json -536ecbaca28c8acca3575dcd87c4e1c4129611ea data/create/recipe/milling/compat/environmental/red_lotus_flower.json -3da925d61271efad026f72de1d1300da2d55b1d6 data/create/recipe/milling/compat/environmental/tasselflower.json -65048c9ed689c9c232e3733444501600b95c28dc data/create/recipe/milling/compat/environmental/violet.json -6aeeca369c69b04b490c2a74c01232eda6eebcdf data/create/recipe/milling/compat/environmental/white_delphinium.json -e734072af520c3afb977c6fc5f2b0b518ed48dcc data/create/recipe/milling/compat/environmental/white_lotus_flower.json -aafe7160b3819fd41752bf0230c08429140fd670 data/create/recipe/milling/compat/environmental/yellow_hibiscus.json -d76e7b2ee813db0605de3f720887c06a3dcd84ec data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json -6de51f1e42b6716cd3b48a916b53333369c242dd data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json -62c4a845c3b9372ceda36bb2ded0a74360224c36 data/create/recipe/milling/compat/regions_unexplored/aster.json -8175bbcf99085c5e1030f77dbe6f099dc2396486 data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json -06fa5e25bee66e0c528fe677cecd088185d86396 data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json -e37303f567c63e0adeb233cc36ffc68ec134cddf data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json -f00693eb8eb5ae6dcda5a86194b4516e5e04001d data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json -7e50288c44a296ef456792db0fff786210cc134f data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json -49e3a6d0b1ab07a3e614ff3f89efd82183aaed22 data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json -7a1148c8f4acf5debd34f3cd2bf01775f8180734 data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json -dcc237e36db318109ba9c98c256a4acf498f4ae9 data/create/recipe/milling/compat/regions_unexplored/daisy.json -f7f957f656f82755528f15f69dbe8ff5a5af603d data/create/recipe/milling/compat/regions_unexplored/day_lily.json -3e992afdd1d2edf240e086666c1b01c8bc824267 data/create/recipe/milling/compat/regions_unexplored/dorcel.json -0786d3252a2d61f7b066fd6026004931c48cc5ca data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json -7143ceea079ae6dfda3d34532ed136680e4d5c7c data/create/recipe/milling/compat/regions_unexplored/fireweed.json -fd5213a161accd5c21dd649d785bcf6f2232a8cf data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json -0bf5efdec56aaa591d4d13744b92b205a262b285 data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json -a98912939b97493647f8c5522850b9fa5de3edf4 data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json -3f5a6799619deb0b29eb496c222d081605dd862f data/create/recipe/milling/compat/regions_unexplored/hibiscus.json -b0782138db5e92eeb0731480acc71e061520edf0 data/create/recipe/milling/compat/regions_unexplored/hyssop.json -2d280a0614e54ccbc0251ec9685e33b61538dcc0 data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json -480383a1a7a1b951b3135cbb310ae7f6b05ad02f data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json -78882e9851994d6b3e99b274b97dac12300d2bdc data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json -047630aabd8b0cfae443c1e25d6b4e41b2426b84 data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json -890b907ae65d48d62913abb686b1935750867aee data/create/recipe/milling/compat/regions_unexplored/mallow.json -39110a1122452214d23f54057ff06e8552ab8bf7 data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json -6a8b7e8c9fc5a1c56372a1352855866b95e30a9e data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json -d049f125a545d62cc6846bf57d7595d969742239 data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json -bc0953f22de694e88aed036eee090170835df241 data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json -04245948910c26d459af6f499ddd149af3dbcc2d data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json -73d59ed48368c18d34b0d837c171ccb12aab659d data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json -70ad5463a18c3b7e38e650bb39b7eb23a90fcdce data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json -fbfce971d8ae0d90f1f5d74f975e762eefc093ad data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json -3dd297038c0e99a2ed6f03199e84003cc6fd1634 data/create/recipe/milling/compat/regions_unexplored/red_lupine.json -da6112f4c0cd47314663202ed6b96e73a14b3bda data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json -49a0680f81b2289f51008eb1f31611abc62bc6e0 data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json -0f1044e5b848f97709663d12d7f1e110e4c42636 data/create/recipe/milling/compat/regions_unexplored/tassel.json -2b860bd49ec4ea8ea36edd7b3521754966c75171 data/create/recipe/milling/compat/regions_unexplored/tsubaki.json -9974fcdc43468674d6136fb31cd3d6b436bb51c3 data/create/recipe/milling/compat/regions_unexplored/waratah.json -9ccac7cd426e2beac2966590f8d542ddf57437a2 data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json -618ad18f11840c325ee1e55f95639dcbe858c2b5 data/create/recipe/milling/compat/regions_unexplored/white_trillium.json -be5c2f3554b9cb0af82989411d7a7c3f6adc5799 data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json -ef90e761a3dc2e6d5e68dbf9356d5c8f2d4d6884 data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json -32e6e1190a0028ab0bc962f19ae7547e99d0131d data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json -10646fce2e997a1a292390983a697c4260bcf8e6 data/create/recipe/milling/compat/supplementaries/flax.json -4d37c7cad09e6ca6b0457d1e206114cb6cbae4e4 data/create/recipe/milling/compat/tconstruct/nercotic_bone.json -900c15cb97ccc63936dd39300ca70f3d65e93db2 data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json -bcbf73dda4b0bb101bb4ad69c57c83d40fd5655f data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json -e58ba598883c4879244afeef9cd00d454c3844e1 data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json -d98cb8303f23906b736b88bb108d0a91673bbb7a data/create/recipe/milling/cornflower.json -d256f9aaee143bf669002239798a9649bb777146 data/create/recipe/milling/dandelion.json -0f7508e759d3a9af5b740f8b749672d9cac3c6bb data/create/recipe/milling/dripstone_block.json -739f5d36056902ac4d94b1e8c3646be5c5a90f4c data/create/recipe/milling/fern.json -16a4e6e59f67b20baa5d5df934c4613d82a44d81 data/create/recipe/milling/granite.json -9a025dded413b2c77a223660cb65d11edac8eaa6 data/create/recipe/milling/gravel.json -0076077cc059f5f04fb72005f4ce3069ef3a2713 data/create/recipe/milling/ink_sac.json -e534c624aef2d25bf18c91162c67f53c03bc9dbf data/create/recipe/milling/lapis_lazuli.json -03669fe45abcdb1f69674645989aa95d59e90609 data/create/recipe/milling/large_fern.json -91124df181ae0b6756e1b308020f2511681c753d data/create/recipe/milling/lilac.json -7e30f6acc0743ed610d167739975e1c1ae18a46e data/create/recipe/milling/lily_of_the_valley.json -cd0b728145bf87447a706ea851ababd2174872f3 data/create/recipe/milling/orange_tulip.json -1684bafd7f515982a5aff12769eb0c22da8e3813 data/create/recipe/milling/oxeye_daisy.json -d749e6cd0c6cc7642874aec752691239d90a08ce data/create/recipe/milling/peony.json -e8fc2266927b2e95da3e7827ca4923631881343d data/create/recipe/milling/pink_petals.json -141ca406d9db4f1c9b84fe4982d678266761d969 data/create/recipe/milling/pink_tulip.json -6e1e64bd82c76dc5bfc2620ad3cee63f0c3a4580 data/create/recipe/milling/pitcher_plant.json -0ec6a9f0f5557a4315e6f18a80ca733496897093 data/create/recipe/milling/poppy.json -52d8661437f82fbeb1d804c78c6d2115c48b6223 data/create/recipe/milling/red_tulip.json -d1c8545c4911beb5ebb1a3de00a958870a19d4bc data/create/recipe/milling/rose_bush.json -2cf668febc294a5cd8950e06b12030ab5759d851 data/create/recipe/milling/saddle.json -e8ebd9069d984c03a061569e8a414ab3330139ad data/create/recipe/milling/sandstone.json -92d7feded8f1a6869fd5909e400dc2491952682a data/create/recipe/milling/sea_pickle.json -7232387c3e6f6379038fdb6ed576b3926a058ed1 data/create/recipe/milling/short_grass.json -5d23eef7aea3163e134625b1f5c871fc3dac9905 data/create/recipe/milling/sugar_cane.json -7f6dc55febc69146c20c9a753f17cdf1d558873b data/create/recipe/milling/sunflower.json -4f9b4d1c31486daf79bff764cb15813dd9721544 data/create/recipe/milling/tall_grass.json -b13a84dd9042e92280dba1541e621b33b7ec0041 data/create/recipe/milling/terracotta.json -1cbed5e6f86245e5d9e56663d37dbc3c111550b9 data/create/recipe/milling/torchflower.json -9813d3d07ba009a7eb47159e200c88c2676e2c80 data/create/recipe/milling/wheat.json -3beef87d08a2f72b1bdb7ae978b17eafa73544c0 data/create/recipe/milling/white_tulip.json -f89fdc574a3168af94d4af81293874d2ced8f697 data/create/recipe/milling/wither_rose.json -8933ecca49bd48ae6a312cb94bf7bd39a78ace62 data/create/recipe/milling/wool.json -df7e7efc67d7d2f2d410cf3685c9c6bf922ff10d data/create/recipe/mixing/andesite_alloy.json -b484f6febeb2f966591591fcd93623916ca4f23c data/create/recipe/mixing/andesite_alloy_from_zinc.json -8c2b237b7d0007da93c7c39a6e17d6980e3e777f data/create/recipe/mixing/brass_ingot.json -05de9524677e27e29a3aac12037ef8ce05f288d5 data/create/recipe/mixing/cardboard_pulp.json -d00f57450dd818c43dcae5afb1baa182ae72588e data/create/recipe/mixing/chocolate.json -5b4406c5cfb8aaaf258ac1a21f15c7b05398a225 data/create/recipe/mixing/chocolate_melting.json -e7fa4946405b361f63db16ca62dd7122c8add1c6 data/create/recipe/mixing/compat/ae2/fluix_crystal.json -a70b5a2c1d834071eb5da835f66d96235ead0205 data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json -b2891762a0193de25e51e40c92ddfe15da3b1ff1 data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json -ec7452109cec2abd6339b07666ef779508418bb6 data/create/recipe/mixing/dough_by_mixing.json -08cc8d63081a087c61ec535fc063afb2261800ce data/create/recipe/mixing/honey.json -752c5523f77bba865e8ff555a753be7a9c8ec496 data/create/recipe/mixing/lava_from_cobble.json -e5006858050569f2391e6d4c2c773a800ff25b66 data/create/recipe/mixing/mud_by_mixing.json -1f36fc93d49212140d020527393e134275cff6a3 data/create/recipe/mixing/tea.json -9a2e41b864f672445b1bceeba64a4b9a87ed8e18 data/create/recipe/pressing/aether_dirt_path.json -34c57028f4680488f18817438f32b05d31032d48 data/create/recipe/pressing/aether_dirt_path_from_grass.json -d1181274ab379daf8961b7cca0a0b13c18fd28c6 data/create/recipe/pressing/brass_ingot.json -8eed3d287ae4611c224b642e5f655b6e1d59771b data/create/recipe/pressing/cardboard.json -b39c071ec6d6dd6619e4f75da6cfe66c7775ddb3 data/create/recipe/pressing/compat/atmospheric/crustose_path.json -7d3f71d18c7c5c75da8d0155cfc80fe8a8dcc27d data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json -c206883f399be3f700c2eb9465e4147abb4180ba data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json -96d0fb48997227dd02c68239cf786a8f2c53cbc7 data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json -3b65899febb86f1a55e98f873ca58b959cd302fe data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json -d654290c75ca8e73b0c6eeef7f5f25cd9cef63d3 data/create/recipe/pressing/compat/betterendforge/end_moss_path.json -1b01d0361d2f8b3647d230bc4a8c00fe81cb48f8 data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json -c54388708dfdec4a93c020bda7167b62b1cf087d data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json -6ce1ac57a46c3cde0a1e17cea815c99e675600e6 data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json -ad48806f090e484d30618991d97c28c770e337a8 data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json -97848eb230db234da4e5d7a8f8e929db9454d118 data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json -41a1a9fb86ababff62a587744e67fe170f8a6b9a data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json -943801c29b451e56d4db381872d888f369b0885b data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json -901b1b87824c9bd2e402af8f9fe96c492a74aa00 data/create/recipe/pressing/compat/environmental/dirt_path.json -7bb33457151329dc4a98443bdfa78e9f3c4a78ee data/create/recipe/pressing/compat/environmental/mycelium_path.json -217cddf9249cfaa2938a839bfc6ab77a9e64c484 data/create/recipe/pressing/compat/environmental/podzol_path.json -538b3309eb187c867c33fe7caf5b3253c667ad7e data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json -49c69c52fd1d7abce9cb53653741c683194f22e7 data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json -22f723a72b3f598929fa0de3ae516831b412d478 data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json -094acff11d27be00d9aeab0fbe3a5c4f30040a8b data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json -9615cc05186e2a6a24b04e9c83a4d00557956960 data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json -768a0e5fd17d3f4fb5c6078efcbf6aa0ea53fdae data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json -ea3966f6bf720f1c3eb24c896e12860f7df9253c data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json -296625fcf556fc994e47afa91a36bcacd4d3cc3f data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json -c1ff04414ec852a3ae8306a8def2dc446d261b04 data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json -29fe900b25d8d2c53d4a65bc20eb4bf577654d2a data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json -a0ee39997d2bc2ad7d0fc6793a6e2ed70b6fefae data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json -94cff48fd178d1655364a7366fd764cd037ec748 data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json -e46781712bb0c59500239c155ba79e799f4db859 data/create/recipe/pressing/copper_ingot.json -b4d28672d2ff6a4deff2731f82e6057727dfe9e2 data/create/recipe/pressing/cursed_earth_path_from_grass.json -9ebdee08dbbe33b8ef5448fdac7d78beafa059dd data/create/recipe/pressing/gold_ingot.json -580198603373700c9720e457dd79b692add84526 data/create/recipe/pressing/iron_ingot.json -010b5b2376d670a3383bd598ce5e3fe387ecbca0 data/create/recipe/pressing/path.json -84de696295cb383578d7e1c8d34e2b672dcfeb86 data/create/recipe/pressing/path_from_grass.json -3e45ee1c1f96dbebb96ead7be3d614348784bc9c data/create/recipe/pressing/peat_dirt_path.json -babc90476b5dc540e2200f36400f6aedc5d2471c data/create/recipe/pressing/peat_dirt_path_from_grass.json -83d1ee1605d8441d6640b7a47128dcd0113d241e data/create/recipe/pressing/silt_dirt_path.json -e218ef59bb012d0db5e61b932a5b27bb019eb3d5 data/create/recipe/pressing/silt_dirt_path_from_grass.json -2b76a18ad8d5794339429053c328c795f998ffa6 data/create/recipe/pressing/sugar_cane.json -4b612349d138b39db1baf7f80f654e1e479b459c data/create/recipe/sandpaper_polishing/rose_quartz.json -bde22b43b2bf7bded7987b7f8373e6328c5660cd data/create/recipe/splashing/atmospheric/arid_sand.json -c2ea5a00a2d494d2f7d2e161eb694140fd414911 data/create/recipe/splashing/atmospheric/red_arid_sand.json -810c476a460ae41d80988099e4e9ed61adfe794b data/create/recipe/splashing/crushed_raw_copper.json -afba8d026cb6d42fafc2e76973351afaa0ceded7 data/create/recipe/splashing/crushed_raw_gold.json -ae4f6019b4855843009a30fab109420a7756aada data/create/recipe/splashing/crushed_raw_iron.json -6ae4cc605477abe6ddc1a76f6889b98e8026fdbd data/create/recipe/splashing/crushed_raw_zinc.json -a3e321a2e6faf25ea4dfbdea0d6700de9ea79bf2 data/create/recipe/splashing/endergetic/petrified_end_corrock.json -b7065abb6de7572e5b30485f53330794622a0534 data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json -673b530af3878abcd89a6dd4b193a1b025101237 data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json -2cab976c219da4b33208013f781d87f4caf4f53d data/create/recipe/splashing/endergetic/petrified_nether_corrock.json -cad5b529fd11b14dbde605a5aff7531bcd3980d1 data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json -9046a5d591deaca7aa95befcab37b0e42de9cb0a data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json -91c783fbb61d055c35d4ebfc6ba275d981243ff1 data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json -e1923c53c403cf119c2a78f6b523e30cb65e042f data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json -a5959dd293a2c24d4216564acdd55e842fa3d5f6 data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json -7504e03b64dfb3a99167ecf9f091b7fc530d0890 data/create/recipe/splashing/galosphere/crushed_raw_silver.json -6dae0cf835cefc3905e064fabcb53618469b5d37 data/create/recipe/splashing/gravel.json -1d141cd4d39f11e68b45e86e58091fed4e4ffd5c data/create/recipe/splashing/ic2/crushed_raw_aluminum.json -c61fc25edea0e0bb47783a66cd629f68742ca443 data/create/recipe/splashing/ic2/crushed_raw_silver.json -12328d679a1dfb3bdc8d59d58fc21d5626f52509 data/create/recipe/splashing/ic2/crushed_raw_tin.json -033bc8eb54ce447fe53520ab0b3c37f81934dc25 data/create/recipe/splashing/ic2/crushed_raw_uranium.json -8d0dba0297a126b50194224a822bcb47519b196f data/create/recipe/splashing/ice.json -afe76705f93423ac606b2fdcf478c60c09a791f6 data/create/recipe/splashing/iceandfire/crushed_raw_silver.json -00a19d27a014d79b059b06fd255c2cce51997a26 data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json -13d6ec8cb4f74e649c7dc41151bb54936f92134c data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json -8cdd93f16f14489ebed6f10bed759871738a7964 data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json -43353c285239934ed72359cc2f9ed88a1e92ea0d data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json -5e11e80ab08677630f0510c5f92cc04cd47e3364 data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json -51f99275c37525ef871aba4ac0878ec1998e5b2b data/create/recipe/splashing/industrial_iron_block.json -a9e7cce460888894f1d5998fbfe5bc733351f2be data/create/recipe/splashing/industrial_iron_window.json -7681cc23f3a8229c02baf47afe28a67a35172422 data/create/recipe/splashing/industrial_iron_window_pane.json -46ae4e79cb9d9dad15fff86e465656ef6eeda8fe data/create/recipe/splashing/magma_block.json -e52072b6d776ad3069efd3c567d9c32864679f0c data/create/recipe/splashing/mekanism/crushed_raw_lead.json -c91e362595c5ac34cc355ff21c037b2901f75342 data/create/recipe/splashing/mekanism/crushed_raw_osmium.json -a77129592985e1f447a4546ab5917d809023782c data/create/recipe/splashing/mekanism/crushed_raw_tin.json -fa00c11091e7889545e5c9fbe1de5a2d6724632b data/create/recipe/splashing/mekanism/crushed_raw_uranium.json -355883a9eaafd9630e6f93256473127d2d4c0e6b data/create/recipe/splashing/oreganized/crushed_raw_lead.json -1d74ae51e016f6c804e7733c98e81e09a4009291 data/create/recipe/splashing/oreganized/crushed_raw_silver.json -34724420eda7d24dda0a01e48a693b6f4fa86d6c data/create/recipe/splashing/quark/rusty_iron_plate.json -3e33b4c14bcf8f84c61e110cf45f063f0964cc0d data/create/recipe/splashing/red_sand.json -bea966fd7ae93a5adbda8f680cce49b0d16ce70e data/create/recipe/splashing/sand.json -baac474aeb918257d07aa86678f331d42b93774a data/create/recipe/splashing/soul_sand.json -bc4c67d47d90c03119c8e1dacce7fc33b12fe543 data/create/recipe/splashing/stained_glass.json -b6d787b4b5bc4d5660056e47410aa25caa51c37e data/create/recipe/splashing/stained_glass_pane.json -b1f51337815ae2214c09d30b0633e4c71e2d6d83 data/create/recipe/splashing/supplementaries/blackboard.json -87a6222505ad377f84c051c0c3c2b797552c86cd data/create/recipe/splashing/the_vault/ornate_chain_rusty.json -915c693bb2bac4bade5213a217d4f9d8a9786d94 data/create/recipe/splashing/thermal/crushed_raw_lead.json -03fd7ec994f7d15b827d2b8f6aa434e074f2f0a6 data/create/recipe/splashing/thermal/crushed_raw_nickel.json -d4950f8bedc5fc0df07d3ef3eef205d7cc66ec09 data/create/recipe/splashing/thermal/crushed_raw_silver.json -e068915e257602f8f88a6adfe71f624b542123fa data/create/recipe/splashing/thermal/crushed_raw_tin.json -449de0ed746a913315d4c31d9c6e3849a494d552 data/create/recipe/splashing/wheat_flour.json -dbfc44078cf09a2d70b43ea48046ab7397f7c2ab data/create/recipe/splashing/wool.json +// 26.2 2026-07-08T19:30:13.1868036 Create's Processing Recipes +2dbc129cc2f9981c276cc916aa03c3014db8ae02 data/create/recipe/compacting/andesite_from_flint.json +103b77c2886de9afe43d3ede0240a839d1e50492 data/create/recipe/compacting/blaze_cake.json +32221896464364ea7ec8f6c8134fbe358a09c5b4 data/create/recipe/compacting/chocolate.json +62dceba131ef9e2583bc98fc74edeaca58514dbb data/create/recipe/compacting/diorite_from_flint.json +f67e038d1ece2e17ec59223749891ed4f4470b10 data/create/recipe/compacting/granite_from_flint.json +e99c55354b32c7e2fb36c10b336e07fa038457d4 data/create/recipe/compacting/honey.json +115ce088195b4bd11b87be361b30befb060f039e data/create/recipe/compacting/ice.json +f6c34a46fa989003e8ad9991fdd937e0999dac9c data/create/recipe/crushing/aluminum_ore.json +b13347875e3e74d2435df258a8b72b13780f5728 data/create/recipe/crushing/amethyst_block.json +66b4015477d4cedffd912a055d9689bce615dcf3 data/create/recipe/crushing/amethyst_cluster.json +4c01591fe7a70e9856ed8fb81cffe1aa3678d07a data/create/recipe/crushing/asurine.json +2c9e9e6604288c4ef53c637f3492d819e923ad60 data/create/recipe/crushing/asurine_recycling.json +02567badf3f9f42974a02d79ead185abd3f9a0ff data/create/recipe/crushing/blaze_rod.json +fa3915b2ea3edb46571a3f83e3c506a0537f8b1b data/create/recipe/crushing/coal_ore.json +ff10a85439b142920cd57231c96b820dd03650c4 data/create/recipe/crushing/compat/aether/ambrosium_ore.json +1d5e6feaf0fa8969d7564b7a7b3499315477fbac data/create/recipe/crushing/compat/aether/zanite_ore.json +410b8eaa4582f5d7b4c8f550424c1c513a9d71fb data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json +b63ff4c40ec234ef316b6fb3e0b12529c3fdaedf data/create/recipe/crushing/compat/biomeswevegone/red_rock.json +4d1626b467f932f9528eda5555e04566c148d071 data/create/recipe/crushing/compat/druidcraft/amber_ore.json +15b9633a7861c28a8daa711fa1dd5ac8919694b7 data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json +e61c11f1e76de309747175535f9870770e7e9c97 data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json +9851cae342687d3dc72fc15f52f3f5c509502980 data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json +2c92aeba20b0869ed49079b2e5b2aa6ba6a8b648 data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json +176dc9902a40915ffe2fa851cb1835175ae1a4a6 data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json +c27170f7452f230ab5239a5385e872bcfd492ce7 data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json +9f150cc5522457ff5ec508893b5c867dc0050544 data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json +274aec27f10524fe2a40f35897ece907b622e915 data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json +903cf740b323b782df09726880ab1b623c6cd8e6 data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json +0475aef475aa4443ebe06dd34140e5eb842728dc data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json +c4fba9e43e87e9211dc539a151b855250d49dcbc data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json +5b3f811c29f144c74a87aa6f02c88f3a38ceb936 data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json +4bddc57eea9c622620dc0592274b1a0289bf0401 data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json +2a473545ec2b4a6b45e97e90d374d4976dc01e1c data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json +cc3075360fb12c2f54aac69657a343de4041ff64 data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json +0e91a31175cc17311ac4fcce4905ba7fc393ff95 data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json +8ed95bde7a65067304962b8768a7ee6da45e5032 data/create/recipe/crushing/compat/exnihilosequentia/andesite.json +dbc7a48187a781d8e8818e2088fd9dfc0aa425d0 data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json +19190d98f00176e45beb3720338ff5bc9c05447c data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json +b241830c8930e85c48a85742ae4aab2a0be285e8 data/create/recipe/crushing/compat/exnihilosequentia/diorite.json +70eebb6dd6d6861abcf92aba9c79719d5e34ee3a data/create/recipe/crushing/compat/exnihilosequentia/dust.json +d07903cd4da54ebeb930220b721d984829216513 data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json +847b274e38d3b994fc5cef7bd2714c4c84943d36 data/create/recipe/crushing/compat/exnihilosequentia/granite.json +ce8f1c0b02aa0b81649f08ba6d84fba1f49320b1 data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json +525355099e0461ff50a19b0418e218d8ae27d27e data/create/recipe/crushing/compat/galosphere/allurite.json +8d47cc73a17a465aa2c773d842306ca71c919e4e data/create/recipe/crushing/compat/galosphere/amethyst.json +6761f49b83987067228aa0e9763ae2b76958cc01 data/create/recipe/crushing/compat/galosphere/lumiere.json +724d328a132591a2e3563b1460da8ce20dd7d9ed data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json +cd251020d98c23abc6c7f5d1a46b83deba128ce0 data/create/recipe/crushing/compat/immersiveengineering/coke_block.json +524324e26e226d4b4e1bd0957e3e8c81554df240 data/create/recipe/crushing/compat/immersiveengineering/slag.json +e5b761f22899d0d212a1ee403567f92dfe269ca2 data/create/recipe/crushing/compat/neapolitan/ice.json +c9c9fd5d1c1d9514ded35f946000493dd70532b2 data/create/recipe/crushing/compat/quark/moss_block.json +654b931118f9f7148b0ec10288437fa0fc74bc94 data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json +9283fbcb2bb1c78aa5f3a58adff7e7080de741d5 data/create/recipe/crushing/compat/silentgems/ammolite_ore.json +1ac8c5bf40d98327859cd63fd23048c0ec5de1cc data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json +b651f230da7ac0733e32f8b93825db57f8aa2912 data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json +fcbe7d3cb707fead6034746a6b9e207c0fdc051f data/create/recipe/crushing/compat/silentgems/carnelian_ore.json +bf9c0975a2b5238ac71bc88e4eda9b76eb3c950c data/create/recipe/crushing/compat/silentgems/citrine_ore.json +56cfce65e66a717553f544db8fecce5d8946715e data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json +1e9f88634db1ba39b12d5081925d1d1b42904d22 data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json +867e20526442048b8eec4b74820f395c7b710ecc data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json +24b696d5fe7e88cf77b762ac88cc27d20096c7d7 data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json +ae6267b0175bb864df89befeee3fed00988d6e81 data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json +fbf3e22877d8ed1b9f101c9a1f06e24a4d7fd483 data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json +8148f4dd10040af5e663cb23e83aeb14a7be8487 data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json +f20a26a6170e2ad62c15d24afee17ccf837eadd8 data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json +073074c295aa587b893a38140f8eb30555339ae7 data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json +d3d2c2b6ab6e586306ce554d20d17ffa568791b7 data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json +3f2caacced9af817ed20ad9d6bac5241e99ef85d data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json +d69915f95f88b2c7d988126e7f71e91cef86e1c8 data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json +6d0f68a9e9ef80c2ad669797d91f6db8ec4254d9 data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json +967facbfeda8c9d41e47667a06c0f8627da9e111 data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json +1723e4b2a15f86dd0bce88ae62c745e5f64dbdf2 data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json +fbc9468f905754e33bd5ceafa13da51f4ddcd014 data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json +facaaa33ac8527f11a80d14a12c0ec291de578a2 data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json +2c7f79c301d0200f03b5aafeb9e115d9ab918051 data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json +1d378e944edb4df1bb2d4d9891b0826753892a05 data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json +afded6ac90599d28df95f656d5179be8f53fa68d data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json +02f011a180159f5ea730f317cb0587fcdb423d05 data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json +eeb0515c8c5499ad8c518a0d12c6a255a0fe6e87 data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json +038cd9fbc03ac2e875081f0721153db6dc1efbd5 data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json +f12e3024238d34decb3e4f697972672cb4b38bb7 data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json +5b529808ea08f93bd16923cfe63a59e6f49fe146 data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json +bc429fb890ea67eb50e4443efb4c3f3e489515fc data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json +14a12e770e5d7326d02567c8be6a2c62db316266 data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json +03f09bfaab57cf33a92708a31e0f945cea46f40f data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json +400e84b7136f76b3c746efcc180ee47b28bd5dc7 data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json +6559f9fc55fb41d0d86849026f3b4586d73e46fb data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json +af69ab92cb38b105ec370991202bffb9c76dc5d4 data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json +df7eed78ffac59bb247c43955627e5d55122ed82 data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json +134522d9116def18bee65f87614fcb666e634dad data/create/recipe/crushing/compat/silentgems/end_opal_ore.json +636c2eeb9fb917244d6cf9145eb272f34625d91b data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json +1de723df0782ca7d6c4673bdc2befec05c154475 data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json +ccb7b34e30fea7cf3e75f4c7ea1ddbaa673003cd data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json +8e3c96cb88e57b5358d72aa825a1cfcf607604c1 data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json +8f69062a0d20cbd7733902fdfda3396f083ac151 data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json +585309d57812b4d43825fe7a90fc587d80d6d85d data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json +789f6f43e91e573c2f1cbe989a40573d05417699 data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json +0f846c196c13555a9b2c2316d45c035b2c7e862f data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json +e785aaebddbd4de8424b3d02dac10953589b5b29 data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json +3f12da54a014e450e2a66ccbad8ee0453371b657 data/create/recipe/crushing/compat/silentgems/garnet_ore.json +5a560dab464b6098e90a06b9d0497a9318380b87 data/create/recipe/crushing/compat/silentgems/heliodor_ore.json +9c88099d25aea760857f298eee24258beedc501d data/create/recipe/crushing/compat/silentgems/iolite_ore.json +5c51d34b0ff010822eee15ac4ae11921ecf32243 data/create/recipe/crushing/compat/silentgems/kyanite_ore.json +ba88d41637854f88a71b11d42b651651add993bb data/create/recipe/crushing/compat/silentgems/moldavite_ore.json +1a19d1ccc19e915e845959953c867cd677733c98 data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json +9c6be1a6a723e757bf84587d5b0590cd2119b8bb data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json +206538a453b2b4abae54b1dc7049bf51151efd66 data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json +5ce616c2f23e0cae68f203bb621fb93bdcdf5560 data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json +20288232436a703d2c804c5f9c75fca749c6a943 data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json +3d40439fec08203a01a7df63cef9e4f681bc827c data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json +275a7d1c56099bd6677bb558e375f9bdd1f02705 data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json +7beed9dee3e616d1e8b84dc86f22bfdb04f6f44b data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json +3bf91084cff0a8c11693b7265f0bfc95424e70ec data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json +17bcaf3f12d9723b9adc4fe00b8c4d9462413829 data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json +ffb916b20dab36f05cd00f40c4a75f08746818b0 data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json +c30bc0bb1d39b4c531307ba5d77564556d751ce3 data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json +f147f3425e40620ceaf1a8e5f004c41b470dc742 data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json +b14f0a9005412798423ba86961c7884e4454aa3d data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json +29b7d80c5addca0c718b57a29a00f17f30473e9b data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json +2f6ee9b95f4ddc4a735810ab11a27a3d3c1d9a0b data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json +b2a934d6f2876f5e5d35a56b59f9339b0724a2dc data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json +aa81d3dd0b17f4e04e36b8a63166f41872c62b8e data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json +0f195ea03b4c308d370d70cab498b1e579422961 data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json +49bcf4088af46fa89ebddcecabd1271761c99a12 data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json +ef1ba2f3c5e26ad990f4bf579109e7f6989233ed data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json +92cb4c553cf7759b25fd4b400800f8130830483b data/create/recipe/crushing/compat/silentgems/opal_ore.json +596ac6a97dc0f7ebb00b7942cfdecbc1d5c2d9db data/create/recipe/crushing/compat/silentgems/pearl_ore.json +1413c13a64a7c18a31eeb9d318f731e77d792792 data/create/recipe/crushing/compat/silentgems/peridot_ore.json +a5720551279aa1c0ab4adc5bf8483dd74defdbef data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json +ce63e5f58b7d349aa40a64ad07256c9d841138b8 data/create/recipe/crushing/compat/silentgems/ruby_ore.json +dc6113255fc32297e4d09af4574bf4787b1a4f91 data/create/recipe/crushing/compat/silentgems/sapphire_ore.json +7edae1f68de40ce3731a3f5b2ca49c165ead05f5 data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json +1a68a7cd078b122465a85e4cd77eafb31ce46f1f data/create/recipe/crushing/compat/silentgems/topaz_ore.json +05ac2b19b0c115bb0655667ffc84508aa9c1519c data/create/recipe/crushing/compat/silentgems/turquoise_ore.json +b2d6eb2b869118550067ef1310aaf6a64bf43502 data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json +20b2ec0adec6b606d30b22e34ba4c52dbadc0a9c data/create/recipe/crushing/compat/simplefarming/barley.json +61201a1c5f979329ff7d76174d958e60d8393696 data/create/recipe/crushing/compat/simplefarming/oat.json +77fed922ecb8418a1c4f5149bcfcbacc47565ec6 data/create/recipe/crushing/compat/simplefarming/rice.json +c577c8bc899b8cc5b01bd192190228a1429797f9 data/create/recipe/crushing/compat/simplefarming/rye.json +bf2b302689fd60f0dcbd0cde28246213fe0bbdc8 data/create/recipe/crushing/compat/thermal/apatite_ore.json +4fd6d3a5a012f1e5135886703c324ed919cf56b2 data/create/recipe/crushing/compat/thermal/cinnabar_ore.json +fcedf9a73af0179f938d9c0da8b308e79de5dee5 data/create/recipe/crushing/compat/thermal/niter_ore.json +3d46a33f77af137cec77e0b2689ddc92724035b3 data/create/recipe/crushing/compat/thermal/sulfur_ore.json +8d63c3ae89014edba7fae2e5e71bb5ec340bc3a0 data/create/recipe/crushing/copper_ore.json +9fbb8db389e04acd83992a93655aefdbace8af1b data/create/recipe/crushing/crimsite.json +d49a342f3135ea4c24160b737ae569b9b70fd899 data/create/recipe/crushing/crimsite_recycling.json +10c84ee8112b9471b56f208bbaddf81e4e0c36ba data/create/recipe/crushing/deepslate_coal_ore.json +8b0c48e05c9e5558f1d0ea8d0f45a2bce84e454c data/create/recipe/crushing/deepslate_copper_ore.json +9c6961b804f8c488bd3e394df8a3ae743172714f data/create/recipe/crushing/deepslate_diamond_ore.json +d350719baddd3c8687bc4839907b39d959ddf1a6 data/create/recipe/crushing/deepslate_emerald_ore.json +8b18ffba2935fd37cfedd2409c5f30fb7b7493b4 data/create/recipe/crushing/deepslate_gold_ore.json +34782573a630175ffda40e4059e3b333dd587313 data/create/recipe/crushing/deepslate_iron_ore.json +248e87ee10a8a2c371d2b74524f5b7c7d8a1becb data/create/recipe/crushing/deepslate_lapis_ore.json +10477e23ec0c58399cf8b82ba2c732adc19a16fe data/create/recipe/crushing/deepslate_redstone_ore.json +4b677bf99b11e10b5cc8316fe1fd9b125a185a60 data/create/recipe/crushing/deepslate_zinc_ore.json +69e84aabdad6da868bbf2a3887de7b730b21a733 data/create/recipe/crushing/diamond_horse_armor.json +07f319114467e0111dd4a6ce3cfc9e2783f892e3 data/create/recipe/crushing/diamond_ore.json +aeb3896cfa40469c7e151459651f92ef9ca019a7 data/create/recipe/crushing/diorite.json +609536b8aeec15dff9deee971a1e3c67ee65db8f data/create/recipe/crushing/diorite_recycling.json +1f8caef22e05f349a7a6fda6e0c5d5b2afbd3262 data/create/recipe/crushing/emerald_ore.json +0f632a7b1968a61d842cca903b8e781bcc80c919 data/create/recipe/crushing/gilded_blackstone.json +9b6999b9c9df661c1e85b06f89f749664c788862 data/create/recipe/crushing/glowstone.json +170ce0f4a8e135198e251cce36b0d09fc3de46b6 data/create/recipe/crushing/golden_horse_armor.json +0d7b8eb48b366db1035ffeefc87c60e6459c29e9 data/create/recipe/crushing/gold_ore.json +4c1bda4b1b233d5a95a636e8776c7fe6e185efd1 data/create/recipe/crushing/gravel.json +5f5c6fa600fd006c1edf88b3bd05175e9928eba4 data/create/recipe/crushing/iron_horse_armor.json +8fcd607d6638abbf4c99afb5bc4f35606de8f167 data/create/recipe/crushing/iron_ore.json +d42435eda8644458b17dc6faf09ac64dc9fdae37 data/create/recipe/crushing/lapis_ore.json +adc6010caadf52738db4ec7082505ce0ac689eac data/create/recipe/crushing/lead_ore.json +34582138b79c23e656357d2cbd9421b6f3075be7 data/create/recipe/crushing/leather_horse_armor.json +fd53cce29cd1f0652cdabb60efcb19f231d56b75 data/create/recipe/crushing/netherrack.json +b6f653b80d59e236274920e0003242acb4d07bb8 data/create/recipe/crushing/nether_gold_ore.json +2d6bdd335dda24c701759fb4a32c19bf30a7ecb1 data/create/recipe/crushing/nether_quartz_ore.json +741c407dcce7c45d53f44e804b027500083e93b8 data/create/recipe/crushing/nether_wart_block.json +dec7fbad9a6c7b9c59ac11bab0fefeec78ebb982 data/create/recipe/crushing/nickel_ore.json +323253a917fe0ef2dbb70e5398cfc91c4f3646ef data/create/recipe/crushing/obsidian.json +1e96b878795a3465543991b2484ddba6b2c719a7 data/create/recipe/crushing/ochrum.json +d7f26365b8d9672aa341ef0cd1a1381a26ec89f9 data/create/recipe/crushing/ochrum_recycling.json +e54dff70ca459403c0350fed3d7a93ab9cf0d939 data/create/recipe/crushing/osmium_ore.json +cfbbcb2725ab57bdaa5a2945ea0cd1a8b61bb063 data/create/recipe/crushing/platinum_ore.json +0a3949f37a315851e964ca836cb2385a1a5a0325 data/create/recipe/crushing/prismarine_crystals.json +70c1298b6391a75c175e0a8a4928e51c140b9563 data/create/recipe/crushing/quicksilver_ore.json +c3948bf168f3861958dae550cb3a9df9cc9e8974 data/create/recipe/crushing/raw_aluminum.json +9172900267c8ab9955c684e4481dafefec5c693a data/create/recipe/crushing/raw_aluminum_block.json +46ce170f44ab246a19e5ed23546dc0452ed08d22 data/create/recipe/crushing/raw_copper.json +4a198002dba500a515634a14194e2770a12c3713 data/create/recipe/crushing/raw_copper_block.json +1b1e08f95acdb8c87b49e6a4313aab0a25d68c9f data/create/recipe/crushing/raw_gold.json +1e0a97b2c0a0b2bcdce2abd337fc57ab405bda74 data/create/recipe/crushing/raw_gold_block.json +8f17571ee2dd078d8b230b169a6c17b8a1eb5ac0 data/create/recipe/crushing/raw_iron.json +5fad5eb2e2ca697eca3ad6c7848a8b21cdf35fa3 data/create/recipe/crushing/raw_iron_block.json +23e5bceb51b06c2da9b232db9f6b345bf6285bcb data/create/recipe/crushing/raw_lead.json +a1ac0c0fc80ca3a34318b68aaab43dbf0264d647 data/create/recipe/crushing/raw_lead_block.json +9497a9254399800370839d433b8e720c12e58282 data/create/recipe/crushing/raw_nickel.json +a7c72beb3623829583044bb478cbf3ab62cb4f42 data/create/recipe/crushing/raw_nickel_block.json +6082fd79e004d84fc7e9c3730faefc7e54138931 data/create/recipe/crushing/raw_osmium.json +122d159500e87532786f464fba418e2548966f1e data/create/recipe/crushing/raw_osmium_block.json +a559255211386835a6cf87d63a4556ba3c277850 data/create/recipe/crushing/raw_platinum.json +7e09e907c692afc96e3c4c7d4052406964a671c7 data/create/recipe/crushing/raw_platinum_block.json +fb79433dea3f9ee389179c17a4ba9a5768ca9455 data/create/recipe/crushing/raw_quicksilver.json +36d45a31d029b3dd0bb29b5f93db99dc9c0492fa data/create/recipe/crushing/raw_quicksilver_block.json +f2e09f3c78f8a007c6c9068397359b24da136865 data/create/recipe/crushing/raw_silver.json +dfdb53d57c67070b55740da72787737515a527e3 data/create/recipe/crushing/raw_silver_block.json +444fecc7a90a05dfd33aa87a6d870dbf0ff1c386 data/create/recipe/crushing/raw_tin.json +ef4298c57dfe37cdca7ebd71dd5e8e44ee9c03ec data/create/recipe/crushing/raw_tin_block.json +3c2c69cbfdb88b790dc570abdaa9d184c5acc09c data/create/recipe/crushing/raw_uranium.json +2727938e40d8dc319782207c2e30f7ab136bc4fb data/create/recipe/crushing/raw_uranium_block.json +00b6b3b7456d89fab557f74dc576658974f26be0 data/create/recipe/crushing/raw_zinc.json +701e401140741f14843f087c6d244c626e7a9273 data/create/recipe/crushing/raw_zinc_block.json +b14fc4d37750f05d4ee081b7f4462cefcd3b97a7 data/create/recipe/crushing/redstone_ore.json +78b1be9a239cdd58111c9560bbfbc977b81877bf data/create/recipe/crushing/silver_ore.json +e32903c7d9edb7c6992e8dda25f1c3c6629141db data/create/recipe/crushing/tin_ore.json +b78be850cb6d1f0a382c6c0c24435dd38b7cbc9e data/create/recipe/crushing/tuff.json +a90ff876d2f898321dc20baebcede4b91e279594 data/create/recipe/crushing/tuff_recycling.json +0b18568e3406190bb56261c13e380c5dbee17f82 data/create/recipe/crushing/uranium_ore.json +be5b5043376fc6f3b612e5b39efac47d8baa106a data/create/recipe/crushing/veridium.json +8f70c6636ab07ff5f222df14845ce6e10c49870a data/create/recipe/crushing/veridium_recycling.json +cf40b3eb86798660106004f97062d9617b84b296 data/create/recipe/crushing/wool.json +ad947aa5b531a24672009de2b6ae3e7ca946bc1b data/create/recipe/crushing/zinc_ore.json +a30f054cbf7d86b67fa08fceb0492b02bf2ecbeb data/create/recipe/cutting/andesite_alloy.json +5cb27e82aa260f6d42b8232df4db45bdf3b00083 data/create/recipe/cutting/bamboo_planks.json +2ee64ba132e8108b11992a6b54fd6ea378b5f6cc data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json +22155f1d41ad8348ac72ee6765ba134d0fa0d6d1 data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json +966cf9e355e21abcaa1716a2e41de49bc1b98bb1 data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json +e065b720ca5ea3f92869a1bdc08d68e60578378e data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json +1b861bac164528ba6e650aa7cc7165badb4c14f2 data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json +e46c364305a47c30c497730080fcfbbe01e42eb8 data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json +03b0af5aabf5d454111d191ea414e04af40c0f59 data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json +e18ab89d613bf5f56681bd0656be98ed9afc8106 data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json +6f0bac82737a202dc0e7718e1a39b696d9ad60af data/create/recipe/cutting/compat/atmospheric/crustose_log.json +aa3da35e7e58cf287a9b00ad664b03b46fe4afb1 data/create/recipe/cutting/compat/atmospheric/crustose_wood.json +8a9543a3f973079e83e806f33e42a9f2cd97b834 data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json +54e78f808d77076c8644b4a4e22512db338ab95f data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json +6056217679b38faade573426db091a385949fc14 data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json +8fdb32012342c6b1c18152afb3d4a2bbd7f84c70 data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json +66b5bff1ffc697e944928f755a22d3c030cc3aff data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json +bd0e32830e53025af7dfbb6f412c6d58ea09b251 data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json +951864ce79ab4626be6497b1627dfd8c819695cf data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json +d62ae8634e9f25b4219ebcd4704c64b8bb20b3f8 data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json +85459e1d8be49a0ef4c2d8bc561d321ad29a0221 data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json +85399dd11953c55a9e011a93850369c4ee8131fc data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json +d87e3b9541fc59c55593a9113cea6a0cf12bb252 data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json +087c583d55096c6b8049b88a11e1c422eb8f684a data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json +0776e817485528a4af5be5a3b1373e7683337b90 data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json +7292115726734b9c29e9283bb336944b6efc0710 data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json +e01616e1de9ff067a2227948bc2d0f14f0bcec9e data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json +60baaf8364cb921ca02e3995d6b2f56829b31a8b data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json +e9b6f77f098802ae8c7f5978b94c54b72f945e6c data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json +80edb1c0add07d7ebe342a6ce2259c83c3ad8770 data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json +61c1cc0c0bfcbac4dab7fbecf02671f6b938d6d6 data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json +4e503e4fd6d161caafe5f4a5ea72b7284406d22e data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json +a4cf212fca7d06694668b2049060e715f6dffdd6 data/create/recipe/deploying/chiseled_copper_from_deoxidising.json +f432b94304ed41b4078987db24e9cd472d0500f6 data/create/recipe/deploying/chiseled_copper_from_removing_wax.json +b9fe45a6f3126439f9ae3d5a4655c869ceb036cc data/create/recipe/deploying/cogwheel.json +b49a06c4b04758e4a1bd2357817bb682c792f66d data/create/recipe/deploying/copper_block_from_deoxidising.json +af043ddf2bb2879b75707959e44e51e829fd9423 data/create/recipe/deploying/copper_block_from_removing_wax.json +b17633ac9d80cce80b6802bb21ea5362f97b34ef data/create/recipe/deploying/copper_bulb_from_deoxidising.json +971d569465ddb5c8a5a70055b9e97f328959d185 data/create/recipe/deploying/copper_bulb_from_removing_wax.json +c24934cdd1a548f6d0ea1ab55962e76c2836d66f data/create/recipe/deploying/copper_door_from_deoxidising.json +cead0aef092cb267b78462b83b0b39e2a344115c data/create/recipe/deploying/copper_door_from_removing_wax.json +58d38b271edd27e7601d907efbf95203813b0f5c data/create/recipe/deploying/copper_grate_from_deoxidising.json +c5b8a3a181d9d901d9490262d86fe97c34e1a7c0 data/create/recipe/deploying/copper_grate_from_removing_wax.json +66c1c87983fba3ebb5a5be754516df03701d5eaf data/create/recipe/deploying/copper_shingles_from_deoxidising.json +b70d310d49cc9f9c438adb3f8fbd184349d73442 data/create/recipe/deploying/copper_shingles_from_removing_wax.json +420fffc25c74d6bb744e32b229558ea5030ec2a3 data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json +23911fe4215368895683d42ba5828b18d3cdceea data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json +82051a2aeccc13312e5472572c7a4a9cb3c20d38 data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json +8cb728f45257cabeccfca6b66fc0186ba2f5af39 data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json +9a82db0dd7a871eed5591e1b4be7140d9540f6a8 data/create/recipe/deploying/copper_tiles_from_deoxidising.json +afff0c0f08e7f85be11c09de3c006a6584c1495a data/create/recipe/deploying/copper_tiles_from_removing_wax.json +ca30740cf2c95c3caf9af28ca622a51f2139761e data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json +f9bc228ba2628cb32bf15c4c62b04fc0db85b466 data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json +f3c6e0104ddf55adb94cdfa0a254f213b2c515e7 data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json +95ef4b0969863500060e82ced5171e26b875250d data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json +224e3ce5350425cf5517c6c971ab72ca60b776f6 data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json +ad33af200039f4ed5dba7c210edecf1d9a707ac3 data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json +ee8063464e65b8e2d1f4401abf040ce32cea6e14 data/create/recipe/deploying/cut_copper_from_deoxidising.json +ed1c7cad2881da22451f63cd8efa7721e9c136f9 data/create/recipe/deploying/cut_copper_from_removing_wax.json +25c0a585821c18e2b66c8d135cbcd8fec9505ac6 data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json +0974e598758a421d21650fd946327a6764e46bcd data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json +207d680cdcc9b876335bb5e1da855da792ad453a data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json +08e5cf1d0496054964369e6a6c4046a6a8958484 data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json +a0c5315e0e1e05275298d0bbcd8f92317cc9c143 data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json +7cdc8fe889071013db7c281583dcb8e9c902696d data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json +f7c2db4a6532a504dbd08b7fa01f0340236f4ccb data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json +9700597c3c17269d73cf9a052d33a9bf7a56309e data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json +3725f663971a1f1fa87cca49bc740a4db59d1ea7 data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json +ea1728cdaa068e0988c112a6b1921dcc7f119a22 data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json +6c9481c501837a803c4bd07f8fcb6b2d1e7fa354 data/create/recipe/deploying/exposed_copper_from_deoxidising.json +854934a8dce8adfc1e1741cc3be79f555d8d413d data/create/recipe/deploying/exposed_copper_from_removing_wax.json +defccff871e03e9449ea28021d44469fca7d4acc data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json +decaebab4c43eef9370b304a77dfe6327cc7ceb1 data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json +a0a2c05cbdbc8c005da3e8ed014cb37a24ea6808 data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json +30eb22d7db7e147fedd3a550a96f7c9c6d41d642 data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json +c0ebfc23946574a52010233006036e23b1b2b70f data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json +9fa17aa0990ad659c61d6fbf25edc3e63ee0ce59 data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json +bd508acc455e4a33551846c67b0f7a7e6a07cb17 data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json +bd23048148286da566f0a780f9cdc4bdc77bcf4e data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json +b8dd2015bdc81bb41ed486ff06753fa20dfc48cf data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json +0c42427c88f6f34b56760006ccca606e1b8b2692 data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json +3f45ad9118dcbd80d025f169855a76d092e9e3f1 data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json +075c231737b90da61a8400e61d9ef4231c0595ae data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json +725fa519247f847fbaf955f396b88aa23b233e31 data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json +b15884de40a79cdd3c5ef543837127100efcaf4d data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json +14ee25b92ab176d8ef52f71f36f67ed3b314f77b data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json +cb085215fcd88ecdf3a9ad9ac99759ab241cb564 data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json +c4fb4b4622f5fdb0ed143e4968e226eea224d5fe data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json +f12da8c2829daba5188afd4b9a49fbf53ac2ed59 data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json +ab7c33287ab3c74da09257c9518835ae6f7b3c9a data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json +b4295a812773f4fe16a4799d7d8dc61060ae0db4 data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json +60d28c78013cc3ef4761ea83af76ad3cec8e92ce data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json +45c2b3511d01168388116769b5bd7de10d9cef11 data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json +380925c9d1e2cc1a354fdbc1c883c56182179629 data/create/recipe/deploying/large_cogwheel.json +b3a5b7b95e5b9a81301f1f886cb8b1143be432d3 data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json +ea07cb667982cee0679023e36498fb67fa83b56f data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json +d71c62da0724bc2e63dacdfc0de4b8121d475e90 data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json +600aa9601c11f2bcd95e2368cbae2a41fd31c983 data/create/recipe/deploying/oxidized_copper_from_removing_wax.json +791c130da4cdd5829b30e3f9867186bd5ec1a87b data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json +6ffe567ed08854f56938bc8b708463db3e6f5142 data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json +09579f14ae942ba08b0096cd7e365a2230d1cba2 data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json +d289585a89e6435702a99723023d1208fa93c603 data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json +e8063ae1db9c7f27ece7db509a4f4a47b3ae5948 data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json +1446b74565e74034ecf095110d01bc9605790cb0 data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json +cf7a2425cbf4cff12e9e849e789a4c5b378770ba data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json +3943f89d0587ab0b4a0b91911716b8359474b47b data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json +da14d5b9db2362c55b3130bec191637edbda4c38 data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json +a48e124229829a08bfef8755692980fa0965a903 data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json +0b5fcb068fe8aaa4309015993735f2a6a3a2dc1f data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json +e8889c447a7748ea13c723d22e68c7bd0c127a54 data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json +51e04c86ce2cf0bb7f3024ec2c41fe455d563f78 data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json +c48e3bbcca435b2097fd41918d15d924dd94c6cf data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json +6b33c973eeac58517ad5663ab44bbe456e9cab5e data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json +9f44f15aa62f1d8f8d9606abcdfc4e3485c1ec1f data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json +39c107ebd10fd5fdeb8398a9d4eb711fc5c7d201 data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json +52e6fe89ed991aaad0cc24cac7e1452f13f2cc27 data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json +7f5f765e6fe4c28eb65f2357e012b52ea01d1363 data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json +6260d8996d9c1086207f0bd51c4b2c70c215162f data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json +f69b9af7d19e718964e763046575bdafd8ade6d5 data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json +6a9db9cb92dc750b126a7291b8e479cc6b208553 data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json +19b09949280d3952825fcdc00bf41a6794cbadf1 data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json +80737a1fc397cd164b16cc28f5c1c2081889a293 data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json +f170953a3b0bacff7f86b37f87ab0e57d47938c4 data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json +d00cbd9196f6509a4f7864af1505627d372b170c data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json +22245fab6240ac4cf09f8476e9c02823b5201d65 data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json +5c7dabd85715f5dd15f77897913ee7c62450e495 data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json +fa03cd7be1372f840f772ce8fe571404e7e0171a data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json +73072634de9f51d672a4823319c9f64e09cb3fd6 data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json +89189b8eeb726f9d6f8b9472535151eb2150f884 data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json +d5da1e6c818d8fea98e33c2e5ffcb46d2fe8d1d6 data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json +977cefa36cf44168be6058e0b525bd9a9bfbb647 data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json +349230eab126e10a4cd881a6422045da6ebc209b data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json +9c8925f3a813bf06baa425cff0002bd3aabd3f04 data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json +5e32040507a089c7b32d40070b7f195f60318783 data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json +ff310934e709c5e46bc3eb81dbf09df53cf17d89 data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json +1cee3f010e93f7b486a13841efe9be94cabcb812 data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json +1a472e0f2b4d205fec143da2a5de38708258a75e data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json +a73a9916b6190930f0a1ff69bbee745664b3fdf7 data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json +04aa64164a766382e2f7d8c137f78b3f0b807a54 data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json +6de9c6eb0fdf64d462ea5cd5309b4dbdf0f629ce data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json +a28882f91372c5ad4dadd3bbcd599d353e551be1 data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json +54af3dea80ec384334049dc938943b119bdaf969 data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json +99a5cab4b9234764ecac20189a631631495538dd data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json +d03c212e5d97fd6938c277c8984d96d581c1aa86 data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json +21af4d734f80915a0f3b71b342336e7141161f14 data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json +b6708e6bbe1c892d31762d0a18059c55acf3a278 data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json +46817689ad256e907a5b03cee5bea3e4e2816e28 data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json +9cc0a610791f4049ad8ea3f28da5033b08703d19 data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json +032613810316ba6a5c44b6c3e0a8adba1d968568 data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json +6a529928cccbd8794cdfe04146239f0893cd7667 data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json +e7f9435de30f89c8361b416bc83fefe2eea75532 data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json +fe00b99f1a6ea4ce660cea873bca88145148a22c data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json +bef2b1460f2c846f68e21ea7f0265b8c4aaf4abb data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json +b5534856081416c2441192ea7240617d07cd3433 data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json +7591ccb5da85de0408c097a7cea543349339affe data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json +86fb9b5979cc1179aecb4cd358fdb070defdfffc data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json +47afe8349b1044f6310527ff1c357675220b3216 data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json +eb782b0a123a5defa449575c0353b3b369cdfc6a data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json +dc1deb6f0358e2d5bd868911c39627c27cd0a9a8 data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json +75b55c1661414c67a038c63ed59491e6a89f58f7 data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json +53308dd21b7e490c17c8861fb6dce01d7d5d3205 data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json +cf1b34844a042b1817925f6ef1d3f4911c5c8062 data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json +dcfbdf856660ff1271756a29ece51b9a4302cdd9 data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json +e0ff7ced395ca120b6b00001402ac660b28d0001 data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json +8b52f240a40cbdd89669f42b04604553895452ba data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json +6ac01c749e40f8cdb414b3bfedc1fa94ff459b04 data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json +3162d94920fc78ab8e8261837bbabfe680d0d2cc data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json +44ed2309e4ce15ee76ea4e06c4e6aeb61c26d2a6 data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json +dde16d0854732c71dd02a82219b39007aeeda709 data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json +6a6454a3d1cce47811d9c85287eaa9c8df2c7911 data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json +c1b79b2696c2ff072e6957c43e7fdf790969cb71 data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json +95a26120b3c10702311f1483e60a022fec66d488 data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json +82a00adfbab2f4736d964bd558164fd4c0b34cb0 data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json +f64be82fdcf1031db1907ac992cf58f2debc86a5 data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json +a6b75a344340879f0047344e2b87fd9bc4a61500 data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json +c2ec645cc3ddec28d63f1aa29c4853f4a896acae data/create/recipe/deploying/weathered_copper_from_deoxidising.json +0bd5c216554dda6bb39fcb530c50edbc11a3050c data/create/recipe/deploying/weathered_copper_from_removing_wax.json +050b05958ba4d89e466adb9979797f700add7dc9 data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json +c1d18303df295d913eda2f7829399cc60409527a data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json +686f0ef3e35a7fb27c116a8a81d9a9a93f9661fb data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json +1f627b9a231619299b3b770cbfe90bf2b856dc69 data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json +0583836a7b5c65a675a2538c476f77731dbc9866 data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json +1162095809cbda84d9c255b8ca0e7fc7224b4844 data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json +08dd7b74d969d0202dc37939a574ef14ee1a3dc5 data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json +34bba1ef955d535307c278a9ec82a900a636fdf8 data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json +f90f0b36c1a316bdcd95ac126dc5c04720f8b026 data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json +3bad5ed5507ffb7bf6d4c9b7ba3054fe59621fb1 data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json +eceb5e256b18f90ca13109ec37e68501a27c8ed3 data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json +b622f6b64df570be8a03786ad317603e795e9b81 data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json +79afda0492f4a93bf3d1f62a2b70ebf84e30e39c data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json +92549e8c481f84a0a1e989db86825eafa2e3c74f data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json +c523ef5f897e9d366028fa79ca299682e4a1d155 data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json +c0c4adba631df4ba065bf3fada257548279c3662 data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json +585277ae42b61990d3c1d47e81fef31f5f2b60b8 data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json +f3ea80783ee967b84fcdb7aefed01dd502735e54 data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json +93aff401acc59a993ebbc45aac4970b5aa49a74b data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json +64a01ecee7bf9a24feeae15a542706f59ef0e862 data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json +2cc60ebefe487ab94a55bab9b64394c600bc6127 data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json +9665a6f7bea0550d14bb20ba2389122b08a27554 data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json +eaaa7fed3e5dd2d29a0f411d5c2fdf175e73a068 data/create/recipe/emptying/builders_tea.json +9ed1fc63b6b183332292a86cb7d3b9a8f23e0f3f data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json +ceff068869cc17be995006aee155976236925359 data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json +387d2c5ef517a2e3089cedc9851330de41b6d8b0 data/create/recipe/emptying/compat/neapolitan/milk_bottle.json +d91d3f261e99c08d0f24319f492e11dd870aa0f5 data/create/recipe/emptying/honey_bottle.json +06aff4e7d70cbd9e603228077e154c9a0be1ae3b data/create/recipe/filling/blaze_cake.json +caa2352c357ccc89c674e86c5b2568456b571f86 data/create/recipe/filling/builders_tea.json +cf38e29b966db63de09147e1fbf324643b86ad1c data/create/recipe/filling/chocolate_glazed_berries.json +5ce861ad71c50f2c32d4d10fd94e75962b319c85 data/create/recipe/filling/compat/aether/aether_grass_block.json +e107dff7d21559a40b470a698f2dad13ca86bc18 data/create/recipe/filling/compat/alexsmobs/lava_bottle.json +fbe09d77cec747670188f6bf9210a827e535c9fc data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json +5db85caf1480d108b3c0c1d14d7248c5a6f8dba3 data/create/recipe/filling/compat/farmersdelight/milk_bottle.json +07f6f45ceb7e876c4de0f4f679169ad44f62499e data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json +a8718e54b1bef86f36baaea64e7ceb3142a95050 data/create/recipe/filling/compat/neapolitan/milk_bottle.json +4063f10f6bb40e8ca1e7766ce021bf2b3e3e934f data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json +0cfd9cd096119affa205a486ace2599b177ad26c data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json +46438e119d5a9cdc4c4797f054e40bea9070f98d data/create/recipe/filling/compat/vampirism/cursed_grass.json +a09b0149dbfeb03a717abbc77ec1f71c661c64f4 data/create/recipe/filling/glowstone.json +62f06abcb7becad79ec04b55ffaf3c37970441c0 data/create/recipe/filling/grass_block.json +aa4b88a51558285165dc8fe5e9f8a210ba4908d7 data/create/recipe/filling/gunpowder.json +2f10d276f46d227634778e6a45058c132a5389a5 data/create/recipe/filling/honeyed_apple.json +d39b0210fdf84dc72391020d05114093c86eb057 data/create/recipe/filling/honey_bottle.json +2dd402a41779808f56d4daa7ce93269de41f6179 data/create/recipe/filling/redstone.json +879616668b4d4f23f3cd844b0e568a4430e297b6 data/create/recipe/filling/sweet_roll.json +0a02ede1422e7f731cae9cc448cbe38a9682f402 data/create/recipe/haunting/blackstone.json +f1f0ccca2dbffbe6b6f7cda7db59b66484d1e16b data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json +f4dd949f61dcdab920225d11d9781202dac2764a data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json +bb0eb9c1a4010f17356a20e5a38fd219ffe7305a data/create/recipe/haunting/crimson_fungus.json +66803710f67ddbc04773dab48de0bf36a61a9d01 data/create/recipe/haunting/glow_berries.json +e1da73761e08322bce0008e31792d82c2e2a7100 data/create/recipe/haunting/glow_ink_sac.json +5e1b6b235c2c8e91ba8d004f95c89640d80d0dbb data/create/recipe/haunting/haunted_bell.json +5022899163853159fa5dbccaa1153a97f7735afb data/create/recipe/haunting/infested_chiseled_stone_bricks.json +dc298ff98f5fe4cc5ebcbcaed3550044ee32589c data/create/recipe/haunting/infested_cracked_stone_bricks.json +923181cd3e0e81318e1e663d2fb3a02a569cebb1 data/create/recipe/haunting/infested_deepslate.json +f7857799e72802302986966df5515b4fc9f456a9 data/create/recipe/haunting/infested_mossy_stone_bricks.json +fbc9f1371f0a75b697e862d4f43554fca8ef8849 data/create/recipe/haunting/infested_stone.json +c082076d5b7d93fce0e19b52836f3e0f1f0b93e6 data/create/recipe/haunting/infested_stone_bricks.json +ff7391f8e1b25e8917b9bb6f5f496f46b44cba43 data/create/recipe/haunting/lapis_recycling.json +ef4a7c40895353ccdec862cb6e3384536393cf0e data/create/recipe/haunting/nether_brick.json +35f9ba17bece11976c7d21408e0413a6682a05b8 data/create/recipe/haunting/poisonous_potato.json +a15a30a87fb667bd4e820ca19c4ce50fab811b63 data/create/recipe/haunting/soul_campfire.json +83cbc20c70538a2f8beebe3d43194e9f1ee85e59 data/create/recipe/haunting/soul_lantern.json +bd36b9787a97fe9ad463fcfe5b557430b0fcde9d data/create/recipe/haunting/soul_sand.json +1d196901d7363b75fe6e3b5ad576e2b05485e5f1 data/create/recipe/haunting/soul_soil.json +14515aace21fdd1a988396a9faea79c84103efe7 data/create/recipe/haunting/soul_torch.json +e35ec07fb2ba8fe8fcf07723dc77c833c804c5bb data/create/recipe/haunting/warped_fungus.json +cf03be5787cc67b1a3f2846b9f24d10af632ef2d data/create/recipe/item_application/andesite_casing_from_log.json +b8bf2434d42cd4658ab6f828cf2a0a67e6e29fe7 data/create/recipe/item_application/andesite_casing_from_wood.json +c542a9b341728b00b6769713b5b24ef0d627238c data/create/recipe/item_application/bound_cardboard_inworld.json +2c5b6d7a533cee012d2f2c08c0c61ffab559d2fd data/create/recipe/item_application/brass_casing_from_log.json +b394e90ed6623a6f0f7faf21817ee6fed6c3afcb data/create/recipe/item_application/brass_casing_from_wood.json +0ffc9c455d93419f9e937d4c55d5c7b46a8cfa39 data/create/recipe/item_application/copper_casing_from_log.json +88c79e2999139bd68af23170c2f7b205bf962808 data/create/recipe/item_application/copper_casing_from_wood.json +2a2c09d9ba3cf326177704a5bf386a274e8f6f12 data/create/recipe/item_application/railway_casing.json +1b2cc6b553f21ccd056136fa8b4fae447e84eaf5 data/create/recipe/milling/allium.json +18e27893969db0f7c8becac32e32370c17fd58bc data/create/recipe/milling/andesite.json +be5d85efe658c445b0894454d255d5c70881f1f9 data/create/recipe/milling/azure_bluet.json +91660073fa0e1a75d83a6996e32ae45b56368a77 data/create/recipe/milling/beetroot.json +22084b39a0bc3ccfb81ca929b4d658857c6ec3dd data/create/recipe/milling/blue_orchid.json +e78d3c180ddf4aa7d2f1eb91a49c37e07b116e6d data/create/recipe/milling/bone.json +5a3e884f6f4631fff97f37dfd7894763260c887e data/create/recipe/milling/bone_meal.json +52ab3291fa9be588dafd93e2968392b0a11e887e data/create/recipe/milling/cactus.json +f5355e4815c37512fdee8e67cac7f2fa63f70ac7 data/create/recipe/milling/calcite.json +34549b5b59b1f8d31b08fa5936d7d7f8b45919ae data/create/recipe/milling/charcoal.json +0a1e2f26959379ef3881a2eb12a1cd5798048d23 data/create/recipe/milling/clay.json +03f6869e0bd11dfa0860ad6ffd3c4cbe744b2752 data/create/recipe/milling/coal.json +8e933c6366ef684cd6e9334153a27d34aebce508 data/create/recipe/milling/cobblestone.json +d910f92b2e3b05270c2b70ddcadaf4cf7690b13f data/create/recipe/milling/cocoa_beans.json +7987f3d65850c795a5c9217f02a2c13b439f727a data/create/recipe/milling/compat/ae2/certus_quartz.json +1040a84620baf3b1811172eaf107063daa601ce4 data/create/recipe/milling/compat/ae2/ender_pearl.json +a4f9c29334ff29a14e98c1e47e3ac86fe8d5ec3e data/create/recipe/milling/compat/ae2/fluix_crystal.json +52c17b8fffc05a3861ddaab8ebf50c2ed2fa2104 data/create/recipe/milling/compat/ae2/sky_stone_block.json +4e863c685611bd417cabe7eb8cd35daa405dc918 data/create/recipe/milling/compat/atmospheric/arid_sandstone.json +4b3357465db7d7db77f902f32efb3874e8897e29 data/create/recipe/milling/compat/atmospheric/barrel_cactus.json +1eabf823e29718b1ba38b67f7e50dd9cc7c9e097 data/create/recipe/milling/compat/atmospheric/firethorn.json +7e0816924557e8b4e69485e6fd2c40928b50e265 data/create/recipe/milling/compat/atmospheric/forsythia.json +78c79f5129dc14ba5191d6f696249d910fcf77f0 data/create/recipe/milling/compat/atmospheric/gilia.json +c88019bb5e64b8fc8ac1634e109f9012606bf2c9 data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json +133214825120733cb4a005dd992beddb4062f726 data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json +bf1620b37e170162473452e874cbfe213339e3e1 data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json +adb234b2883ae60429ff9283151ddb9d036cf6a6 data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json +0c751f5a3ed098c9dd4e1d4b08e8f5f2bc8420d8 data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json +a7ac595f9c811d924b1c1913f93ee99442b04397 data/create/recipe/milling/compat/atmospheric/water_hyacinth.json +57c919cd4dc42f8a69d73dc18676f67ab7a6b1a5 data/create/recipe/milling/compat/atmospheric/yucca_flower.json +ed1a648349e567c3bffdbf68b508fd37cf69e637 data/create/recipe/milling/compat/autumnity/autumn_crocus.json +e1c65acebe8c159fee2b270e3f6db76f89aedd1f data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json +80a1e86206c0d105f6b0726d218f8f0040d0cf88 data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json +4b7a318086d167c50fc047d5d5f76e2bd884e79b data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json +4dabe5f5c908bca43fb84046b58605d33dbf6293 data/create/recipe/milling/compat/biomesoplenty/cattail.json +c5c1c1138bf45999796fb4a63de2e5f6bcfbeee2 data/create/recipe/milling/compat/biomesoplenty/endbloom.json +280ef9f4ee3b2e5d17ad5205209113829883b5e8 data/create/recipe/milling/compat/biomesoplenty/glowflower.json +af58b10202a1086a2affe69975a85f8a7d788476 data/create/recipe/milling/compat/biomesoplenty/goldenrod.json +a33d969f3806430c8f0e1a152168abf8ede4e125 data/create/recipe/milling/compat/biomesoplenty/icy_iris.json +bd75186ce167bfc15027fd21baf0c6c3f51fd930 data/create/recipe/milling/compat/biomesoplenty/lavender.json +3c029099616fe6c33821593ed5adcba2ff6b47ff data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json +4c07aacb390d7b9078849edf6ac430f5587e299d data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json +c52d57a98c05abb219803335526ca19ae063855a data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json +3fcb379f3a707a32893f352740fe7c8632a91096 data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json +7d1e9d67f3dfc6d9bc10e4773365d0f6b8b188fd data/create/recipe/milling/compat/biomesoplenty/rose.json +2f8a6e1c92103fbccf8f2e108ce89e64c09a007b data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json +e672f3dfbe4039860af409d0b3248738b22749ba data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json +6d8d6b7eee374607c9ee261d0df28eef2c44fba0 data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json +ea0e9b6531bfc5e77f51f328bd24debc81e4b806 data/create/recipe/milling/compat/biomesoplenty/violet.json +c385a39dc615af3da4c68e2670d5f2ffa290baa8 data/create/recipe/milling/compat/biomesoplenty/waterlily.json +955d219093e1c4ce1845a62c1bd5b255da21993a data/create/recipe/milling/compat/biomesoplenty/white_lavender.json +b09d69581a445b19f0b5fe11d08ccb07824418ff data/create/recipe/milling/compat/biomesoplenty/white_petals.json +9cc3840566da67a9b733ce6c25451a372a772006 data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json +e040d224100787ffd85a0d20eb97c734f8f7f153 data/create/recipe/milling/compat/biomesoplenty/wildflower.json +449665be78abfe264e36b545de15db521f94adb5 data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json +b28eab9b338b2366b7379b22e53dd94ba61ff756 data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json +6581d2cd62ed137790e54cff2c237a45bf98657e data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json +847859035499d0a7f531a57ea71eb5a216e0e601 data/create/recipe/milling/compat/biomeswevegone/amaranth.json +fe9123730fb5192064cbc197b519003d14f3d87c data/create/recipe/milling/compat/biomeswevegone/angelica.json +73a0465bbed2659adad9b510b7a526231d78d86b data/create/recipe/milling/compat/biomeswevegone/begonia.json +050d4e7e164866b1c69982bd240f7eb38beb9e04 data/create/recipe/milling/compat/biomeswevegone/bistort.json +b33881beddc843b409b369c0874159a147f764ca data/create/recipe/milling/compat/biomeswevegone/black_rose.json +65dec60b4ba715e7750b2d8b5e0208b6832507d0 data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json +1ceca55c4487978d44bf66e5c4759279ddd8d514 data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json +74b7b4f910f5628a69ac338c850002e3c6277ff6 data/create/recipe/milling/compat/biomeswevegone/blue_sage.json +54a2c10685b326aca231a71f49d2dd323655e728 data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json +e564eddf38e5299f4395d1f935bfd0aa70459850 data/create/recipe/milling/compat/biomeswevegone/california_poppy.json +a984d9f5b12b894526d227c7546d6e0509a4a3f1 data/create/recipe/milling/compat/biomeswevegone/crocus.json +02810887a5df0ad2fed6a0a153d3cc8620751376 data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json +136ce437a27178942576882707f8c250e0f9c8e5 data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json +2e8f0a66156130d76a9acd38a103c164c5b78920 data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json +95045611ad269648673c3f6804ec7cbb05b1b65b data/create/recipe/milling/compat/biomeswevegone/daffodil.json +1ffa74ea35f8054a9d44202b801c6e780605eac5 data/create/recipe/milling/compat/biomeswevegone/delphinium.json +20d7efef40a6869ccebec46885dc999947512a2d data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json +c400bf7b750c97fe8e3934086a0f9463f56a0694 data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json +ee5790695d6c53c6ace9dadf9e06e18adf4aa2a2 data/create/recipe/milling/compat/biomeswevegone/foxglove.json +5b509197cbd1c9b2942a80ffdb876e0364c851a3 data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json +ebf74582b63ac1dd50408bcfa37a000ebefa6b08 data/create/recipe/milling/compat/biomeswevegone/green_tulip.json +02a48745bb943dd45fb6a672ff38eb8132bbd9df data/create/recipe/milling/compat/biomeswevegone/guzmania.json +9f2f2b08a338408e9e86b089e5d6aaca03b6e615 data/create/recipe/milling/compat/biomeswevegone/horseweed.json +ba10242ec3bbcc751b203ad175a38440faf04efa data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json +1ca1e1896b71c4294d2ce0c102431c2bedb6b752 data/create/recipe/milling/compat/biomeswevegone/incan_lily.json +9e0190307506b761597618c893905fdd55e3c6a7 data/create/recipe/milling/compat/biomeswevegone/iris.json +49bcbaf2dda959dc3864d4a38ec542c7e81b81f6 data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json +bbf1dd7c3a5ce930cdf226f71f28fdb51538656d data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json +aee2e3401f96af7327a699b2fb5ca057fb80c093 data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json +63ab0c479109ef2cbdc135bf1e7171730c16047c data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json +1f286e8f40c883a1a5cfff69bb0bd33db8d359a4 data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json +6eb89c2f51fbaa6af7950f36a1281b290e24917c data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json +e1ea693bfbd5487e6121e6c526517cd910d58aaa data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json +7803a1549122854d41dbccfdbfa1ff02c290244f data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json +67325c3a32610e0269ad72869a9822b3ab9234c7 data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json +654407a9ebfa95a830478cf622da7ff77b14a33b data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json +1ec90616e4df7d3efc9f02a271cc8241a9ad54f9 data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json +c8c3af2ac089f6c650d92f7b59b88f00afef36a0 data/create/recipe/milling/compat/biomeswevegone/pink_allium.json +e87cc7f840528b49649de9a6861dda3a8966de8b data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json +6d64d44c49c978ca6f94eceb063cb31f09d1564b data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json +e1374adb12fba87ae2d8ffd170adb287c9ab21ee data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json +5c203057c8fb2217bdb5a7eb9bb992491080f833 data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json +d9ca413e5f101413cdde013a3b846f52b345dd05 data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json +c81b583c1efac5b18f478f7e5e09c7ea1c38c530 data/create/recipe/milling/compat/biomeswevegone/protea_flower.json +bf1f1cf8e1e3292b4e9307d62f372dd9466d3736 data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json +cb73628b0a347519c4c7f6316681c9ae9f102fc1 data/create/recipe/milling/compat/biomeswevegone/purple_sage.json +3b738095723b88c00123bfa3f793cb6193cdabe9 data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json +23f348afba7302bc04860457f0e7e693418a5f1b data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json +197b7bcc575782ec0d493b245e2eb980fd0d75f9 data/create/recipe/milling/compat/biomeswevegone/richea.json +caa58e59b70ea811e033c4bebcad234ec0a8236a data/create/recipe/milling/compat/biomeswevegone/rose.json +49a4d892bf453e130346616f50da3d13a4f58938 data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json +65a7f8dc6a197df7c440d5ef6c153b6ba1da55f2 data/create/recipe/milling/compat/biomeswevegone/snowdrops.json +824fa9e18ebf430efc2a0d93132c0213ef68213b data/create/recipe/milling/compat/biomeswevegone/tall_allium.json +9c7a307978d28c709adce6099ba4b954ca8fb791 data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json +d0b385c5717a64fee6658dfa19f465471265c5f9 data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json +927505b32f5784de0d0ea8d4eb82affcb1b7fb54 data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json +65cd7213190dac7e7378c0a7f7531b2701166664 data/create/recipe/milling/compat/biomeswevegone/white_allium.json +4d3dda6021f927eaeb3f50b9a1663a4e8794f360 data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json +7d0a09b58a5d1b345488f3226714c4dadf5f0b63 data/create/recipe/milling/compat/biomeswevegone/white_anemone.json +2ce489f91fcb7389db94e9ca18312c67ee088483 data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json +ae51712754104f950c7e648f70bec3012b05dfd8 data/create/recipe/milling/compat/biomeswevegone/white_sage.json +c6a861f45875e2e21524e0a60b30ab77dee1f144 data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json +5ef8c548dccc0afe89efc04b35b0e14350614f0c data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json +2edc18a587820e28004bf9d08be5a0137aa1f7ff data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json +de2dcde3fc76d49b2749c8b14163b0d87f7a278c data/create/recipe/milling/compat/biomeswevegone/winter_rose.json +775ac6a81bb43f47ba294469913e7372aae41c07 data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json +5ddea98a0bc537e7ef72ccf350121b621420b6ee data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json +53503ae000d8ae964a085cecccb85ba6e974fce6 data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json +7789e035496c826dfee2a6019f5ed4f1125afaaa data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json +5e4e55c825da5106c717cedfccbfce55af747930 data/create/recipe/milling/compat/botania/black_petal.json +25f6c00c1eacef909800ba53131c183ce7a06c76 data/create/recipe/milling/compat/botania/blue_petal.json +da1e01a88dbac8fe65ec751cf2fbc16a776e6d19 data/create/recipe/milling/compat/botania/brown_petal.json +0afbd880f3c6d1b110bc5645e2e0b45c0f7d497e data/create/recipe/milling/compat/botania/cyan_petal.json +1ce4429e2bb0b69127d90a780a504bac26949ae3 data/create/recipe/milling/compat/botania/gray_petal.json +de01346adae61b2ca7d2f0e74d28ecd7bf99ab69 data/create/recipe/milling/compat/botania/green_petal.json +595b19be87fd6c7b9729c43700a236875a408e59 data/create/recipe/milling/compat/botania/light_blue_petal.json +1ee5880cdbad18487dfa896fde0c8f916cd34aee data/create/recipe/milling/compat/botania/light_gray_petal.json +89a3bde69323c16f01853012dea3c3c7255cce65 data/create/recipe/milling/compat/botania/lime_petal.json +63546d3cada0f0df60b82e786c5b1cc4267ff2fd data/create/recipe/milling/compat/botania/magenta_petal.json +e651f468baf78ea564c730ffde0b0c8d69631d21 data/create/recipe/milling/compat/botania/orange_petal.json +05d80b9e120d8723ba3dc44f4c193c27acf76fd0 data/create/recipe/milling/compat/botania/pink_petal.json +4cca51e542815f087a3b20729a54d7747db46d67 data/create/recipe/milling/compat/botania/purple_petal.json +f1cf480e325664885c90c0d78dc79f5ee1d794af data/create/recipe/milling/compat/botania/red_petal.json +0f3999866e8d3625c05af67825839a9ba933ae53 data/create/recipe/milling/compat/botania/white_petal.json +319d9e086ff0594db4b2d1a0fa09d2ab088e209d data/create/recipe/milling/compat/botania/yellow_petal.json +385a301f64dbc4db26825be71deb36870df5882c data/create/recipe/milling/compat/buzzier_bees/buttercup.json +e6d2dd93121fc56cedb61cc48bad3d61f24ae6f8 data/create/recipe/milling/compat/buzzier_bees/pink_clover.json +11e075fa078ee985eb78548ca10b2e47865d68eb data/create/recipe/milling/compat/buzzier_bees/white_clover.json +52495619dd1ed1362e86bd37580a918891d9f125 data/create/recipe/milling/compat/druidcraft/lavender.json +19a0c9b20b59877908906230d7ec75174d49c842 data/create/recipe/milling/compat/environmental/bird_of_paradise.json +89200930198a2f1e20d4ac9b005a98036006fb70 data/create/recipe/milling/compat/environmental/bluebell.json +4df7bc2655cea8788c60eb55d664c76279fa0712 data/create/recipe/milling/compat/environmental/blue_delphinium.json +b81d52a886efb25e960adc562b38cffa48e4feb0 data/create/recipe/milling/compat/environmental/cartwheel.json +8e5a230f8a1363496fc0ed7f3c3c2fe76329b8cf data/create/recipe/milling/compat/environmental/dianthus.json +23356f6b9da3ef7bd499e7af075af612abd6a16c data/create/recipe/milling/compat/environmental/magenta_hibiscus.json +5f6dc48c9a082615e22f40e71ba9eeca2e055aec data/create/recipe/milling/compat/environmental/orange_hibiscus.json +7675cb710c1ca172149969cc3007aeb9f5b336cf data/create/recipe/milling/compat/environmental/pink_delphinium.json +aabe628c7a89c173f73994b54747d09ab90067a9 data/create/recipe/milling/compat/environmental/pink_hibiscus.json +cf7d29ed814733a12e545017d45dde17d5823ba5 data/create/recipe/milling/compat/environmental/purple_delphinium.json +3fd868f236db3186dbf0e46df738451c69ebc955 data/create/recipe/milling/compat/environmental/purple_hibiscus.json +431a3454ca597c469be1bf7a1abbbdaf9ec6f3a3 data/create/recipe/milling/compat/environmental/red_hibiscus.json +87ef9ee9d88581b85668275997e36c9f26ff9052 data/create/recipe/milling/compat/environmental/red_lotus_flower.json +0282ad523513b4e8837729ad5266eef0507f8af3 data/create/recipe/milling/compat/environmental/tasselflower.json +fd4de863786be3f8f8042c29ec827bef528b42cd data/create/recipe/milling/compat/environmental/violet.json +c7c40b63e18cc7f996e30422d452b8b4d97ddcb9 data/create/recipe/milling/compat/environmental/white_delphinium.json +e5eacdae2c5251ecdfd92639c65460f86e280ac8 data/create/recipe/milling/compat/environmental/white_lotus_flower.json +5b8828bf165b7b99aa3f785e934ca0560fc664f9 data/create/recipe/milling/compat/environmental/yellow_hibiscus.json +271f5d3151674b43db028108c460facb4a9147e3 data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json +7e44de7aa593be4729e3a944f05ce2243a3ecf49 data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json +78a67d6ef2f7d8184eca636c4e836c0003eca8c4 data/create/recipe/milling/compat/regions_unexplored/aster.json +326e8dc6a6cec8696fe319199015548ebaa3326b data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json +fa8ea6bc5894dc463c7b286a818a70a5ca6bb89b data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json +5b190b3a9cef10996441464af65e121d03e689b1 data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json +07cb10239c5fde951dff7ff198a2e049260c64c3 data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json +77f3c5202d0bbf6d1c96270ad4517db2ce3635ba data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json +bccfda90ff3eaa8803bcbc13fdcaec6b545d228b data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json +ea4fc084e2bbd18e08785cfc6f64c81144dce335 data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json +1a9f4913c6c626c5757436737b263cd0e2e926e3 data/create/recipe/milling/compat/regions_unexplored/daisy.json +3ac0e2d7c667e28a8bd2b8b0447815a4271c0675 data/create/recipe/milling/compat/regions_unexplored/day_lily.json +6cf3ca07ec5c20347f55f609547817c31c448110 data/create/recipe/milling/compat/regions_unexplored/dorcel.json +b91b8e60c0c5d3b05bb41d451bb3d5625ceff8a9 data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json +dfc7833bb7adbebf414153723008be7c975b6c2a data/create/recipe/milling/compat/regions_unexplored/fireweed.json +bedd434ef4dde2b423ec9eaf5240e5f8ab73ac45 data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json +38fc4b9aaa207c98d42b33149cae60fc6eca5782 data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json +b706bf6670a9936e968de23c5a2c0e2845ecb3c4 data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json +44357bd7f19c8266c15e4a2fa4dfce660ef7817a data/create/recipe/milling/compat/regions_unexplored/hibiscus.json +ae9799efeb4bdda10b18c2cef4f40c75fd219b9d data/create/recipe/milling/compat/regions_unexplored/hyssop.json +5f2c9808bae5a281ed6192fd09fdd6ca39bada21 data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json +a887491fc087afc54e4baf530640250ee141cd38 data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json +4facba89d4d0885abcc7d61a7c62947c77abb298 data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json +d0a4e4045840ed0e426856005cc791ab62ec133f data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json +e7e154d0b4df027e36e323a83ed884860dbf5e7e data/create/recipe/milling/compat/regions_unexplored/mallow.json +9820b1f22b0662fe4b9b3c90619ed4fad361cb47 data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json +c5f9641277564f305d1bca5411514e7742e7743c data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json +6661d900a961dc4e94c0509136c22a1a3b0d611d data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json +e7e04e9afdcf3fff05d4788d7e0b20e2ad07a234 data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json +4267bd7413ac6818a8c99b8ff1c40323cc830689 data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json +b8e276fc9638e8316361a3f20ce0df404e5eefac data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json +09205dc2ca7029d22e3d029b7bfb5e3c8ca0b334 data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json +72eb3c6146bcaef76f5c2e1b60c5001d727ad305 data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json +6a753e8a978fe370fe99c5d8677cb9a7756f880f data/create/recipe/milling/compat/regions_unexplored/red_lupine.json +c65d83ad7ececbea87ad6292a79e1bf696032b5f data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json +5fd17f8eaceb25ffc55af487713965b2d7604c04 data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json +5677a59767af5025e35afa6f45335012004b6fae data/create/recipe/milling/compat/regions_unexplored/tassel.json +2f94f91c47b9c1cb83acc6400ba676786ba94c87 data/create/recipe/milling/compat/regions_unexplored/tsubaki.json +32394f44ee80e130bec83bc8af9817d9c799bed9 data/create/recipe/milling/compat/regions_unexplored/waratah.json +6fd23a88190bb989410b5ba6a8ca4e6e58c575bf data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json +39151712189daed7b66597fe7be3f6c8b0a901ac data/create/recipe/milling/compat/regions_unexplored/white_trillium.json +0d3d42cc61146ef3472e075a8d42b5c507c1e740 data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json +30a09f0ebe2229fde38143b8de2ecd7bb25171f4 data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json +fb64fc24857a5a04d550551375ad674eb4d6d272 data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json +195878d44c2c0a3e45e437f505f16fde3a0d132b data/create/recipe/milling/compat/supplementaries/flax.json +5fedc21316a37c2882b4e1a17d94e793e3a3420e data/create/recipe/milling/compat/tconstruct/nercotic_bone.json +f1a8c697bd67b4b74c6ad3efe8d5efac25ced5ac data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json +1da7971fc59acaba31ad4065e28b35599d49e6f2 data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json +79999c60e091b63ef5f09b5f7fad72a2fda9d86a data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json +2fb5c9cf8a561e483723cd07ce25b9ed7588356b data/create/recipe/milling/cornflower.json +bfeb209836cfd6be267c8904fe19fa55aa6a8819 data/create/recipe/milling/dandelion.json +6a4fbc12fc86919ab12345422e10eee91c7efabf data/create/recipe/milling/dripstone_block.json +6ea00b8fde1960fd7fdceafbf86b5964f6626f95 data/create/recipe/milling/fern.json +5f7e9e78dede385f86facabdbe67cfaba438150d data/create/recipe/milling/granite.json +3aec2d6ffc57cf8e85003ebe598ebf4961a51e9a data/create/recipe/milling/gravel.json +ea4966f3c664c9b42166fb71aa8c75962de2d9d5 data/create/recipe/milling/ink_sac.json +04a904eb4450949b632aaf9dad7a6be23237cc3a data/create/recipe/milling/lapis_lazuli.json +3c24725fa3c8b7ea251425d4d895404926126ddb data/create/recipe/milling/large_fern.json +b8926df8fba463a2802aff46a655d74c86f62932 data/create/recipe/milling/lilac.json +53f342768abfa1ed6ed56113249fe852a840f109 data/create/recipe/milling/lily_of_the_valley.json +85e39699c9282ab90422b425bf1064520fcff427 data/create/recipe/milling/orange_tulip.json +65097a5910f3355aa4dca7d90f2b6bd3f6a62019 data/create/recipe/milling/oxeye_daisy.json +16ebf8c783eccce26ec48316b1e9beda30e965e4 data/create/recipe/milling/peony.json +67654cc564066f0354ae03dce1784c872d9cbe4a data/create/recipe/milling/pink_petals.json +63e97ba61c2ee3d80cebcf4d0396de46c5a1166a data/create/recipe/milling/pink_tulip.json +456341d87160a4a2173089f8b19eb01996bc0c6b data/create/recipe/milling/pitcher_plant.json +c61ae21a86c046a6e71ef5cccc714f0a667bdfd6 data/create/recipe/milling/poppy.json +22a1f5dcd238041d6a462767c2b3fff04686bcf5 data/create/recipe/milling/red_tulip.json +43989fa6a29a9b6cbfed29d555cb56fe1f9e5a67 data/create/recipe/milling/rose_bush.json +0ebb2711ba6664b604bbdf0cb8a5377aac3865ea data/create/recipe/milling/saddle.json +5b3becaebf32a11ce5bf9399c8abff3f3c010267 data/create/recipe/milling/sandstone.json +c2b0b1af2e9c5d3c60beffb0fbd580857b588647 data/create/recipe/milling/sea_pickle.json +26ace9bf06450bffb243e795a7e97c73e27a7d3c data/create/recipe/milling/short_grass.json +c2cf9cc64e5929e80420d1ec1fb184a7da38ab94 data/create/recipe/milling/sugar_cane.json +2ef6f58fbc1a5529a747af4f5d06305fae71a4e4 data/create/recipe/milling/sunflower.json +7023b20b7b521c4cffddada92b9d6bd84fd5a1d6 data/create/recipe/milling/tall_grass.json +7a5305b7b0e7b570aef861f8b8359bacab70b604 data/create/recipe/milling/terracotta.json +8d3990b729d871e89d3fe26723cb457a1e4d9142 data/create/recipe/milling/torchflower.json +1d10711ce962c8f2b1db84917ad754af76e0de4d data/create/recipe/milling/wheat.json +67c66f44b118cb30b08720d21aee63ac2b2c0f1f data/create/recipe/milling/white_tulip.json +03ee0517cee68638f9a8b7eb63d8bd0ee8b9a979 data/create/recipe/milling/wither_rose.json +f23db6e77525edea1a0a062f5bc508493b04549f data/create/recipe/milling/wool.json +a3a6aa298b7d230a87b8bacae1593ed943eabb83 data/create/recipe/mixing/andesite_alloy.json +361c4809d558504b26cd792603f4fb665e96600d data/create/recipe/mixing/andesite_alloy_from_zinc.json +93cea2f7bc83fb9c8be022108f0774d0cf35eafe data/create/recipe/mixing/brass_ingot.json +1cd899752dcc94988a8d121e1e109fc188a576c3 data/create/recipe/mixing/cardboard_pulp.json +2000d26519a1cf8457f54b994ef8f37471768be3 data/create/recipe/mixing/chocolate.json +200adc0de090a7f06800ade1c570e4e2c9255a2b data/create/recipe/mixing/chocolate_melting.json +d5585dbf22722aa10218df7cb988df51b83fa30b data/create/recipe/mixing/compat/ae2/fluix_crystal.json +c2433ea99375243becd9258fdfaa81475a2ea25d data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json +baeba7819c2b6e8375c5e5f6149df082e40fe8a9 data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json +3bb7da563da9254533f19a3b8155a99097214848 data/create/recipe/mixing/dough_by_mixing.json +4e13b4dbd9406aded08a955ec3f78e79134a5cde data/create/recipe/mixing/honey.json +8f5fc4a50b8761096524325e8a999812ee046111 data/create/recipe/mixing/lava_from_cobble.json +f900c076b95b556b783b543cfe6d295314f36eba data/create/recipe/mixing/mud_by_mixing.json +8a770baf276d6bda74a8e8406ff30919a9547349 data/create/recipe/mixing/tea.json +54a310e4c38a0a484ab0fa46d657bcbc45f8aa87 data/create/recipe/pressing/aether_dirt_path.json +4e03b507f6b1218e53ac7c111c70a47362de332a data/create/recipe/pressing/aether_dirt_path_from_grass.json +4784d56732d08fe2d798ab43754b13f9266b3371 data/create/recipe/pressing/brass_ingot.json +d6969f7b967b892e76cbe3fbc8271d4420b6b2de data/create/recipe/pressing/cardboard.json +9eac15791010627a8cc0b947dc7d9e715796ebf1 data/create/recipe/pressing/compat/atmospheric/crustose_path.json +90124779918bf9e139f6535c3ae202f55c506f0a data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json +91cf7b62f0e7b06df6e935f5f7236248a559af17 data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json +8ae00dbb0ea5139bb209a44c65b30e12de6b36dd data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json +c3875f0cf543bd2dffcf0c03c7439b795eb31dbb data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json +e9582b4d87cca12553705caef0aedf7b4a6e6d47 data/create/recipe/pressing/compat/betterendforge/end_moss_path.json +37aab4504479bb95a6bd7748b93e7cabd68ae309 data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json +28a6946692dd47b16667a7f80994e3665a86de82 data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json +de17971a0268d8e08add2a7adc335602d0d86d60 data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json +4f35319dbdfd4a65a755750fc2681ab6bb0b7e3c data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json +f0831ca8c81659accb71686435c2f785a7bb7003 data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json +06687ece1c31ccdc43827955271a02ab237bd69f data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json +51258019ecf9b15a3e59b5f2213abe6a4c511c9c data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json +2bae4363afb164b8d3dc78a3fe8647294b6c245e data/create/recipe/pressing/compat/environmental/dirt_path.json +c58b5da7edabdd0b90aa131c70761d39ebd7aafa data/create/recipe/pressing/compat/environmental/mycelium_path.json +80a85f0cab181afd392778e7de51da2c49c1ce6a data/create/recipe/pressing/compat/environmental/podzol_path.json +fa874c4510ab0c4af89e3b0a740955d191482854 data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json +bb8887af9cb465999499b21099dc1eb01d6ef532 data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json +033ba82edb805de112f08ee2bba9960c6dd79054 data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json +2e49b15eb7c199268ba947e81080f8e32ea56916 data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json +ba17f3ef7d7eecacc2d3e1faad5d8fe262632386 data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json +7ef098140fe6de1d753ae2c1f5d0d604ba595d74 data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json +db94b03141f16a63dc0591d07c9478f9205f273d data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json +005fbbbbe1fc48c54569e3a5ac2b81c23e509ef3 data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json +ca095889d6ccb3108645cca0e6cfc40789cf901b data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json +16fabf7fd946e06547768c206cc9396952211731 data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json +a2c3c052c34fc81f6204e4cc815a9654b6a1de6b data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json +3889c64b24e8e7ff0fb685af2aa239b67bfd7719 data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json +b9c8a0df4a2ac23955b2e7ec47192c01e9c2a71b data/create/recipe/pressing/copper_ingot.json +7182722661410e578e57367b338e38113dd73359 data/create/recipe/pressing/cursed_earth_path_from_grass.json +5f9e39dfe173cf17faa91db2f12a8195b29d4d3a data/create/recipe/pressing/gold_ingot.json +1c6c744b43c9ffdaa4fcf111bb5ce74bd01bb387 data/create/recipe/pressing/iron_ingot.json +8ebad84554d60cad78e9fe9bc922498b55bd118d data/create/recipe/pressing/path.json +88950190f2dd8d39364f80aa27b7d73b420705d7 data/create/recipe/pressing/path_from_grass.json +23afd2249a338d6955a8f12a69a9c018bb08baa7 data/create/recipe/pressing/peat_dirt_path.json +635ca483924d4ceeaf4735ce7e49c7538cb82a24 data/create/recipe/pressing/peat_dirt_path_from_grass.json +fcd3b8809f69a7132d6c4351bec42d6ab150daef data/create/recipe/pressing/silt_dirt_path.json +76e22894e76a10873c4bcb1c54f1bf0caa032194 data/create/recipe/pressing/silt_dirt_path_from_grass.json +4de6946ac3fb2be7a9fe3e7fc3df1bd9940e036b data/create/recipe/pressing/sugar_cane.json +c372008d1a25aa72e64cbe9ecc1249b423f7bd26 data/create/recipe/sandpaper_polishing/rose_quartz.json +2e898b6e3514ccafb2169aa85a404ed49d529fdb data/create/recipe/splashing/atmospheric/arid_sand.json +b70013bbc00be8d9dfd739f9030177c78628c564 data/create/recipe/splashing/atmospheric/red_arid_sand.json +63dd5e37774b1c90f12713e8c42951941958fa6c data/create/recipe/splashing/crushed_raw_copper.json +ee0decf5bcaa72e7e394cd83ac5fa54e24c8b876 data/create/recipe/splashing/crushed_raw_gold.json +c8d0c89c282a39b4242602a8cb030c52aaee0515 data/create/recipe/splashing/crushed_raw_iron.json +6183dc25deff1dca93af9edfb6acf797f49d51c6 data/create/recipe/splashing/crushed_raw_zinc.json +0e6d2f13fcec734dec07ba9b4407bf4046d1b3c0 data/create/recipe/splashing/endergetic/petrified_end_corrock.json +b74b473ad1c9751953b923db8f16f78bd9a2ca80 data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json +f00dddff0fa14bc72587cf089bce2973334df797 data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json +86b4f4ca2e777ae607863f2f8dc5e35bf36472b2 data/create/recipe/splashing/endergetic/petrified_nether_corrock.json +c1569883d698b209cf841325722e9fcea6108510 data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json +5e1bea6d0568ea00f27fb2d832878c8864b739f5 data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json +9cce940b029dd412225cde1bbcb549aa75c55199 data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json +94a10373e6d512675d9265e6a74bad9fe8ee7e6e data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json +540576cfa2f74fc255dd4bc08d5292ef76375f7b data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json +79b044fa7861fcd917b68434264f30b68f26e276 data/create/recipe/splashing/galosphere/crushed_raw_silver.json +4f0b8f9b15a01c27e81a3bd7711567272e29406b data/create/recipe/splashing/gravel.json +7cdd1251fe93adf4b68360a580a44c40558a2cff data/create/recipe/splashing/ic2/crushed_raw_aluminum.json +d823c951032761ec4a168d32c2152ee2717d9fbf data/create/recipe/splashing/ic2/crushed_raw_silver.json +b174c6a20e724d1d7f2137f4ee6eccad29cd963d data/create/recipe/splashing/ic2/crushed_raw_tin.json +512da35166192fcc9f223b5cab594526f96e3c71 data/create/recipe/splashing/ic2/crushed_raw_uranium.json +ccf32414d16817ff485323f47fb6da8b12c551f2 data/create/recipe/splashing/ice.json +897b5057325ef59f1627bf36810210743b4221e7 data/create/recipe/splashing/iceandfire/crushed_raw_silver.json +4b12cf8b39b978c46d471f4e546f7210a67e0c6f data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json +4cb1f45e813bb25203486d8e613aa1ded16e24a0 data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json +397c63c6c599d9e56d0d6b3513c756458368f725 data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json +ea7fc171bd1d9eb53b35805617a9155a19f8a2b2 data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json +8b6f5220308f8679336cb9646e40a9c17945296f data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json +deb294876df7433d81df41540f179507f36a3576 data/create/recipe/splashing/industrial_iron_block.json +0dcb401efcdee62b67e09b988f16bd9a2f5745db data/create/recipe/splashing/industrial_iron_window.json +fb71be2cc41d49de49764752af72d3bcfc7a23ed data/create/recipe/splashing/industrial_iron_window_pane.json +0416a60115d3030db99aa4aab97dd41ac231e244 data/create/recipe/splashing/magma_block.json +297541c839f1f126993b5e3c36c8082224b32221 data/create/recipe/splashing/mekanism/crushed_raw_lead.json +0c6017e5690a7095d8d18bfd700ba7098cc9dbc1 data/create/recipe/splashing/mekanism/crushed_raw_osmium.json +9a8c6d2ed787f2c369af1027eefe29c6e35c2f8b data/create/recipe/splashing/mekanism/crushed_raw_tin.json +7e72815dc775a032acf1ffdde57d2dfdbb7fbdcc data/create/recipe/splashing/mekanism/crushed_raw_uranium.json +ee257b8d29f4d17f44d87be2efbee0142a2a62a9 data/create/recipe/splashing/oreganized/crushed_raw_lead.json +9b25cf61d7898839f2f0d7413a9d08fa4d19afb6 data/create/recipe/splashing/oreganized/crushed_raw_silver.json +bcc406202ae9d21c8516044313a42201a698f290 data/create/recipe/splashing/quark/rusty_iron_plate.json +4d7200da96fa1897313051afdfaf2498431696c3 data/create/recipe/splashing/red_sand.json +57bc223361a969db9aa484c53f2b8fe54144b8a8 data/create/recipe/splashing/sand.json +408153b3c908fc09aa5bc98950af5ec0f562ccf8 data/create/recipe/splashing/soul_sand.json +af902b6b5eda720f38878d24eb515baa2555ef21 data/create/recipe/splashing/stained_glass.json +1f1f2817f9d3451516c9351fba1ad91cae8adcf0 data/create/recipe/splashing/stained_glass_pane.json +87f8caeb7ca51d8fa93cef13524da3ce2068c916 data/create/recipe/splashing/supplementaries/blackboard.json +43afd72f278bcc7cc36c0893ce12a1e18c434161 data/create/recipe/splashing/thermal/crushed_raw_lead.json +5bf3f6c0c4de1cdc5ce79a99e58bb622cae4258e data/create/recipe/splashing/thermal/crushed_raw_nickel.json +216cc501e9313710a54664cf754ade5af25880b3 data/create/recipe/splashing/thermal/crushed_raw_silver.json +2187ca076e2bd20e8fe539e39c30ca06a8efdba6 data/create/recipe/splashing/thermal/crushed_raw_tin.json +a9e690d38362501c803cfa4f112a8212bf1fd5ea data/create/recipe/splashing/the_vault/ornate_chain_rusty.json +e4170ba7ec1d32e49430e67ad928e9b20b8a5665 data/create/recipe/splashing/wheat_flour.json +28002a7625c9e4b118db77ea8e7621d503eefb06 data/create/recipe/splashing/wool.json diff --git a/src/generated/resources/.cache/af1b4964b4b67530aeb67585e9573385e8cab38a b/src/generated/resources/.cache/bc41f1e6e54e9f04587ef53e896703c8bdada17c similarity index 70% rename from src/generated/resources/.cache/af1b4964b4b67530aeb67585e9573385e8cab38a rename to src/generated/resources/.cache/bc41f1e6e54e9f04587ef53e896703c8bdada17c index 98257af932..ab67c52575 100644 --- a/src/generated/resources/.cache/af1b4964b4b67530aeb67585e9573385e8cab38a +++ b/src/generated/resources/.cache/bc41f1e6e54e9f04587ef53e896703c8bdada17c @@ -1,57 +1,57 @@ -// 1.21.1 2026-03-06T13:40:00.170210212 Registrate Provider for create [Registries, Data Maps, Recipes, Advancements, Loot Tables, Tags (blocks), Tags (enchantments), Tags (items), Tags (fluids), Tags (entity_types), generic_server_provider, Blockstates, Item models, Lang (en_us/en_ud), generic_client_provider] +// 26.2 2026-07-08T18:29:28.8618306 Registrate Provider for create [Registries, Data Maps, , Advancements, Loot Tables, Tags (blocks), Tags (enchantments), Tags (items), Tags (fluids), Tags (entity_types), generic_provider, Model Definitions - create, Lang (en_us/en_ud), generic_provider] 60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json -6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json +75a0825e9ade41cb8d0992fd9c8d812b17ce05df assets/create/blockstates/acacia_window_pane.json c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json 188fb038919138844cf018d5afeeddd8808c413b assets/create/blockstates/analog_lever.json 6a95eb99f4acf53189f9f578eaa829652b726b2a assets/create/blockstates/andesite_alloy_block.json 96c0b7cf225d51e2df633786c1a8a0a6c61fe261 assets/create/blockstates/andesite_bars.json db046170dcd57e5fcfe85b475790d6725a0ad8e3 assets/create/blockstates/andesite_belt_funnel.json 6cd5574ad64b212440ae07ab75b732e04ee3aab5 assets/create/blockstates/andesite_casing.json -aff6d09929301e72548f4ce5720af96426171580 assets/create/blockstates/andesite_door.json +63991ae0d899b5f253c201b5d25694fbca346d12 assets/create/blockstates/andesite_door.json 84dacd6144568b97ae00a55525290b4f295a72e7 assets/create/blockstates/andesite_encased_cogwheel.json c9aa3f6acdcadfcd6f0c48457ddafcdd9ff37104 assets/create/blockstates/andesite_encased_large_cogwheel.json 4946d26000065d09b51752b6ad34d0050f829a0d assets/create/blockstates/andesite_encased_shaft.json 7791ae0b7027e3bb83968c811c3a82f65226dd7c assets/create/blockstates/andesite_funnel.json -1299bde31535b381cc2d9b40f58097702bd12b92 assets/create/blockstates/andesite_ladder.json -afff577673aec43b9a596c4663024cb35127e0c3 assets/create/blockstates/andesite_pillar.json -0d47d0816051dd63837c689de8b838dc1639d2fd assets/create/blockstates/andesite_scaffolding.json +3199538cd44df43f9bca37dc2bb9d5b0fef51208 assets/create/blockstates/andesite_ladder.json +233f4832894c36b3aa1c0ba2a1e77a028dbefe7c assets/create/blockstates/andesite_pillar.json +fd8c395ee717f2d4e5c6b0f912364e7d2661b0a0 assets/create/blockstates/andesite_scaffolding.json beb5fd89e2c6701bca3c7c579b1b1f965a7ff71a assets/create/blockstates/andesite_table_cloth.json 67c4f7802f0854d24bb29019682b1d0a2f335a15 assets/create/blockstates/andesite_tunnel.json -542af96eb0c1e34df81f15fae7dbbaf4f81287f3 assets/create/blockstates/asurine.json -7f07775d89e3bea45d7161d289daf15470e7f544 assets/create/blockstates/asurine_pillar.json +ac39ff29c940250558b9f562d86420d2c2380aac assets/create/blockstates/asurine.json +deab6a6e20c32b4e91ed96bfa3d3dbe06cba9a61 assets/create/blockstates/asurine_pillar.json a850a113b4cfd8f1c827905b79b8629c40de12b0 assets/create/blockstates/bamboo_window.json -dfaec148d3bb21efb2ef7106a2d04454c4134303 assets/create/blockstates/bamboo_window_pane.json +99eb4813b94686311d8db757cb30b1f025b15c3b assets/create/blockstates/bamboo_window_pane.json 9c62e0ce5d85ac4081bc04c85db7676b996b0f12 assets/create/blockstates/basin.json a97910c7516e7cedec9e34eca51f1183f1e3e681 assets/create/blockstates/belt.json 0ea03133af234921a3313f52521d8cfd02bf5d81 assets/create/blockstates/birch_window.json -2003c43151b731bf19cae58290c63bcb3785848a assets/create/blockstates/birch_window_pane.json +ddfa28f3275eabc3fcb494b3ee30d506cfc22ed2 assets/create/blockstates/birch_window_pane.json c8b65faf51122eb411f5895e718869da9b260c2e assets/create/blockstates/black_nixie_tube.json fdc7dad3daa231e3d1906a1f0a84f254a31cf2c7 assets/create/blockstates/black_postbox.json 980ae9ba3f6d4e0faea8f3878985f9a9dadc0796 assets/create/blockstates/black_sail.json da3ad0225984a0dcbfb4ed800e307e45aff5aaa1 assets/create/blockstates/black_seat.json 1ea958c40f0cbf63c31d9b5422b6b86f9268e393 assets/create/blockstates/black_table_cloth.json -0083f6aa3fda2c7ebb2e5f2a032e740cf3ae3846 assets/create/blockstates/black_toolbox.json -28f2fb355e80171403e540afd2aed44e9c19659a assets/create/blockstates/black_valve_handle.json +e01c7fe0ad476ac5a0f13906495b9dd19f0440e0 assets/create/blockstates/black_toolbox.json +ebd2d9541744c987eb493e86ead8ca25cfdf06a6 assets/create/blockstates/black_valve_handle.json 06ecd28cd97f4e8200dc396858695cad57b871c8 assets/create/blockstates/blaze_burner.json 37caf031254b5171a1fbfe9906f4bc65e8dbc909 assets/create/blockstates/blue_nixie_tube.json 80cd0b998a2e21d6ca77419139c24a7ad97c2538 assets/create/blockstates/blue_postbox.json d540f0f23e0d7c03f8e147cf3eebbaf7caec9f93 assets/create/blockstates/blue_sail.json d2fdb432bb037de781260c789e905b223fab408c assets/create/blockstates/blue_seat.json 27241e0fd5a034c461f6920f94b852c6e825ce56 assets/create/blockstates/blue_table_cloth.json -f91092da79b69fece9583ccc15350612f439ee1b assets/create/blockstates/blue_toolbox.json -e330efa253172b315f73401ed8f2c39270ba90d3 assets/create/blockstates/blue_valve_handle.json +832848ed8fce1c6c4c5db5a0cc50aa2f34865165 assets/create/blockstates/blue_toolbox.json +e58b9a65b27334833c3cf57c99f645e2ea2b68ba assets/create/blockstates/blue_valve_handle.json a02d3059619edf0bd19dbf397cb35f0f8b8fb20e assets/create/blockstates/bound_cardboard_block.json 5c7065e56a831e0957b6531d50f720e9efb64309 assets/create/blockstates/brass_bars.json d49d09f1026f816bb05a5dc13c806b860f2eb07a assets/create/blockstates/brass_belt_funnel.json 5a2551315557447abc579cf9225e3a12d9a46641 assets/create/blockstates/brass_block.json ac2f8f5e1d556e5c697da95729e82f107b115f09 assets/create/blockstates/brass_casing.json -2ae65b2e9018a7445b42609e99b91e64cb2dff45 assets/create/blockstates/brass_door.json +96506069c4aedfbec02a8381044caa18d59fcc09 assets/create/blockstates/brass_door.json bac88b313b63acfc77c25b1463276a714f22f336 assets/create/blockstates/brass_encased_cogwheel.json 8a152aeb42b1e8fc3596886124139c811976bf7b assets/create/blockstates/brass_encased_large_cogwheel.json 64008f70adf8067b5691a8a26f66d6715c73411e assets/create/blockstates/brass_encased_shaft.json a408005aae4c1caa7aaae5a0ddf9d1ad73cd0254 assets/create/blockstates/brass_funnel.json -1e8eba1ac6a0beb744f8b5feb96bbe5f3a75f214 assets/create/blockstates/brass_ladder.json -6d210298b9d80ae69aa03b09aa73b92e14b9ab1b assets/create/blockstates/brass_scaffolding.json +abba12c8cf68fca98f526c9aaba477a0f2dbb614 assets/create/blockstates/brass_ladder.json +c37b6b35f47bb188a9fe68f29790e6664fd62574 assets/create/blockstates/brass_scaffolding.json 61f5242e85c36ecf0f7963954236c60596ec9cbe assets/create/blockstates/brass_table_cloth.json 8ee948f9e87b82bb27aaecc522127fa1297b3d9d assets/create/blockstates/brass_tunnel.json debf33346bf410216f21082e1e8d07aa6250b84c assets/create/blockstates/brown_nixie_tube.json @@ -59,240 +59,240 @@ bc6719074acbec67e345005aeee352fd7bc54c09 assets/create/blockstates/brown_postbox 1334fc9e71d9f2a6117f448817263467a9c695de assets/create/blockstates/brown_sail.json 19524b2c0672632e63372f405a87dbea35f1d160 assets/create/blockstates/brown_seat.json 41a93cdd7ef066a844b750b657dce766df29d301 assets/create/blockstates/brown_table_cloth.json -1ffc38bf682e84aad4cb300c573375eb0cdcc434 assets/create/blockstates/brown_toolbox.json -440b29e1dffa4374ddc1aed444bff18a485bc1cb assets/create/blockstates/brown_valve_handle.json -2064534de4791b339fdcd4ef3a8129a2e233ec50 assets/create/blockstates/calcite_pillar.json +142acdc1c22b6f447fdbd107c2659782ec78304e assets/create/blockstates/brown_toolbox.json +78ee794048441269f2c8ceee43b38655a9974348 assets/create/blockstates/brown_valve_handle.json +33f4580e71022519ed4d3d4092ea827bef496da2 assets/create/blockstates/calcite_pillar.json 6a3e661d54423af7a8d642b813deb8f5331013c5 assets/create/blockstates/cardboard_block.json 060c957b28afed9f4e0954cbef7e80cbf4b99f58 assets/create/blockstates/cart_assembler.json fab98b93ad9b78312742daca83c2575db40fce98 assets/create/blockstates/chain_conveyor.json 178c651f169ffc32556738bb5c19b4a746cfa085 assets/create/blockstates/cherry_window.json -b1796f89bd7785d00dc8618ca90d760da4f258bb assets/create/blockstates/cherry_window_pane.json +035f60b39fc90900578ec8a59bb300ca2db7c1d2 assets/create/blockstates/cherry_window_pane.json c7eca70054241944171b1d4ffcba0376b071ec62 assets/create/blockstates/chocolate.json 9eb989b0a0545af9efd052d1f127b2ec28a972d1 assets/create/blockstates/chute.json b5170d754ce5f07ea2b4646eb07c099c50bae249 assets/create/blockstates/clipboard.json 6aaece104960d0b586644085c990d051972bf8b2 assets/create/blockstates/clockwork_bearing.json 418f2519202c4159d3309834bb121d5e23a51f29 assets/create/blockstates/clutch.json -6ea849c441a5444e896cbb246c7d10862b3b6b19 assets/create/blockstates/cogwheel.json +25ecf751e859d1783033eef439d054bbb06ef239 assets/create/blockstates/cogwheel.json 646b25b6e2d1c4a7e7a2a7f3810ae75797e61392 assets/create/blockstates/content_observer.json 376a488212875b40e8df50f7ea4902fbb174dcb8 assets/create/blockstates/contraption_controls.json -2f1914af1078db737e338359bc8c8ac493cae050 assets/create/blockstates/controller_rail.json +3380960d831949bc399903803756d2d89ade0270 assets/create/blockstates/controller_rail.json 8bb9865ebfa6db9a13a29c9a327c2ccc4151222d assets/create/blockstates/controls.json -134c62bbd8ea43ff54c8edb2da5ea707f0a228fe assets/create/blockstates/copper_backtank.json +07042e7351b5096828c8d9bd3377f6f50c0fc4b2 assets/create/blockstates/copper_backtank.json 1b1e311efecc45ce7a3f69c8a1c2c53c6559b995 assets/create/blockstates/copper_bars.json 33175a9b530554e42e2ac68a9761d55f7f8623cf assets/create/blockstates/copper_casing.json -f7254f20f91e2f1295e36d2e70390d43f3952d07 assets/create/blockstates/copper_door.json -736777de0eb038ff1ef9e8fe9d04c23d80239eda assets/create/blockstates/copper_ladder.json -df3103dfc1c3ba7a9573229d009cb0de4925df16 assets/create/blockstates/copper_scaffolding.json +300164dc72d347e11ce426e71db5f7c19da746f3 assets/create/blockstates/copper_door.json +dafcbb98e1e3849b97b071546eea8dee21507724 assets/create/blockstates/copper_ladder.json +4116ce70ca4b83239756d2e75abd7de5ad82e8fd assets/create/blockstates/copper_scaffolding.json +4d3d29e8a74bf103da39e76a1466b03eb5dcf916 assets/create/blockstates/copper_shingles.json 1ea8fdb990f8cda1762ab69ac38ea3161a835227 assets/create/blockstates/copper_shingle_slab.json 7c35bb802099d6bb5d92eafd8cbb7ea146979a2e assets/create/blockstates/copper_shingle_stairs.json -4d3d29e8a74bf103da39e76a1466b03eb5dcf916 assets/create/blockstates/copper_shingles.json 5c5ba06bf5b0a2c57d0aa42e85880f36d9694a78 assets/create/blockstates/copper_table_cloth.json +9a9f03140a57a7a8903d3e1b159bdc052566a6ec assets/create/blockstates/copper_tiles.json 7db7a0d81887091ca889f40bb8a508d3098c5164 assets/create/blockstates/copper_tile_slab.json c0b7eca017242913d156e4623147add0d03574f6 assets/create/blockstates/copper_tile_stairs.json -9a9f03140a57a7a8903d3e1b159bdc052566a6ec assets/create/blockstates/copper_tiles.json -ef3ccb2d8b03f5a972b053a15bb037f8db6af17c assets/create/blockstates/copper_valve_handle.json +61538ee993b0e887d4763f2a4c75a77beb63dad8 assets/create/blockstates/copper_valve_handle.json 4758bed22fb6fe18213f463bc055775c1909e858 assets/create/blockstates/copycat_bars.json 4789c857508452aede1cb7389187b99ce2d7bf62 assets/create/blockstates/copycat_base.json -3dff9e1ec59415779195d2abfa9f07bc17b428a1 assets/create/blockstates/copycat_panel.json -3dff9e1ec59415779195d2abfa9f07bc17b428a1 assets/create/blockstates/copycat_step.json +d9f212f2bbdcce3de5f050305ae2810b0550a4e7 assets/create/blockstates/copycat_panel.json +d9f212f2bbdcce3de5f050305ae2810b0550a4e7 assets/create/blockstates/copycat_step.json 61aff016059d737c970202cfe22e1cf9e111fb01 assets/create/blockstates/creative_crate.json a04c7aa7dc994b76252b0d35d0a90f8ee79c7282 assets/create/blockstates/creative_fluid_tank.json 185cf1232b3db390c24653c17c0522d8320f94a4 assets/create/blockstates/creative_motor.json -d0536a75e870eda403f8924d4dd75603f6834a8a assets/create/blockstates/crimsite.json -45d667c79a7c22cc8f636c8c44264ba521fedbdf assets/create/blockstates/crimsite_pillar.json +0cc9606c8a54c69f63edbe9b575673dd1090964d assets/create/blockstates/crimsite.json +5df183effc3e5e6d937ce4176c71e57726618b2a assets/create/blockstates/crimsite_pillar.json 41926b920da593ed2e529986304f7c4c12333402 assets/create/blockstates/crimson_window.json -cffc87d0896e1946b8bf211e282eb4cdd9b1ca5c assets/create/blockstates/crimson_window_pane.json +76ba9c8872541e3f9a7f11e42195835685be4a51 assets/create/blockstates/crimson_window_pane.json c9a2c3a7971c46957d0f07c6d94d76f59da54a0b assets/create/blockstates/crushing_wheel.json -4b0e51a1c10685f7d432467339afc9c2e24793b0 assets/create/blockstates/crushing_wheel_controller.json +6a26576d524098001a23beee1e92df631ad6be1f assets/create/blockstates/crushing_wheel_controller.json ba9c3ecfacbd398048440d247decffeaefc714b5 assets/create/blockstates/cuckoo_clock.json 1f6d84cba69062a1989d671c9c97317e2c2455b6 assets/create/blockstates/cut_andesite.json +cc62a6499ce8dcfc5e8695f0e8bb3c3d67f41efc assets/create/blockstates/cut_andesite_bricks.json 50d88f806122818af2ffecbd514d13ebbd21e4c9 assets/create/blockstates/cut_andesite_brick_slab.json 32d801225ea18209792921fa91618ed41794dbd0 assets/create/blockstates/cut_andesite_brick_stairs.json -3bf8204bf8c7c5b7b3c388fbc3478bb2d7c47129 assets/create/blockstates/cut_andesite_brick_wall.json -cc62a6499ce8dcfc5e8695f0e8bb3c3d67f41efc assets/create/blockstates/cut_andesite_bricks.json +27c1c3566741bf213213d1aba31ab1e30663c092 assets/create/blockstates/cut_andesite_brick_wall.json 34e89a828f14383c6115954a235b19851b74f277 assets/create/blockstates/cut_andesite_slab.json 49d58ae14544d89305ddc707cf7f6a81998200fa assets/create/blockstates/cut_andesite_stairs.json -1cc235cb6c388324793ac40f7bf89df8b048faac assets/create/blockstates/cut_andesite_wall.json +d8e2a5d2316119d64b6bfe70fe835a2564b6caeb assets/create/blockstates/cut_andesite_wall.json 13ea54a4b9b89e576879a6e23a029c6341b7c098 assets/create/blockstates/cut_asurine.json +51c22c0547ab8ed2564890afb8733bbe356899f5 assets/create/blockstates/cut_asurine_bricks.json cf09de38f826fe000c5efe5afe56cf746125691d assets/create/blockstates/cut_asurine_brick_slab.json 1835482d5e9a59f2214336a63b12c7132ad815b4 assets/create/blockstates/cut_asurine_brick_stairs.json -c48ab37bf7a2aba676af281d29cb6a2103c72fba assets/create/blockstates/cut_asurine_brick_wall.json -51c22c0547ab8ed2564890afb8733bbe356899f5 assets/create/blockstates/cut_asurine_bricks.json +870ec25dfdd384f211b23d1d18f3d873e27e0a4b assets/create/blockstates/cut_asurine_brick_wall.json 1523a57124239a99da0b12a6b435c09d3d4276a5 assets/create/blockstates/cut_asurine_slab.json cc1acf5e118f1b1e78c5bb291176008960794d59 assets/create/blockstates/cut_asurine_stairs.json -139640bf41070e8eeb48647319eee54bb6804692 assets/create/blockstates/cut_asurine_wall.json +131b7f5bb99f4e0ba93841dff3880c37625b97f1 assets/create/blockstates/cut_asurine_wall.json 06b8c5cf98366608c480a37e6944d0d668bc8983 assets/create/blockstates/cut_calcite.json +979c70e35d806f1f63fe3381f27d881a17f9f6be assets/create/blockstates/cut_calcite_bricks.json a8f83cb8e1eae587f4e11e37c4cd3d0a1bbef377 assets/create/blockstates/cut_calcite_brick_slab.json 1eabb2e485aa323d317fa9648be02c12556593b7 assets/create/blockstates/cut_calcite_brick_stairs.json -a0a33df71c5d26344a7bb0dd7a4622c30cc7825f assets/create/blockstates/cut_calcite_brick_wall.json -979c70e35d806f1f63fe3381f27d881a17f9f6be assets/create/blockstates/cut_calcite_bricks.json +55e694bfd63678d3d9f92a7b6a2dfe83a300ae1f assets/create/blockstates/cut_calcite_brick_wall.json e3ddaae92b52cc3ea230088ff23260b5c5c93017 assets/create/blockstates/cut_calcite_slab.json 80c5249eaf9504c743c427fdd1a2c7bfa0f3d48f assets/create/blockstates/cut_calcite_stairs.json -b4bbdb08d8114b6741546a0418cb54d645481c02 assets/create/blockstates/cut_calcite_wall.json +2c0a073522de7a06961458e13a25c23347b8b4b0 assets/create/blockstates/cut_calcite_wall.json 449f5180c72a028393afdac55a34e59862728224 assets/create/blockstates/cut_crimsite.json +25d731077a131d03347296c38c76b547194a6320 assets/create/blockstates/cut_crimsite_bricks.json d2c8a3580d3578c8afe44b94d4448be3680dbdeb assets/create/blockstates/cut_crimsite_brick_slab.json a3d9d2190a23b881dd3a7538ab248e0b0a3efa8e assets/create/blockstates/cut_crimsite_brick_stairs.json -3791c00ed477c0aaf7c5a20803a89dfc0e20f013 assets/create/blockstates/cut_crimsite_brick_wall.json -25d731077a131d03347296c38c76b547194a6320 assets/create/blockstates/cut_crimsite_bricks.json +32151265cec5e4232daa1a3f858ac7d8139dca2c assets/create/blockstates/cut_crimsite_brick_wall.json c9f19e7a976a7428b3dd58f45d734700ca1a18cd assets/create/blockstates/cut_crimsite_slab.json 1b8d4ac53dc5823083c2af605165a05b73c9ff79 assets/create/blockstates/cut_crimsite_stairs.json -484f9253ed92e963f398973a99fbeacb67ba1188 assets/create/blockstates/cut_crimsite_wall.json +4c3aadbdcc05daa35be4d89cb9bf4f35b59517fc assets/create/blockstates/cut_crimsite_wall.json c4e95ceb7914da09ebe42d539bf5d976a3d70972 assets/create/blockstates/cut_deepslate.json +75d4ef863cd85d8f3df78226177966954e02ee2b assets/create/blockstates/cut_deepslate_bricks.json e1dc99a48b9066732fc5c62071c5ead16f34f438 assets/create/blockstates/cut_deepslate_brick_slab.json dbb2eddaf1d4ae3e687beb611552ea4283a1e7d8 assets/create/blockstates/cut_deepslate_brick_stairs.json -91c1f3da848503067c64b966ddda22ab91ff8fd5 assets/create/blockstates/cut_deepslate_brick_wall.json -75d4ef863cd85d8f3df78226177966954e02ee2b assets/create/blockstates/cut_deepslate_bricks.json +b42cea482dae73716af145633b0b5ee44623505d assets/create/blockstates/cut_deepslate_brick_wall.json 593198ffd37eae124a8366ae1d4a40b682788f92 assets/create/blockstates/cut_deepslate_slab.json f8cd1f9002ed8593ab71af9cfb7f962625994108 assets/create/blockstates/cut_deepslate_stairs.json -c2d8060a0c830e5b8bbb084457083324b5b6f4c9 assets/create/blockstates/cut_deepslate_wall.json +63c6481d9eac2146223a60539c59fb03e64caa9a assets/create/blockstates/cut_deepslate_wall.json aaa6ac5f4fc399c4b03a7f8de856fa7aae97e049 assets/create/blockstates/cut_diorite.json +08b6289ca8b4193c87324ca23ca081e8773fb223 assets/create/blockstates/cut_diorite_bricks.json 423f809f06fa3fd96643f068ba0d3520269b3844 assets/create/blockstates/cut_diorite_brick_slab.json 9011fb92f57e7695c4484c923dd40ecd749ff307 assets/create/blockstates/cut_diorite_brick_stairs.json -41bad89777a33737bc0365ce2c7ffc20720f9620 assets/create/blockstates/cut_diorite_brick_wall.json -08b6289ca8b4193c87324ca23ca081e8773fb223 assets/create/blockstates/cut_diorite_bricks.json +d2691b80eaab52fc9039b6b701cbe58cf4db85cb assets/create/blockstates/cut_diorite_brick_wall.json b03e7cf494c53c6f24ba93d0ef531e839026932b assets/create/blockstates/cut_diorite_slab.json 95c8094204979acfb0e59c2826003e0274a02fe5 assets/create/blockstates/cut_diorite_stairs.json -e2f163d36dd5d03c0741dd2e87d8f77a0c86ae00 assets/create/blockstates/cut_diorite_wall.json +293da76fdbefb7185b7c3467865e8bbf1eacc1b6 assets/create/blockstates/cut_diorite_wall.json f42ca2ce8e8f657c64376759413ec611f8045531 assets/create/blockstates/cut_dripstone.json +2d696162b2085c3d5723308a8d1ccafb29660f01 assets/create/blockstates/cut_dripstone_bricks.json 9310a800fb091014e7c0a220f5f2511c1de379ad assets/create/blockstates/cut_dripstone_brick_slab.json 3ff2f65dafcb4654b99e0d65b7e851760f9a4075 assets/create/blockstates/cut_dripstone_brick_stairs.json -cafc956d8dc2053e5a0e8437c4ccde7fa24fc17e assets/create/blockstates/cut_dripstone_brick_wall.json -2d696162b2085c3d5723308a8d1ccafb29660f01 assets/create/blockstates/cut_dripstone_bricks.json +41bbd9e084cc550f69e2a3751b9d7c58bc62ada7 assets/create/blockstates/cut_dripstone_brick_wall.json 9cb32af3b952b841e9da94789da17cd274c3cfb9 assets/create/blockstates/cut_dripstone_slab.json da0300f54bdfcc705beb8d84f26406be660de5de assets/create/blockstates/cut_dripstone_stairs.json -83ff3eaeb481202c77e6dbdc442b4dd195ca568c assets/create/blockstates/cut_dripstone_wall.json +e93f5c2fa8eb40e1a2a74c442978f7f9e1f3d991 assets/create/blockstates/cut_dripstone_wall.json bf501250fd2226838afe0baf68db08cd832e3c4f assets/create/blockstates/cut_granite.json +5c029d7ec837b3239d17ab91a70f025df1bfb124 assets/create/blockstates/cut_granite_bricks.json 773717bd5c140cf025f463c99c67efb9d27bd696 assets/create/blockstates/cut_granite_brick_slab.json 97d20b21e5b7f329c1b21b436fd0bdcaa8d173d0 assets/create/blockstates/cut_granite_brick_stairs.json -5e4175b6c89039ded48937ad1cd13d3bb2d2992a assets/create/blockstates/cut_granite_brick_wall.json -5c029d7ec837b3239d17ab91a70f025df1bfb124 assets/create/blockstates/cut_granite_bricks.json +d63239e6f61270fe0385a12a392f8a1f12535b20 assets/create/blockstates/cut_granite_brick_wall.json 42549436ce26ad7b44f2e1cba54357b3f25bcb18 assets/create/blockstates/cut_granite_slab.json e9d8fd028d8092e5fa0fd13cd638516f57a22d53 assets/create/blockstates/cut_granite_stairs.json -2daab523202dd2e31daeaf3b9a04cde2a7da4ca5 assets/create/blockstates/cut_granite_wall.json +5026d1e71ccc5adcbcb9ca041e59845230ffcf18 assets/create/blockstates/cut_granite_wall.json 0652c8b9c41acc1a8da901bd7b8b6018b3581d5b assets/create/blockstates/cut_limestone.json +508ee569f313b7e804f6268ca86f5a61851563ec assets/create/blockstates/cut_limestone_bricks.json 4efbeb34c96918e9b48dc484a82b1ef4811ed39d assets/create/blockstates/cut_limestone_brick_slab.json 11b99cf9b33d7f8de9d11cc1e405e2681682ba32 assets/create/blockstates/cut_limestone_brick_stairs.json -b6c02a9e9e47a8e521a54ef9488259267068f032 assets/create/blockstates/cut_limestone_brick_wall.json -508ee569f313b7e804f6268ca86f5a61851563ec assets/create/blockstates/cut_limestone_bricks.json +4fbdefbc6edc9563353db4d62462d24215ed74f4 assets/create/blockstates/cut_limestone_brick_wall.json fb63a2581211fe62344985a06feec9dcec4b1888 assets/create/blockstates/cut_limestone_slab.json ffcca1e66718f3e78e544b5fa9954a852c095e91 assets/create/blockstates/cut_limestone_stairs.json -a1a90f84b47f96b4384fc2d60bfc48ddbb5ed179 assets/create/blockstates/cut_limestone_wall.json +7969c0ab7736cafe4da3b25f92ef07affa272dc4 assets/create/blockstates/cut_limestone_wall.json 1b7a133518780d4f49474a70e7f6263d6e88ff51 assets/create/blockstates/cut_ochrum.json +6f37e5e2dca3b443951131cb82c15a981a4e2005 assets/create/blockstates/cut_ochrum_bricks.json f1e9d54a6f9f41b968f117a7be711011effa71a5 assets/create/blockstates/cut_ochrum_brick_slab.json 8d334e026e94b304a1ff1ee96097f434b50175f2 assets/create/blockstates/cut_ochrum_brick_stairs.json -e92c026ee7ab2aa35003ad475bef3d6c0e29818c assets/create/blockstates/cut_ochrum_brick_wall.json -6f37e5e2dca3b443951131cb82c15a981a4e2005 assets/create/blockstates/cut_ochrum_bricks.json +d4cfc744fa9809a2e7748ace19d0be58d597202f assets/create/blockstates/cut_ochrum_brick_wall.json 5a61edb7d146e83d951795fae33dc306e71b2cb6 assets/create/blockstates/cut_ochrum_slab.json b31944bf6297685acd37631083dde0889c08ede7 assets/create/blockstates/cut_ochrum_stairs.json -df33a8af1dc8cb08ddcfd22a50a305499479a4dd assets/create/blockstates/cut_ochrum_wall.json +5c27d272939386b7daf5e1f73d4001542838640d assets/create/blockstates/cut_ochrum_wall.json 1606d7481e56755f07e9331cf85a8d7cc9aace9a assets/create/blockstates/cut_scorchia.json +bc2a0e7f11400b8c2a03071be87dadb5edc097de assets/create/blockstates/cut_scorchia_bricks.json 43db25ebac2f5bcaa7ca9cfb6da8fcb20fad8269 assets/create/blockstates/cut_scorchia_brick_slab.json 7a80620590ba5e61967c5168f5c67ecabf09dc00 assets/create/blockstates/cut_scorchia_brick_stairs.json -e4eb79360a41bb1a7ca835d61446ea5166e4cda8 assets/create/blockstates/cut_scorchia_brick_wall.json -bc2a0e7f11400b8c2a03071be87dadb5edc097de assets/create/blockstates/cut_scorchia_bricks.json +7c49bce2bdf3cd6f07690800c08df85a9d9af2aa assets/create/blockstates/cut_scorchia_brick_wall.json c0d262f54e3b2fce8bc941a2a6df71db5f0229ea assets/create/blockstates/cut_scorchia_slab.json de2e918058e9dd7eafd085a8dec634f6a2832c21 assets/create/blockstates/cut_scorchia_stairs.json -5d2d06799b82449754f62b1d80b9ee9a24c65bad assets/create/blockstates/cut_scorchia_wall.json +981b4376d7b8654a9e67155cc37a38217310c6e9 assets/create/blockstates/cut_scorchia_wall.json 76ea4f3438a3effedfc93d2bbabac0899610cd28 assets/create/blockstates/cut_scoria.json +6d9c79e1b71656a73bb69e2a9b100be59084dd2e assets/create/blockstates/cut_scoria_bricks.json 7c7dcd1fe82f3673910620c2eefebad5d0029cdf assets/create/blockstates/cut_scoria_brick_slab.json d535b387bf0a6f9e124eed8b76d899e13699bca9 assets/create/blockstates/cut_scoria_brick_stairs.json -c426e1b5e4c77c25cd0d16d10fba0e0731673dd1 assets/create/blockstates/cut_scoria_brick_wall.json -6d9c79e1b71656a73bb69e2a9b100be59084dd2e assets/create/blockstates/cut_scoria_bricks.json +41ef4a081b3c1f206b46903cdedf1924d2799b3b assets/create/blockstates/cut_scoria_brick_wall.json fb692494c88358d4d8e687b216f729d6b6bd7174 assets/create/blockstates/cut_scoria_slab.json 950f43bae8f4e3220103ce0c62f444856129ca12 assets/create/blockstates/cut_scoria_stairs.json -01350030831c5b9edef0dc2c778b92f1ebc2b2fc assets/create/blockstates/cut_scoria_wall.json +5827225ee6c556cf2d846c6d3fd035f2093bb661 assets/create/blockstates/cut_scoria_wall.json c0c1c4d44eba5babe9703eca31f0279ebd11ed8e assets/create/blockstates/cut_tuff.json +9bddef4a2b4a338c15f03e2397c4cd4c3ae9e5d9 assets/create/blockstates/cut_tuff_bricks.json 11306e83915e0106d48f890df3212c3a47443a08 assets/create/blockstates/cut_tuff_brick_slab.json e8951d94e0d3228700bcb56819928f1c179c3973 assets/create/blockstates/cut_tuff_brick_stairs.json -619340b7cf014cfb72a4b5440b90881535f16108 assets/create/blockstates/cut_tuff_brick_wall.json -9bddef4a2b4a338c15f03e2397c4cd4c3ae9e5d9 assets/create/blockstates/cut_tuff_bricks.json +e6d07e5c4a5345c686060cdcb87f40d21a9bf17e assets/create/blockstates/cut_tuff_brick_wall.json 3577e3f4933ea8cb7464c28e80867ce84917898d assets/create/blockstates/cut_tuff_slab.json 5673fdb02439d622c56dc0ff47a0dca98dc6d027 assets/create/blockstates/cut_tuff_stairs.json -12a46ee82536665400ec2f3befed3be58325d5c6 assets/create/blockstates/cut_tuff_wall.json +d5ecefad2e50dce16c44d816899ded93ea4f05f9 assets/create/blockstates/cut_tuff_wall.json beb9e47f8d811c2146f68daf992fb805342a65cb assets/create/blockstates/cut_veridium.json +04d07986eb86ffd66baaaf9b65e02d00022e98e2 assets/create/blockstates/cut_veridium_bricks.json 952543c03e730443d85059ec43642efb089485e7 assets/create/blockstates/cut_veridium_brick_slab.json 6a033e7b5a0b26cce5956c6c7c1eff558f866cb5 assets/create/blockstates/cut_veridium_brick_stairs.json -43689138c8018b3ee9f35a11870887e9df3c8fe5 assets/create/blockstates/cut_veridium_brick_wall.json -04d07986eb86ffd66baaaf9b65e02d00022e98e2 assets/create/blockstates/cut_veridium_bricks.json +7316f9da317063fc1a936b7ac032532539bb7be6 assets/create/blockstates/cut_veridium_brick_wall.json 212d8ee5dfa78802b9539640cf8b263fd5880b87 assets/create/blockstates/cut_veridium_slab.json c11f09df4a23e951bdf9a345515183f4fac7cde3 assets/create/blockstates/cut_veridium_stairs.json -3aa6f5e613ff73952e3de00408051f92316e7f81 assets/create/blockstates/cut_veridium_wall.json +a8ceb4c51e455ad0a927f220830a32e82288b068 assets/create/blockstates/cut_veridium_wall.json bb627b2e78dba6833cf2d357033f253fc89aa1b8 assets/create/blockstates/cyan_nixie_tube.json 21b830af3dc477c527885d6590e0a8419ffb4fa2 assets/create/blockstates/cyan_postbox.json f1061b8f9757374d6608fda07e301a2623e79f72 assets/create/blockstates/cyan_sail.json 538c6d95da5cc460e99c91647dac61726a91479f assets/create/blockstates/cyan_seat.json c2fc64da0466fe9daa63c18c35221736c1e091df assets/create/blockstates/cyan_table_cloth.json -c4d84b719762aca46cdb8decddfeb97dcc50676c assets/create/blockstates/cyan_toolbox.json -477d32008d5aa6ed5a6825a70b9bb7d976e7d0fc assets/create/blockstates/cyan_valve_handle.json +1e59a099ef922159e92f4b6599e4a16eb2c89c7c assets/create/blockstates/cyan_toolbox.json +ecb885f156cab8b7fad41eadf6323a5bb2f4a203 assets/create/blockstates/cyan_valve_handle.json f4d7f5a38db9b92399a81f49ff1787d025c6f41f assets/create/blockstates/dark_oak_window.json -a1b25bf2a5ec3cc2d6db727a3779703d2dc60bbc assets/create/blockstates/dark_oak_window_pane.json -c705f9cd47042867c87fab3a898a57152dec6dd5 assets/create/blockstates/deepslate_pillar.json +73c9ad16e155253ee0e940e63f277cd5fb77e019 assets/create/blockstates/dark_oak_window_pane.json +fd6c8032cbcbb0de9ec911d410e8c685cd3a87aa assets/create/blockstates/deepslate_pillar.json 1073fe9e96ea170c81b613835064034f967945b5 assets/create/blockstates/deepslate_zinc_ore.json d0ec99fdd534e1f3a84cc51fa914d3b74fb2c96a assets/create/blockstates/deployer.json 4f18fd003ca756417fd036bd8b66f323e0ca4852 assets/create/blockstates/depot.json 5b933ed479ec646f8cc2cd3739405c34737d517c assets/create/blockstates/desk_bell.json -26a5a4c176e75b1f48f3eb653a45c23e606f07b4 assets/create/blockstates/diorite_pillar.json -d45d92164f81fd42cc1f8c6ba4ac25df0fca79b1 assets/create/blockstates/display_board.json +b4ec177a7714f987a8c568bce5bcd30ed93c9020 assets/create/blockstates/diorite_pillar.json +4e8b82254d307bc5fc7b6ad312d5b819c3a7bfab assets/create/blockstates/display_board.json a65771f280051a884725073d14a831539bc0d658 assets/create/blockstates/display_link.json -ce43c78368724a2e1a6048c5b4e4fb45297b1593 assets/create/blockstates/dripstone_pillar.json +51e3b014a337a70d2e77e739cb412bb92883415c assets/create/blockstates/dripstone_pillar.json f7f5df9086c71688cbdb5d05c394dc5acb8fb338 assets/create/blockstates/elevator_contact.json 359a0c4954da65d8f7af554b9b8a11a707a8b68a assets/create/blockstates/elevator_pulley.json 2fa96f480365dcbd867635eaa665d1ad5936ca65 assets/create/blockstates/encased_chain_drive.json d47bc65703e9582cc710e6408fb565e16d3514a6 assets/create/blockstates/encased_fan.json -651f9fdb11f56d887d131be8f936f508d0b2fc1d assets/create/blockstates/encased_fluid_pipe.json +d48ed18af0e8a890e38f2411741cfcbc8b896dc3 assets/create/blockstates/encased_fluid_pipe.json 489ad4daeaed702d231a3f175f7b66846f5789a6 assets/create/blockstates/experience_block.json +5f6c60a30889b043709066707e80a21081d98155 assets/create/blockstates/exposed_copper_shingles.json 74c8a72db3dd3fa919e29baaa8c5865f13490461 assets/create/blockstates/exposed_copper_shingle_slab.json 4e0b5a9be15f0c2861f5f6bd71bd9c2a4db2a21d assets/create/blockstates/exposed_copper_shingle_stairs.json -5f6c60a30889b043709066707e80a21081d98155 assets/create/blockstates/exposed_copper_shingles.json +5299b4f7b9b3490872e8c26a6b212e14dd05fd9a assets/create/blockstates/exposed_copper_tiles.json 6ee73ff3608d51fdad6e9810feee66ed1773b81c assets/create/blockstates/exposed_copper_tile_slab.json f93e4059876bfc6d70b9fa2bc24d8e3d6943d56f assets/create/blockstates/exposed_copper_tile_stairs.json -5299b4f7b9b3490872e8c26a6b212e14dd05fd9a assets/create/blockstates/exposed_copper_tiles.json -4b30365ed77db9c5754eeda5fee81d47b568b946 assets/create/blockstates/factory_gauge.json +423ae882f9afae780ddc1c8861f3604fb5174ae2 assets/create/blockstates/factory_gauge.json f1a03ede031d8c4e33a4d07c529e71936da9dc6d assets/create/blockstates/fake_track.json 21fa4a1bf4ee851e090a21c97c9a38d18cfddf0d assets/create/blockstates/fluid_pipe.json 185e6367c5c5b3632e54148c74987057cbfccaca assets/create/blockstates/fluid_tank.json 76a2cd731390e827f464442af1557c37fb595443 assets/create/blockstates/fluid_valve.json dd631893f279aa1446a1c54c50014220555216a2 assets/create/blockstates/flywheel.json a8c3ef55b001fc92ca92c73ace5f56a8c759c8aa assets/create/blockstates/framed_glass.json -6efecd71555a36cc959448e5c200dba45b0d7a07 assets/create/blockstates/framed_glass_door.json -c2cde00617b83cf9b4665da06767b52c19152da3 assets/create/blockstates/framed_glass_pane.json -769d082c3ddd34974760f9b9d387434bf8d778fc assets/create/blockstates/framed_glass_trapdoor.json +ae83614ed700e88c243450f8c118bad890781efa assets/create/blockstates/framed_glass_door.json +da9d9ff0badb875061d036d39130e74cdb18b023 assets/create/blockstates/framed_glass_pane.json +11f885a3fea2eede1f03de7cfcafc7324aeecf11 assets/create/blockstates/framed_glass_trapdoor.json ff9f56912d8ac4069df90505232820f9c45f5e06 assets/create/blockstates/gantry_carriage.json 24d73e83808bf81957ad73ccb78c490770ab66c7 assets/create/blockstates/gantry_shaft.json 346deaaba10a03d5b25e03c2d5b88ff98dbd3a78 assets/create/blockstates/gearbox.json 8ac0d74f418d2789a61dc5b451defcd2cb2687cc assets/create/blockstates/gearshift.json -5a193991f33a1af8659192f3693e4d8d3ed0082b assets/create/blockstates/glass_fluid_pipe.json -e3f2a093c436cb65c5a7ac049a14cc4dadb22526 assets/create/blockstates/granite_pillar.json +f31f13bc953d19e1fcb533ca040b46cee01f3b2a assets/create/blockstates/glass_fluid_pipe.json +0e3b3e6cb59f9e53bb6ec10c64340a23f78435e9 assets/create/blockstates/granite_pillar.json 921cf220c44a67195c90a30c4c296e65311738da assets/create/blockstates/gray_nixie_tube.json 024b9e82cc5802e8a9ff22880f8098d07fd192e7 assets/create/blockstates/gray_postbox.json 30ba031a6b5a327d2a4caa12169676da573c2133 assets/create/blockstates/gray_sail.json f35a502c4a5e2703e7c6811b3d2ba16a9c47d4c8 assets/create/blockstates/gray_seat.json 612058f415131fb127280c24d5d089793c103a7a assets/create/blockstates/gray_table_cloth.json -87457e0eddae80225dbb3145f2d120296ea1bfcd assets/create/blockstates/gray_toolbox.json -f18b87db39836eef20154b239d488eebb64b3455 assets/create/blockstates/gray_valve_handle.json +537cfc467d57df4d3001557682824e6bf5af59bc assets/create/blockstates/gray_toolbox.json +15191b6f516a8e95d968375734e9304ae595a4d8 assets/create/blockstates/gray_valve_handle.json 0f0fe2bf83f763e04cd2d7a979beb547feac3191 assets/create/blockstates/green_nixie_tube.json 587c4f761858d888097c83f132c0a2d66ded3c56 assets/create/blockstates/green_postbox.json 0a2a5fbf2cf084e1be0426a224c291dc22a826fd assets/create/blockstates/green_sail.json b4aede1847d204ecdb7847559066d9d2ffb66903 assets/create/blockstates/green_seat.json 98587a931a565d4196f71ac4928846a7d55b3645 assets/create/blockstates/green_table_cloth.json -6f080890b3b30c46ba9ceb382c1171940bf4966f assets/create/blockstates/green_toolbox.json -a343aefdb4207d1bffa6f4b40e20283a6d42c2f9 assets/create/blockstates/green_valve_handle.json +60a9a6a04f238a5c2065264bedccdc89f8ae144e assets/create/blockstates/green_toolbox.json +abead4f89d857eb90a33ea8a475dbfe9512b81ad assets/create/blockstates/green_valve_handle.json 23430b770b5257af36844dfe9b976e343a6d1180 assets/create/blockstates/hand_crank.json d0b26c085df3ee5189082bc18945e5f74ee529fa assets/create/blockstates/haunted_bell.json 035dd3adaaf86510237f516d2657535da3d56d37 assets/create/blockstates/honey.json 44343f14fb6e43a93882b4f9ce0640e54876fdf8 assets/create/blockstates/horizontal_framed_glass.json -bffc2169f5fc3a8e22f8952a90767e0bb8d726b5 assets/create/blockstates/horizontal_framed_glass_pane.json +0e5da7396edb588206bf67f55adadf003f206988 assets/create/blockstates/horizontal_framed_glass_pane.json 8ae52808eba950c36b75d62113e9cea9441a1a54 assets/create/blockstates/hose_pulley.json 87fa830c5d3541d096fab32d430c54516c197583 assets/create/blockstates/industrial_iron_block.json 3727801604445df291112fd9b99f99bbdcfa0f6d assets/create/blockstates/industrial_iron_window.json -877418ed76fdc589788db119663ca3e52e26a2aa assets/create/blockstates/industrial_iron_window_pane.json +e504965319a1fe4631175eb18f901b030506cbe5 assets/create/blockstates/industrial_iron_window_pane.json 2788ad2d29996076f7f18ab8d47e40c1ad10b348 assets/create/blockstates/item_drain.json 3151ed4019d851ab2a7b07f1327bc4bfb6ed7227 assets/create/blockstates/item_hatch.json 3e99569e978c0fe17ec18b97881434a9da1a8421 assets/create/blockstates/item_vault.json 8680e9d2a94231f4bbad87b26ab2efdb714903d3 assets/create/blockstates/jungle_window.json -ddcf1010e43c5d4a8c93aad37cc97a94343fd9f5 assets/create/blockstates/jungle_window_pane.json +5f4f6f957a29cccce4d93c98d78acd642535e50d assets/create/blockstates/jungle_window_pane.json e986248237013eea755bccd300f745e44d0a183f assets/create/blockstates/large_bogey.json -bf3ee4416935ba760777e0702eef28ad94332d76 assets/create/blockstates/large_cogwheel.json +2a5ae9133979acc5cf2b989aac8d106e6601846b assets/create/blockstates/large_cogwheel.json ba1ab31dd3ed2fbf9709ef2ba509b7ac210f5ad2 assets/create/blockstates/large_water_wheel.json ecc6a978a44636a43f12728da56268de05e9bfbd assets/create/blockstates/layered_andesite.json 8917eb8a3bb805e79bdc6a837c38f4d7b5ccc4fd assets/create/blockstates/layered_asurine.json @@ -308,30 +308,30 @@ a6714e9ac328db3253615e31be11e2aa624e98a1 assets/create/blockstates/layered_limes fc0d3c258d8ee61c9bd16fdfc6565bce4e6df7b2 assets/create/blockstates/layered_scoria.json ca124508c59130d21f23d7b1ef354d78bdd24dd4 assets/create/blockstates/layered_tuff.json 2ff5466f9ea3b1292c24a8ddb31666d74635c592 assets/create/blockstates/layered_veridium.json -fcf02725651ab5973fab1cfc09fdd68cb4b93579 assets/create/blockstates/lectern_controller.json +84060f45d7a61fe7f21338cf332257c02b211030 assets/create/blockstates/lectern_controller.json 5d7e1b08b1ec7c7c11b70db11df09311fcd7cf45 assets/create/blockstates/light_blue_nixie_tube.json 3a7ceaefb2f7a24eac6bb3676a8fee01290a535f assets/create/blockstates/light_blue_postbox.json f2354e8cb6086473ac97a5228b99706858dcad8a assets/create/blockstates/light_blue_sail.json 6b7045eaf9efe3a90f2d9a6785be6a5fd534b8e7 assets/create/blockstates/light_blue_seat.json ba0ae5046b643f82338e98ae56a48c01cf2d5972 assets/create/blockstates/light_blue_table_cloth.json -b7065e7871c3c7f1a0656c2f92f82544e606f2fb assets/create/blockstates/light_blue_toolbox.json -549882a0f4de60906ca870a6197330f81d4e1afe assets/create/blockstates/light_blue_valve_handle.json +1d60b56368db236f84e0e0b0bccbb689e8ae7172 assets/create/blockstates/light_blue_toolbox.json +ba040111377ebb37488b8e889d183ee3308da1e9 assets/create/blockstates/light_blue_valve_handle.json fa5fb2be73c7c54b70e927b66adf3f4d64c5cb6b assets/create/blockstates/light_gray_nixie_tube.json 9af388892d4ae6c4a91dc6021e4f15a504b82695 assets/create/blockstates/light_gray_postbox.json 3d95c9c4442d1bdd660bae382c72c68134db86dd assets/create/blockstates/light_gray_sail.json 8ec5144da4a49dd5b497af07b0d4b88c9c0b6cc0 assets/create/blockstates/light_gray_seat.json f1901887cd166296e465133c3b0d7ad0d664a614 assets/create/blockstates/light_gray_table_cloth.json -35b151db396069b146d223fbe46be5b0c3dda8a9 assets/create/blockstates/light_gray_toolbox.json -894827ffd176bc733abecf18d96888e9ed5a3eb4 assets/create/blockstates/light_gray_valve_handle.json +00dad366b6b2c45442336dc8cda88ba8ee661954 assets/create/blockstates/light_gray_toolbox.json +a3c29d1679e783ed4d3d679c6613ad817c49e6fe assets/create/blockstates/light_gray_valve_handle.json +a6f319c803c03e34bbf841ea52d82f0f7ec7a413 assets/create/blockstates/limestone.json +71227d84862588b993321372bb99fb0ff39f7a07 assets/create/blockstates/limestone_pillar.json 7f20b548dd535942b2d6f41c39de7ad4fafe637e assets/create/blockstates/lime_nixie_tube.json c6ac740bf37477ad170576983230b130ac01f355 assets/create/blockstates/lime_postbox.json ad1ec304729fd6d336c0d4d0c27c9345af636695 assets/create/blockstates/lime_sail.json b9934a558e1b495403dc2c71ffb43cce7d396013 assets/create/blockstates/lime_seat.json 7c5dc2ffd0bd44ba8785b6a788030714a009bcbc assets/create/blockstates/lime_table_cloth.json -49a02f7fc16697ba1cf16cee7e45ab6bfd8b06ce assets/create/blockstates/lime_toolbox.json -ba181485f219d3ae23509a7edf28e25d9edb10f4 assets/create/blockstates/lime_valve_handle.json -a6f319c803c03e34bbf841ea52d82f0f7ec7a413 assets/create/blockstates/limestone.json -7ff65e1c4c8e48a0b694cd17506a192e6a7e6e44 assets/create/blockstates/limestone_pillar.json +39d966d3e52d73eb23502d51f1ecd054cb047e52 assets/create/blockstates/lime_toolbox.json +29e215de4762dc3c9ae712ec135bba44657290c2 assets/create/blockstates/lime_valve_handle.json 654e845cebed82b7afbcf81380921e0a475b01e9 assets/create/blockstates/linear_chassis.json e195e82e4d0c1fc20474535bc9068cbb77a5e175 assets/create/blockstates/lit_blaze_burner.json 296186b196af94e1ab3f7e8a3254f6d31ae47a5c assets/create/blockstates/magenta_nixie_tube.json @@ -339,10 +339,10 @@ e195e82e4d0c1fc20474535bc9068cbb77a5e175 assets/create/blockstates/lit_blaze_bur f150922cbed1c05fb3892d4ac91eb471234252e2 assets/create/blockstates/magenta_sail.json bb1ab5c70647933400b3a99ef9d166ba5e3d4709 assets/create/blockstates/magenta_seat.json a09b8c51cfbb1c9c8a4f670a83cd81c376fe4ba3 assets/create/blockstates/magenta_table_cloth.json -fcd226c7863262d98765c701538bf9e44d2b177e assets/create/blockstates/magenta_toolbox.json -ecf670d95969a33a738f59e08393299891f78847 assets/create/blockstates/magenta_valve_handle.json +e3c1060fe1ab7720538feb73f2e9ec0148170ab6 assets/create/blockstates/magenta_toolbox.json +da853e67740f457e8b4489dfaf5ed645e0973e9c assets/create/blockstates/magenta_valve_handle.json 8a30c1ed277ec60963abbcb24cce6efd162d02d3 assets/create/blockstates/mangrove_window.json -ed1afa8eec6824928332aed7f75c07ba6754c760 assets/create/blockstates/mangrove_window_pane.json +5878feaac260d2a286e1de6bc7306abefb2c0285 assets/create/blockstates/mangrove_window_pane.json 9386361f50a60bb14f397821285e64d33ed21fd2 assets/create/blockstates/mechanical_arm.json aafb4c62ae10fd65003f05160f3e1fbddbb01c5e assets/create/blockstates/mechanical_bearing.json be119eeeb8e0d9a9a5515dd2c49eaf91268d49b3 assets/create/blockstates/mechanical_crafter.json @@ -350,10 +350,10 @@ d17606a48ba154490c539fb07747ddf1fc15cb89 assets/create/blockstates/mechanical_dr 4a329956138fa77de07c183ebe4e5751bdce2560 assets/create/blockstates/mechanical_harvester.json 3238f7a31049bc6a810936366bba417ed7b0e5f2 assets/create/blockstates/mechanical_mixer.json 916a6ebe785f37afbf153dc0e8fe6be264eb5425 assets/create/blockstates/mechanical_piston.json -039686cb1a0f9b3eea44ff39431ebe9c57081fc3 assets/create/blockstates/mechanical_piston_head.json +61a6b19e7dce2f47c7da40efde12d477240ce960 assets/create/blockstates/mechanical_piston_head.json c9c7d39adc40a2c3f93dd88f412563cd89c8f0ba assets/create/blockstates/mechanical_plough.json 383a36c7aebf2351de9b1f2d41552c743840bc0d assets/create/blockstates/mechanical_press.json -ed641766febe7fb28ea284609f1c76ee923faecb assets/create/blockstates/mechanical_pump.json +6b02e168a30ab70d97b244d26958ee09f22b4e02 assets/create/blockstates/mechanical_pump.json e10b013ce15bbd4936c791ffb77c7fc3e106c013 assets/create/blockstates/mechanical_roller.json 852dde5b240a61c3dba99e7d69a2a9499e7fc5c2 assets/create/blockstates/mechanical_saw.json 884ea4362ec7ce45666a34da4ae21706a29dd1cc assets/create/blockstates/metal_bracket.json @@ -362,99 +362,99 @@ e10b013ce15bbd4936c791ffb77c7fc3e106c013 assets/create/blockstates/mechanical_ro 6e3247f54dfbfd4dccab046b2d4507ca41af87ba assets/create/blockstates/millstone.json dc8dcde498e19cf11a81266ba422c21e298b8df5 assets/create/blockstates/minecart_anchor.json ba9c3ecfacbd398048440d247decffeaefc714b5 assets/create/blockstates/mysterious_cuckoo_clock.json -6df63c68be95f7e8073d298559afd2e21fdf4311 assets/create/blockstates/netherite_backtank.json +9ace6a5a094f03b7defc17d6f60caaba88952ae1 assets/create/blockstates/netherite_backtank.json 8875635297883533de5fae78e24f7b08f5638c63 assets/create/blockstates/nixie_tube.json 2aaa022b8ee325faa3dfe6f560f04edffed2bfbf assets/create/blockstates/nozzle.json 22d97edd763e503b99ebe041eceee5f499c770f5 assets/create/blockstates/oak_window.json -7f2c5728e24d60ed2f7a095e3a954d7ca4e410e9 assets/create/blockstates/oak_window_pane.json -df91d0ca68934c1afd9858a8d1591dd4cb88df65 assets/create/blockstates/ochrum.json -09c9bee3d26edc4b87cb7a5042f125c439ee5956 assets/create/blockstates/ochrum_pillar.json +a6d868626e90bbeeb405daa36f6e7b2969eeb2e9 assets/create/blockstates/oak_window_pane.json +aa900bf8ef7b7bcdbba0d39436f69b5c3a5d6011 assets/create/blockstates/ochrum.json +7f0d3192cafacb4e77e27496edd9ff85fe9da6ce assets/create/blockstates/ochrum_pillar.json 42f108813ed68f4492d0a168d52f31bbe2e5635b assets/create/blockstates/orange_postbox.json af4c2c4861d1410e1b7371a5bf3fe09ed3ab0077 assets/create/blockstates/orange_sail.json aab812cecf7d10d4e7587f4dead8a98238a15f41 assets/create/blockstates/orange_seat.json 27d90736a8d64fe7f742a6e5874b8d5843f5dd2d assets/create/blockstates/orange_table_cloth.json -2bc30ed9907230271b4e2d0786f106f3e1e25029 assets/create/blockstates/orange_toolbox.json -2af63a4768f84fc93c7e7d67fa9a64438433e59f assets/create/blockstates/orange_valve_handle.json +65b09275dc13442974caa3d11b090905a42907f8 assets/create/blockstates/orange_toolbox.json +9ae860d993c9392975912fd1f56c26ed92e45a99 assets/create/blockstates/orange_valve_handle.json 515ed7dae09b052f289419ba09998a23e0d7083d assets/create/blockstates/ornate_iron_window.json -8118444f37536b9104ef4818d374b0c8a7c987bf assets/create/blockstates/ornate_iron_window_pane.json +fc56d6e5e3c2ee8c7068f5863e5325ecef4fdf08 assets/create/blockstates/ornate_iron_window_pane.json +97cd78453af94f44cef1187988966626574b29d5 assets/create/blockstates/oxidized_copper_shingles.json 2ddc762b8d8558e69a2f81c028702f3a25b5e978 assets/create/blockstates/oxidized_copper_shingle_slab.json ac536ae742c12e97bfd0b2483c87ff29f3935eaf assets/create/blockstates/oxidized_copper_shingle_stairs.json -97cd78453af94f44cef1187988966626574b29d5 assets/create/blockstates/oxidized_copper_shingles.json +110a6c19bcc9f044e5e982ac6e4b295b03ec0145 assets/create/blockstates/oxidized_copper_tiles.json 3f3924f0f0e368edfa04f4fdd6d6c2319276ddfe assets/create/blockstates/oxidized_copper_tile_slab.json 5e634cfb9abb06d8b29f39d751fc56b28ea5a9cd assets/create/blockstates/oxidized_copper_tile_stairs.json -110a6c19bcc9f044e5e982ac6e4b295b03ec0145 assets/create/blockstates/oxidized_copper_tiles.json -887565a0f89f089d6be888c87394dde4878afda7 assets/create/blockstates/package_frogport.json 65f3fa5a068189c1c2971af1a1052f69c0e26005 assets/create/blockstates/packager.json +887565a0f89f089d6be888c87394dde4878afda7 assets/create/blockstates/package_frogport.json 36742cc6ce052ead143366d31b11e828a525c1b8 assets/create/blockstates/peculiar_bell.json 53d102e706d53cb2c0dbc0bc11da828084a43519 assets/create/blockstates/pink_nixie_tube.json db7ef5acb1ce2d3b8f881f34b5d9f40633c3973d assets/create/blockstates/pink_postbox.json 213da5c04a33ae8ae7c0a4dec9844bbb6d670e33 assets/create/blockstates/pink_sail.json 8d5c80d5dc561240dfe8d7f212ffc33ac4e0fcd8 assets/create/blockstates/pink_seat.json 2698986d23ccd7b828af6150d04f0139255a5bf1 assets/create/blockstates/pink_table_cloth.json -90bd26c7c6933f5ebbe17b0fe58f840e2924a0f5 assets/create/blockstates/pink_toolbox.json -9f698d0fe8cfd3c9b727ec00623e6d473d516d4a assets/create/blockstates/pink_valve_handle.json -73c2a6e6e2e0dad1bdcf2d8b089b28dd4c72c825 assets/create/blockstates/piston_extension_pole.json -7f51f7590e5a54ced28cefedff541bda5bdff6a7 assets/create/blockstates/placard.json +4b1a57ed4b29520efe02c42d74d5fb1e77e67d47 assets/create/blockstates/pink_toolbox.json +ffe2fe5eb76d844956d9ce4a093194421d0867dd assets/create/blockstates/pink_valve_handle.json +3017fe5c11fc8cb2695a313f99237c15e609f747 assets/create/blockstates/piston_extension_pole.json +88921d0b1ebf28f3ce6ddb581ee65657a09711fc assets/create/blockstates/placard.json c5b4aa064acbbb5f1d245427f90a0b737289edd1 assets/create/blockstates/polished_cut_andesite.json 6237aaa0179a61104a5e7d697e8ddf09fb7af906 assets/create/blockstates/polished_cut_andesite_slab.json fad77de1ddd217f19d535fdc22e911d43a0d66cd assets/create/blockstates/polished_cut_andesite_stairs.json -6642652c1a0808b1f7814ac540036a084b221a53 assets/create/blockstates/polished_cut_andesite_wall.json +d51508a1f83ed793ea53be2a42b6bdf4dd51b7d6 assets/create/blockstates/polished_cut_andesite_wall.json a0c74a565e2f19046bde6fafa05bb16156792f2f assets/create/blockstates/polished_cut_asurine.json 7be86a88e53bd460cd1a141f98eb5ccafee182d3 assets/create/blockstates/polished_cut_asurine_slab.json 8539a9d1ce731ea6a4c81624c4a1d2cb01387ba1 assets/create/blockstates/polished_cut_asurine_stairs.json -c9519e06513914bb357b06ea92509c31857a1b77 assets/create/blockstates/polished_cut_asurine_wall.json +1b013266a3168ee863e96b9b8afcc4d1152907b8 assets/create/blockstates/polished_cut_asurine_wall.json 8fc1585fea0153f62d7886561f1a9b5a5988f0a0 assets/create/blockstates/polished_cut_calcite.json 7185bdca350da4b60f050fc34ac7a4e005812c98 assets/create/blockstates/polished_cut_calcite_slab.json 9a68b5b11fb3daceac8d6797aced2ac7cd462921 assets/create/blockstates/polished_cut_calcite_stairs.json -34d80ba1277456fa631e193b33c7d91ffe4e46de assets/create/blockstates/polished_cut_calcite_wall.json +359c413b984d8b9fa5ea9e8be96605f1c5b79a8f assets/create/blockstates/polished_cut_calcite_wall.json d4c0842c84a9dcd3efa95e17a14d3610c7c414b6 assets/create/blockstates/polished_cut_crimsite.json 5bafbbbafde7e857931f9a0a12933f0cc351c14d assets/create/blockstates/polished_cut_crimsite_slab.json 8522670b5ee6ddf51e1a2113b253155b6c7fb52c assets/create/blockstates/polished_cut_crimsite_stairs.json -dc1dd3d9cf5545178ede1cd85ca935f47d378f14 assets/create/blockstates/polished_cut_crimsite_wall.json +c18b1364d58f2ab0f338216c70a86261610ddb8c assets/create/blockstates/polished_cut_crimsite_wall.json eccf5d912432cd73f64d523bfa6c7e2b28a6f2a2 assets/create/blockstates/polished_cut_deepslate.json 722e3b7c9fbdd9059a73a972f0ff0163f8fe5581 assets/create/blockstates/polished_cut_deepslate_slab.json 3a8114a2d37d2974d4fb20cbc85c600183ceb82d assets/create/blockstates/polished_cut_deepslate_stairs.json -38bc7e43ab9baa967a72e32b7f4558095a2d229c assets/create/blockstates/polished_cut_deepslate_wall.json +4b391a3c6c1541a959ff28ea66480f01ff39c579 assets/create/blockstates/polished_cut_deepslate_wall.json b5af822d4dccf671fc4de4cbbb88a93307bd04cb assets/create/blockstates/polished_cut_diorite.json 6c1ddabddad74e5e87894eefb16ec48287bf2b7b assets/create/blockstates/polished_cut_diorite_slab.json 98268e7de4c6ed6c461a85ea7354a928439db5a3 assets/create/blockstates/polished_cut_diorite_stairs.json -2f3acb4dfa2e8623e22445e2a314ca919d4ad9ba assets/create/blockstates/polished_cut_diorite_wall.json +295e619fd57f170f0d8a9896179924dc887f6939 assets/create/blockstates/polished_cut_diorite_wall.json 5ef1f3e7975ae88f4372da41ad14dd9f58855c3d assets/create/blockstates/polished_cut_dripstone.json 4c926828672a5fe26360a31fdab21ef2228f2e77 assets/create/blockstates/polished_cut_dripstone_slab.json 93e68c5046faf6627fc38d649a1d3b9836d9309b assets/create/blockstates/polished_cut_dripstone_stairs.json -41a6f9963960baffa1365ea54c43233beb618397 assets/create/blockstates/polished_cut_dripstone_wall.json +ab4eb7cb3ecaa0e8f4a1bd9c0c53d8fd6f841df1 assets/create/blockstates/polished_cut_dripstone_wall.json 02a6c4a79772d995da2ff7f12b8efdeb159f6847 assets/create/blockstates/polished_cut_granite.json f8ae631cacbf4fd5aa3e6c8ca233b4ea28f310fc assets/create/blockstates/polished_cut_granite_slab.json 3dfdb08065ef18288891e75298df0be3308ebc69 assets/create/blockstates/polished_cut_granite_stairs.json -8561b98bfa38f88980289374a59303ea5dbef709 assets/create/blockstates/polished_cut_granite_wall.json +46426119c43e4edd608f8bdca6da567de74995fc assets/create/blockstates/polished_cut_granite_wall.json 0fa262c70f813729b119bd6599ea37d2edb230c1 assets/create/blockstates/polished_cut_limestone.json bc7786b6e9252b7a9ed4d440adf31a64f7253c06 assets/create/blockstates/polished_cut_limestone_slab.json cc4d9d34690792a066ebb1d03b90a71b58cab8aa assets/create/blockstates/polished_cut_limestone_stairs.json -8e57227afb346a37f12d6639360657d180270d08 assets/create/blockstates/polished_cut_limestone_wall.json +58caa9b8b8d2df933a3aa978b49cb3a26226bd1f assets/create/blockstates/polished_cut_limestone_wall.json 56d10bcf39e02212dcb4b8c86e08b48a961a1f87 assets/create/blockstates/polished_cut_ochrum.json 4bf9a5d4dc98eb33d092d64a5a03d2a3e1c5739f assets/create/blockstates/polished_cut_ochrum_slab.json 23a5e57b70765dbf47df9c5fa1eb6afd6fe4f422 assets/create/blockstates/polished_cut_ochrum_stairs.json -4fafc0408ae9e46b14ddf9e8d5d8eede734f0ef1 assets/create/blockstates/polished_cut_ochrum_wall.json +8edbe79445b7d17f2e267a0a7fc1829cfce33732 assets/create/blockstates/polished_cut_ochrum_wall.json 1e0e501575232f9899653faefec48a33f94acb50 assets/create/blockstates/polished_cut_scorchia.json 3f6f2ce42d15f46c924e8cf1dd66db29c525956f assets/create/blockstates/polished_cut_scorchia_slab.json 6de9d0e9fd3b4f78e4576e4c12583bee06dbd373 assets/create/blockstates/polished_cut_scorchia_stairs.json -131e729752be02a65fd28afea409d7e6b874cfa8 assets/create/blockstates/polished_cut_scorchia_wall.json +32b3cc7c1cc51db7693f474ca1a793b2f4cea1a5 assets/create/blockstates/polished_cut_scorchia_wall.json bddd79ab8dee9fcbdd6d0ac85020c9de763d9c2c assets/create/blockstates/polished_cut_scoria.json 647fde8b0bb06e40c882712ea787bd2d81df081d assets/create/blockstates/polished_cut_scoria_slab.json 62dee08f19d66e54073176889c637ab40e1c3825 assets/create/blockstates/polished_cut_scoria_stairs.json -38a0103382679a829c673bef4d1d7c5c95ca7269 assets/create/blockstates/polished_cut_scoria_wall.json +0bf6cb26ce7a6aa81f725ac13ff1fcb4c40c3238 assets/create/blockstates/polished_cut_scoria_wall.json c3302c99294ba701cd522b60a334992b67614cff assets/create/blockstates/polished_cut_tuff.json 56ae25865d219530bed066646d36da88ba4943f4 assets/create/blockstates/polished_cut_tuff_slab.json 1f7cb5e0f52d647ea1087b64ae6afd5bd3a5c732 assets/create/blockstates/polished_cut_tuff_stairs.json -054cc1565ac68207228c28d6441cbfc9fd0a54a4 assets/create/blockstates/polished_cut_tuff_wall.json +d5c5b79324516576c8de9bbd656f52944cd12c71 assets/create/blockstates/polished_cut_tuff_wall.json 723cecea328b1d755fb2af5fa614094f49036309 assets/create/blockstates/polished_cut_veridium.json 864136dc0bd502db381852eef2535bbce15d572c assets/create/blockstates/polished_cut_veridium_slab.json 4015bfd4c8fa6ef906b3ac318406f0e35211262c assets/create/blockstates/polished_cut_veridium_stairs.json -93cec945f0c89170767cf5f48e15dd9439e4b23c assets/create/blockstates/polished_cut_veridium_wall.json +5e3ac229bf208f324d3b82572abd8d01b4b2e32f assets/create/blockstates/polished_cut_veridium_wall.json 65dd096d343a3efdbe4dd795ef2f4559dcfd94f1 assets/create/blockstates/portable_fluid_interface.json a87f617c1eed91b4e3487476374b7f66bbd06c41 assets/create/blockstates/portable_storage_interface.json 7e12b74591cb0a59c6f1875879b29537ab08f579 assets/create/blockstates/powered_latch.json -b1f5ad596067cb4c84eb53b2c7b359be76f1cfbe assets/create/blockstates/powered_shaft.json +38e4871f839b3a4a5d989db9eaef6542fb469651 assets/create/blockstates/powered_shaft.json 7281bf33f8902be83eaabe8cc50e69df22e49394 assets/create/blockstates/powered_toggle_latch.json df7af1e49c53ae99ac3f0b2fca5d948b8ea91938 assets/create/blockstates/pulley_magnet.json 89d763258c53aa12a1e0c0e586ab701f3de5a1b5 assets/create/blockstates/pulse_extender.json @@ -465,21 +465,21 @@ b658654aa97e8dd2c897f432a601835a3f8aca10 assets/create/blockstates/purple_nixie_ f8f9802df9c0b4e39edeefc3b1abb38255d79801 assets/create/blockstates/purple_sail.json 91b5ab66d7ec5235d278ee2bed6ddd88f39ce81d assets/create/blockstates/purple_seat.json a4b6bd4e55cd292abf752efeda93cf8d23162657 assets/create/blockstates/purple_table_cloth.json -6aa467b3588359fdf5d7201f844193d5b70f20f7 assets/create/blockstates/purple_toolbox.json -6d02761efbb93349654514f67f5c0b7331e2823a assets/create/blockstates/purple_valve_handle.json +4583100d4c53f635bd7a0fc822fafe7d92ec1575 assets/create/blockstates/purple_toolbox.json +82475c16b1578fc548d876152c866ab8dd2fd1db assets/create/blockstates/purple_valve_handle.json 3aca01f2eddb22adb1b25735b98a990bfc7220d2 assets/create/blockstates/radial_chassis.json 72faac9777be540f95f8b662a833856e0e1b8f35 assets/create/blockstates/railway_casing.json 7ce346fa18702f6fe6e2a939efcfa26eda63fe38 assets/create/blockstates/raw_zinc_block.json +ec546afd3ec8036e4393b97d535f05a86f57dbc1 assets/create/blockstates/redstone_contact.json +ff205f032b36486753dddb1f2029ef8d53e9c86f assets/create/blockstates/redstone_link.json +e4c645b199a2d7e89c91065071a0a91df5ca8e3c assets/create/blockstates/redstone_requester.json e3fd62e466e3e6e7bd6fc8661f764ba972a466fc assets/create/blockstates/red_nixie_tube.json d14d6437a6727da13cea5f7eeb815720c80dde6f assets/create/blockstates/red_postbox.json 4c36b562da58ef2af57009da7cf2426059249228 assets/create/blockstates/red_sail.json 145f4e9ffaeff9be180e6c4e4989f2cf44cf0686 assets/create/blockstates/red_seat.json 90bf31515faa2e7e6d73414a6c5498911910710e assets/create/blockstates/red_table_cloth.json -380f46b7cb72b13c0f16fd4a4287a1a33adeff41 assets/create/blockstates/red_toolbox.json -b689d87a27ed0cb2cab190a2ad2b599818bff56c assets/create/blockstates/red_valve_handle.json -ec546afd3ec8036e4393b97d535f05a86f57dbc1 assets/create/blockstates/redstone_contact.json -ff205f032b36486753dddb1f2029ef8d53e9c86f assets/create/blockstates/redstone_link.json -e4c645b199a2d7e89c91065071a0a91df5ca8e3c assets/create/blockstates/redstone_requester.json +7dd6d11b10fa91a616d662d8ed1d68362678580f assets/create/blockstates/red_toolbox.json +09a14ebba493303b59e5b90d67c8672bf2acf595 assets/create/blockstates/red_valve_handle.json 87ab7ca62ecf24d60d7e5c61bd5af97714dad0ad assets/create/blockstates/refined_radiance_casing.json 64a5b256e5af2dc8cb7ed77f0feadcf5134f7335 assets/create/blockstates/repackager.json 3807bcc6ccc3dad0dbfcc8fcf260a361aa488659 assets/create/blockstates/rope.json @@ -489,148 +489,148 @@ dd63fd8443a2be507281548df838d878b0c3c8c8 assets/create/blockstates/rose_quartz_l dfe69ee57f832a2e4c576ee01bdde1617c81e46a assets/create/blockstates/rose_quartz_tiles.json b9cbbc7c4e1d9abd312263a9a270315bd5f0106b assets/create/blockstates/rotation_speed_controller.json 5a25ecb95b7978cc487491cb24478e4d6a73e977 assets/create/blockstates/sail_frame.json -505510656c77d93ecd3691e7111615193275f29e assets/create/blockstates/schematic_table.json bff758cc56bece375b40c32067b903b675065328 assets/create/blockstates/schematicannon.json +5c86adfa5a1d9d349ccb02ce9870d651eaed2961 assets/create/blockstates/schematic_table.json 82c9ceb19cfc4e247fbb62a9605630ba08423efe assets/create/blockstates/scorchia.json -6fa99d5f1ff05153660f9917286d4b157eaa1b40 assets/create/blockstates/scorchia_pillar.json +076a6d39fce1a9ddf8a5a10bfbefbd928777f496 assets/create/blockstates/scorchia_pillar.json 8c34743564aa0473745ecec304a19e15e9e87cf2 assets/create/blockstates/scoria.json -e5aff9dc8fa5e98b060232974194afb06d497d09 assets/create/blockstates/scoria_pillar.json +8f10f2fdd5349191bf5bf083606ab33008f2caee assets/create/blockstates/scoria_pillar.json 9f94cca240761a9898334c7bef9849b9aff5e73e assets/create/blockstates/secondary_linear_chassis.json 3343224d6da4e75f0bc7a7634ba010a4ba54ad70 assets/create/blockstates/sequenced_gearshift.json 4c261d54117ee295b307f6ea3e56a09437631f73 assets/create/blockstates/shadow_steel_casing.json -4c67d2a1a1faea5be2a81ebc0722c32d8e2e84d6 assets/create/blockstates/shaft.json +409f4f29e1de708654ded28004fbb0880afad58c assets/create/blockstates/shaft.json +c606f103619088e8a5afe969ba54929af480a3d2 assets/create/blockstates/small_andesite_bricks.json c5469de5957d77fc11febaa658ee2bfb0d11b0bc assets/create/blockstates/small_andesite_brick_slab.json ed0bcfd07959aa208085910bd3780756979c985d assets/create/blockstates/small_andesite_brick_stairs.json -78e30e63adedf1ca95261eb4010a1db45aecfe9e assets/create/blockstates/small_andesite_brick_wall.json -c606f103619088e8a5afe969ba54929af480a3d2 assets/create/blockstates/small_andesite_bricks.json +0f90d71dda6cf663c755bec12a6dd4997fc16014 assets/create/blockstates/small_andesite_brick_wall.json +b9fedc13dc8cb53a8bb16ce2257ea65f0ac94a6b assets/create/blockstates/small_asurine_bricks.json 653fa70f0aa7fc319d50f72692d507ff7c59c0f4 assets/create/blockstates/small_asurine_brick_slab.json e61a0b891729565434d6ab34aa3aeada7d189f9d assets/create/blockstates/small_asurine_brick_stairs.json -02556b916c198c683279eb4392ebaa31fb41e182 assets/create/blockstates/small_asurine_brick_wall.json -b9fedc13dc8cb53a8bb16ce2257ea65f0ac94a6b assets/create/blockstates/small_asurine_bricks.json +2f590ef6bff0b23d42d779bc1bfbe5b664fb7424 assets/create/blockstates/small_asurine_brick_wall.json e986248237013eea755bccd300f745e44d0a183f assets/create/blockstates/small_bogey.json +031d9492dbcc5de77431e8f54b9b04db412b5690 assets/create/blockstates/small_calcite_bricks.json 898bca10ff6e5402c4b8b84e1b9ba9036b32b8bc assets/create/blockstates/small_calcite_brick_slab.json ecc2276bdb2b24f54e31372bf207171a348e55d3 assets/create/blockstates/small_calcite_brick_stairs.json -d9dd243b5b754a487755b53609d404ac1b3fde99 assets/create/blockstates/small_calcite_brick_wall.json -031d9492dbcc5de77431e8f54b9b04db412b5690 assets/create/blockstates/small_calcite_bricks.json +9b8aa60f2d077ae57b7162f981c3dc86d0766953 assets/create/blockstates/small_calcite_brick_wall.json +3d4e0b54ffda83f7f6e08b6a745db81049d95f3b assets/create/blockstates/small_crimsite_bricks.json 4094bf00cad8dea2dd234866b482c07175802c4c assets/create/blockstates/small_crimsite_brick_slab.json 7f73a2505e2a3a98a7749fa98f4623aa2d216edd assets/create/blockstates/small_crimsite_brick_stairs.json -b477c7f1855c9eb2ef1bf672376e972678dc563f assets/create/blockstates/small_crimsite_brick_wall.json -3d4e0b54ffda83f7f6e08b6a745db81049d95f3b assets/create/blockstates/small_crimsite_bricks.json +3ab1cccee964047281df355de321ee0b338baa88 assets/create/blockstates/small_crimsite_brick_wall.json +17359d1b87399bb066cfc23002bcf0d8f71d8ccd assets/create/blockstates/small_deepslate_bricks.json c67f32adc49f0b24b34f098a390a398813365260 assets/create/blockstates/small_deepslate_brick_slab.json d05aed31d45ed12f8f117a9c64312b1abff8bd2f assets/create/blockstates/small_deepslate_brick_stairs.json -6952b02d8c5adf3d0d1a243221b637c50edaa287 assets/create/blockstates/small_deepslate_brick_wall.json -17359d1b87399bb066cfc23002bcf0d8f71d8ccd assets/create/blockstates/small_deepslate_bricks.json +df0f3ccf04d081181936dd26f1a577468e05fa60 assets/create/blockstates/small_deepslate_brick_wall.json +6c0ac59e09feb76afc078a88431442a2a6381c6c assets/create/blockstates/small_diorite_bricks.json ee39994b434a17ec7497b271a6e0a006cf6311cb assets/create/blockstates/small_diorite_brick_slab.json eb335cf0a857299b9cd0c4f60e00bc8e4ca7efe8 assets/create/blockstates/small_diorite_brick_stairs.json -b6f7c563c30483c749849899b96d4f0030b71df1 assets/create/blockstates/small_diorite_brick_wall.json -6c0ac59e09feb76afc078a88431442a2a6381c6c assets/create/blockstates/small_diorite_bricks.json +63d29d95fab508de9d9a24a74d1bbae263896aa9 assets/create/blockstates/small_diorite_brick_wall.json +d51095bfb9d5758f8b3972a973fbe282569b0234 assets/create/blockstates/small_dripstone_bricks.json 3d8109d327099c65ca0fafcb5651051059cad1df assets/create/blockstates/small_dripstone_brick_slab.json 3931e24229db79115ffe2a9f3a069202b9b8dcab assets/create/blockstates/small_dripstone_brick_stairs.json -0d16cefcb8e619bc81ef65111d16d331db58d0aa assets/create/blockstates/small_dripstone_brick_wall.json -d51095bfb9d5758f8b3972a973fbe282569b0234 assets/create/blockstates/small_dripstone_bricks.json +6c2007595d5a1f06456af560b5912614afc6de9d assets/create/blockstates/small_dripstone_brick_wall.json +11dcaf8a6da96d178024b4c3ee76b9c373e5d082 assets/create/blockstates/small_granite_bricks.json 096b064f28fbe381e1b637d4668550851cbbb2c2 assets/create/blockstates/small_granite_brick_slab.json e99cc3251937fbf9fc858623d5ea525ed5b79704 assets/create/blockstates/small_granite_brick_stairs.json -62f2b570ac6073c8a98369523095d2c18a353eed assets/create/blockstates/small_granite_brick_wall.json -11dcaf8a6da96d178024b4c3ee76b9c373e5d082 assets/create/blockstates/small_granite_bricks.json +1933fdb4ffaf8939e62901be90a1a829b89fff85 assets/create/blockstates/small_granite_brick_wall.json +346dbff9a84b988bd9c9af670b486b6af5e18179 assets/create/blockstates/small_limestone_bricks.json d640eed81abaa013ed1c53d68a552f639168ae8b assets/create/blockstates/small_limestone_brick_slab.json d470967200aa6ca618421cf375140b352c45cc90 assets/create/blockstates/small_limestone_brick_stairs.json -8d4a1eff66a3f45d595ff8371c0d1ebaa0ba1773 assets/create/blockstates/small_limestone_brick_wall.json -346dbff9a84b988bd9c9af670b486b6af5e18179 assets/create/blockstates/small_limestone_bricks.json +03843d0e0521ca04341cc92d09f3179bcb01031e assets/create/blockstates/small_limestone_brick_wall.json +1464b01d4c8bd9ec56460c1250fd4bb07e936e22 assets/create/blockstates/small_ochrum_bricks.json ddee92141e00898e8d70145cf00c0d64f56b4f48 assets/create/blockstates/small_ochrum_brick_slab.json bad9a5820c64c125494c0eba4f6c7ebebe93341c assets/create/blockstates/small_ochrum_brick_stairs.json -ed899a18522adc70ae46185c308904c8de5b5834 assets/create/blockstates/small_ochrum_brick_wall.json -1464b01d4c8bd9ec56460c1250fd4bb07e936e22 assets/create/blockstates/small_ochrum_bricks.json +d4f63598f4f56507030e25e5418c9490afc4195e assets/create/blockstates/small_ochrum_brick_wall.json c520e9ba54ff6dfb96f7863bb093cdf15cc95ce4 assets/create/blockstates/small_rose_quartz_tiles.json +371ff795eb4e7cb1220d307abf8cb003f455cbec assets/create/blockstates/small_scorchia_bricks.json 384a1331b92b7beba988f729bb7cda42abec0172 assets/create/blockstates/small_scorchia_brick_slab.json 046a84030a23f5a40f4deac13f2e60ced436cadf assets/create/blockstates/small_scorchia_brick_stairs.json -58bc6e3bb10ed72b8cb5813a88cab300d1183b7d assets/create/blockstates/small_scorchia_brick_wall.json -371ff795eb4e7cb1220d307abf8cb003f455cbec assets/create/blockstates/small_scorchia_bricks.json +332b981c7134ba333a48870cde9593689ec3b3f9 assets/create/blockstates/small_scorchia_brick_wall.json +0aa51dbfda8349b878e2f6c9bb3314fcfc1a9c39 assets/create/blockstates/small_scoria_bricks.json 5b227400e588abae33c1682196f098adc8006d13 assets/create/blockstates/small_scoria_brick_slab.json 51420bb12b757d3888fd1ceb5c21d83b42bd2266 assets/create/blockstates/small_scoria_brick_stairs.json -36e9bd161fa4ffe18f07153b2945cfeae55e7c0b assets/create/blockstates/small_scoria_brick_wall.json -0aa51dbfda8349b878e2f6c9bb3314fcfc1a9c39 assets/create/blockstates/small_scoria_bricks.json +399e39e06d50db6732f620059fc0d38d20e5db7b assets/create/blockstates/small_scoria_brick_wall.json +c1f9f986dd0bfdbdee210c6c7d71981b251c27db assets/create/blockstates/small_tuff_bricks.json 8d1af444031291fe58d850ae344aaf7e97b8bd87 assets/create/blockstates/small_tuff_brick_slab.json 26879e6cadf0035c3eed4b54b3a1fdc0c080a485 assets/create/blockstates/small_tuff_brick_stairs.json -5d58ca7b81ae537454c3cdbb5fc8aacca83cff3f assets/create/blockstates/small_tuff_brick_wall.json -c1f9f986dd0bfdbdee210c6c7d71981b251c27db assets/create/blockstates/small_tuff_bricks.json +28845567375dc30ca9e5f61a9bf9a1446e510230 assets/create/blockstates/small_tuff_brick_wall.json +ad79aa8ff306695f65386fdeb44c5285547934b6 assets/create/blockstates/small_veridium_bricks.json 6226471fdcadbbf0e02704bb0e7de607e99302a8 assets/create/blockstates/small_veridium_brick_slab.json b54200ebe65c4ad2e5661c81ba5bf939039277ca assets/create/blockstates/small_veridium_brick_stairs.json -0237d58443ca9dc2a9186c2387dd6633702a7598 assets/create/blockstates/small_veridium_brick_wall.json -ad79aa8ff306695f65386fdeb44c5285547934b6 assets/create/blockstates/small_veridium_bricks.json +0160eec430fb43b8943d37c4071405bcd478c015 assets/create/blockstates/small_veridium_brick_wall.json 4d987859e5f5a930c20e955919304088fb6fc6d1 assets/create/blockstates/smart_chute.json 57fc35b2e0ae9ab16c011abd95f507910c70a234 assets/create/blockstates/smart_fluid_pipe.json a70c025de5d85180f371ff05bbdc531d8bdfaab1 assets/create/blockstates/speedometer.json e118ee8a8be4ef171215733b7e9fcfedd64a548a assets/create/blockstates/spout.json 50c775e32c0d7ea3f5199323875f6437afe85b61 assets/create/blockstates/spruce_window.json -3c5e1e9474943200e572cf3556cdc6953369a580 assets/create/blockstates/spruce_window_pane.json -9fdb8e076be1b511a769755582657fbb8cdc723a assets/create/blockstates/steam_engine.json +e61f66dd38697324930f61ed42229ed6a7427620 assets/create/blockstates/spruce_window_pane.json +a2d88875f54297f2a78a139bb40322639d405f8c assets/create/blockstates/steam_engine.json a60c9c8241e40c2e28f5760c0ca6e80cfe9d59f3 assets/create/blockstates/steam_whistle.json 636ec6c7e1ef3b737edc716200f138bc63681d78 assets/create/blockstates/steam_whistle_extension.json 8865500bcd2e4d467e74edb3509850fa92a5809f assets/create/blockstates/sticker.json bed0534e618105184bc877b104230403ca85bb58 assets/create/blockstates/sticky_mechanical_piston.json +c7c17ff17b98ce85d355f2f9b4509271bc283843 assets/create/blockstates/stockpile_switch.json d17e6ac368278bd60442e2f19eb064a31c4106d2 assets/create/blockstates/stock_link.json 9989bda294fbffc5f659d2e608e01dea424c7694 assets/create/blockstates/stock_ticker.json -c7c17ff17b98ce85d355f2f9b4509271bc283843 assets/create/blockstates/stockpile_switch.json a70c025de5d85180f371ff05bbdc531d8bdfaab1 assets/create/blockstates/stressometer.json 8086f80c532fad42b37fcdc590b890ed7e8c3fe9 assets/create/blockstates/tiled_glass.json -1143ab7223c655764a81ed72ac385ea179664072 assets/create/blockstates/tiled_glass_pane.json +8fc646e747f89e8600fcd315e03193e06113e681 assets/create/blockstates/tiled_glass_pane.json 4ece6f758ff42664c144a23572032578b68bc320 assets/create/blockstates/track.json 0423e02613735b9b6372580c407430483dbaca92 assets/create/blockstates/track_observer.json 87bc9a64852029e4c2c12d135ff2df7a6515dadb assets/create/blockstates/track_signal.json 0a2ef17ddcff1d59f927884cb2fcc3c07b62e6e2 assets/create/blockstates/track_station.json -0adb7caefd90860e1241c1738292f8e4b09eb239 assets/create/blockstates/train_door.json -635468424f86e159628fb6f8f8e4e81f87486055 assets/create/blockstates/train_trapdoor.json -01e40ddbc83d714b543e319963ddc6b27514bccb assets/create/blockstates/tuff_pillar.json +dc25c704cb3cc90fb315a136178e00b8981081ee assets/create/blockstates/train_door.json +aa86eb1b4f54217505527fdd4d01d3b5e78304bb assets/create/blockstates/train_trapdoor.json +46a37ff70fa99be381c41fa10724294e69db31e5 assets/create/blockstates/tuff_pillar.json bfb2b7eabba2e7aef4d783328c8a5a1558e7e493 assets/create/blockstates/turntable.json -92992bc0bb08c67e32a48957a984e22551a70abd assets/create/blockstates/veridium.json -09ffd28ac9044c7c6597f9bdb75f2bd66e0f591d assets/create/blockstates/veridium_pillar.json +4caee32899943af1fe2aff7e755d14f05931e3e2 assets/create/blockstates/veridium.json +2fe6a98c9a847dedbaf558a0830fd4d64f624ac1 assets/create/blockstates/veridium_pillar.json 673ca844beebe630ab847fb4d6bf0d3b9a183ba6 assets/create/blockstates/vertical_framed_glass.json -52aa6d08d9b950c2194bf126640f684342d3b0b5 assets/create/blockstates/vertical_framed_glass_pane.json +07d97774f9d1b1fae9cf5d1c5c38cbb512c37d4b assets/create/blockstates/vertical_framed_glass_pane.json 04b90c8216a1ab87eb2158313796fa687f8c619a assets/create/blockstates/warped_window.json -116d0a8fb72bcc00bd511db7893ea3e96efda297 assets/create/blockstates/warped_window_pane.json +2f9236d379ffe6652be3baef60c7d7b9cfc69307 assets/create/blockstates/warped_window_pane.json fa3d300520e3bedb926696d9980cbeeb54cfdc68 assets/create/blockstates/water_wheel.json -3dff9e1ec59415779195d2abfa9f07bc17b428a1 assets/create/blockstates/water_wheel_structure.json +d10f2c392441181cd150196b66837755952357ea assets/create/blockstates/water_wheel_structure.json +2ae175c489b86b78b4646306250ca2dba66b0a5e assets/create/blockstates/waxed_copper_shingles.json 85ed36dcb0a3542e0638601116360202a9670d53 assets/create/blockstates/waxed_copper_shingle_slab.json aaf49f1b6785e2195c5dc2e8792c99c960745f89 assets/create/blockstates/waxed_copper_shingle_stairs.json -2ae175c489b86b78b4646306250ca2dba66b0a5e assets/create/blockstates/waxed_copper_shingles.json +835bfe0d2137ad60e5f8322fa4449d5c7a02187f assets/create/blockstates/waxed_copper_tiles.json b52eda74c9000507a4f34e10fbd1a7846b66c16d assets/create/blockstates/waxed_copper_tile_slab.json 5428969f6f27213d0ec5140d911b3844b5332006 assets/create/blockstates/waxed_copper_tile_stairs.json -835bfe0d2137ad60e5f8322fa4449d5c7a02187f assets/create/blockstates/waxed_copper_tiles.json +306b9cd1efe3abd1fcca11bc464560837fb8fdfa assets/create/blockstates/waxed_exposed_copper_shingles.json bc8f3bb75bdb094c8372d61a68927270d3347437 assets/create/blockstates/waxed_exposed_copper_shingle_slab.json 32382e5f524b50393080fdbd2415a98ddb700c9c assets/create/blockstates/waxed_exposed_copper_shingle_stairs.json -306b9cd1efe3abd1fcca11bc464560837fb8fdfa assets/create/blockstates/waxed_exposed_copper_shingles.json +ae92a9051f1603e7ad4f93cb668706ccffc7a85b assets/create/blockstates/waxed_exposed_copper_tiles.json ca37c3e54d5c78a77fcb4a4aca004a34e271f246 assets/create/blockstates/waxed_exposed_copper_tile_slab.json a864f82ccd6b3e0fa181c800da886ebd3239fb82 assets/create/blockstates/waxed_exposed_copper_tile_stairs.json -ae92a9051f1603e7ad4f93cb668706ccffc7a85b assets/create/blockstates/waxed_exposed_copper_tiles.json +729ca65a140b3d7571a2072f7406cc5f4a2e27c5 assets/create/blockstates/waxed_oxidized_copper_shingles.json ef99e849f9dd6ad53ddf04625c81750f11eaae1c assets/create/blockstates/waxed_oxidized_copper_shingle_slab.json 9386068220f9bb5d2f6d3cc408dc4f78f26b4eeb assets/create/blockstates/waxed_oxidized_copper_shingle_stairs.json -729ca65a140b3d7571a2072f7406cc5f4a2e27c5 assets/create/blockstates/waxed_oxidized_copper_shingles.json +17acf3486e92aabc3efbe99fa1e5d7d664e6ec97 assets/create/blockstates/waxed_oxidized_copper_tiles.json fe79f7eab017d714c0331664a3a2b5579104194e assets/create/blockstates/waxed_oxidized_copper_tile_slab.json 10bbe77a0334b5578b1ec40b398a45cf7d2bb534 assets/create/blockstates/waxed_oxidized_copper_tile_stairs.json -17acf3486e92aabc3efbe99fa1e5d7d664e6ec97 assets/create/blockstates/waxed_oxidized_copper_tiles.json +079acbfd6a9375899687b581f95bbe74940afce2 assets/create/blockstates/waxed_weathered_copper_shingles.json 73572bbe16957e63853ee425d8f34d98e14e4a10 assets/create/blockstates/waxed_weathered_copper_shingle_slab.json ab05925d5bb70e53fec9c149982304f31acd2b1a assets/create/blockstates/waxed_weathered_copper_shingle_stairs.json -079acbfd6a9375899687b581f95bbe74940afce2 assets/create/blockstates/waxed_weathered_copper_shingles.json +202b0f2e6fca9eab949f47eaa1f4ddee249a633a assets/create/blockstates/waxed_weathered_copper_tiles.json fc1b53d3b2b1f0977069abec3c376f3f5c4cd7c8 assets/create/blockstates/waxed_weathered_copper_tile_slab.json 6cd93476a45c3b77f5eda66f68425bae486cfba8 assets/create/blockstates/waxed_weathered_copper_tile_stairs.json -202b0f2e6fca9eab949f47eaa1f4ddee249a633a assets/create/blockstates/waxed_weathered_copper_tiles.json +c11562afd9a5f85945e521dcea5f911d1b6d13c6 assets/create/blockstates/weathered_copper_shingles.json 5a5a1e95988edb7a2b6dc6c6ba5677c2d896a5ae assets/create/blockstates/weathered_copper_shingle_slab.json 07019fc8890cb5e966a42ca636a0ab9cf71cc881 assets/create/blockstates/weathered_copper_shingle_stairs.json -c11562afd9a5f85945e521dcea5f911d1b6d13c6 assets/create/blockstates/weathered_copper_shingles.json +236e072d9056c0dbffdf5d7d973a85a56c2c8de1 assets/create/blockstates/weathered_copper_tiles.json fee668eb9a45dca0d287fee5811219d69f9ec3e2 assets/create/blockstates/weathered_copper_tile_slab.json da110f382368257e15431c77164aef82e014e3f8 assets/create/blockstates/weathered_copper_tile_stairs.json -236e072d9056c0dbffdf5d7d973a85a56c2c8de1 assets/create/blockstates/weathered_copper_tiles.json 64fb3e569da401635b64e71e01ea0b3ff6360611 assets/create/blockstates/weathered_iron_block.json -6fd81f1eb48fbfc44df9db8eedc613690c9b8ef5 assets/create/blockstates/weathered_iron_window.json -1aed351050d73989c4553bf49ce03b3a8fdd210e assets/create/blockstates/weathered_iron_window_pane.json -25ce64b7af5d244f194da91ccf964a9bf5762327 assets/create/blockstates/weighted_ejector.json +53c63e47347b19476bdf6575f4a126849c8b312b assets/create/blockstates/weathered_iron_window.json +21487a10aa24bb6b6aa52354cb9580e37f628a17 assets/create/blockstates/weathered_iron_window_pane.json +82e1fb7c4df72be25bc5645937ea6dc928411fd5 assets/create/blockstates/weighted_ejector.json 2974b34a8cfb0d4e8e010f8bd085584ea631d541 assets/create/blockstates/white_nixie_tube.json 3de81b9e34425a9d3a25c657dabd24d74bf01456 assets/create/blockstates/white_postbox.json f079469d186087d23f0d91b384040f777b0088b1 assets/create/blockstates/white_sail.json 317a6463db64b66d215d25b65ab52fe7f26ba9f8 assets/create/blockstates/white_seat.json 9013272715c2ed3104457a50a6f0795a7c33fc43 assets/create/blockstates/white_table_cloth.json -6cb8c82a429b54d6a87d02eec5cfd1fcd5365f1e assets/create/blockstates/white_toolbox.json -c0bfe8416173868f9916c4a54dd9f983887c5bac assets/create/blockstates/white_valve_handle.json +71d261e95f35e0f57eb218a9f65c346ff25cb909 assets/create/blockstates/white_toolbox.json +edfa0c21824f76e6d7725a379ce6392d13ebaa2a assets/create/blockstates/white_valve_handle.json ec2720e3f1bc84304d0c81cd23ff1e155b0c2f2c assets/create/blockstates/windmill_bearing.json d688e80dfbd5b17970814887c3698fc721981caa assets/create/blockstates/wooden_bracket.json 157942a838aa02909fb2238ad9ce77edc82f6142 assets/create/blockstates/yellow_nixie_tube.json @@ -638,12 +638,711 @@ f3d0a1335e0d9cd592e177d51a36206749346676 assets/create/blockstates/yellow_postbo 68b6e267e93b96dbc0596ea4a1cd26636aa0e04a assets/create/blockstates/yellow_sail.json 4face2dd50a30bda0b21742319e701e666d51f8c assets/create/blockstates/yellow_seat.json 38135a1fda544b7b9624ebfa08d46351bd31ec89 assets/create/blockstates/yellow_table_cloth.json -b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbox.json -fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json +54690809a73a7c75219803598421190c3833d77b assets/create/blockstates/yellow_toolbox.json +2843dd63dd5f770dd59909b6a522d6f85cec8f3c assets/create/blockstates/yellow_valve_handle.json e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json 64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json -cfc04c8bcd7c2935a5b658166cb755299679b729 assets/create/lang/en_ud.json -2157d86a90660702b4581768ef9e8e6385c53eb5 assets/create/lang/en_us.json +733407a2e43258ff1640f97e6dead01b99534f0c assets/create/items/acacia_window.json +ba9c9db13971c96a32bfc515b27a7491352bc727 assets/create/items/acacia_window_pane.json +bed31f9d4462ffd69d0e8e5049a548919fb1a81d assets/create/items/adjustable_chain_gearshift.json +eddaa38a56fdd60f992556ec1a68eda8ee8e8f60 assets/create/items/analog_lever.json +e1dc6f38c8663b76f7ecc77cd03731b3f2397af9 assets/create/items/andesite_alloy.json +deae12d3a74e62902668fdf23fe59713cd2183f8 assets/create/items/andesite_alloy_block.json +1a6dffb05ad58bbef5d3e86ddafc94521deaa5c0 assets/create/items/andesite_bars.json +af2be54cdcebf9a018e5e55dcd14a3cb3a2b0dc6 assets/create/items/andesite_casing.json +12ba07aec77bab9d9422afaf3a2bf75fa59b863d assets/create/items/andesite_door.json +bedfacc8c7d27135f0c4c03bdcfe5bfa3d38523f assets/create/items/andesite_encased_cogwheel.json +ccee36eaee84735239d8ed6059ff76ce431f566b assets/create/items/andesite_encased_large_cogwheel.json +1474a4e9b5ecf006ccabf132c66e1466b53459eb assets/create/items/andesite_encased_shaft.json +06a8411632509d17cfd745c0b9f5de1c548ccd26 assets/create/items/andesite_funnel.json +21557198f166c26b2af2f62829d1c92634594d55 assets/create/items/andesite_ladder.json +cb3579cc215a874ed7d11372dffbeaea524998bb assets/create/items/andesite_pillar.json +dcc3d0dfe8826a826ec4526a76428d30d37f7a36 assets/create/items/andesite_scaffolding.json +82c3b0c6ffed74d832421db43624bc44dbe106ee assets/create/items/andesite_table_cloth.json +ff8bf162cdf6e9dded77afe83694ce6593fd66b6 assets/create/items/andesite_tunnel.json +9f005ade21490f608d798178bcf0e96aa6520d61 assets/create/items/asurine.json +2af8c726af7a7eb49de119788dcc0acf170f5185 assets/create/items/asurine_pillar.json +f32dbabc0f7bcebd254f62f0d91632429089f83c assets/create/items/attribute_filter.json +4c6d87c03734cc863d78bc6a6e3b338a4945aa4f assets/create/items/bamboo_window.json +4a7760139a3e56fcf73fba898f66b2402bf4b7de assets/create/items/bamboo_window_pane.json +e11de588a364aee6bc0ae6b3e765a7a8ce32403f assets/create/items/bar_of_chocolate.json +ef4501dc4c6147511151674ab84a87df7c0fefe5 assets/create/items/basin.json +3a176d7a05a5cbffe1b21116042516c8a9763fba assets/create/items/belt_connector.json +105bc6b6d6d4d4341de158cf69234d6de6504d73 assets/create/items/birch_window.json +d5b041d00d271b491f7a3fa792aa383b44088715 assets/create/items/birch_window_pane.json +6c0f4435bd58aa04c186680a7bf27b0e381f917c assets/create/items/black_postbox.json +634534f1e2701d6a76d8ea872655808a6c43d68b assets/create/items/black_seat.json +724acfab588bf0960e1684c326278681a5d5dcdd assets/create/items/black_table_cloth.json +f2780a8daec08690f58d996ea494b4a59e95d73f assets/create/items/black_toolbox.json +b14fe28c82b5bee23d96a5c4269df893dc583cb5 assets/create/items/black_valve_handle.json +b3a3a07767206ed016efd7a64aa0162fda420195 assets/create/items/blaze_burner.json +004926e8d8e3dd120ffb50adc463cdb06a0e688a assets/create/items/blaze_cake.json +5b7ec84b4858c7dea1520f4b14cf63e6d6b2b768 assets/create/items/blaze_cake_base.json +b587b69400df6739ff464f51b2c5ab64a745ab55 assets/create/items/blue_postbox.json +6313606c35eb38d20963b62785afed4ca3897031 assets/create/items/blue_seat.json +a523eac5ac20d4581b6539b88552229bd8cdb5ed assets/create/items/blue_table_cloth.json +d36ac95efeab3cdbfe4d81076b5dddfafada71ba assets/create/items/blue_toolbox.json +ae381f8b4a7cb708050f552aae809593044bac97 assets/create/items/blue_valve_handle.json +ea5266588bce8c2b9f1f26dfec194ccfc0501757 assets/create/items/bound_cardboard_block.json +13d202f1a1209ac59c7f8563619f274c020a990e assets/create/items/brass_bars.json +4ee1013f40d27b9975a7de98fcb39c8a125f6793 assets/create/items/brass_block.json +98d259b937a982de1d03b6aab1b17d4635fabf6b assets/create/items/brass_casing.json +0f3ada6f3a14b2c9133fcaa834e7a315b7705746 assets/create/items/brass_door.json +3aba7ed69bff39f1107fd4b7e1c6c8ef48f3762b assets/create/items/brass_encased_cogwheel.json +d72484f469769568c086c3014d835f1ad7af9c10 assets/create/items/brass_encased_large_cogwheel.json +ab45bf43f5faa34275d10c547b0e42b03f5586d5 assets/create/items/brass_encased_shaft.json +b41cb851ec1436cf8696a5843f3d56bb1490832f assets/create/items/brass_funnel.json +edf07abcc4bed3a2197fb382cd4fd98f394ce8f0 assets/create/items/brass_hand.json +b5ff9fef5a27631c7b7620d21b1c14e1550171f2 assets/create/items/brass_ingot.json +828029b85e18420fe0320dfdce62c4c287c8f6b0 assets/create/items/brass_ladder.json +c10726912d198af97ebabf7f0b8c24f562d01544 assets/create/items/brass_nugget.json +4d47450aa79822c42ce33745a36b209b8a3975b2 assets/create/items/brass_scaffolding.json +e925a4ba84af2d26ed9770f79b9b06cc380e11f3 assets/create/items/brass_sheet.json +37feef8e84231aac8150b9ea2336473ea0bea3fc assets/create/items/brass_table_cloth.json +1f63b2372c87964cc9b23d3e90e53ecdd4feb77c assets/create/items/brass_tunnel.json +a3e96ae9984cf4e4176cd2bae8d0db03fe669a33 assets/create/items/brown_postbox.json +0475ecb5925bfd708265b0d035ee15cac91c4f5c assets/create/items/brown_seat.json +fae955e8ec1efe7a73b20e6eebda71a469beaa93 assets/create/items/brown_table_cloth.json +a4b17d10c06b1b72b70f5d7254c162d29effcbe8 assets/create/items/brown_toolbox.json +bbfed3a05a5fdc75ac84b5de397f6871094f5c1a assets/create/items/brown_valve_handle.json +05a2d1b76ab322d2e8cb43d913e6274d237186aa assets/create/items/builders_tea.json +c98de15205f5f290ce3cc061d8f03b6065080a4b assets/create/items/calcite_pillar.json +e0892246ef86f1eec4396a7b396f1068964b6e7e assets/create/items/cardboard.json +0987475329e5616d6713fdedeb3f7275e6245c28 assets/create/items/cardboard_block.json +408c85df6946c090359ea3f95738380c962298f9 assets/create/items/cardboard_boots.json +03312c2809dac08e293588259c714534b3744b14 assets/create/items/cardboard_chestplate.json +3f3600ce935c9a44d058f675abeca2a3286feecb assets/create/items/cardboard_helmet.json +6d14fb9a0b2d4ca6c1e5e435872bf3e90d920d1b assets/create/items/cardboard_leggings.json +7911d9e9ba5f0697fcbb03ce7d4de4fe11ea5fdf assets/create/items/cardboard_package_10x12.json +1296e592e71cd3d87e1c1b9c3142cb2ee0005ba7 assets/create/items/cardboard_package_10x8.json +4e2df40e631dc3dac320ed760c335e3e8da3e920 assets/create/items/cardboard_package_12x10.json +933906624403b5dc413b2dcdf9d38e9fb33e2adb assets/create/items/cardboard_package_12x12.json +6b946ae8f10b853a9174c28b16b317e4553805b7 assets/create/items/cardboard_sword.json +4e95c51102df31886b502cc9dd2667fddea69dc3 assets/create/items/cart_assembler.json +46ae9f83eac6c7dd51e7021b2cf3b977cfab356a assets/create/items/chain_conveyor.json +79a8339ae338624fe22fcaa8edc330519c2a0460 assets/create/items/cherry_window.json +0e7369ec011d9c21a01ca2b6c58642b94f203c74 assets/create/items/cherry_window_pane.json +5cddc84d208afafa6782a07ab1f11c966c290e16 assets/create/items/chest_minecart_contraption.json +3f28122ad7383329fffaba3586261fb4884ccdb2 assets/create/items/chocolate_bucket.json +85d6107957190694cd92d0cf530a4625b1a128e4 assets/create/items/chocolate_glazed_berries.json +c5d63460f932e3c170f9dc6a747720cdcf7483fa assets/create/items/chromatic_compound.json +3a627cca6538c298c4e9f78704632fe80dc013a9 assets/create/items/chute.json +65bd42433e551b1fdd25baac2eea13d609f642d5 assets/create/items/cinder_flour.json +acdbea2db20fb2482a2160b5d9a319eaca9c37bd assets/create/items/clipboard.json +96ee0fd26f9681a049e410183d759d2ef592a2ad assets/create/items/clockwork_bearing.json +8947cfb0f69d657bb1e83389215d611946133eb1 assets/create/items/clutch.json +d90f7ac87c0f118bc365dca807ca2e1fb5c8e0f6 assets/create/items/cogwheel.json +4a0a3cd857cb2f95c6cb2bb00583829ebfd2eec3 assets/create/items/content_observer.json +82ff04bb81b62fe6eda1b4a10296973d2d425147 assets/create/items/contraption_controls.json +8383d90a961e6bce75fe971e60b0f88d1d120197 assets/create/items/controller_rail.json +27ae315b71bcab19f3baa59691efc8565f355822 assets/create/items/controls.json +3ef6c1c3c28dedbfb0a7f6542d1610aa0688d547 assets/create/items/copper_backtank.json +7adce3c78708b219879dc698c0d48f4b691ca61c assets/create/items/copper_backtank_placeable.json +1c75dccff8f4a3a9d5f64fc66cdeb4474f0fa31c assets/create/items/copper_bars.json +4d126d0212b5ccf58f6827b89aada2ff4cb2c100 assets/create/items/copper_casing.json +c91c7a1a7a8482c6bc76a3d4d6f5eb8edc7464f4 assets/create/items/copper_diving_boots.json +f564f3d8be97efb4a3d8014aca88fefb1f7d70b4 assets/create/items/copper_diving_helmet.json +c104c80d7cddafcb797cadd94d3a9f2fe6061049 assets/create/items/copper_door.json +0b2cb966d9ed8bccd24987970dc866ce34a1c063 assets/create/items/copper_ladder.json +233155bc895dbf95ebd6e4921feecfc77b8242d8 assets/create/items/copper_nugget.json +82efc9745aa3704419304f949aa1cd579b84ba0d assets/create/items/copper_scaffolding.json +e177306341fa83f2e9b00accfd5842ff41029447 assets/create/items/copper_sheet.json +b72a7f8f6b6260324150c564a5ac0125400ed7e9 assets/create/items/copper_shingles.json +970688798f60df39f94b7f4cd9178c1266de4b18 assets/create/items/copper_shingle_slab.json +3efd0f766d10a555e7cb436d43f16a9ddc98b8bc assets/create/items/copper_shingle_stairs.json +c45caec4c7680468dc91c77cbe0aa17becae97e5 assets/create/items/copper_table_cloth.json +c88a6af8e7640304aacb08767caf464092d01e32 assets/create/items/copper_tiles.json +71612d257feacd92f40da0827faff44edd4745c5 assets/create/items/copper_tile_slab.json +9a4bc86db9439b49b47d44114d3cc979619cdf24 assets/create/items/copper_tile_stairs.json +1069e8d8161efb026c9d58f96bc691da23575816 assets/create/items/copper_valve_handle.json +da4fb3b22c6a7424c13ab89b49d048379d4253e1 assets/create/items/copycat_panel.json +692239cd1b23570175c4a30a700ac74e2c3986b4 assets/create/items/copycat_step.json +81095292e603a0a1fccb5f0fedc9ef193cb7223b assets/create/items/crafter_slot_cover.json +00b9a88a6699a5c9f2a8289ac53088a372a62cc9 assets/create/items/crafting_blueprint.json +5c48f7568a81d9623d0f8515f0187056d59e962d assets/create/items/creative_blaze_cake.json +5e8df5ef32d0c7e267e5d006fe469c9bc2d1f1e9 assets/create/items/creative_crate.json +d5602007c5019de56eb3b49b23eb063acf4b58d8 assets/create/items/creative_fluid_tank.json +f4dcfb65872a389faa8617d64abb645d617494eb assets/create/items/creative_motor.json +b6bef4ac9b33490c96eebbc0f5913068cfc2d925 assets/create/items/crimsite.json +a62c00e298011339960aa166cf15fa058354b6f8 assets/create/items/crimsite_pillar.json +1109b850070832c590e0a95aeeb33de54f9ef0c7 assets/create/items/crimson_window.json +db10454887c9706d1768c60cb01b44c5f8f798e5 assets/create/items/crimson_window_pane.json +8dc50fc4f4267409bd66e769efa844d948a8159b assets/create/items/crushed_raw_aluminum.json +ec2124ffd80364a07372f46f3155fa3e6a4f1858 assets/create/items/crushed_raw_copper.json +876e9433184b269b718cd75a032f43d0d7edffe6 assets/create/items/crushed_raw_gold.json +0b0396e3f6056987dfc8cd27c4b0b7675b880c12 assets/create/items/crushed_raw_iron.json +999370ea39cf240cf92218e2774ee8d0ee88cb0b assets/create/items/crushed_raw_lead.json +b06345bd1aedcb002777144ccf736ef6ca23ed87 assets/create/items/crushed_raw_nickel.json +c5ec87f6d928400df8eb5cbd196b42f24fefa94c assets/create/items/crushed_raw_osmium.json +5ed7150f50c4686f95897b892ef2a091bec7d7fd assets/create/items/crushed_raw_platinum.json +28f2cb352f6df0192f66464f92db934b9add8425 assets/create/items/crushed_raw_quicksilver.json +d7856d7880e797bbb4133eca0dad2cab4affeb1b assets/create/items/crushed_raw_silver.json +25539cd48b0e937a2083a972e510f1c75ec8a5f9 assets/create/items/crushed_raw_tin.json +4db7dee8d022604bf62d2d40b312147944c976ad assets/create/items/crushed_raw_uranium.json +346501e7b97ac7c0d144c59e86bbc7addd5feb7a assets/create/items/crushed_raw_zinc.json +785e3609424aca0128a6d8c25636bd8bfc419b52 assets/create/items/crushing_wheel.json +1fcb8cf447db634a37757bb72e6f5ed032fbfc0b assets/create/items/cuckoo_clock.json +2096d37e772e1fe922c32e8b3822853488fb02af assets/create/items/cut_andesite.json +835b08b279fe5ca58da3d021795c0add6648b94b assets/create/items/cut_andesite_bricks.json +b94775df471c7a48287f3397aa07bd2667d33ddb assets/create/items/cut_andesite_brick_slab.json +6835b9babb518c4bf02ea8aa66d5577100c1c836 assets/create/items/cut_andesite_brick_stairs.json +ff48bf484353664d51bad4a1556ddc53108fdb45 assets/create/items/cut_andesite_brick_wall.json +c2bd555ab74bbf9bd717c098f54580317b0a7242 assets/create/items/cut_andesite_slab.json +0b82fa9aeee0226f226b03c2b0f79dedb6bb8780 assets/create/items/cut_andesite_stairs.json +154368105410febee6576abc786537825d0e6768 assets/create/items/cut_andesite_wall.json +72feff593d30d00bf86326b24437c1dcba6c1726 assets/create/items/cut_asurine.json +e16b2e4e138f3e5a21b50de1a85886949c6539e4 assets/create/items/cut_asurine_bricks.json +4ef555ba66957a18036666bf5347924dca873cf6 assets/create/items/cut_asurine_brick_slab.json +d9db614d5e7954d6fd8c3f43e0f8445a4e808a18 assets/create/items/cut_asurine_brick_stairs.json +5adb8d6a082392ab39fad5fcf4c45f57a1879bbd assets/create/items/cut_asurine_brick_wall.json +9b460d3ea63be1dcecd2250605d2e5891eb2f719 assets/create/items/cut_asurine_slab.json +30fa73161077a627da5d5002d6e59807cd74b2c5 assets/create/items/cut_asurine_stairs.json +93b7b9e5103277e97b1c7e6af9a629bce3c4ff10 assets/create/items/cut_asurine_wall.json +cd92da0432aa651fcd44d1fdcd12a85e9b636363 assets/create/items/cut_calcite.json +c2425ac664e8d53023d89162045a231c71747e26 assets/create/items/cut_calcite_bricks.json +964d97d3c62880cfede2d7e63d8360f39b477a46 assets/create/items/cut_calcite_brick_slab.json +6c4e14a78db5db68f84e39582290bb6c5855dd4d assets/create/items/cut_calcite_brick_stairs.json +967aa14f42180608d0cb0950185369b0a77f8ab5 assets/create/items/cut_calcite_brick_wall.json +bb929111170ffb0f534ed685d5399438f9c978aa assets/create/items/cut_calcite_slab.json +1e5930a618a1c97fc5dab0805d6723b744b71607 assets/create/items/cut_calcite_stairs.json +afc2b4a0964e788ae26ad104443236dbc5a259f2 assets/create/items/cut_calcite_wall.json +5973e3fda6579d917001fcb7bb2e56e5ff5b03ea assets/create/items/cut_crimsite.json +fdc58eda100c7c56890c72c094655c0cd12cd88e assets/create/items/cut_crimsite_bricks.json +ecb22f8ed6c6db7b5d7d3fbf44cfd35f920c79db assets/create/items/cut_crimsite_brick_slab.json +626b247b5fb1d80ac560c36bd793e4375bdf4ac5 assets/create/items/cut_crimsite_brick_stairs.json +ec848e91957794f8301d58e1df7116662797cdc7 assets/create/items/cut_crimsite_brick_wall.json +d74292a634bf935ca260224c6309258f3242e1e2 assets/create/items/cut_crimsite_slab.json +69e79a0509b17c976aa8c59d4fcd5ca47769b677 assets/create/items/cut_crimsite_stairs.json +ed2166443dae02c8574d3cccae728b6355f2a013 assets/create/items/cut_crimsite_wall.json +4355769568806e560a1adbc840baa07ffdb360ec assets/create/items/cut_deepslate.json +84f163a34eab5b7ef56619763337d97c0e70992f assets/create/items/cut_deepslate_bricks.json +42470e842a6fe5a470a7bbf103c87d9eac4c5959 assets/create/items/cut_deepslate_brick_slab.json +714503a9cf2581a0a8a87fcf35cede806ec17af1 assets/create/items/cut_deepslate_brick_stairs.json +738dbb935268b9ef4ce31da6a566d33e7aabc2ff assets/create/items/cut_deepslate_brick_wall.json +8251939498e64f7aa73ff4e5d3438cb020b98017 assets/create/items/cut_deepslate_slab.json +5e48cb44886c960dfbe6fd0919d084ad3a65fa04 assets/create/items/cut_deepslate_stairs.json +ee0298fe0bb54ddf3f72927115d0ae4d4f450b6f assets/create/items/cut_deepslate_wall.json +9b93523dc83626f28202360f79f49722245af860 assets/create/items/cut_diorite.json +e030ba19612b4715163e350e85624c1a7e6625aa assets/create/items/cut_diorite_bricks.json +755130fe145b782d495fe54bc387f35567f7bd60 assets/create/items/cut_diorite_brick_slab.json +1ca075dabce129d8c45b9d2a30c01f59ddd82b63 assets/create/items/cut_diorite_brick_stairs.json +2bed1dea799ae63fb503f73bd6c9e435f36c247e assets/create/items/cut_diorite_brick_wall.json +340af5f1ee5b477aa90d1f30b9376be6c93cd48b assets/create/items/cut_diorite_slab.json +47a5c6f3d7b2dd0bf9d9bf44f876c3470172a834 assets/create/items/cut_diorite_stairs.json +7587f9afe60570caca5c3e227df04b1c0ad9d5aa assets/create/items/cut_diorite_wall.json +8130afcc533ecac19a5a44ed3894463065a57955 assets/create/items/cut_dripstone.json +a355a98a27a3ca1cefc021794b5e955a342a222b assets/create/items/cut_dripstone_bricks.json +d2c1bc0501cfae4e5f8027a10233989e69172135 assets/create/items/cut_dripstone_brick_slab.json +96f5d62790b75dab98be071d605161c4570b2329 assets/create/items/cut_dripstone_brick_stairs.json +773c1eaf09466ef8403739152e296ab20c606de6 assets/create/items/cut_dripstone_brick_wall.json +da1f5908f289e3e783da54e588a57aa2d2767443 assets/create/items/cut_dripstone_slab.json +c0f5059fcaa8a14fbf6f01167911f0b7fccf6bd2 assets/create/items/cut_dripstone_stairs.json +980ab1f04b904f27986144c299568587e804d25f assets/create/items/cut_dripstone_wall.json +46b66eaaa6f4a30e6549df181bf0c05c8ddf459a assets/create/items/cut_granite.json +a36d4e618ca253446defe4668ad74f1c8df5f38d assets/create/items/cut_granite_bricks.json +d158ad34e439d5aa917dc3c9bd443a41b89ca810 assets/create/items/cut_granite_brick_slab.json +e5eb16d589fd21e5183070abe0971981b6138b65 assets/create/items/cut_granite_brick_stairs.json +0f3088da0d777ad5e92017610b8e12c057fee0f5 assets/create/items/cut_granite_brick_wall.json +a70fd9f693b087184dc3e85d6f5d691941c4026e assets/create/items/cut_granite_slab.json +9b6dd2ea8a8f690a9c8853a115b607d1022a3383 assets/create/items/cut_granite_stairs.json +ec2b606ed92955eeb189cae917a1b7dfb89cf8c6 assets/create/items/cut_granite_wall.json +ae75761f17ece9a1063436aae94a6711211021f6 assets/create/items/cut_limestone.json +4c1788ef4d5d909e9f8dcc3b990b4a182fe59027 assets/create/items/cut_limestone_bricks.json +166fa183a07c28dd2935227b66c6d7a74c456709 assets/create/items/cut_limestone_brick_slab.json +dfd94232f4f6cacb0353e5f50a65922b2302c4a7 assets/create/items/cut_limestone_brick_stairs.json +321c8e2f68152dda5b7ffb3e4482fd4d48d62dfe assets/create/items/cut_limestone_brick_wall.json +2cb9798e2ce522aabda84e8af52d8624e9e60ff6 assets/create/items/cut_limestone_slab.json +004d120f9b404ad4f72be521db8ebbd26ea84dc6 assets/create/items/cut_limestone_stairs.json +c21d905c6d0667b77006af6095c694570b690364 assets/create/items/cut_limestone_wall.json +138c821feda38f80584d8d3135f1bf2da9bf0ed8 assets/create/items/cut_ochrum.json +b790cded890c26c2c39fe105549083e38967e7f0 assets/create/items/cut_ochrum_bricks.json +5900238946bf00e7e8a9c98a48ee20d9a5407a6e assets/create/items/cut_ochrum_brick_slab.json +8a893604813e8a81fde62f088f524435dcb3bbef assets/create/items/cut_ochrum_brick_stairs.json +332670d09c5c292e69ed1efb7b88d5729f0458c9 assets/create/items/cut_ochrum_brick_wall.json +30c523382262bb282422c1668343c4ed75b0cc95 assets/create/items/cut_ochrum_slab.json +1101a684eefbcf9147b33192e82e2c7a365403c0 assets/create/items/cut_ochrum_stairs.json +1bfea779658f99f715ed4fe35ab88ca6d0b4be24 assets/create/items/cut_ochrum_wall.json +9fcd367af168b0d0470f4e9e6c2253e458c9857c assets/create/items/cut_scorchia.json +2fd529a7004cf1454cb225da6b7539ef21bc0f05 assets/create/items/cut_scorchia_bricks.json +1e080ebf322ee6eb63ed70df81eaeeadd6bb8c6e assets/create/items/cut_scorchia_brick_slab.json +d412f503cc1646b05737366e52437d1fd46414f3 assets/create/items/cut_scorchia_brick_stairs.json +2e472a6ef525e0fd8ec5af76a9b10afe7bdbf14e assets/create/items/cut_scorchia_brick_wall.json +b6c50cede23c5805850c6f00aec8cd7caddc2e11 assets/create/items/cut_scorchia_slab.json +6e079af1df89b5bf6ee0b1fb4a204df5cc740533 assets/create/items/cut_scorchia_stairs.json +f58205170143d7049885f55142f0dd3bcf02fd17 assets/create/items/cut_scorchia_wall.json +961db0a8fe9ec932295fad7300ead6a92c54620a assets/create/items/cut_scoria.json +da80ba7bac5a570549992dae6c64ce5328fb61a3 assets/create/items/cut_scoria_bricks.json +92a11c852a346ac0f206fd1ee87f29e90dd7a8b4 assets/create/items/cut_scoria_brick_slab.json +bfff5f842f28c22bb52c19588d01e6c997750cc5 assets/create/items/cut_scoria_brick_stairs.json +14ce2ea956b53a85ad631793ab7c544d4fa4a94d assets/create/items/cut_scoria_brick_wall.json +0861375da35d866f290988f66afc8cedfbf53afe assets/create/items/cut_scoria_slab.json +e1afc22847c4a21292d7aa23230736a80ab548c9 assets/create/items/cut_scoria_stairs.json +e6a4588d79338360cd496c301e2f49d5938aa544 assets/create/items/cut_scoria_wall.json +fec0cfdefc1afb7f833ba0da7930ce8ccb56cc3e assets/create/items/cut_tuff.json +be401ffdf77b6531f4b8b58ab2621fb8ebdd5bba assets/create/items/cut_tuff_bricks.json +fcd6cf01f8f43e64530c831d5236b21292fe9625 assets/create/items/cut_tuff_brick_slab.json +09039d1df7139926778212f50b502610bd7a3ffb assets/create/items/cut_tuff_brick_stairs.json +a504d35061e81528168e09101d44cbeeff3fcf58 assets/create/items/cut_tuff_brick_wall.json +fc80cf87b0cae230b78bc1eeec4c4d757942c706 assets/create/items/cut_tuff_slab.json +8cbc34965bfa9b1372e17019c723188e1cdd6fad assets/create/items/cut_tuff_stairs.json +df96f30c053862a76e4d31a4f4893dc54c628e43 assets/create/items/cut_tuff_wall.json +f636b0572b8cf243bec8b3f4ab47cf7abae13de9 assets/create/items/cut_veridium.json +a7bacf6b56c626b5ca83447147bf0fc7f7715065 assets/create/items/cut_veridium_bricks.json +caee45eb68272b43f87932120038f36c149012bc assets/create/items/cut_veridium_brick_slab.json +5f5c1a97dab605bf8010a1a9f4dbb200de828522 assets/create/items/cut_veridium_brick_stairs.json +5ac41c8e6c0ed6c2a9958dc7b0bd5398a9897601 assets/create/items/cut_veridium_brick_wall.json +57ac581b9040bf9a7f408f7855ec4814bea91f7d assets/create/items/cut_veridium_slab.json +b8959d9d624f8fc41e4158fd3f19f495886309c1 assets/create/items/cut_veridium_stairs.json +cfa8f60f07189f9d290f818099528f6fa5ec2aa7 assets/create/items/cut_veridium_wall.json +d58c07eec3e5868689704534b99553b87f8c780c assets/create/items/cyan_postbox.json +532dc0cdb764f9f020a9f503d01f1cd241eafe45 assets/create/items/cyan_seat.json +be78e74c4cb501f2ffa8d16f97613965af2b9426 assets/create/items/cyan_table_cloth.json +e7df05f667db503f449ae8cf3f24fb4adf4a05ca assets/create/items/cyan_toolbox.json +a2f6e616a27b73a5a80f3037b85189bf6d08bec7 assets/create/items/cyan_valve_handle.json +8a987e708daff94c4ef8c9a80c2f39ec46bdd41f assets/create/items/dark_oak_window.json +2c1f8038a47cbac59c9c3957770a06b251d8fcb5 assets/create/items/dark_oak_window_pane.json +b9942cf07688fed9c72ebf27126dc0cc819ceea9 assets/create/items/deepslate_pillar.json +67fa047bc94da029fe60bb3be91d998b059b4734 assets/create/items/deepslate_zinc_ore.json +799abc9b81d963a8318695f1c5f6923672c446ab assets/create/items/deployer.json +6cfcfa678cdc4a55c086dfbb0fe9cb4441af6e57 assets/create/items/depot.json +31c9ade950f5d2028ea76120653539d62a1a452a assets/create/items/desk_bell.json +be40aa7d963cb23238c3a7963fc1fabce227187f assets/create/items/diorite_pillar.json +eee2269e44a4b74a02b5b59148ddafbcf635dc97 assets/create/items/display_board.json +c3978a38a2a56ad8a119fe16c19b2394a478f968 assets/create/items/display_link.json +82ff618c92cf5c29bb17de4d807fe46705fea168 assets/create/items/dough.json +7fd1e5067d78ea8d4801a5b72d8b59662afc0c60 assets/create/items/dripstone_pillar.json +957e2a09502ca75f3652ec612a78562b422a9c36 assets/create/items/electron_tube.json +48ca2732e9fa06c77566b5c82404387363071d97 assets/create/items/elevator_contact.json +4adf7aab69d141ef44e2611b282b786de1981bd2 assets/create/items/elevator_pulley.json +f9d8c1a75b1cfb36816553849df690d175e95b0e assets/create/items/empty_blaze_burner.json +23dff08b701b122ef3e500e87d5585b46237e24e assets/create/items/empty_schematic.json +404414cfe2e63f7ae7a83357dfd844a5704c92d2 assets/create/items/encased_chain_drive.json +70691290852f6af4d483dc505df9b42dcc295f99 assets/create/items/encased_fan.json +24b122964bf8dbc324033b384cae482984853067 assets/create/items/experience_block.json +947b000f14b7945097d2b44fb5eb557ceb6a36ae assets/create/items/experience_nugget.json +dcc576e45a42d6bdf25a81a3c7b9050355350f70 assets/create/items/exposed_copper_shingles.json +fcc869520ad757b70c917f7e55b368944a3003c5 assets/create/items/exposed_copper_shingle_slab.json +e90a230b38dd0187caafa452758e2d64ee983397 assets/create/items/exposed_copper_shingle_stairs.json +bfc9f466adc68a195eb45357105d135772f87b1c assets/create/items/exposed_copper_tiles.json +791612494a4b9fce649a9ef28468816c1f850c9f assets/create/items/exposed_copper_tile_slab.json +27adc8315f1aadf0eab9a1cd020fca37cdb2ea3c assets/create/items/exposed_copper_tile_stairs.json +d22586b969548fb3512f475715669c70a58215cd assets/create/items/extendo_grip.json +6de60cf22edb75d465b4ad3c8f8e97f605f4973d assets/create/items/factory_gauge.json +ce9c37439008d514914127c5a97bf120e2fb6dee assets/create/items/filter.json +a4ae8f3e2954ff041df1ca79fad63eba5873deb9 assets/create/items/fluid_pipe.json +3701df69b715c8f829f235ba4a7aa42b03f08eb5 assets/create/items/fluid_tank.json +0384f6c66e4c3e30bb5a223c7fc5090e9bada5df assets/create/items/fluid_valve.json +4bce1fe80f935ca5fbb86765720293584c37652b assets/create/items/flywheel.json +60eb8169086679522adde37a6ce04d4cd735955b assets/create/items/framed_glass.json +f92c855c2425f45bc9582d453361877afa76d0db assets/create/items/framed_glass_door.json +dcc966043a504f33776834e76deff1b1afde13b4 assets/create/items/framed_glass_pane.json +e5f151956e07633fd8e3a879b3b370d9c43cccb3 assets/create/items/framed_glass_trapdoor.json +8f73f74e1df4e48ab890f5cc718606b70ad749a1 assets/create/items/furnace_minecart_contraption.json +2db779e1de6854365571452c3c0f116db49ed9a1 assets/create/items/gantry_carriage.json +ab1eb0046955037735e0487e9c002001ae78fa10 assets/create/items/gantry_shaft.json +1a2091fd76ec63d5ecb4fd66ce8d68d8a35b397f assets/create/items/gearbox.json +c2608f4bda19fa908e580af2aa0f2be6e7742889 assets/create/items/gearshift.json +a38e5f2bc6d339660cf2fe1c6c1fcd0de50e6378 assets/create/items/goggles.json +c7a7245f78710a6b350f744758ab99304c22555d assets/create/items/golden_sheet.json +cef60fa27047ca80c3d96b56d7f14db21e4ef0bf assets/create/items/granite_pillar.json +ff349b0dda0796aaea2dcf578ebe63dee990af04 assets/create/items/gray_postbox.json +235652e58fdfb8b08ca611bac8ceade3662716e1 assets/create/items/gray_seat.json +1f38433e73b742d9168eb140900a8cb70d1c0712 assets/create/items/gray_table_cloth.json +2e5930765b6fc39a1fd1ddfcb6faf88eacbd31c2 assets/create/items/gray_toolbox.json +9f582cf8d113260c4d40524f7f7339440b00da91 assets/create/items/gray_valve_handle.json +cc9c437f2af12a1cc5aa8a342ac63749ded3f160 assets/create/items/green_postbox.json +f135f44a4e0814459d516abab7fcace8bdd16f09 assets/create/items/green_seat.json +635b36fa390048cafc0caff6d9b210703befb405 assets/create/items/green_table_cloth.json +8c2e46a9d7680a3a399d51098537ab536484b9a1 assets/create/items/green_toolbox.json +07074a33bd188bde2cdcb551f23fda751348eb28 assets/create/items/green_valve_handle.json +bef1d5d8d326107a0cc5f5782125cf48a2e8439f assets/create/items/handheld_worldshaper.json +de06b9c8ce2c374e4c3eded0adfc4550b167f3eb assets/create/items/hand_crank.json +61f242a4a002b44d99bde71e2ed11610f6bf4870 assets/create/items/haunted_bell.json +faf7dce0906ed0efa107fbb164964f5671aae622 assets/create/items/honeyed_apple.json +cffe49b14de8329f59d0c534a6e8484fd3c5b1ac assets/create/items/honey_bucket.json +6fa00d2dfb503d2f869b736bdc79b2d092a76914 assets/create/items/horizontal_framed_glass.json +98b85b7e67cea096e766a9c97916f0229469f3a4 assets/create/items/horizontal_framed_glass_pane.json +41cc149af935a2bf8d6bb247e4db2f20080f0968 assets/create/items/hose_pulley.json +e24b8576b7ac55868e5f554205e43306233048c0 assets/create/items/incomplete_precision_mechanism.json +29aee919315df46f350501c6435a80d050afcaa1 assets/create/items/incomplete_track.json +5c2295ef4d9c63eb5754a3550da818a12fd0e3c0 assets/create/items/industrial_iron_block.json +31cd9f28f53e2bfe665765e5893d575a715b07fd assets/create/items/industrial_iron_window.json +72aa191e88cf5a061cf4d480a99084ecced38c12 assets/create/items/industrial_iron_window_pane.json +e19f8447839431d8b44cbca6048004f9723fd458 assets/create/items/iron_sheet.json +77b61eb6f8f27a555c9d02dc31e4a0491e9fead5 assets/create/items/item_drain.json +630ac8115203d304101eeeb26976d78546a4239b assets/create/items/item_hatch.json +e310f1e1857aeaa1898d89b61f935cd56a93f709 assets/create/items/item_vault.json +95c3402a5f2caae9402ff49ef0343f917426afb7 assets/create/items/jungle_window.json +bd83898349b67ce0464e10ebcc40c632e4b2c62b assets/create/items/jungle_window_pane.json +202929c487309243b3d5c3476626099ac4e941e2 assets/create/items/large_cogwheel.json +9c96c59f18f476763c698f01d44bb8772704211d assets/create/items/large_water_wheel.json +2e08ec10d5f66ebead427fdd8d0b965955f5fdd9 assets/create/items/layered_andesite.json +50b4ee3ec6f607375ace563a00b8438409a036a0 assets/create/items/layered_asurine.json +ed1003929cc9876962f562059205cdf7e5b97b79 assets/create/items/layered_calcite.json +94ee93c195bb84a5945af3ef704e187512c2d9b6 assets/create/items/layered_crimsite.json +e5fb01aca18eb291fd79c94d2c42cb95e821cac2 assets/create/items/layered_deepslate.json +deb44c5b9441a9dec951928a48ae2ffd63aa15c0 assets/create/items/layered_diorite.json +efc82e171c530860c835e522b7dec257b2293fb2 assets/create/items/layered_dripstone.json +36b3c3e1c2413d72b612ef57954e729ed6bf873e assets/create/items/layered_granite.json +0fef2249e6b6ed9466bf6b6401147a7be339f654 assets/create/items/layered_limestone.json +98f658d468474ccb54e1f0efa8bec104ca3606d5 assets/create/items/layered_ochrum.json +c5ef6648201f0d4b2556a477c1c7ca19776d9f77 assets/create/items/layered_scorchia.json +f95b732959ce42cc7c295c33bd1dcdb02e0722cf assets/create/items/layered_scoria.json +906af2dc8dae4fa50c14dcaca1f916646944a977 assets/create/items/layered_tuff.json +ee856851d7a693f45a11fdcbbd98789512f84a87 assets/create/items/layered_veridium.json +6ece8ded77f974d5b189479ccad686f63e44397a assets/create/items/light_blue_postbox.json +2078d356a14bf6395fecc945843f2304d4254443 assets/create/items/light_blue_seat.json +45286744ca045194524624d429682cd397e5b5b1 assets/create/items/light_blue_table_cloth.json +a0a46909f57788239e9ea9cc0aae21b3af7cd166 assets/create/items/light_blue_toolbox.json +207b759dbbba79143d264ccf3dba192e3e17523b assets/create/items/light_blue_valve_handle.json +1cab7bae11ea45b23cd9b76253676209b1e96c26 assets/create/items/light_gray_postbox.json +b65731ff8b9015f043cc7c678e78357433f01c24 assets/create/items/light_gray_seat.json +b2f8f98ece8bb3f59378114c978cc9b5e902596f assets/create/items/light_gray_table_cloth.json +fb440d6ebd335d6ba383749e3606669ddcc0e8ff assets/create/items/light_gray_toolbox.json +6dd5d70de021e7bb48e5ddbe308c95b829d3745d assets/create/items/light_gray_valve_handle.json +5809694f9fec733eb62c9a2c35f16f2410c24201 assets/create/items/limestone.json +787d789f35d73deb6c05754a1bd9d683b4b5c099 assets/create/items/limestone_pillar.json +3522fd88248565ba5cc47b17d3641fc965e3126f assets/create/items/lime_postbox.json +f9aef29a36c0ed1a284148728f68e603800654c7 assets/create/items/lime_seat.json +fcbe216aaf799cd56b533978b842fd44efb6f287 assets/create/items/lime_table_cloth.json +b0c247e6bf6570c41451ba95b8f6ec26ae3f90d2 assets/create/items/lime_toolbox.json +02d6594a642da63c63c1b2364b542b1fae912244 assets/create/items/lime_valve_handle.json +996f89b3bc6976680a576be878f9aaf9aef34d10 assets/create/items/linear_chassis.json +f8fdf8a7b0697cc36bf9dd64427cb279c25a4428 assets/create/items/linked_controller.json +2922e9164eb9074f6ccc90fdd29b41508be8d835 assets/create/items/magenta_postbox.json +80c1077308f92ff76889112d733e410d8a879f74 assets/create/items/magenta_seat.json +dfeaf01e840c0594e9f2b051e5165b842f9ef142 assets/create/items/magenta_table_cloth.json +a3ff04f5c5de9212d38fe8dc451d39fb68efac32 assets/create/items/magenta_toolbox.json +2c61ab7e8dd62e6b34bcf4501f93d62e9c227b34 assets/create/items/magenta_valve_handle.json +4f7213a522697e6a883fdae7432ca3b5f8e10729 assets/create/items/mangrove_window.json +1ac515f3e6803203c67ffecec50ce9b4f7865ff3 assets/create/items/mangrove_window_pane.json +81beb7ecdfc77cd0bcbfee662ad52d43831a2ada assets/create/items/mechanical_arm.json +ffea365e67ca8a227b074d3c84f216e33c1cabe0 assets/create/items/mechanical_bearing.json +a8af729fa1626d7250d1df7ed0b9732ebf1032e4 assets/create/items/mechanical_crafter.json +fe53644c7b038330b107a016b95030a1cb5a54cb assets/create/items/mechanical_drill.json +fe81960e031471c3bc535d02523c36035e614f0f assets/create/items/mechanical_harvester.json +87ece47a8548e4aa9678eacb406f23d597d3253e assets/create/items/mechanical_mixer.json +c245a06007d9120110af9a611ec6c47fd6bd9f81 assets/create/items/mechanical_piston.json +da1d8d683344afd0b41880fef43468d81b8bfd4e assets/create/items/mechanical_plough.json +e39854496196bd9f81cb5bc9cea0655c6aced7e2 assets/create/items/mechanical_press.json +fdd6d171bbb4187c87c58dd75584320783a1fd35 assets/create/items/mechanical_pump.json +f66bc25a1fd9f12e45bf7069b1018c0ee3f3ee6d assets/create/items/mechanical_roller.json +3f0498b55bd3161bd6eb57091d74ba76be7dd8e2 assets/create/items/mechanical_saw.json +d46fb400eac081e9d02f07f33a55e8bc5d128656 assets/create/items/metal_bracket.json +ffd103e24f8aa2dfd62774b92622ad4e76e4846c assets/create/items/metal_girder.json +79f0cf45136c929923e6496317a4d5313f286f04 assets/create/items/millstone.json +035a7dfe341b53251b46c2224bf2fd97a3ea2b71 assets/create/items/minecart_contraption.json +47781256659c45846815229bdd35caa018687464 assets/create/items/minecart_coupling.json +2826c57a9914b23c00f32bf33bab888c6aa795ab assets/create/items/mysterious_cuckoo_clock.json +277c05c98334e611569843da5e339bd80424e98b assets/create/items/netherite_backtank.json +fc22ed5fda00a5643a2b2bc7f6176e91c66723a8 assets/create/items/netherite_backtank_placeable.json +9411ebf40a7efd85515eafa1d7a3725032e40438 assets/create/items/netherite_diving_boots.json +c8182cd3c953f06aa597ad33637b00ec9864a3d6 assets/create/items/netherite_diving_helmet.json +074ce37b4629f1b1d68aafda628363dafaa84d55 assets/create/items/nixie_tube.json +8f755ac8c5decbe564ca022e1325c2fa7eb02657 assets/create/items/nozzle.json +e488c26101f7bc903decde11f02eb8bb93a532be assets/create/items/oak_window.json +3661d975d0eea5b4a8957abd21110a6933ac1111 assets/create/items/oak_window_pane.json +a7ae5b8d85981293841993d9a081e7a60dffb562 assets/create/items/ochrum.json +2c847fc1acd0fdb9c68ce2a6abde03eb3ff1ac3b assets/create/items/ochrum_pillar.json +95067715ed6c0c9a2a53f2361c6dfde2ace40c7b assets/create/items/orange_postbox.json +5ff5127df6b00019b69f7044d3f988ca680789f4 assets/create/items/orange_seat.json +efa50b25e3a003c174df0b22973b66be0cf4f37c assets/create/items/orange_table_cloth.json +68e3afa838836b512caeb642ea6935fb52f012ce assets/create/items/orange_toolbox.json +2b714a288b30f10f2331697d556101895eb46a05 assets/create/items/orange_valve_handle.json +f18ce57c58a41b409c8c310e6a2bfa72b230039e assets/create/items/ornate_iron_window.json +632720688f4d699be68459a0324fff58b151ce60 assets/create/items/ornate_iron_window_pane.json +4328821abdb15a023e0bfa38bea729da59eb9bd4 assets/create/items/oxidized_copper_shingles.json +a890ba66393778351e512c566c6cfe72909f250f assets/create/items/oxidized_copper_shingle_slab.json +d5ed11c3823c804af54a63ddc7b4357dd29f2e9f assets/create/items/oxidized_copper_shingle_stairs.json +f4f68639c8949a3440201e9b3397157509febade assets/create/items/oxidized_copper_tiles.json +503876c775ce7cd76a1b8fcb0e5813788b578284 assets/create/items/oxidized_copper_tile_slab.json +3f713cecd439d70693602601c02fe82a900f0434 assets/create/items/oxidized_copper_tile_stairs.json +0d1da900b4e26bea56d9c3c19c78bb1a53bc96a7 assets/create/items/packager.json +2c23f118d775f5fd633953f5f015fc16c18b731e assets/create/items/package_filter.json +d680ce48faaab416208d8ba1bb88096b44c35e5d assets/create/items/package_frogport.json +03b36c9a2110391133021b6d1ea6dd97b7983432 assets/create/items/peculiar_bell.json +ecb9ade83b9405b79dfbbeb725b5f518b5048d46 assets/create/items/pink_postbox.json +9e18588bad047495eeed303fd9bccc56534c05d7 assets/create/items/pink_seat.json +d5882e44106dc7cba13a46e590d6101f2f5fcb11 assets/create/items/pink_table_cloth.json +ecf1d916e8f60717f43ffe6faa93e4cbde7ec923 assets/create/items/pink_toolbox.json +f14628255366e3974c14395e993ad4c821c09212 assets/create/items/pink_valve_handle.json +b75f1e8d554064a637683ba9cfb84056d4de497c assets/create/items/piston_extension_pole.json +725d54050162ebbffd0ebbb95c0a531a949fd8ec assets/create/items/placard.json +0d37c4a3b76c2e559f124445b8217f678bd2656b assets/create/items/polished_cut_andesite.json +9b2f4845deca7d67ce1d878c2529129e7ebde6ea assets/create/items/polished_cut_andesite_slab.json +1c6f49a6c95a7166d008e2f5a8be5ab7217cb94b assets/create/items/polished_cut_andesite_stairs.json +e852d8978520831df8a2d8d58a1fb544f444aabf assets/create/items/polished_cut_andesite_wall.json +d6fff92a403b7a017658fb77d28f6e04692fc82f assets/create/items/polished_cut_asurine.json +111d53aaa8d3d62fa7545c6a11d715ff451ff863 assets/create/items/polished_cut_asurine_slab.json +bca1f35cda8a7b1a9fcce09ac4a299f1d8a2e124 assets/create/items/polished_cut_asurine_stairs.json +b3a14e2855fafa97dc0ce36f8686a421cf20e35c assets/create/items/polished_cut_asurine_wall.json +9b9ca4941413d595567cf07ba28d3cedb69e743e assets/create/items/polished_cut_calcite.json +c389e31a387966c7910eba27eb83012033be812f assets/create/items/polished_cut_calcite_slab.json +ecc68d9ffc9c2779676948dbb3b792d6d903490b assets/create/items/polished_cut_calcite_stairs.json +69554b851a8fa83664dad5e8707b2454172e482c assets/create/items/polished_cut_calcite_wall.json +30ea649c2442caa871a6d716cbb73ef9167272bd assets/create/items/polished_cut_crimsite.json +0b27a7d90ca297497908cf680ba387278e7a9061 assets/create/items/polished_cut_crimsite_slab.json +a140ae04cc0203bafb25e7e15f9e28e5f67b36a1 assets/create/items/polished_cut_crimsite_stairs.json +59d22eb7501b8ca92b3768d77e198ce1f3eaed49 assets/create/items/polished_cut_crimsite_wall.json +f9d9ae2af1e3e50df82715aa0018989df9ad6b39 assets/create/items/polished_cut_deepslate.json +cf0e4aedbc97ac32deb1fa4cf65290b90b458870 assets/create/items/polished_cut_deepslate_slab.json +8fcbc15e20444feb2fe65a3476ad9691c07053aa assets/create/items/polished_cut_deepslate_stairs.json +92489b9a0a2983085d4b7a656799f8046e538c9d assets/create/items/polished_cut_deepslate_wall.json +d5b7a55551452ebb01636e2ecf579fc4c8e484c2 assets/create/items/polished_cut_diorite.json +2cd23d9e70b7b6f80f9d1acdcab88c177a458e59 assets/create/items/polished_cut_diorite_slab.json +ac1f7a8ead6c14f5ac1eca652096d304b0fc38e0 assets/create/items/polished_cut_diorite_stairs.json +32ed67aa8fce7ba48a14235438ae87f909f8105f assets/create/items/polished_cut_diorite_wall.json +106a8c0231aab6dae8849857167b8122f6480943 assets/create/items/polished_cut_dripstone.json +c29a9fbbad5db1ce88eade09d0d6f682a9402308 assets/create/items/polished_cut_dripstone_slab.json +51f72668b9f1eb271d87024c14cb02e648920147 assets/create/items/polished_cut_dripstone_stairs.json +0381a0ba7aee5ae172e6959e79d80e02567a42c9 assets/create/items/polished_cut_dripstone_wall.json +a639f127edeb1080b0e725c9cfc38d64b9897908 assets/create/items/polished_cut_granite.json +c2594204e40a4fe49cf76df963aa832d0d180552 assets/create/items/polished_cut_granite_slab.json +c8033f6813df3b5fa40a100777329858705dbb3e assets/create/items/polished_cut_granite_stairs.json +6ee0ff8e635a2aab14c8f64c1c61a857605e844e assets/create/items/polished_cut_granite_wall.json +55aeffa4ef54496cbe351a22cedd0c6cbd6f214e assets/create/items/polished_cut_limestone.json +f556eb37a650702ed745d4eb899b8a89926c7846 assets/create/items/polished_cut_limestone_slab.json +e6cf1b83c8d12648a87649fdf16e0e902ce91681 assets/create/items/polished_cut_limestone_stairs.json +6cac447a9198b81fbadddb8eb8a2b7a431bd7ec6 assets/create/items/polished_cut_limestone_wall.json +092aa75b6c37f73a6966af715fa56de7f83a2cdb assets/create/items/polished_cut_ochrum.json +718d26751f558e5905be4c5f0bb5de584a56cad3 assets/create/items/polished_cut_ochrum_slab.json +6fca068468bb0177b2c1c7fc73fff9fb0eefd5e8 assets/create/items/polished_cut_ochrum_stairs.json +aacd87e7fb91f54c163f9d81a57e3742b96fd052 assets/create/items/polished_cut_ochrum_wall.json +f75d060a6ede3c66677379ce20c1d5bab06076cc assets/create/items/polished_cut_scorchia.json +f64963328720e079ed2d868c3e553ed4f8d2410b assets/create/items/polished_cut_scorchia_slab.json +5fc1d118f3c89362b3183c227762d8c22c0156bc assets/create/items/polished_cut_scorchia_stairs.json +0aeb9f4047fbd305e816a659dea4401668b226ce assets/create/items/polished_cut_scorchia_wall.json +91c4c79cbf7911ca0b2d5cc46411a1641857adfb assets/create/items/polished_cut_scoria.json +0fe6c5a5acc595aaa40429be247a9da6b94cfe33 assets/create/items/polished_cut_scoria_slab.json +8e812122a102ba52da4ee3b3cf3e9a74d14133b5 assets/create/items/polished_cut_scoria_stairs.json +c039517ea3a519239609ced2d78d9c27211da5a7 assets/create/items/polished_cut_scoria_wall.json +86dc3c87f904e60142ba648aead2e9ba75f58bbc assets/create/items/polished_cut_tuff.json +118735df75f51f09c1bab7421e9e66d947bc4134 assets/create/items/polished_cut_tuff_slab.json +6b316572f1b1e7cbe765525e4f4fb14be8c89d4e assets/create/items/polished_cut_tuff_stairs.json +fbb3fb0e16ee03eff9dac27d0ebdae1330ced8e9 assets/create/items/polished_cut_tuff_wall.json +283d6428724c76c914062718c279e0e868b49767 assets/create/items/polished_cut_veridium.json +1c0326cb1ab0785f840bba3ea082363b617d4b1d assets/create/items/polished_cut_veridium_slab.json +001757836881b7dbe042dd3ddb62ffb424a9249c assets/create/items/polished_cut_veridium_stairs.json +7b42a55caae331a51f76ca808fac1d611c66cd63 assets/create/items/polished_cut_veridium_wall.json +b6180f11c658f143f671d6357fd45593b05b5594 assets/create/items/polished_rose_quartz.json +27cdf756a259244eccb04887e96bcbd917ef4f7f assets/create/items/portable_fluid_interface.json +80d57f3cdb78048a600efb4478bac4e1690f3abf assets/create/items/portable_storage_interface.json +9e3e9f5f4d6e9cc98b5ed5ae5e4bb89243153b44 assets/create/items/potato_cannon.json +01f81727d02b4a59e57d1c40c90195bb136a4f88 assets/create/items/powdered_obsidian.json +831e48249f63061d1e6b3ec3ea5b7e640a50e6f9 assets/create/items/powered_latch.json +4d3e218e42e833f7af58a8cea51c271edf29282f assets/create/items/powered_toggle_latch.json +69bbdd1a3c4e3f7983b04befafb64d9bb3ad4bce assets/create/items/precision_mechanism.json +fb48340ca363e814e374888a01aae7089ee62c37 assets/create/items/propeller.json +48dee689f4bc71fd29e649b1c707b480556d4902 assets/create/items/pulp.json +a1ddc784f10c8e5e61976ee53eb392373086d3a0 assets/create/items/pulse_extender.json +c7e594f07fdd95fc6e54ddbcded0f7420f8bcbb4 assets/create/items/pulse_repeater.json +a1abb7751bc3a05af539b65e920e35f71d8b87af assets/create/items/pulse_timer.json +414ee52da2109874b5a2cd660587e26e39e38817 assets/create/items/purple_postbox.json +40f7f2ad883c87a6fbdd2acbeb5cd299a0760e73 assets/create/items/purple_seat.json +8368f78f009eed1b465fcf5a19f648a5e8d1e5c7 assets/create/items/purple_table_cloth.json +ee215d8475d5f1079f55d619461a39add2a52c4f assets/create/items/purple_toolbox.json +82d9d5cd4b2418990f95c7099f2e3cd21626ff09 assets/create/items/purple_valve_handle.json +d6bd176d6772353c2b37c11232a9eb91cc39af68 assets/create/items/radial_chassis.json +8a71256ea8b076a38981bec883962346d6c5082d assets/create/items/railway_casing.json +5425064f92d1043c94d837e518f81fc28d2812af assets/create/items/rare_creeper_package.json +005247c622a6e7df864b2fee5ab39fd5e56ea6e9 assets/create/items/rare_darcy_package.json +d32c176f0718c73a9f5c72ae330a0db3f9fdcb8a assets/create/items/rare_evan_package.json +aaf37d8e2478a3163466958c305ae99c0c77c426 assets/create/items/rare_jinx_package.json +a4f9ff4e71dec675db74c45b9ec3c33bec3d9963 assets/create/items/rare_kryppers_package.json +9abb790faac1e2094b7c53b210cf428f9709270c assets/create/items/rare_simi_package.json +b5f84b73fb8b34bd4dab383ace1e8a7b62abcac5 assets/create/items/rare_starlotte_package.json +756371e99393d4185d76ea892311220844a5587a assets/create/items/rare_thunder_package.json +a08e4778258933121ef1d6666a1336b928fd33a0 assets/create/items/rare_up_package.json +a503b163810fc4c2309c096352b18c93b5e57650 assets/create/items/rare_vector_package.json +c50bf6dc88d9ad5b3a55971d7028df682ad32066 assets/create/items/raw_zinc.json +cdb14f3b93258b85c312a1ab15ddf37cc922c09f assets/create/items/raw_zinc_block.json +0f966f79bb68b5752b9774ea273fd1440267c39c assets/create/items/redstone_contact.json +87870b81d5930939091cbc24ce1590f527e37069 assets/create/items/redstone_link.json +969cedbba95733245afe10f8ad9bf89d41f11b41 assets/create/items/redstone_requester.json +bc75255d6bace4db5102c6a048996f24a2c5fe85 assets/create/items/red_postbox.json +9878f3d877017b4405979c8da8c8706dd7185e6b assets/create/items/red_sand_paper.json +1c4d7729a440361c730b1914a04af3414e2bb90b assets/create/items/red_seat.json +021993c3e0ee124bbd009417a0af9f4b4b4ba700 assets/create/items/red_table_cloth.json +8b3da0ed750de0f8c465a14bebd632cec8175d39 assets/create/items/red_toolbox.json +d8479af5f3afdd49dd098180732aee655bab457e assets/create/items/red_valve_handle.json +895c18f4bc917bd7b65f5cfa93f7ab91ff343e4c assets/create/items/refined_radiance.json +8b386d128b7801ae7cf0ef5e5961766198073f91 assets/create/items/refined_radiance_casing.json +97ac82b63d90029e07bf36d0f2ef1a992dd510a8 assets/create/items/repackager.json +d09ccec32d501cb7f5c0e01c2e52cd223479dd2d assets/create/items/rope_pulley.json +461f367c4641f493ff272bacd60794da9b2f4183 assets/create/items/rose_quartz.json +ac6534bbb4ea9f14c38b21144ba58f3ffe19ab79 assets/create/items/rose_quartz_block.json +bcdfd9913cf7d33b3521defd624b7f60c42e506c assets/create/items/rose_quartz_lamp.json +adb8ade16b20bfc5a4547b31875bbfc3e8e2b25a assets/create/items/rose_quartz_tiles.json +51e903c218772842a014cf7f219b0c618f6b7138 assets/create/items/rotation_speed_controller.json +ad7b603797be915b9199479dd50deb5e487164d3 assets/create/items/sail_frame.json +c3a6aa6458700e6e2fb7c845a04db2888096030a assets/create/items/sand_paper.json +7adaa9f04411ba6f5195036acc11c638a8cf102e assets/create/items/schedule.json +4d7281fecc84748a1ce4a2bd9185ab95b495b814 assets/create/items/schematic.json +fda4350ee702373d81d69d36db4df9d5ac780377 assets/create/items/schematicannon.json +d14932087a87f54efbbb3a5a3629bce246ee2bbd assets/create/items/schematic_and_quill.json +675a121c5847ed5ec5e3836c825785391527f27d assets/create/items/schematic_table.json +9d698a0b19baa4e21330125e7191ed97922bdd86 assets/create/items/scorchia.json +0d98e2378909c79183688719d3b020572e859bdf assets/create/items/scorchia_pillar.json +530078370231e8581527907bca69304a6be5cd79 assets/create/items/scoria.json +a5020e86227b474259212100585dead7d83b18d6 assets/create/items/scoria_pillar.json +c0063d8e1e2e9d7caf160f7ea63f71b6dd821af3 assets/create/items/secondary_linear_chassis.json +85e8ff0d49db914aabcb868ca1f37faaaec511e1 assets/create/items/sequenced_gearshift.json +a2ca195c7dc137cdf67f9e238503d77013825887 assets/create/items/shadow_steel.json +c83da72935930a8f7ec2fba37da41312e01ba152 assets/create/items/shadow_steel_casing.json +04db26e01664ddcc52f0df6483134662f1fbba17 assets/create/items/shaft.json +d13b9f4ce57182fa9ad9b1c5edb9cff66d844d0d assets/create/items/shopping_list.json +288754473b6b6d64cbae506d2c353414913a55ee assets/create/items/small_andesite_bricks.json +bcf0966330629650dbc1da4df5834a00c10e93ad assets/create/items/small_andesite_brick_slab.json +f2eec8520d258bbd3a2c5f9fad02852ca7602b7c assets/create/items/small_andesite_brick_stairs.json +c679175b9dfc26c18a53a6c2cf33b99f8de592de assets/create/items/small_andesite_brick_wall.json +e3e1eb0fd849b520ab202647d281da4e898ee02a assets/create/items/small_asurine_bricks.json +084d9705a92fad617aefef75323ccc171d0cc260 assets/create/items/small_asurine_brick_slab.json +94d96c3615aed0941881e959d10cf721a0d8a24a assets/create/items/small_asurine_brick_stairs.json +ff8f2c412c5d5358121d7df9723f6fa20c2707bf assets/create/items/small_asurine_brick_wall.json +dc745a38ee187765e23ca41d1f25a6793f704faf assets/create/items/small_calcite_bricks.json +b004b0dab33b90da40603376ab1a4c666da49dc3 assets/create/items/small_calcite_brick_slab.json +dcc7a119f4f8f8bfea5aaa7c5acfe92024522948 assets/create/items/small_calcite_brick_stairs.json +e90f6802d43f72f7fc1cbd504896ef72e23387b2 assets/create/items/small_calcite_brick_wall.json +d921ba655c636fd86d811747f0b2990bf88c4729 assets/create/items/small_crimsite_bricks.json +149c636dd9dd607f5c17d4dc306c8e70d924b4c2 assets/create/items/small_crimsite_brick_slab.json +e24ed9d21af694fd792ce7c00a7a70ba05e47365 assets/create/items/small_crimsite_brick_stairs.json +8897457a6277a0e30d848905feca03db9b6d7f6c assets/create/items/small_crimsite_brick_wall.json +90954e78ee042859fd0aaa7b973975b63f894a52 assets/create/items/small_deepslate_bricks.json +4384ee74ea0669169d097c2e0ce440cf13e179f2 assets/create/items/small_deepslate_brick_slab.json +a9069d00d174b1a24382e50ebd26138ac4c7846b assets/create/items/small_deepslate_brick_stairs.json +5db5b07e8f6b09048c13562e361d2cf7340d431c assets/create/items/small_deepslate_brick_wall.json +da419a6e4233721893bfc4c65584305b514691ba assets/create/items/small_diorite_bricks.json +e9585e167583aa8a7b74abe604415157506a8593 assets/create/items/small_diorite_brick_slab.json +f375072245b3467dba5f10681710a16e6a8258c7 assets/create/items/small_diorite_brick_stairs.json +7f214dabb9cdae67ada4961473aa8be6797e8f67 assets/create/items/small_diorite_brick_wall.json +19eac5477f40c3bc9515ba405512277abd30b95a assets/create/items/small_dripstone_bricks.json +40aa8d50137ed14021a344821b493a69a143ced1 assets/create/items/small_dripstone_brick_slab.json +f55064fa1d75a770662641c5eaf07c5476490aa1 assets/create/items/small_dripstone_brick_stairs.json +7b18319d13edb00ca9cf239a69d0a92e0725b7fc assets/create/items/small_dripstone_brick_wall.json +fae901f7d3b0302fca733dcf2e24c35ecbabf517 assets/create/items/small_granite_bricks.json +e5e369ff6a09df423c7cad5e9c4821e07c12ebde assets/create/items/small_granite_brick_slab.json +55b6ebc16addbe8f3959843dd1ae5f3e303ae98b assets/create/items/small_granite_brick_stairs.json +ced50d74dff5f6d6da89a0a7d67ee173decfcf40 assets/create/items/small_granite_brick_wall.json +4d69cd059da1da02ca904d5d091c178757f6c96a assets/create/items/small_limestone_bricks.json +43f0042de6a1abe5dd5029e691cdd0c418904f94 assets/create/items/small_limestone_brick_slab.json +e6c037bec3e7cb1dd6e9c7361cbcc22d095b5474 assets/create/items/small_limestone_brick_stairs.json +13d12c9a98619092486f66e0d601ab9a6afb3e23 assets/create/items/small_limestone_brick_wall.json +e0e0bffd3117bd1976046cc83df81fc76d4f74e6 assets/create/items/small_ochrum_bricks.json +c5bcfb418b2835a49f9607dc0f5fa2e9bae99dd1 assets/create/items/small_ochrum_brick_slab.json +dfd4c84a644189c8facbd49a66e84b8fd2838cb2 assets/create/items/small_ochrum_brick_stairs.json +4bb6880c4aeafa8d8225995acb0a2c18616923f3 assets/create/items/small_ochrum_brick_wall.json +c29521e7a68bfe4de0f5dcf9a147e07bdc515071 assets/create/items/small_rose_quartz_tiles.json +5e5f8daf3a5856f046495a72097987ceb25eba57 assets/create/items/small_scorchia_bricks.json +a5e491c57af6b40631d330c0376fd3661244564b assets/create/items/small_scorchia_brick_slab.json +3366179af5897c3aea9cbbf64ebfbc76d2745bd2 assets/create/items/small_scorchia_brick_stairs.json +b8057fa8f1522c0ee2502342a47c2d81b65b52f2 assets/create/items/small_scorchia_brick_wall.json +bba33752f33738025e87fc24f5a4ebc58e690299 assets/create/items/small_scoria_bricks.json +3937c17dd83bc0c1b241048a83b6739083cd3519 assets/create/items/small_scoria_brick_slab.json +89c9bcf8a5e94d7ffc61b75e9c4800834888d39f assets/create/items/small_scoria_brick_stairs.json +3ec42a57e0d39645e34e9bd701ce8529cac13b83 assets/create/items/small_scoria_brick_wall.json +e8abbe860e8d9ef818e9ea52fde6c80feefc4ed5 assets/create/items/small_tuff_bricks.json +bdba228d8d0a97fa05e2e0d9d0cd4c450ed13b2b assets/create/items/small_tuff_brick_slab.json +9fbd3663d844b9578ec2e6816e3d27af4237bd5c assets/create/items/small_tuff_brick_stairs.json +fcc16264cf97ed89ecff0446ad0971892afd0619 assets/create/items/small_tuff_brick_wall.json +ebafcabe805f0db771b8377b2e323a33d6f02617 assets/create/items/small_veridium_bricks.json +4e8d6bf17959a5061d337715ca44db4f8b866766 assets/create/items/small_veridium_brick_slab.json +f1b879928d0cb190d4abb1771bee090c0685ca58 assets/create/items/small_veridium_brick_stairs.json +d91e39999928a60c83294136d8a86702744b2086 assets/create/items/small_veridium_brick_wall.json +fd71ee9e15d7242497baf70cfa01b0bd0b4c85bb assets/create/items/smart_chute.json +7d0cc9068a8f886eefe5aad0c620730529bd21e6 assets/create/items/smart_fluid_pipe.json +f7a3307522c735450d300b614d9ab4ba7913c01d assets/create/items/speedometer.json +ffb5c20b320f94b2f2f66666fcc30c95ae9ea8f0 assets/create/items/spout.json +ba1ae14a8d45d36cc15a0a952635ce5e4f626b3f assets/create/items/spruce_window.json +9f0e39796ea89bc50aa230cb0ad146c26e4e1f78 assets/create/items/spruce_window_pane.json +ea453335d791bd465f0436a39e08bb85f91f164c assets/create/items/steam_engine.json +99b11cc23a9fdc8d95a571fa85d1b55b2b2c6c2e assets/create/items/steam_whistle.json +7575e4bac6e68cbed639c8ab650a3dfed8386f34 assets/create/items/sticker.json +9ab68bc5e325736608925710a3c3f3a88ce83733 assets/create/items/sticky_mechanical_piston.json +ac58f22df4a4fe7004139bce8b802eb5bb66a0b0 assets/create/items/stockpile_switch.json +c4048c990161bc5d134d2e81d3b3e0de78d71d89 assets/create/items/stock_link.json +3241ff7306b4c730ced0f325a0f4928033d50772 assets/create/items/stock_ticker.json +c8e5fb99c558a0adf93064fb53c98e5f01777068 assets/create/items/stressometer.json +26e4855edd6bbf6cca9c0204156d2da9991cf0b3 assets/create/items/sturdy_sheet.json +48e93c31ef6b58322230d405329c9aa28c298cbc assets/create/items/super_glue.json +29f935209d007ac03b8b49c88a818162985db495 assets/create/items/sweet_roll.json +5424b7bfcdad0476a5993332915f2315c0cb6a00 assets/create/items/tiled_glass.json +95f039279f006187ca495d361d488fd87efee4b1 assets/create/items/tiled_glass_pane.json +4044ea15ce79b218b2cddf5cfdec41f4a842cd87 assets/create/items/track.json +e764e7dd03261fe596b5e7192e8ef4e08019503f assets/create/items/track_observer.json +48136575d9cc8c180870f8ecae4c3e5f8636ac89 assets/create/items/track_signal.json +c0e1e0c06b3e5d15eea9e3bec40e92c813e4e3b4 assets/create/items/track_station.json +4274bad7fbc80e3fd973f7ca78efde8eeafa9617 assets/create/items/train_door.json +d8326ecee1b6efb996288a7fdefacee7b0144578 assets/create/items/train_trapdoor.json +670641c52454aad05ed9032d1a7eb3eac3d2a74b assets/create/items/transmitter.json +ec99210d898e71da2b4275fe0d07aa4462feeffb assets/create/items/tree_fertilizer.json +498fea1a9654d6853988185585f479d5d780fab1 assets/create/items/tuff_pillar.json +78000e921b06269de1e7f7eaba21e0200d4dad2e assets/create/items/turntable.json +3326eb28d21380540852f2d8c8d9f4dba969db76 assets/create/items/unprocessed_obsidian_sheet.json +6e7460026976ab5bd7a7d1670d5cfc35d731bcb9 assets/create/items/veridium.json +45e22cfaff60b6842547bda2efb26afef19ebb64 assets/create/items/veridium_pillar.json +2c9162488f80f296cb5dc9dfde5203267d36eeb4 assets/create/items/vertical_framed_glass.json +4afd781492660e16a4f4e575259c1ce44e942802 assets/create/items/vertical_framed_glass_pane.json +26a7c3350678723274a122e628f648d5f5c27dbf assets/create/items/vertical_gearbox.json +e9fb9f0872d79ce9f2b3f785c1c3b8632558aee3 assets/create/items/wand_of_symmetry.json +ebc03204eb770350ff9729cd8b5276947bc6f2dd assets/create/items/warped_window.json +f32aeda15f92655b43ac2fea15f8470e91f53535 assets/create/items/warped_window_pane.json +1807c2e33eda619d88a6d6007ffef5e2d8319af8 assets/create/items/water_wheel.json +a8da84d8095d860e41f67b38b410192297ef110d assets/create/items/waxed_copper_shingles.json +308e94fcba2ecf8f5a6ac593806dcf687953e6ec assets/create/items/waxed_copper_shingle_slab.json +16d2b6f915a48c3df86328661c896acf6db510b4 assets/create/items/waxed_copper_shingle_stairs.json +de8e8448e46dfcb3a974a1d05cfb214256f8413e assets/create/items/waxed_copper_tiles.json +5852d8152cfdb3c9867b528569ac64f424d24655 assets/create/items/waxed_copper_tile_slab.json +cb59eba59ef8e2d2583e990b7cb1ada5fe9b84dd assets/create/items/waxed_copper_tile_stairs.json +669a424880173309030d105c2b19199f6bf88454 assets/create/items/waxed_exposed_copper_shingles.json +8b988f6e2800bb41722b81ef2918130768182d99 assets/create/items/waxed_exposed_copper_shingle_slab.json +f083f339d3e258fa680cd040c917be584678d22c assets/create/items/waxed_exposed_copper_shingle_stairs.json +6b85706bfea26a5d18c00344181c3d7d4159b2b3 assets/create/items/waxed_exposed_copper_tiles.json +508e31445acfc61fe1794bbd9d7a602e7519d1b0 assets/create/items/waxed_exposed_copper_tile_slab.json +0a536b337c2a025629959d1a9a442a2114dc67a7 assets/create/items/waxed_exposed_copper_tile_stairs.json +25645ffe90523327d64beba24812a1638d649614 assets/create/items/waxed_oxidized_copper_shingles.json +e199887ee8bbd95105fe1720d1f2ae98850fd6ec assets/create/items/waxed_oxidized_copper_shingle_slab.json +9e2676eb0f26232d79e008046740366348a360f1 assets/create/items/waxed_oxidized_copper_shingle_stairs.json +6be3088bd626654b8d06f1b7de73c50711385e7b assets/create/items/waxed_oxidized_copper_tiles.json +fe9c6bdd587651a23b0fbe1fa33a781d695bea6f assets/create/items/waxed_oxidized_copper_tile_slab.json +d563e9d4b5672ab820b9bcb7b6aeb2804055f2ee assets/create/items/waxed_oxidized_copper_tile_stairs.json +3a332cf88dda1c35b50f8b2d7f2dd0d2e41aef0c assets/create/items/waxed_weathered_copper_shingles.json +632c1d380826dbd52d8cbc215cd87a792b7c74dc assets/create/items/waxed_weathered_copper_shingle_slab.json +086a3d74649ae5847d32424a971193c886b24629 assets/create/items/waxed_weathered_copper_shingle_stairs.json +0e7e336233827ff9ab017e93fad066b6c8864b7c assets/create/items/waxed_weathered_copper_tiles.json +e05517e15e01ccbd885447ee98a26e552d31aa8c assets/create/items/waxed_weathered_copper_tile_slab.json +4ec471b52d0d39ef457841e3fa8c051a938ce0dd assets/create/items/waxed_weathered_copper_tile_stairs.json +3d7fb6bd0cc403ce7f907ed2bd9f502c7de12904 assets/create/items/weathered_copper_shingles.json +be577ec3fa2f4857fa80dfe342af88c756bcb917 assets/create/items/weathered_copper_shingle_slab.json +79634300f4814d97a6d2c45073b617824ce78c3d assets/create/items/weathered_copper_shingle_stairs.json +e442cf7af7952717c583b273c69a43322d25f81c assets/create/items/weathered_copper_tiles.json +8dac9eccf47a46e6778a2e4551cdf82bc62e3e3e assets/create/items/weathered_copper_tile_slab.json +e897aeca9d99558fddb9c7ba3507b10c13c2936e assets/create/items/weathered_copper_tile_stairs.json +2355c40f39bd8d7176ca05c7653995b351cca90b assets/create/items/weathered_iron_block.json +85a22a4c742d802fc6722c044dce3f57fdad9cf7 assets/create/items/weathered_iron_window.json +2d82fc427e4e5dc49472638f8ad406ab74194665 assets/create/items/weathered_iron_window_pane.json +7d76e9dac723da430caa7da89ecf6b36fc849b40 assets/create/items/weighted_ejector.json +808c64e542f7207505530b2135cb750005d150a7 assets/create/items/wheat_flour.json +645bd0fa59d932acdc454c76d3d92f7ce7eafa96 assets/create/items/whisk.json +df1fd2bbd9dde9b15ac0a14123f515694b49b8f0 assets/create/items/white_postbox.json +76f5e70b7219c5fb7c0b2a26bb879690ba7074e9 assets/create/items/white_sail.json +78868edf9762ff4877dbfce2053dc5277f5866b9 assets/create/items/white_seat.json +e1e3a9afb5d7cfe76f11cc16491a14747c11afc8 assets/create/items/white_table_cloth.json +367dd8ef9bef2fdcd0258fe2c55b4dd48901283e assets/create/items/white_toolbox.json +207a1d1e26457b56324910e3bfd14c35ae684d8e assets/create/items/white_valve_handle.json +c76a77f61bc1c19a306399d7fc5542ac7159c3cd assets/create/items/windmill_bearing.json +9272a13b7621664fa726b499247cdff1bc925a59 assets/create/items/wooden_bracket.json +ea7e2f500b5e854e54caa4244f3c18b5caee886f assets/create/items/wrench.json +9cf364e9a84ce5f1c6991ee29b96b9699315dac8 assets/create/items/yellow_postbox.json +1c1a87b1c3e993f76d8747ee6321b79bf5e3d38a assets/create/items/yellow_seat.json +4b9e1f3400d9ac90a31ba9f26c8cd5cb4557b8d4 assets/create/items/yellow_table_cloth.json +3f3dc2908f36636e526427c7ec730d2a7a2f3724 assets/create/items/yellow_toolbox.json +76d685db756533dd8e85dfbc9ffc8445a13fce2e assets/create/items/yellow_valve_handle.json +1988d3c064fce51374875f66297c2bc000e0f581 assets/create/items/zinc_block.json +182c007c03b0271038a591103aa3ed62a56f453a assets/create/items/zinc_ingot.json +0faebfc6a5a808fddeb3e337f6d3d763c0a658ab assets/create/items/zinc_nugget.json +945de383619e8fc92d638407224c3a9b462fe66c assets/create/items/zinc_ore.json +4600b4eff004067ac46a904e6fe82eccbc112a84 assets/create/lang/en_ud.json +5c689114811b62ab0cbc04d40357720f25f81848 assets/create/lang/en_us.json a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json 103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -796,7 +1495,6 @@ ae87368850bc6ef1a2e2f633b8ef6ed33ab5b2e0 assets/create/models/block/cherry_windo 0e5c58632e134aeae3e85e70d7c0ea1ed6e05055 assets/create/models/block/cherry_window_pane_post.json b13184df1e1c20a7b94fa887ab64845e3b7d0fca assets/create/models/block/cherry_window_pane_side.json d8e2f395915af41686924cb4654d43097260720c assets/create/models/block/cherry_window_pane_side_alt.json -e9d61ba17fa2619af01ef604c3f65cbe9272f010 assets/create/models/block/chocolate.json d8339ab47ffa828985c7da27c37794a95aba8b42 assets/create/models/block/clockwork_bearing.json 8afe6afaff33b94c1fcee68fdaf842d525eec212 assets/create/models/block/copper_cap.json 58e6ed1f765ba67ca5d8a446af357f311587e431 assets/create/models/block/copper_cap_alt.json @@ -806,21 +1504,21 @@ d063df8e9b974c11fc7810ce176b02d7d924e15b assets/create/models/block/copper_post. 2b5aed4a917694beb33d9b0ecbc800dcbc143ee9 assets/create/models/block/copper_post_ends.json bac7566a726b0fe6d537c744aec4afb383dc165c assets/create/models/block/copper_scaffolding.json dbee65c129740f3b99c07e754b3224d3f9f8c242 assets/create/models/block/copper_scaffolding_horizontal.json +32fdb85b5b62d5a0fb41732874c854788cdd2ba1 assets/create/models/block/copper_shingles.json fb7fb6deebd502946ab57f1b8a9f4a6b5dd48da3 assets/create/models/block/copper_shingle_slab.json 660f61112b8e46dec5050cb0ed4ee936965a7c58 assets/create/models/block/copper_shingle_slab_top.json 5d74be967bbe9feba4b630751f13af817a733d1d assets/create/models/block/copper_shingle_stairs.json 35cb89f29ce3f8d8af13602c08ecd7afbb7cf56a assets/create/models/block/copper_shingle_stairs_inner.json fcb9295f4f388e6d439ec9a3906ca326b6d69077 assets/create/models/block/copper_shingle_stairs_outer.json -32fdb85b5b62d5a0fb41732874c854788cdd2ba1 assets/create/models/block/copper_shingles.json cb218a725f82db34ffe58a5208266e1c768cfc05 assets/create/models/block/copper_side.json d9b4652ca8f1e65007f42d946ecfb38acc3f168f assets/create/models/block/copper_side_alt.json 03a6c5b8bc3041a2be001092f7abd014d6f852a2 assets/create/models/block/copper_table_cloth.json +32f06f39d0b34e4431795aa6e64f87e58dc1597b assets/create/models/block/copper_tiles.json 298c6100de02ed9f813397d8ba38c46f35035c69 assets/create/models/block/copper_tile_slab.json d4422c2d96fb329087d1be70d8b983a8cf6c7f01 assets/create/models/block/copper_tile_slab_top.json fca72048f916d3a3e567b385c948cc1b59711ef4 assets/create/models/block/copper_tile_stairs.json 997479b62ed3d81ab633279ecc2fabd9588a3bf3 assets/create/models/block/copper_tile_stairs_inner.json d5c5bbfb9aaa282e11ad6e6309b1880b172ee653 assets/create/models/block/copper_tile_stairs_outer.json -32f06f39d0b34e4431795aa6e64f87e58dc1597b assets/create/models/block/copper_tiles.json fa2fa91e674eb4de440617049dae34064fd6fa39 assets/create/models/block/copper_valve_handle.json 52ae02c17509e483e35a1b6055296c3a663f85d7 assets/create/models/block/crate/creative/bottom.json 689989ecbd4d59d5836deb8adf7af1d473a377c0 assets/create/models/block/crate/creative/left.json @@ -864,15 +1562,15 @@ b3f403f77e3b1b44c56450e387136bca12a84a99 assets/create/models/block/crimson_wind 117d14a1f25cc8ac633bb4cc8a81830a1c016096 assets/create/models/block/crimson_window_pane_side.json ee13522aadfca40f856499d5c29bd86d8f4dda57 assets/create/models/block/crimson_window_pane_side_alt.json 40042ce15d51445ec71b73da34477fa735f3fdd4 assets/create/models/block/cut_andesite.json +5be7d431ac56e2ceb9e3d95589d687f757d5257c assets/create/models/block/cut_andesite_bricks.json +c78e2acf9b54d7370f12e34dcca5c71743f47d55 assets/create/models/block/cut_andesite_bricks_wall_post.json +88e3c8eadf97f772fbafe3b71c8dd27c91c0c0e3 assets/create/models/block/cut_andesite_bricks_wall_side.json +bc264e09c506418b01c6032dcab8ca28080cb70b assets/create/models/block/cut_andesite_bricks_wall_side_tall.json fcbe246aca067dcfeef7afb4e6068b8932da8792 assets/create/models/block/cut_andesite_brick_slab.json e384a98b54ed7317b6ad0e86cf87500491eea824 assets/create/models/block/cut_andesite_brick_slab_top.json 91699e60e29e7524271a2f87200951ee8bfeb8ef assets/create/models/block/cut_andesite_brick_stairs.json e314e0837aed319cdf34a1aaa60f0be6ca169636 assets/create/models/block/cut_andesite_brick_stairs_inner.json aba679c4c6a8d5afc2924d2c9c84af5a2208fde3 assets/create/models/block/cut_andesite_brick_stairs_outer.json -5be7d431ac56e2ceb9e3d95589d687f757d5257c assets/create/models/block/cut_andesite_bricks.json -c78e2acf9b54d7370f12e34dcca5c71743f47d55 assets/create/models/block/cut_andesite_bricks_wall_post.json -88e3c8eadf97f772fbafe3b71c8dd27c91c0c0e3 assets/create/models/block/cut_andesite_bricks_wall_side.json -bc264e09c506418b01c6032dcab8ca28080cb70b assets/create/models/block/cut_andesite_bricks_wall_side_tall.json 8c17ba39e50a440497af089f5fd85649f05bdf8c assets/create/models/block/cut_andesite_slab.json b95ab966cf8c177c799e228759d0cd28c1cfa71f assets/create/models/block/cut_andesite_slab_top.json 81a407a5ff4393b66f784ba4ceee971c3c62de7f assets/create/models/block/cut_andesite_stairs.json @@ -882,15 +1580,15 @@ f06abcb3ce691fd30db81b40ea0430462fc972cf assets/create/models/block/cut_andesite 81cef9548137aaff5b6e77d417f387796f2608b2 assets/create/models/block/cut_andesite_wall_side.json dbb99ac37333ee12b7d3859207409aa2599f28eb assets/create/models/block/cut_andesite_wall_side_tall.json a48f77e90c1d02d5b4e6540db723f748118788e9 assets/create/models/block/cut_asurine.json +3b0b7bd63870ac19b9444ce9add9930ec9120821 assets/create/models/block/cut_asurine_bricks.json +89142424e1d702a0f2bc27829304520e48ee1eb3 assets/create/models/block/cut_asurine_bricks_wall_post.json +1f1fcf92e91b1f0d15ba389d6d25e1fba3ad8e5b assets/create/models/block/cut_asurine_bricks_wall_side.json +858d15aff53fe938304bafb52ef32e54e3d44a44 assets/create/models/block/cut_asurine_bricks_wall_side_tall.json 4107317f71d07fb1c113e056c832e963f57b41d7 assets/create/models/block/cut_asurine_brick_slab.json fba2e8dc513184eaa9c4449471b32f206dfe425a assets/create/models/block/cut_asurine_brick_slab_top.json 72bb7b2df330f8d5981f4c12b23429d8d874362d assets/create/models/block/cut_asurine_brick_stairs.json e753ba3830c51539565abbd9b49df9a34f97f2ff assets/create/models/block/cut_asurine_brick_stairs_inner.json ec9182d14517ffc71749e3e016e6546db79e6800 assets/create/models/block/cut_asurine_brick_stairs_outer.json -3b0b7bd63870ac19b9444ce9add9930ec9120821 assets/create/models/block/cut_asurine_bricks.json -89142424e1d702a0f2bc27829304520e48ee1eb3 assets/create/models/block/cut_asurine_bricks_wall_post.json -1f1fcf92e91b1f0d15ba389d6d25e1fba3ad8e5b assets/create/models/block/cut_asurine_bricks_wall_side.json -858d15aff53fe938304bafb52ef32e54e3d44a44 assets/create/models/block/cut_asurine_bricks_wall_side_tall.json b4512f7cef7cef0bc5f85cb955c2dec6de2cbb56 assets/create/models/block/cut_asurine_slab.json 7c1befdd97b1556e9658e968e705c9edbf1ed667 assets/create/models/block/cut_asurine_slab_top.json d04b8a8cf9a50aa7e0b068ceb9a5a2970abc81a7 assets/create/models/block/cut_asurine_stairs.json @@ -900,15 +1598,15 @@ ac544a8f948119945aa21362ad26ed8b1c922b0d assets/create/models/block/cut_asurine_ a253210cba60f58e720598323bd0d9ed4c209b4d assets/create/models/block/cut_asurine_wall_side.json c0c2cc13288771699a80c5c80e8e35d352cea684 assets/create/models/block/cut_asurine_wall_side_tall.json a6b10dc7984d22cac7aa314d46ac0928a00e667b assets/create/models/block/cut_calcite.json +6230a499321b175fc441bb662e0655662b3597de assets/create/models/block/cut_calcite_bricks.json +be1462847e9001a062091162802fab2fe6737693 assets/create/models/block/cut_calcite_bricks_wall_post.json +6e6b34468a7a0786efe5f4ebd917a4640b4be6ae assets/create/models/block/cut_calcite_bricks_wall_side.json +8b10c0f4f17f3844cee6d514cc22ddc6cb056c8a assets/create/models/block/cut_calcite_bricks_wall_side_tall.json f046be4f44936946bd3cc2ad5549d112b2e60d97 assets/create/models/block/cut_calcite_brick_slab.json 64953ca8a302ecab9311c617f69e5dcf8c138718 assets/create/models/block/cut_calcite_brick_slab_top.json 19e1b342d05d3cd69c410952dc22507c3c988c15 assets/create/models/block/cut_calcite_brick_stairs.json 18317b0a8bab345abd779f5d43f9620b73df0e67 assets/create/models/block/cut_calcite_brick_stairs_inner.json 0631d4e1bdaf724752f2e55401eb7a54af705b56 assets/create/models/block/cut_calcite_brick_stairs_outer.json -6230a499321b175fc441bb662e0655662b3597de assets/create/models/block/cut_calcite_bricks.json -be1462847e9001a062091162802fab2fe6737693 assets/create/models/block/cut_calcite_bricks_wall_post.json -6e6b34468a7a0786efe5f4ebd917a4640b4be6ae assets/create/models/block/cut_calcite_bricks_wall_side.json -8b10c0f4f17f3844cee6d514cc22ddc6cb056c8a assets/create/models/block/cut_calcite_bricks_wall_side_tall.json 6b35e0f9e6a7e247bf38d8d6d911a2bcc53c2517 assets/create/models/block/cut_calcite_slab.json 0eec7692ee8e119c1258bdb7e852204771c2232d assets/create/models/block/cut_calcite_slab_top.json d07ebf8982e4947852da8b2b0052f6b6000d334f assets/create/models/block/cut_calcite_stairs.json @@ -918,15 +1616,15 @@ e8b7b983168ad9f4f4fa1642ca20ff56621935db assets/create/models/block/cut_calcite_ 421e128177bb4dd51391e360f11ba83c5d891cd1 assets/create/models/block/cut_calcite_wall_side.json 5add4bde51bbdd7c229b05f4fabd8a769414fb79 assets/create/models/block/cut_calcite_wall_side_tall.json 2e93da554ea72b90a576bbc9230aea373d3aed0f assets/create/models/block/cut_crimsite.json +39d1a3cdd978c761bc0d67baaba82d11953fc2a0 assets/create/models/block/cut_crimsite_bricks.json +8614cb38c52447fea5245fcf295a951a977071c0 assets/create/models/block/cut_crimsite_bricks_wall_post.json +b0b16f4a2f6dd3f77ec4f65f05e9edb70a196316 assets/create/models/block/cut_crimsite_bricks_wall_side.json +ac41e5b092c6ed81d14004f9427b6151b88dc924 assets/create/models/block/cut_crimsite_bricks_wall_side_tall.json c2474a10109d0476a46d2a509fc1cd37cd52822d assets/create/models/block/cut_crimsite_brick_slab.json efeb149835a389409b7f94bc35765b0871ad7342 assets/create/models/block/cut_crimsite_brick_slab_top.json e5096a1bae43341bae5706f02cd6d564b5a82502 assets/create/models/block/cut_crimsite_brick_stairs.json af3c0018e5e12bbe0f118bc0174b6ca513ae58ae assets/create/models/block/cut_crimsite_brick_stairs_inner.json ed30baef426f2ccf158d87111c7b53f3600bc32a assets/create/models/block/cut_crimsite_brick_stairs_outer.json -39d1a3cdd978c761bc0d67baaba82d11953fc2a0 assets/create/models/block/cut_crimsite_bricks.json -8614cb38c52447fea5245fcf295a951a977071c0 assets/create/models/block/cut_crimsite_bricks_wall_post.json -b0b16f4a2f6dd3f77ec4f65f05e9edb70a196316 assets/create/models/block/cut_crimsite_bricks_wall_side.json -ac41e5b092c6ed81d14004f9427b6151b88dc924 assets/create/models/block/cut_crimsite_bricks_wall_side_tall.json a6cdd4b227210b7487b8431b8d76bbe490636b81 assets/create/models/block/cut_crimsite_slab.json 5c585dba4dbfa9ff0a22a84aa726260cffdeebeb assets/create/models/block/cut_crimsite_slab_top.json 91f60b4277ca48dabfb5d3eebb1ed64a2681a083 assets/create/models/block/cut_crimsite_stairs.json @@ -936,15 +1634,15 @@ e6b39a0b1dbab462479fc60fab2efc6a9ceb6a55 assets/create/models/block/cut_crimsite 5b3783862e50fde6ffffc92068900afcc066002f assets/create/models/block/cut_crimsite_wall_side.json b59fbbfe9c6738b1f93f03d59a747f5610164c34 assets/create/models/block/cut_crimsite_wall_side_tall.json 144ec3864fb0a7981e74d357200a96033c75a2d6 assets/create/models/block/cut_deepslate.json +0d599ae1b4e9309f2a7b3362e86061e2150ba3ec assets/create/models/block/cut_deepslate_bricks.json +601894e096edbcd3d96ce0160f06e17a4efca819 assets/create/models/block/cut_deepslate_bricks_wall_post.json +42db46cb5c9c02d684c86f3a518feb3348d83fa0 assets/create/models/block/cut_deepslate_bricks_wall_side.json +c046436d59c350c6beb6b395675513c12184ffe2 assets/create/models/block/cut_deepslate_bricks_wall_side_tall.json af8c7c652e75bf904093bbafc1cf805f842a39c9 assets/create/models/block/cut_deepslate_brick_slab.json 2a01dd0244b07f28454c061a565d1028ca7e3066 assets/create/models/block/cut_deepslate_brick_slab_top.json 62d39eec3621204de82377e74936b9cd338e8004 assets/create/models/block/cut_deepslate_brick_stairs.json 5f90dfbb45b57bd894bf03fcc6c347cb525e3a73 assets/create/models/block/cut_deepslate_brick_stairs_inner.json 512d588c77bdf5a7232826e2f4ce4b3cb991d0ce assets/create/models/block/cut_deepslate_brick_stairs_outer.json -0d599ae1b4e9309f2a7b3362e86061e2150ba3ec assets/create/models/block/cut_deepslate_bricks.json -601894e096edbcd3d96ce0160f06e17a4efca819 assets/create/models/block/cut_deepslate_bricks_wall_post.json -42db46cb5c9c02d684c86f3a518feb3348d83fa0 assets/create/models/block/cut_deepslate_bricks_wall_side.json -c046436d59c350c6beb6b395675513c12184ffe2 assets/create/models/block/cut_deepslate_bricks_wall_side_tall.json c79ae6e97e94d36f2586865ea63f3fab43f8ccbc assets/create/models/block/cut_deepslate_slab.json 5978b93805ccf0bdd953938b34a8dd0ffdcf5565 assets/create/models/block/cut_deepslate_slab_top.json 06a508b2395c3f738d2c5651f366792ee9b9c5ec assets/create/models/block/cut_deepslate_stairs.json @@ -954,15 +1652,15 @@ c2850e9f223c459ba53d575a1ef8231589c48c0b assets/create/models/block/cut_deepslat e901746d3e50fe7d9b79d268f4d02251d5cf95f4 assets/create/models/block/cut_deepslate_wall_side.json 1ef794aab31a10bf150a0015cd46e5b5f3c70042 assets/create/models/block/cut_deepslate_wall_side_tall.json 4abb502ea3f6764797641f55a2c48f4858be1ba6 assets/create/models/block/cut_diorite.json +e97babf115a4f81f8555994aba435cf76bebf7a3 assets/create/models/block/cut_diorite_bricks.json +4f7cf44e4d6431587266a4fac78c0812e99d780c assets/create/models/block/cut_diorite_bricks_wall_post.json +1f96f9e190d8e28496ce2db5712f33e449215985 assets/create/models/block/cut_diorite_bricks_wall_side.json +45246192d9cd39837b426e425fc5082422642b65 assets/create/models/block/cut_diorite_bricks_wall_side_tall.json ab61b1b94946f315006a29113f594c234d796bee assets/create/models/block/cut_diorite_brick_slab.json 73597772386c6bbd38907cbea8db816f174a9f8f assets/create/models/block/cut_diorite_brick_slab_top.json c9fbd953ef0789a0e9a915d5f283fd09a76784d6 assets/create/models/block/cut_diorite_brick_stairs.json 5d721f1b3f4376a91707b56950a1f9635adbe603 assets/create/models/block/cut_diorite_brick_stairs_inner.json 9a446bf02732e1873fa96d7745fced0fa04d48d6 assets/create/models/block/cut_diorite_brick_stairs_outer.json -e97babf115a4f81f8555994aba435cf76bebf7a3 assets/create/models/block/cut_diorite_bricks.json -4f7cf44e4d6431587266a4fac78c0812e99d780c assets/create/models/block/cut_diorite_bricks_wall_post.json -1f96f9e190d8e28496ce2db5712f33e449215985 assets/create/models/block/cut_diorite_bricks_wall_side.json -45246192d9cd39837b426e425fc5082422642b65 assets/create/models/block/cut_diorite_bricks_wall_side_tall.json 15195975e7e0ffb7010591b957a657f492e6d59d assets/create/models/block/cut_diorite_slab.json 01c320637843dc0d8b74b48b8d6946cd663d51f6 assets/create/models/block/cut_diorite_slab_top.json 7dcbfe4dc2ec62345da660ecc6ca44056fcd64e7 assets/create/models/block/cut_diorite_stairs.json @@ -972,15 +1670,15 @@ e97babf115a4f81f8555994aba435cf76bebf7a3 assets/create/models/block/cut_diorite_ 29075eaaba51ba158f030c2a9583ed5ba52379c8 assets/create/models/block/cut_diorite_wall_side.json 1fb50473359147c7147ea85bc1907e6015ce06bc assets/create/models/block/cut_diorite_wall_side_tall.json 59ee053a884bc9731b4d1b01ae22e0e2b5916cfb assets/create/models/block/cut_dripstone.json +6a4b26a117f58d0187b2cc0c5b117ef71d03d4e9 assets/create/models/block/cut_dripstone_bricks.json +0bb1fa8fb9698dae61096483a01b41bf829666b0 assets/create/models/block/cut_dripstone_bricks_wall_post.json +2019fdc38b401bac72e8344d118d85049ec3efb9 assets/create/models/block/cut_dripstone_bricks_wall_side.json +ebb790b2b6f47d40c92c9bba680e82cb8f054fa9 assets/create/models/block/cut_dripstone_bricks_wall_side_tall.json 84d714b29dcb7eb95a82de8d48491413e26d5fa8 assets/create/models/block/cut_dripstone_brick_slab.json 28b0b1a641d11f8ade57c444e4c1bfd9d617f66a assets/create/models/block/cut_dripstone_brick_slab_top.json 05900c156a6341c12b366790c7e8d15e59a873f0 assets/create/models/block/cut_dripstone_brick_stairs.json 35fb2c83dc89b96951c69253f7502f78c903a9b8 assets/create/models/block/cut_dripstone_brick_stairs_inner.json f69244c1706c95aaadd32d45a24c91ce0848509f assets/create/models/block/cut_dripstone_brick_stairs_outer.json -6a4b26a117f58d0187b2cc0c5b117ef71d03d4e9 assets/create/models/block/cut_dripstone_bricks.json -0bb1fa8fb9698dae61096483a01b41bf829666b0 assets/create/models/block/cut_dripstone_bricks_wall_post.json -2019fdc38b401bac72e8344d118d85049ec3efb9 assets/create/models/block/cut_dripstone_bricks_wall_side.json -ebb790b2b6f47d40c92c9bba680e82cb8f054fa9 assets/create/models/block/cut_dripstone_bricks_wall_side_tall.json 9e42cf588f57de5166f2a2ccdae656743c8b9481 assets/create/models/block/cut_dripstone_slab.json 0da2f782d8ad8fecd81b98c72db182b817bf19eb assets/create/models/block/cut_dripstone_slab_top.json b3c903a1edcd1786ea51a2ccdad5734a1d04ea98 assets/create/models/block/cut_dripstone_stairs.json @@ -990,15 +1688,15 @@ b3c903a1edcd1786ea51a2ccdad5734a1d04ea98 assets/create/models/block/cut_dripston 7fab5102d7fa4cd824b9393425639d05727b2ad2 assets/create/models/block/cut_dripstone_wall_side.json c41514cda1c9f5d942d222cbc5f6e620e367afc6 assets/create/models/block/cut_dripstone_wall_side_tall.json dff602c8d2fcd1ceca79f90ae15dbdfbd6cb157d assets/create/models/block/cut_granite.json +31c5299a42f82992e50f711e1e33549c373bd034 assets/create/models/block/cut_granite_bricks.json +ef5a851e57cc4b9c0e625176b1256441e1c17c66 assets/create/models/block/cut_granite_bricks_wall_post.json +815e8dc551c3e813b0b2af29df23a28860de0b53 assets/create/models/block/cut_granite_bricks_wall_side.json +ba241f9c82e27dd98ba6f4e4180922388ab5d1a3 assets/create/models/block/cut_granite_bricks_wall_side_tall.json 9e00dc8fcee23548c0cebda6eadbcfc559e4c20b assets/create/models/block/cut_granite_brick_slab.json 5ad061096451f74e773c3030f96d59424aa93314 assets/create/models/block/cut_granite_brick_slab_top.json 94f8ce607aae5c04ccf9e56f177f9d69203ae879 assets/create/models/block/cut_granite_brick_stairs.json 11d511844fec3bfd05cac8b788332f2decd53021 assets/create/models/block/cut_granite_brick_stairs_inner.json 418eb6a2b52e748a26c2d1914c6c1de94106589f assets/create/models/block/cut_granite_brick_stairs_outer.json -31c5299a42f82992e50f711e1e33549c373bd034 assets/create/models/block/cut_granite_bricks.json -ef5a851e57cc4b9c0e625176b1256441e1c17c66 assets/create/models/block/cut_granite_bricks_wall_post.json -815e8dc551c3e813b0b2af29df23a28860de0b53 assets/create/models/block/cut_granite_bricks_wall_side.json -ba241f9c82e27dd98ba6f4e4180922388ab5d1a3 assets/create/models/block/cut_granite_bricks_wall_side_tall.json 81be5e86cbdaec4945d3ccaf6d376f69c49f40d6 assets/create/models/block/cut_granite_slab.json f72a14e7cf3dd7d93b4462a3bee49683353dfb57 assets/create/models/block/cut_granite_slab_top.json 33bf924f01aae3a7720475f4b32b3a637e69ee36 assets/create/models/block/cut_granite_stairs.json @@ -1008,15 +1706,15 @@ fb4969e562ad2039d3bad2dc57a6845d3243d453 assets/create/models/block/cut_granite_ 2972b40134bcb15950a0118306f0251ff5e377b7 assets/create/models/block/cut_granite_wall_side.json abbe71fd17dbb5f176553db2f6edf2f1f7d8974a assets/create/models/block/cut_granite_wall_side_tall.json 019d3c4ffb39e328b5458aee44fee90e0ecbd829 assets/create/models/block/cut_limestone.json +7eae0f9766506f713933bde9f301d2f7f2bbef13 assets/create/models/block/cut_limestone_bricks.json +817e8cf8956af36c70e4b4e30b5d141086d006dd assets/create/models/block/cut_limestone_bricks_wall_post.json +1291cacff1b0980e58b5702a84c9b87ac5ef835d assets/create/models/block/cut_limestone_bricks_wall_side.json +6c9bc8803fe17ac623bde56f85683dd2ff13c33e assets/create/models/block/cut_limestone_bricks_wall_side_tall.json c93f33ba39c62b10dfb94c6e1c339cd4fbebffae assets/create/models/block/cut_limestone_brick_slab.json b12a340897ba98ed732a91dbd4129db7a7188e68 assets/create/models/block/cut_limestone_brick_slab_top.json 3e90b32d95ad1cf7b8a16dae3c16724510d41490 assets/create/models/block/cut_limestone_brick_stairs.json b2e7311667d14b2aa8c00e207f69f76207226567 assets/create/models/block/cut_limestone_brick_stairs_inner.json aac619ec1fb8aa56f1752ad3f354f9cb128771f8 assets/create/models/block/cut_limestone_brick_stairs_outer.json -7eae0f9766506f713933bde9f301d2f7f2bbef13 assets/create/models/block/cut_limestone_bricks.json -817e8cf8956af36c70e4b4e30b5d141086d006dd assets/create/models/block/cut_limestone_bricks_wall_post.json -1291cacff1b0980e58b5702a84c9b87ac5ef835d assets/create/models/block/cut_limestone_bricks_wall_side.json -6c9bc8803fe17ac623bde56f85683dd2ff13c33e assets/create/models/block/cut_limestone_bricks_wall_side_tall.json adc21af1c07edaf0573cfd2c95ebe38e50f7282c assets/create/models/block/cut_limestone_slab.json 2d1ea8fc5c8ce5549c7f7888371b6612bf0f5301 assets/create/models/block/cut_limestone_slab_top.json c1416808a2178996be75e0a9c1cd45849fcd6646 assets/create/models/block/cut_limestone_stairs.json @@ -1026,15 +1724,15 @@ c1416808a2178996be75e0a9c1cd45849fcd6646 assets/create/models/block/cut_limeston 2b5e65e662069a5c59e702224778dd407f5d11dd assets/create/models/block/cut_limestone_wall_side.json 052f130fef646242acccbbed2b510add21e18921 assets/create/models/block/cut_limestone_wall_side_tall.json 66cb6054821d45a60ae4d4d1d904dbef0b9f7c0f assets/create/models/block/cut_ochrum.json +0a7e38e3ac32352c5b3ec56a8c26212dbbb637a3 assets/create/models/block/cut_ochrum_bricks.json +47d0c58dd190f1ea894a5ca40ea7efd54a845d3e assets/create/models/block/cut_ochrum_bricks_wall_post.json +b502b5b213996bce0a626d86414045c80921511e assets/create/models/block/cut_ochrum_bricks_wall_side.json +c3f27545b3b7654c3e7a2df6b482d1a9895ccae9 assets/create/models/block/cut_ochrum_bricks_wall_side_tall.json ce16ec490ae8a33671502804e0b45fc42b6f228f assets/create/models/block/cut_ochrum_brick_slab.json fcbee94fdbd96b0b3d4aa245c6c87443abd1de90 assets/create/models/block/cut_ochrum_brick_slab_top.json 827349ed3eb05f5fe700e8f5816bcd82d0347612 assets/create/models/block/cut_ochrum_brick_stairs.json aa81d4135400eb40f891f8c41fcf7fa516ef64f1 assets/create/models/block/cut_ochrum_brick_stairs_inner.json ecd7e1cb9cae717e35eeb58dbe482833e98f5ac0 assets/create/models/block/cut_ochrum_brick_stairs_outer.json -0a7e38e3ac32352c5b3ec56a8c26212dbbb637a3 assets/create/models/block/cut_ochrum_bricks.json -47d0c58dd190f1ea894a5ca40ea7efd54a845d3e assets/create/models/block/cut_ochrum_bricks_wall_post.json -b502b5b213996bce0a626d86414045c80921511e assets/create/models/block/cut_ochrum_bricks_wall_side.json -c3f27545b3b7654c3e7a2df6b482d1a9895ccae9 assets/create/models/block/cut_ochrum_bricks_wall_side_tall.json e23998f88eb77826f5e4d58f3f4bb41a2e09ea97 assets/create/models/block/cut_ochrum_slab.json cd14f1abe3d0c65fbdd052f4a8e0b8fc2a15ad0e assets/create/models/block/cut_ochrum_slab_top.json a751feb4b609df141f971e341b204e76379dcda7 assets/create/models/block/cut_ochrum_stairs.json @@ -1044,15 +1742,15 @@ bed6843e39e7e771f6de151dfab0586d3ebad58c assets/create/models/block/cut_ochrum_s df267fb690642cac139aaabefa9eab802f13ddc1 assets/create/models/block/cut_ochrum_wall_side.json ed363b80cc61cb4d0b6fad9da855a0543ecaccc9 assets/create/models/block/cut_ochrum_wall_side_tall.json a65a54a08d9cc3b45e2320482dc2d9e317dd4f3d assets/create/models/block/cut_scorchia.json +9c93a554ab680d7c98c648c16472b52cc2646c50 assets/create/models/block/cut_scorchia_bricks.json +615dc444bb677caa774a4e95686ac24ebe4ec6dc assets/create/models/block/cut_scorchia_bricks_wall_post.json +758a2ad6677f857fbe955c26853eadc7150c105a assets/create/models/block/cut_scorchia_bricks_wall_side.json +f918dfa0751589d18a3eb054c290f669b5c61308 assets/create/models/block/cut_scorchia_bricks_wall_side_tall.json a032cf0a77e4f416ed153b1ffa834c065a73b2ae assets/create/models/block/cut_scorchia_brick_slab.json 716fc6ef58c240b3e6b45acf08d6e1472fe38e7c assets/create/models/block/cut_scorchia_brick_slab_top.json b2870e5ba7c5d5053b3639bf0aa1771ee050810b assets/create/models/block/cut_scorchia_brick_stairs.json 3e8a815eabd1991039a8ad18cedc9c57f46cd097 assets/create/models/block/cut_scorchia_brick_stairs_inner.json 0a9dc3149e7219a70642c242cd86dce5ba5cf4cc assets/create/models/block/cut_scorchia_brick_stairs_outer.json -9c93a554ab680d7c98c648c16472b52cc2646c50 assets/create/models/block/cut_scorchia_bricks.json -615dc444bb677caa774a4e95686ac24ebe4ec6dc assets/create/models/block/cut_scorchia_bricks_wall_post.json -758a2ad6677f857fbe955c26853eadc7150c105a assets/create/models/block/cut_scorchia_bricks_wall_side.json -f918dfa0751589d18a3eb054c290f669b5c61308 assets/create/models/block/cut_scorchia_bricks_wall_side_tall.json a85c4d0467c6746a8ef9c6ac0167d3e16f307d4e assets/create/models/block/cut_scorchia_slab.json 23fd6c65ea83f7ca7ef67dd7faf902c4fa662d70 assets/create/models/block/cut_scorchia_slab_top.json e42329f6fa3aeb958d2349a5442856e9473dc6b5 assets/create/models/block/cut_scorchia_stairs.json @@ -1062,15 +1760,15 @@ b9a911675861fee414f82c745399a7707c258f77 assets/create/models/block/cut_scorchia e61af066960897d50dc7f7bc17f95baa962829bd assets/create/models/block/cut_scorchia_wall_side.json 846f84efddca7d51b58ebe5e3bbed78312fb052d assets/create/models/block/cut_scorchia_wall_side_tall.json ce9dcf5b7fe58a97fab832fb98b4f5b6d3778255 assets/create/models/block/cut_scoria.json +fa3ef2bb65299c985b70f6959421e243a9ebc6d8 assets/create/models/block/cut_scoria_bricks.json +24ea1a30f68a918e6737dc8d9babe4528af5716a assets/create/models/block/cut_scoria_bricks_wall_post.json +ba7ae110d51fe510566ab42f5ead299b4409f2b7 assets/create/models/block/cut_scoria_bricks_wall_side.json +f04d12bc4e0b939bb443abcc6eb808e66c352c66 assets/create/models/block/cut_scoria_bricks_wall_side_tall.json edf04cbfb19b6ce99c1b74a71d40cd40c8120551 assets/create/models/block/cut_scoria_brick_slab.json f05725fd6d2764b277f01985d0e2fcbd3bf4a41e assets/create/models/block/cut_scoria_brick_slab_top.json 4bccbaef9dd9a8322087d3feb973e14d740ff27a assets/create/models/block/cut_scoria_brick_stairs.json 13f3b55dfdd97e68a6d525166618477e5bcb336d assets/create/models/block/cut_scoria_brick_stairs_inner.json 465862fb20542cae723fd72818be73aec05dad60 assets/create/models/block/cut_scoria_brick_stairs_outer.json -fa3ef2bb65299c985b70f6959421e243a9ebc6d8 assets/create/models/block/cut_scoria_bricks.json -24ea1a30f68a918e6737dc8d9babe4528af5716a assets/create/models/block/cut_scoria_bricks_wall_post.json -ba7ae110d51fe510566ab42f5ead299b4409f2b7 assets/create/models/block/cut_scoria_bricks_wall_side.json -f04d12bc4e0b939bb443abcc6eb808e66c352c66 assets/create/models/block/cut_scoria_bricks_wall_side_tall.json aeef239ca6b0eee527f75091d11d4a947740416d assets/create/models/block/cut_scoria_slab.json 5dfda9fa8117d35ebc324a5c9cb026e206e3b936 assets/create/models/block/cut_scoria_slab_top.json dfe8dbdb6deca69d847ee46fedfefe2da98dc329 assets/create/models/block/cut_scoria_stairs.json @@ -1080,15 +1778,15 @@ e0b2a94ff4b3f1c1e4282c9c8eecf2583bd7c68e assets/create/models/block/cut_scoria_w cf18e3fde94e3ba611f430fe527a9042a57e6936 assets/create/models/block/cut_scoria_wall_side.json 92475d7758b2bf582c585c2aafa6510f330c6f45 assets/create/models/block/cut_scoria_wall_side_tall.json 9f6543d21d9c24a429aae00511e6dbf61caf8030 assets/create/models/block/cut_tuff.json +8b3d9fe37ab7fda79ea4d90f674c525350883ba0 assets/create/models/block/cut_tuff_bricks.json +6b80481e15ff3d6eb40a42128da883c2027e0074 assets/create/models/block/cut_tuff_bricks_wall_post.json +057a34015b49565cb9858a2eea995a446ac0cfd4 assets/create/models/block/cut_tuff_bricks_wall_side.json +9f20bd04ef163076db9a8bf83c20cc802b57ae60 assets/create/models/block/cut_tuff_bricks_wall_side_tall.json 8c16599fda76c38978a2faa14f842a68fbbe4b9c assets/create/models/block/cut_tuff_brick_slab.json 696036e5900bdbb366dd49f5df71a1e701fd8ee3 assets/create/models/block/cut_tuff_brick_slab_top.json 54d4603e36be86e88d9302d61eab81e76cac1bbc assets/create/models/block/cut_tuff_brick_stairs.json 0ebb41a1ce5bf4ca86cbaf95e83cd2edf8f309ea assets/create/models/block/cut_tuff_brick_stairs_inner.json 5d5ed291db4b4bca464717c7fcde682b33d71c3f assets/create/models/block/cut_tuff_brick_stairs_outer.json -8b3d9fe37ab7fda79ea4d90f674c525350883ba0 assets/create/models/block/cut_tuff_bricks.json -6b80481e15ff3d6eb40a42128da883c2027e0074 assets/create/models/block/cut_tuff_bricks_wall_post.json -057a34015b49565cb9858a2eea995a446ac0cfd4 assets/create/models/block/cut_tuff_bricks_wall_side.json -9f20bd04ef163076db9a8bf83c20cc802b57ae60 assets/create/models/block/cut_tuff_bricks_wall_side_tall.json f2a904b7943555e8ec9dcc07513ca1ad9af809c3 assets/create/models/block/cut_tuff_slab.json ea74bb8a69f6acbd520ac8922e147495e5f99f6f assets/create/models/block/cut_tuff_slab_top.json 0262700e59de947907a04fdea9974f9d7e5a22f2 assets/create/models/block/cut_tuff_stairs.json @@ -1098,15 +1796,15 @@ ea74bb8a69f6acbd520ac8922e147495e5f99f6f assets/create/models/block/cut_tuff_sla 8c6492dc9e09359e5bac67ae4d473cffc8f93dbb assets/create/models/block/cut_tuff_wall_side.json f5f24066b6281303f52e25745881d5bca8c49c54 assets/create/models/block/cut_tuff_wall_side_tall.json 167e9a084987bcf7f67f655d0de88ae8ca2fcebb assets/create/models/block/cut_veridium.json +f8ab87c34f211a63525f6d386397face67460f8c assets/create/models/block/cut_veridium_bricks.json +e4e717fa8412032e184aebd1186470f41a2089c0 assets/create/models/block/cut_veridium_bricks_wall_post.json +8c40ccb8f10ef8dcda1bef46ad3490f697d178d2 assets/create/models/block/cut_veridium_bricks_wall_side.json +2c4671c66d904e15883ec3a14681b97ac537135c assets/create/models/block/cut_veridium_bricks_wall_side_tall.json 07c330c501375d5c316677edee80fb040c0fc237 assets/create/models/block/cut_veridium_brick_slab.json 4c8c660afe72e8ce9eaef53a37fdc63eb0c69513 assets/create/models/block/cut_veridium_brick_slab_top.json f802e4ae758e2c37c3129594ce4f5d9ffcfe173d assets/create/models/block/cut_veridium_brick_stairs.json 0d60d5cd0269e05816d28fcbbd2c680fe60cd316 assets/create/models/block/cut_veridium_brick_stairs_inner.json 22656f90b55aeaeeffa448b5f061fb26b5de7b0f assets/create/models/block/cut_veridium_brick_stairs_outer.json -f8ab87c34f211a63525f6d386397face67460f8c assets/create/models/block/cut_veridium_bricks.json -e4e717fa8412032e184aebd1186470f41a2089c0 assets/create/models/block/cut_veridium_bricks_wall_post.json -8c40ccb8f10ef8dcda1bef46ad3490f697d178d2 assets/create/models/block/cut_veridium_bricks_wall_side.json -2c4671c66d904e15883ec3a14681b97ac537135c assets/create/models/block/cut_veridium_bricks_wall_side_tall.json d736230e9b49a9fd40bc8f31df4d5144cdb429c8 assets/create/models/block/cut_veridium_slab.json 750e536c7b71dfb3a005d9b7a128ac435461e57f assets/create/models/block/cut_veridium_slab_top.json 8b05c19560e97ce15a66202717e3d32f6ee153a9 assets/create/models/block/cut_veridium_stairs.json @@ -1136,49 +1834,49 @@ db89bc32d0e466bc5008aa7091c682ba3aeec611 assets/create/models/block/diorite_pill a21387ab955f2b91e402b2189145f5fd6623592d assets/create/models/block/diorite_pillar_horizontal.json 44af455badc2b35a763007bba3537bda7d0ac289 assets/create/models/block/dripstone_pillar.json 1e23e3758e3311d0063c83742abb750a05021075 assets/create/models/block/dripstone_pillar_horizontal.json +19a773f91c58c49301f35965bac02d0c05fb2764 assets/create/models/block/exposed_copper_shingles.json a3420b91fdebec40e508a5eebb145c0201bd80c8 assets/create/models/block/exposed_copper_shingle_slab.json 4178ea5e50ee17b3c15f4a59efd019c4a19bb892 assets/create/models/block/exposed_copper_shingle_slab_top.json dd2d747774abc86e428a883e299db66cded78e11 assets/create/models/block/exposed_copper_shingle_stairs.json b6845da62d96a33cee624bb70360e256b26eda83 assets/create/models/block/exposed_copper_shingle_stairs_inner.json 3d8b758e50e75c5adc26ab6f39f9d73f00866673 assets/create/models/block/exposed_copper_shingle_stairs_outer.json -19a773f91c58c49301f35965bac02d0c05fb2764 assets/create/models/block/exposed_copper_shingles.json +9cb20c9d41629d8b9426cb65829365d10966338f assets/create/models/block/exposed_copper_tiles.json cd21d9d2935b6d0103502e2731c11ea27ff64ecf assets/create/models/block/exposed_copper_tile_slab.json 0ec039ba59fb0028183433e52131ff355ace5bff assets/create/models/block/exposed_copper_tile_slab_top.json c51dbd34996ac4513234800e427ac308067d5e1d assets/create/models/block/exposed_copper_tile_stairs.json 68772d4352dc7ade995dfa57ba41a38ef819e855 assets/create/models/block/exposed_copper_tile_stairs_inner.json d932671822ba93b71a9c8b50e7207803a1c4dbab assets/create/models/block/exposed_copper_tile_stairs_outer.json -9cb20c9d41629d8b9426cb65829365d10966338f assets/create/models/block/exposed_copper_tiles.json 2d1ade82820569936fd3021a877283474ced09d0 assets/create/models/block/fake_track.json -9e41f0b90dd1e71766c9d07bdb75d1e553f3392f assets/create/models/block/fluid_pipe/d_x.json -13507730f6ca6462c4cfeddc46e5b21e93fb1287 assets/create/models/block/fluid_pipe/d_y.json -84c09934d3537343a1226389993dabfa850b745e assets/create/models/block/fluid_pipe/d_z.json -b8fd54e514bd50fb287c6b758647818c6b08ef75 assets/create/models/block/fluid_pipe/l_x.json -e985ff9dbe7324cf69ab38e6e9e85c9b554af56c assets/create/models/block/fluid_pipe/l_y.json -e24957d63bac1e754fcc1647a4a86337a67f6298 assets/create/models/block/fluid_pipe/l_z.json -eacc5ee5f164ccc7c13cfbbd37a92b401222debe assets/create/models/block/fluid_pipe/ld_x.json -33fc0ecce85fae051c54d5a538793d7081238894 assets/create/models/block/fluid_pipe/ld_y.json -638f1a259cabed1f8d63c6fdaa6d4d4dff539e7d assets/create/models/block/fluid_pipe/ld_z.json -b23c3c83c0cbf52e94fe318a4749faaad2e41114 assets/create/models/block/fluid_pipe/lr_x.json -1a973387c6f6176af0fbb5650ee802ed4e552f73 assets/create/models/block/fluid_pipe/lr_y.json -c52521cd566294c797312104284ddd343fad9c2e assets/create/models/block/fluid_pipe/lr_z.json -99637310d3ca1ccfbe62b03aa9b0d82a0cf6f724 assets/create/models/block/fluid_pipe/lu_x.json -986800d441e95553464d1869d39baf456f5d70dc assets/create/models/block/fluid_pipe/lu_y.json -11dcf7d2dcd0df9b043035cb072deee96ab9e6da assets/create/models/block/fluid_pipe/lu_z.json -d44ff2aed71039a7d0ff913d0d9e8398e1318f39 assets/create/models/block/fluid_pipe/r_x.json -92d4044b51a90da0b2277b0613c7ca0bb80c66fe assets/create/models/block/fluid_pipe/r_y.json -fb9a23de00ef4edb4f7e24fb60de345cd12e513f assets/create/models/block/fluid_pipe/r_z.json -bde9ec36b86113a6ca7a51a4f405994460a2eb56 assets/create/models/block/fluid_pipe/rd_x.json -bd325f5b37ff08328ddddeeceac1a41be586d20a assets/create/models/block/fluid_pipe/rd_y.json -28f351fd215af3a991ccd9aa05c57b9cd9e6f58d assets/create/models/block/fluid_pipe/rd_z.json -1ff3ea321aeacca70709eb76370c11c7f13163b6 assets/create/models/block/fluid_pipe/ru_x.json -95bc5342fd3909981430c2e13ef98cdbd8f02709 assets/create/models/block/fluid_pipe/ru_y.json -e1fc0d1297a83749ac55f51c9cf33ff2ecc9fdc2 assets/create/models/block/fluid_pipe/ru_z.json -4e3debb2ba60398a0730866f781e0455f4316610 assets/create/models/block/fluid_pipe/u_x.json -0f98b30ba09706b8a5ee09aeef912b39acea0216 assets/create/models/block/fluid_pipe/u_y.json -83bf9b1af633c319c051055170debff4cc3508c0 assets/create/models/block/fluid_pipe/u_z.json -65a41f4b680af197776e03cae6f1815b6d04def2 assets/create/models/block/fluid_pipe/ud_x.json -26398801d89889ffe17b6513b786d27707f6a480 assets/create/models/block/fluid_pipe/ud_y.json -07747cc2b936e1b326bae7ac32a8a5ba77fdffa9 assets/create/models/block/fluid_pipe/ud_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/d_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/d_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/d_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/ld_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/ld_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/ld_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/lr_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/lr_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/lr_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/lu_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/lu_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/lu_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/l_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/l_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/l_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/rd_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/rd_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/rd_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/ru_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/ru_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/ru_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/r_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/r_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/r_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/ud_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/ud_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/ud_z.json +54d9a02ac2725f1f135ffad806d2f3413d9b335b assets/create/models/block/fluid_pipe/u_x.json +b1de87d84e3dacfd222e22d036d3cae00144936e assets/create/models/block/fluid_pipe/u_y.json +ae3f3edf35e853f9826ce4ae313e5bc6a81cbf46 assets/create/models/block/fluid_pipe/u_z.json 5f70af15ec2569c68a17d31024c7a37cb5c68c7e assets/create/models/block/framed_glass.json f0100e1d44146b256998fbd2af05da80d147e8d9 assets/create/models/block/framed_glass_pane_noside.json 4a032c6ae3f459e3349c2a2218da186170c31e03 assets/create/models/block/framed_glass_pane_noside_alt.json @@ -1219,7 +1917,6 @@ f8b51eec36c2eddc08a1b60894d863bb58f55625 assets/create/models/block/haunted_bell f70f83cfec770879c478eea3760ea187700f2878 assets/create/models/block/haunted_bell_double_wall.json b9c9d00b844ca2f217ae21cc502cd4d082fed2d5 assets/create/models/block/haunted_bell_floor.json f7b09c243cfeda8bb38a29a917b9fbdafe47eece assets/create/models/block/haunted_bell_single_wall.json -8237c99cd0752b6284c68ffb629d1667ad0c174c assets/create/models/block/honey.json 5f70af15ec2569c68a17d31024c7a37cb5c68c7e assets/create/models/block/horizontal_framed_glass.json f0100e1d44146b256998fbd2af05da80d147e8d9 assets/create/models/block/horizontal_framed_glass_pane_noside.json 4a032c6ae3f459e3349c2a2218da186170c31e03 assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json @@ -1269,6 +1966,9 @@ d1813d0f548fcddb361df7cc3b5d97582842b10f assets/create/models/block/light_gray_s debf78f20659bc3c637299a40b649cbe4aa30ebf assets/create/models/block/light_gray_table_cloth.json 4ec5d701dd8b2d8c3dc44d05f527a3d737002cd4 assets/create/models/block/light_gray_toolbox.json adb8dbed70419e0310e7a20f3656bf325b348434 assets/create/models/block/light_gray_valve_handle.json +8f53caad3899a30be5087a0ba155080834418cc0 assets/create/models/block/limestone.json +2b80f9421c2fe902d55d9bd95183ad4bae46c315 assets/create/models/block/limestone_pillar.json +fb18280a2a708f60b00cc7c675804c219784871a assets/create/models/block/limestone_pillar_horizontal.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/lime_nixie_tube.json 952d292d4dc2158e6106c5079cfa1ddb81c7777e assets/create/models/block/lime_postbox_closed.json 4357f5d9102d54c7fbe5325512a2cd42d94d6d42 assets/create/models/block/lime_postbox_open.json @@ -1277,9 +1977,6 @@ adb8dbed70419e0310e7a20f3656bf325b348434 assets/create/models/block/light_gray_v e4142a22c20d6e5b9a8b9f96c13d4e5f96adc59d assets/create/models/block/lime_table_cloth.json b92822a01e4fbed2463b1bdf7dcc736023988e20 assets/create/models/block/lime_toolbox.json 802b47f34b1053b7af980b08b6511f468e7dd7c1 assets/create/models/block/lime_valve_handle.json -8f53caad3899a30be5087a0ba155080834418cc0 assets/create/models/block/limestone.json -2b80f9421c2fe902d55d9bd95183ad4bae46c315 assets/create/models/block/limestone_pillar.json -fb18280a2a708f60b00cc7c675804c219784871a assets/create/models/block/limestone_pillar_horizontal.json 84b9ac6eafdbd037f3ff558c250a8b8952415af1 assets/create/models/block/linear_chassis.json 29ee936c09c1222c6a144e5bb39577b5a9cd28bf assets/create/models/block/linear_chassis_bottom.json a1a3804ddcb1db0a7b5c0693555f8eb326950dd0 assets/create/models/block/linear_chassis_top.json @@ -1325,18 +2022,18 @@ f9010894858512398bddd5d31b922e12594d2e3c assets/create/models/block/ornate_iron_ 92637fbd6bf54891411b32a494064b9a48e59411 assets/create/models/block/ornate_iron_window_pane_post.json 8416d497e7fc8ca4f9f4c608ccc0651036850256 assets/create/models/block/ornate_iron_window_pane_side.json 1cdaa9d4bd23f7b1eb14672dc9322d9dad966502 assets/create/models/block/ornate_iron_window_pane_side_alt.json +561beafce41b9e9c0b07bc6b7176dd4f6918c116 assets/create/models/block/oxidized_copper_shingles.json 7e0bab8109e322c6db5fe1d5999c06536c21c6eb assets/create/models/block/oxidized_copper_shingle_slab.json 42df32c4e2d1ffb2ee62748becfd1717118b440c assets/create/models/block/oxidized_copper_shingle_slab_top.json b55a733e3e68cfbd08d45bb9ac56deef9f728b60 assets/create/models/block/oxidized_copper_shingle_stairs.json 7b8745213af5aa7938fc04a295be6a087c72daa8 assets/create/models/block/oxidized_copper_shingle_stairs_inner.json d89419d48d6ee2f6747e7c93de8699db22ea3f59 assets/create/models/block/oxidized_copper_shingle_stairs_outer.json -561beafce41b9e9c0b07bc6b7176dd4f6918c116 assets/create/models/block/oxidized_copper_shingles.json +5cf92b628ff1f832966138a58ed87d747681274c assets/create/models/block/oxidized_copper_tiles.json ad6134598869711a12e2f95c9b5f25a0f7b8dd93 assets/create/models/block/oxidized_copper_tile_slab.json c17bac0fd6a20540813c6a1c000a553b7c5ac849 assets/create/models/block/oxidized_copper_tile_slab_top.json d5b30340364f5536e46bc67e777ef4fa20a36e04 assets/create/models/block/oxidized_copper_tile_stairs.json b40b315c23cbd3eb4658518bfac836f6091321a5 assets/create/models/block/oxidized_copper_tile_stairs_inner.json f4eaadab29b4f2e915237340e2d6f4aad4ba21d6 assets/create/models/block/oxidized_copper_tile_stairs_outer.json -5cf92b628ff1f832966138a58ed87d747681274c assets/create/models/block/oxidized_copper_tiles.json f8b51eec36c2eddc08a1b60894d863bb58f55625 assets/create/models/block/peculiar_bell_ceiling.json f70f83cfec770879c478eea3760ea187700f2878 assets/create/models/block/peculiar_bell_double_wall.json b9c9d00b844ca2f217ae21cc502cd4d082fed2d5 assets/create/models/block/peculiar_bell_floor.json @@ -1543,133 +2240,133 @@ ff52eb59dadfe675e416440f3115856a501428a6 assets/create/models/block/scoria.json 4d7d36f974d25a310db2f75800e8c7e0377881c6 assets/create/models/block/secondary_linear_chassis_top.json 5ecb821ac06873015d2d7ebcfb7e1f5fe85cf504 assets/create/models/block/secondary_linear_chassis_top_bottom.json e697898a0ec4c308314a4e0b7235fa0a9229da45 assets/create/models/block/shadow_steel_casing.json +73edb947b52c73e85a83422853d0b8a0fb34e82b assets/create/models/block/small_andesite_bricks.json +3bb5c8413b9e81a1adc339f873f37eb656904e06 assets/create/models/block/small_andesite_bricks_wall_post.json +0e70d94fc6ffdc0fd4a50a5910bc1455b401982f assets/create/models/block/small_andesite_bricks_wall_side.json +597fec784e40c1ff3b622824c32773d6d271f3b7 assets/create/models/block/small_andesite_bricks_wall_side_tall.json 593b962350c8de53156901b308617c6a246afa09 assets/create/models/block/small_andesite_brick_slab.json c83de8118653ccdce92a1b7f3501bf7359e0b310 assets/create/models/block/small_andesite_brick_slab_top.json f019380bcc81d52681e2beaf63e2b11836c45922 assets/create/models/block/small_andesite_brick_stairs.json 4fa72fe0115ad9ec83837852a2b2e2d22dde19ca assets/create/models/block/small_andesite_brick_stairs_inner.json f80f485f62dce86e98815b343c89e96b10623e53 assets/create/models/block/small_andesite_brick_stairs_outer.json -73edb947b52c73e85a83422853d0b8a0fb34e82b assets/create/models/block/small_andesite_bricks.json -3bb5c8413b9e81a1adc339f873f37eb656904e06 assets/create/models/block/small_andesite_bricks_wall_post.json -0e70d94fc6ffdc0fd4a50a5910bc1455b401982f assets/create/models/block/small_andesite_bricks_wall_side.json -597fec784e40c1ff3b622824c32773d6d271f3b7 assets/create/models/block/small_andesite_bricks_wall_side_tall.json +4750724972cbac6d7dac31e0689681eab6c37093 assets/create/models/block/small_asurine_bricks.json +407c7bea509bb0e9bf9f04e947ace584103d012d assets/create/models/block/small_asurine_bricks_wall_post.json +60491dfb4f2a6b78effdf18612b9a1cd7d930d8a assets/create/models/block/small_asurine_bricks_wall_side.json +e5d3172c08b65696a6d72220495463636d8b352c assets/create/models/block/small_asurine_bricks_wall_side_tall.json cdd354726eda82d83dc89871fa587b8c07b02a16 assets/create/models/block/small_asurine_brick_slab.json 7bdb6ed1e74437d083bca7d89c0d1b7c81e80b53 assets/create/models/block/small_asurine_brick_slab_top.json 086b9d4284d343967a582fd0a7d194bafd980e13 assets/create/models/block/small_asurine_brick_stairs.json db69f1580ca405b9a99f0e4ea8d9b9950ed6444e assets/create/models/block/small_asurine_brick_stairs_inner.json dd572cbff713b0f4830aef0bf3ba4adb80ee9908 assets/create/models/block/small_asurine_brick_stairs_outer.json -4750724972cbac6d7dac31e0689681eab6c37093 assets/create/models/block/small_asurine_bricks.json -407c7bea509bb0e9bf9f04e947ace584103d012d assets/create/models/block/small_asurine_bricks_wall_post.json -60491dfb4f2a6b78effdf18612b9a1cd7d930d8a assets/create/models/block/small_asurine_bricks_wall_side.json -e5d3172c08b65696a6d72220495463636d8b352c assets/create/models/block/small_asurine_bricks_wall_side_tall.json +c2c72734ac526c319cb01e982824680bfb5f1186 assets/create/models/block/small_calcite_bricks.json +f17f2ecd5e5a32f92ec0ad0ba9e861a80432c0f2 assets/create/models/block/small_calcite_bricks_wall_post.json +1ad7654125aff67267567c0007cc03b8a15131b0 assets/create/models/block/small_calcite_bricks_wall_side.json +10c339f64c0e78f4fbb7a95c10bf7f9f399c0c6b assets/create/models/block/small_calcite_bricks_wall_side_tall.json d07c57748981a54ffcdadc30ec21f728a3557bea assets/create/models/block/small_calcite_brick_slab.json 9a5e6a93328ad35b256b2512c28e683a74e807a9 assets/create/models/block/small_calcite_brick_slab_top.json c3d39e013dd0142f044f8f0a90de849a0d961e84 assets/create/models/block/small_calcite_brick_stairs.json 4e47a4708dafc0ea476e2d5b6567acfdc2c5c148 assets/create/models/block/small_calcite_brick_stairs_inner.json 6a41c44680a958299a787d8c8c8778d52167cd65 assets/create/models/block/small_calcite_brick_stairs_outer.json -c2c72734ac526c319cb01e982824680bfb5f1186 assets/create/models/block/small_calcite_bricks.json -f17f2ecd5e5a32f92ec0ad0ba9e861a80432c0f2 assets/create/models/block/small_calcite_bricks_wall_post.json -1ad7654125aff67267567c0007cc03b8a15131b0 assets/create/models/block/small_calcite_bricks_wall_side.json -10c339f64c0e78f4fbb7a95c10bf7f9f399c0c6b assets/create/models/block/small_calcite_bricks_wall_side_tall.json +485f6c0e37b24124ff23efa3f0caa2cfe85663dd assets/create/models/block/small_crimsite_bricks.json +57b050751e68c9a881d9598cfe8dfb45f19df08c assets/create/models/block/small_crimsite_bricks_wall_post.json +cb01f90c7ac1f56a6f79e1fecb126c349b6d53b0 assets/create/models/block/small_crimsite_bricks_wall_side.json +80932617b1d4b718071c1f8558398ba881743892 assets/create/models/block/small_crimsite_bricks_wall_side_tall.json 827867ddd9b5f6e2daa916c968531c7183ce7fa2 assets/create/models/block/small_crimsite_brick_slab.json dd19ebdbd1a2de827d467b0abd2d1d3ee5822305 assets/create/models/block/small_crimsite_brick_slab_top.json 58048cb41b740b008a98420ea93b567f38e2910f assets/create/models/block/small_crimsite_brick_stairs.json a943586885ea7d48fc27595d9741f97d852446e7 assets/create/models/block/small_crimsite_brick_stairs_inner.json 8dc173b8a9912341ccb9cd8c9a0d2d893571eb85 assets/create/models/block/small_crimsite_brick_stairs_outer.json -485f6c0e37b24124ff23efa3f0caa2cfe85663dd assets/create/models/block/small_crimsite_bricks.json -57b050751e68c9a881d9598cfe8dfb45f19df08c assets/create/models/block/small_crimsite_bricks_wall_post.json -cb01f90c7ac1f56a6f79e1fecb126c349b6d53b0 assets/create/models/block/small_crimsite_bricks_wall_side.json -80932617b1d4b718071c1f8558398ba881743892 assets/create/models/block/small_crimsite_bricks_wall_side_tall.json +cd855b25c38be2c36dcbf6ab0d963a2c76043171 assets/create/models/block/small_deepslate_bricks.json +88a6c43f64c6d53b34719f41707622635108342b assets/create/models/block/small_deepslate_bricks_wall_post.json +dea1773ca9baf9e1a6a7a4288d348127b858c42d assets/create/models/block/small_deepslate_bricks_wall_side.json +673ab543b38a597fd74285cd25b8004c9e2bd706 assets/create/models/block/small_deepslate_bricks_wall_side_tall.json 67c78a3e9250351d0ea18538640b596f05e957a4 assets/create/models/block/small_deepslate_brick_slab.json bc1af783fbcbe73df05e12c93625035db8089d16 assets/create/models/block/small_deepslate_brick_slab_top.json 91e00675337592d17a04032808ca64c4a159c814 assets/create/models/block/small_deepslate_brick_stairs.json 39e78262242637628628a07dc47908fb1593d3f2 assets/create/models/block/small_deepslate_brick_stairs_inner.json d7a61bc4c84070e0fd53e0957a5282078daff7f1 assets/create/models/block/small_deepslate_brick_stairs_outer.json -cd855b25c38be2c36dcbf6ab0d963a2c76043171 assets/create/models/block/small_deepslate_bricks.json -88a6c43f64c6d53b34719f41707622635108342b assets/create/models/block/small_deepslate_bricks_wall_post.json -dea1773ca9baf9e1a6a7a4288d348127b858c42d assets/create/models/block/small_deepslate_bricks_wall_side.json -673ab543b38a597fd74285cd25b8004c9e2bd706 assets/create/models/block/small_deepslate_bricks_wall_side_tall.json +73e801fb607d76b42e1862323e9d149910a68298 assets/create/models/block/small_diorite_bricks.json +2bdb593d3ae4d856e96cc877f4927da25841af54 assets/create/models/block/small_diorite_bricks_wall_post.json +dd064be7962a2418784a513725fc7b5835e4ab40 assets/create/models/block/small_diorite_bricks_wall_side.json +3753c64785d74f1997b9f8f856fa873302621f39 assets/create/models/block/small_diorite_bricks_wall_side_tall.json 59fc1d9dac0b6867779346413953174fc6b55d3c assets/create/models/block/small_diorite_brick_slab.json cbd6fe711e1203aa746d86d12bb85016b7142749 assets/create/models/block/small_diorite_brick_slab_top.json a6c823fa96ba8a06d101ca96a6898fe8a1faf83e assets/create/models/block/small_diorite_brick_stairs.json 7f128501d989122df9d2ab002a497356831caa1c assets/create/models/block/small_diorite_brick_stairs_inner.json 26222975b0efb2acea6473d0bcc99453aa9ed561 assets/create/models/block/small_diorite_brick_stairs_outer.json -73e801fb607d76b42e1862323e9d149910a68298 assets/create/models/block/small_diorite_bricks.json -2bdb593d3ae4d856e96cc877f4927da25841af54 assets/create/models/block/small_diorite_bricks_wall_post.json -dd064be7962a2418784a513725fc7b5835e4ab40 assets/create/models/block/small_diorite_bricks_wall_side.json -3753c64785d74f1997b9f8f856fa873302621f39 assets/create/models/block/small_diorite_bricks_wall_side_tall.json +7f55f9c8cae6a79a9ab22a4b593a2c5829390573 assets/create/models/block/small_dripstone_bricks.json +fd0880b2e55435c8dc6945fa71c67ba34d7b1e69 assets/create/models/block/small_dripstone_bricks_wall_post.json +c00e9c0bfb108b70975514694f38d3c4cd63e819 assets/create/models/block/small_dripstone_bricks_wall_side.json +26382c01766e04cfe7ea585cabc1baa1c409e0a0 assets/create/models/block/small_dripstone_bricks_wall_side_tall.json 7b18bb56d4509f490a73b2812a8e40333f400369 assets/create/models/block/small_dripstone_brick_slab.json 39b7aa7d1494e5328e8774acb8adec8a346e972f assets/create/models/block/small_dripstone_brick_slab_top.json 3d265aed7a723713d525d0fabf3a70600d9d60e4 assets/create/models/block/small_dripstone_brick_stairs.json 2be41e9c1367af7f0eb99856e35900df96974bd4 assets/create/models/block/small_dripstone_brick_stairs_inner.json 4026a9327d47d55218b00b0b4b92464b6448ad91 assets/create/models/block/small_dripstone_brick_stairs_outer.json -7f55f9c8cae6a79a9ab22a4b593a2c5829390573 assets/create/models/block/small_dripstone_bricks.json -fd0880b2e55435c8dc6945fa71c67ba34d7b1e69 assets/create/models/block/small_dripstone_bricks_wall_post.json -c00e9c0bfb108b70975514694f38d3c4cd63e819 assets/create/models/block/small_dripstone_bricks_wall_side.json -26382c01766e04cfe7ea585cabc1baa1c409e0a0 assets/create/models/block/small_dripstone_bricks_wall_side_tall.json +ad4cf29e0e67d0d202d5836486531551909c71bf assets/create/models/block/small_granite_bricks.json +d20963cbb5d2321a069bf42d203855a5584f8607 assets/create/models/block/small_granite_bricks_wall_post.json +b860879b66d2d23349fa95ff644d9eba21eb29bd assets/create/models/block/small_granite_bricks_wall_side.json +11593a2a0e307b3e1d847c84d8c61bc78fef2967 assets/create/models/block/small_granite_bricks_wall_side_tall.json cb0a72cedb6b2b043eaf8c8869648802d74a2eeb assets/create/models/block/small_granite_brick_slab.json d635840492541787d55cc005c7e207532edcdef3 assets/create/models/block/small_granite_brick_slab_top.json ba9bfedf5854fccaba8a5e60c26efb6e34ede3cd assets/create/models/block/small_granite_brick_stairs.json 9bebe59176e74926e28a139dc557c25283285e89 assets/create/models/block/small_granite_brick_stairs_inner.json 15d71900e76c131285447628e63bf1479ce7025a assets/create/models/block/small_granite_brick_stairs_outer.json -ad4cf29e0e67d0d202d5836486531551909c71bf assets/create/models/block/small_granite_bricks.json -d20963cbb5d2321a069bf42d203855a5584f8607 assets/create/models/block/small_granite_bricks_wall_post.json -b860879b66d2d23349fa95ff644d9eba21eb29bd assets/create/models/block/small_granite_bricks_wall_side.json -11593a2a0e307b3e1d847c84d8c61bc78fef2967 assets/create/models/block/small_granite_bricks_wall_side_tall.json +6224f2763224d3e746dafdaaf14fae68e2469b93 assets/create/models/block/small_limestone_bricks.json +ca038e240e4157897a6273692db2c952ab5b17d7 assets/create/models/block/small_limestone_bricks_wall_post.json +7920f8cfda77b22d4d29638faa6ae07d89e51ab3 assets/create/models/block/small_limestone_bricks_wall_side.json +6e1fa27744f4592111945e5cafee6d7d67b5299b assets/create/models/block/small_limestone_bricks_wall_side_tall.json 0e0f551bac87421e6b693aa9ca98fd5da2ee168b assets/create/models/block/small_limestone_brick_slab.json 6669c1e87ed79097f96e7e46eecf3ab6e7c9778c assets/create/models/block/small_limestone_brick_slab_top.json 5aff0145d2fc89549ac541db325dda25b8941583 assets/create/models/block/small_limestone_brick_stairs.json 250aa2c237a9532b19621fa604027433183961c3 assets/create/models/block/small_limestone_brick_stairs_inner.json 92da57d330e9905d017705dd931af1d1d6c1a00d assets/create/models/block/small_limestone_brick_stairs_outer.json -6224f2763224d3e746dafdaaf14fae68e2469b93 assets/create/models/block/small_limestone_bricks.json -ca038e240e4157897a6273692db2c952ab5b17d7 assets/create/models/block/small_limestone_bricks_wall_post.json -7920f8cfda77b22d4d29638faa6ae07d89e51ab3 assets/create/models/block/small_limestone_bricks_wall_side.json -6e1fa27744f4592111945e5cafee6d7d67b5299b assets/create/models/block/small_limestone_bricks_wall_side_tall.json +242e4f39f6df26917f21899f0c7d0415a166d4b9 assets/create/models/block/small_ochrum_bricks.json +06cb9faca0062947c08b2a7309a958aac5ab24ac assets/create/models/block/small_ochrum_bricks_wall_post.json +8d9d53206e222839333026c779b66b9fd8cf2cf9 assets/create/models/block/small_ochrum_bricks_wall_side.json +f412fbaa509f7b2d47a27d4bcb13590bfcae74ca assets/create/models/block/small_ochrum_bricks_wall_side_tall.json 517e3605a9e86a07c673e18d94c2c37109a2aef5 assets/create/models/block/small_ochrum_brick_slab.json 855ad9f6fe03ceb2cc33d9df3536cb4394acfa9b assets/create/models/block/small_ochrum_brick_slab_top.json c5fc35d6b0fe96c11537bc10d34a63ef80f3270c assets/create/models/block/small_ochrum_brick_stairs.json 9a2631d9f6821d2c01bc8b2588a69702d3b083cc assets/create/models/block/small_ochrum_brick_stairs_inner.json 1f0ccdef29dae18535ea304e954e06c91bb0620b assets/create/models/block/small_ochrum_brick_stairs_outer.json -242e4f39f6df26917f21899f0c7d0415a166d4b9 assets/create/models/block/small_ochrum_bricks.json -06cb9faca0062947c08b2a7309a958aac5ab24ac assets/create/models/block/small_ochrum_bricks_wall_post.json -8d9d53206e222839333026c779b66b9fd8cf2cf9 assets/create/models/block/small_ochrum_bricks_wall_side.json -f412fbaa509f7b2d47a27d4bcb13590bfcae74ca assets/create/models/block/small_ochrum_bricks_wall_side_tall.json be96f070be1f838c6fb442c164b5f9b4e5cfcee5 assets/create/models/block/small_rose_quartz_tiles.json +41e56d8e334b81a0d5270bdbe87617981e1f98b4 assets/create/models/block/small_scorchia_bricks.json +56aa81e05019533ce0e0f1ee3ef7bf20fcc400b4 assets/create/models/block/small_scorchia_bricks_wall_post.json +1e1fa90c8b144813770c4d53a3b734ae450895d6 assets/create/models/block/small_scorchia_bricks_wall_side.json +6a46cf73c03a2abea25a81dbb28f4150b355900c assets/create/models/block/small_scorchia_bricks_wall_side_tall.json 6aa3825ace2e73bec454aaa8597e3a892ee29eb7 assets/create/models/block/small_scorchia_brick_slab.json f0378625001171c449a403e372e59623f0fc6569 assets/create/models/block/small_scorchia_brick_slab_top.json 49fa4a3940f84902319df257d39812eb71c8a9e2 assets/create/models/block/small_scorchia_brick_stairs.json 4dee6e6dbe6a98a8eaa04f6812f322343f62fca1 assets/create/models/block/small_scorchia_brick_stairs_inner.json 8a19e7e5c03c155c9ef9332486ae0b069dea0502 assets/create/models/block/small_scorchia_brick_stairs_outer.json -41e56d8e334b81a0d5270bdbe87617981e1f98b4 assets/create/models/block/small_scorchia_bricks.json -56aa81e05019533ce0e0f1ee3ef7bf20fcc400b4 assets/create/models/block/small_scorchia_bricks_wall_post.json -1e1fa90c8b144813770c4d53a3b734ae450895d6 assets/create/models/block/small_scorchia_bricks_wall_side.json -6a46cf73c03a2abea25a81dbb28f4150b355900c assets/create/models/block/small_scorchia_bricks_wall_side_tall.json +6b435123d852579ba8467c4915cd5d0adaadeca0 assets/create/models/block/small_scoria_bricks.json +86b243074845ca66916ce96ef3774862cf9a39d4 assets/create/models/block/small_scoria_bricks_wall_post.json +57ccb3efbdc4a69cad60c8b90321338ba2e68321 assets/create/models/block/small_scoria_bricks_wall_side.json +d4c5398e10b25d2dc3cb3754a449fc2b60e4074f assets/create/models/block/small_scoria_bricks_wall_side_tall.json 918351c1270c26932c0c4783543779a25ca7e986 assets/create/models/block/small_scoria_brick_slab.json 4138e756b4b36f227e178acbcc233edb082ae603 assets/create/models/block/small_scoria_brick_slab_top.json b8e70cd7d9acdcf91be9783cd91d70275a006ea2 assets/create/models/block/small_scoria_brick_stairs.json 625bfbd58440ea4e270d57cc748f2b5f6cece63b assets/create/models/block/small_scoria_brick_stairs_inner.json 602a46fb2736acb8c50b0d04222e6c33e52dee87 assets/create/models/block/small_scoria_brick_stairs_outer.json -6b435123d852579ba8467c4915cd5d0adaadeca0 assets/create/models/block/small_scoria_bricks.json -86b243074845ca66916ce96ef3774862cf9a39d4 assets/create/models/block/small_scoria_bricks_wall_post.json -57ccb3efbdc4a69cad60c8b90321338ba2e68321 assets/create/models/block/small_scoria_bricks_wall_side.json -d4c5398e10b25d2dc3cb3754a449fc2b60e4074f assets/create/models/block/small_scoria_bricks_wall_side_tall.json +a8e8c633dfb6d9f14425b1fd28e88ecf08a88cc6 assets/create/models/block/small_tuff_bricks.json +1c3a22bed504cd7a7e507e83ee21399f8a3fb299 assets/create/models/block/small_tuff_bricks_wall_post.json +1aeb8cac7d0178a18ac1cf98c9a45ca8e67514b0 assets/create/models/block/small_tuff_bricks_wall_side.json +4c6b5c7c60ec4cad314064b171413a3e866e5f99 assets/create/models/block/small_tuff_bricks_wall_side_tall.json 6b2c4d8c8609de0d3d6ce1e30b1dd26ba59cb86d assets/create/models/block/small_tuff_brick_slab.json 1ba07367fcba6a3914f1703115304a7c19979542 assets/create/models/block/small_tuff_brick_slab_top.json 1a5ab239d0f2f041ee04005ceb60111e6848f5de assets/create/models/block/small_tuff_brick_stairs.json be3ee2c36f85a534a71d42a7d63a7816945b3c30 assets/create/models/block/small_tuff_brick_stairs_inner.json aa84e448041d5f74c75565f5e409b1e9b7e5155d assets/create/models/block/small_tuff_brick_stairs_outer.json -a8e8c633dfb6d9f14425b1fd28e88ecf08a88cc6 assets/create/models/block/small_tuff_bricks.json -1c3a22bed504cd7a7e507e83ee21399f8a3fb299 assets/create/models/block/small_tuff_bricks_wall_post.json -1aeb8cac7d0178a18ac1cf98c9a45ca8e67514b0 assets/create/models/block/small_tuff_bricks_wall_side.json -4c6b5c7c60ec4cad314064b171413a3e866e5f99 assets/create/models/block/small_tuff_bricks_wall_side_tall.json +e9c75f1b4b663dce09b0a2f8282e574839c19d06 assets/create/models/block/small_veridium_bricks.json +725f6d3dbcfb469cede6fb27a98c1f398f3f3c8c assets/create/models/block/small_veridium_bricks_wall_post.json +b33ee496d43e315a5bed5eaabfd553e361fec1a9 assets/create/models/block/small_veridium_bricks_wall_side.json +80e950f93def51d82a63848b1fb6ac11600ab1bf assets/create/models/block/small_veridium_bricks_wall_side_tall.json 30b150fe3cf9bdb6ee32cd6b0f51179b44be57d3 assets/create/models/block/small_veridium_brick_slab.json 2158dd9e71f6f60e5132105c68a41ad6e3927438 assets/create/models/block/small_veridium_brick_slab_top.json bbbfc8e3696945ed1f6c3afe73ae0745ff8deda1 assets/create/models/block/small_veridium_brick_stairs.json fc3a996b0ca01c2c09ad84b881c46e92918d084f assets/create/models/block/small_veridium_brick_stairs_inner.json e27a77984e8e28e6032f26bb010efcadfaeb5407 assets/create/models/block/small_veridium_brick_stairs_outer.json -e9c75f1b4b663dce09b0a2f8282e574839c19d06 assets/create/models/block/small_veridium_bricks.json -725f6d3dbcfb469cede6fb27a98c1f398f3f3c8c assets/create/models/block/small_veridium_bricks_wall_post.json -b33ee496d43e315a5bed5eaabfd553e361fec1a9 assets/create/models/block/small_veridium_bricks_wall_side.json -80e950f93def51d82a63848b1fb6ac11600ab1bf assets/create/models/block/small_veridium_bricks_wall_side_tall.json d7c1c2679c8ba543ae7be3b9cf3f4eea3c1a2f68 assets/create/models/block/spruce_window.json f4a4fbb9eea6fb1d0633e349eae6acdaf329e8d5 assets/create/models/block/spruce_window_pane_noside.json 02a25202a42debcd2b4aaa4113e3de4f8f6ee47c assets/create/models/block/spruce_window_pane_noside_alt.json @@ -1736,66 +2433,66 @@ e84875a4eb11e2161a93ec7569aa2ac1c2f60cef assets/create/models/block/warped_windo 378c865ff8213ff56f1f7a4b2d9cf26c71f036e8 assets/create/models/block/warped_window_pane_post.json f320de08cb113a9ad17acd2ebb8dfc57759e4f7d assets/create/models/block/warped_window_pane_side.json 2fc182d9697b5cddd93b01d1236931af27eee8fe assets/create/models/block/warped_window_pane_side_alt.json +32fdb85b5b62d5a0fb41732874c854788cdd2ba1 assets/create/models/block/waxed_copper_shingles.json fb7fb6deebd502946ab57f1b8a9f4a6b5dd48da3 assets/create/models/block/waxed_copper_shingle_slab.json 660f61112b8e46dec5050cb0ed4ee936965a7c58 assets/create/models/block/waxed_copper_shingle_slab_top.json 5d74be967bbe9feba4b630751f13af817a733d1d assets/create/models/block/waxed_copper_shingle_stairs.json 35cb89f29ce3f8d8af13602c08ecd7afbb7cf56a assets/create/models/block/waxed_copper_shingle_stairs_inner.json fcb9295f4f388e6d439ec9a3906ca326b6d69077 assets/create/models/block/waxed_copper_shingle_stairs_outer.json -32fdb85b5b62d5a0fb41732874c854788cdd2ba1 assets/create/models/block/waxed_copper_shingles.json +32f06f39d0b34e4431795aa6e64f87e58dc1597b assets/create/models/block/waxed_copper_tiles.json 298c6100de02ed9f813397d8ba38c46f35035c69 assets/create/models/block/waxed_copper_tile_slab.json d4422c2d96fb329087d1be70d8b983a8cf6c7f01 assets/create/models/block/waxed_copper_tile_slab_top.json fca72048f916d3a3e567b385c948cc1b59711ef4 assets/create/models/block/waxed_copper_tile_stairs.json 997479b62ed3d81ab633279ecc2fabd9588a3bf3 assets/create/models/block/waxed_copper_tile_stairs_inner.json d5c5bbfb9aaa282e11ad6e6309b1880b172ee653 assets/create/models/block/waxed_copper_tile_stairs_outer.json -32f06f39d0b34e4431795aa6e64f87e58dc1597b assets/create/models/block/waxed_copper_tiles.json +19a773f91c58c49301f35965bac02d0c05fb2764 assets/create/models/block/waxed_exposed_copper_shingles.json a3420b91fdebec40e508a5eebb145c0201bd80c8 assets/create/models/block/waxed_exposed_copper_shingle_slab.json 4178ea5e50ee17b3c15f4a59efd019c4a19bb892 assets/create/models/block/waxed_exposed_copper_shingle_slab_top.json dd2d747774abc86e428a883e299db66cded78e11 assets/create/models/block/waxed_exposed_copper_shingle_stairs.json b6845da62d96a33cee624bb70360e256b26eda83 assets/create/models/block/waxed_exposed_copper_shingle_stairs_inner.json 3d8b758e50e75c5adc26ab6f39f9d73f00866673 assets/create/models/block/waxed_exposed_copper_shingle_stairs_outer.json -19a773f91c58c49301f35965bac02d0c05fb2764 assets/create/models/block/waxed_exposed_copper_shingles.json +9cb20c9d41629d8b9426cb65829365d10966338f assets/create/models/block/waxed_exposed_copper_tiles.json cd21d9d2935b6d0103502e2731c11ea27ff64ecf assets/create/models/block/waxed_exposed_copper_tile_slab.json 0ec039ba59fb0028183433e52131ff355ace5bff assets/create/models/block/waxed_exposed_copper_tile_slab_top.json c51dbd34996ac4513234800e427ac308067d5e1d assets/create/models/block/waxed_exposed_copper_tile_stairs.json 68772d4352dc7ade995dfa57ba41a38ef819e855 assets/create/models/block/waxed_exposed_copper_tile_stairs_inner.json d932671822ba93b71a9c8b50e7207803a1c4dbab assets/create/models/block/waxed_exposed_copper_tile_stairs_outer.json -9cb20c9d41629d8b9426cb65829365d10966338f assets/create/models/block/waxed_exposed_copper_tiles.json +561beafce41b9e9c0b07bc6b7176dd4f6918c116 assets/create/models/block/waxed_oxidized_copper_shingles.json 7e0bab8109e322c6db5fe1d5999c06536c21c6eb assets/create/models/block/waxed_oxidized_copper_shingle_slab.json 42df32c4e2d1ffb2ee62748becfd1717118b440c assets/create/models/block/waxed_oxidized_copper_shingle_slab_top.json b55a733e3e68cfbd08d45bb9ac56deef9f728b60 assets/create/models/block/waxed_oxidized_copper_shingle_stairs.json 7b8745213af5aa7938fc04a295be6a087c72daa8 assets/create/models/block/waxed_oxidized_copper_shingle_stairs_inner.json d89419d48d6ee2f6747e7c93de8699db22ea3f59 assets/create/models/block/waxed_oxidized_copper_shingle_stairs_outer.json -561beafce41b9e9c0b07bc6b7176dd4f6918c116 assets/create/models/block/waxed_oxidized_copper_shingles.json +5cf92b628ff1f832966138a58ed87d747681274c assets/create/models/block/waxed_oxidized_copper_tiles.json ad6134598869711a12e2f95c9b5f25a0f7b8dd93 assets/create/models/block/waxed_oxidized_copper_tile_slab.json c17bac0fd6a20540813c6a1c000a553b7c5ac849 assets/create/models/block/waxed_oxidized_copper_tile_slab_top.json d5b30340364f5536e46bc67e777ef4fa20a36e04 assets/create/models/block/waxed_oxidized_copper_tile_stairs.json b40b315c23cbd3eb4658518bfac836f6091321a5 assets/create/models/block/waxed_oxidized_copper_tile_stairs_inner.json f4eaadab29b4f2e915237340e2d6f4aad4ba21d6 assets/create/models/block/waxed_oxidized_copper_tile_stairs_outer.json -5cf92b628ff1f832966138a58ed87d747681274c assets/create/models/block/waxed_oxidized_copper_tiles.json +9c73020e80c31cd710c218f9699ba9a795758ad0 assets/create/models/block/waxed_weathered_copper_shingles.json 897cfc177b073ca1bcb635c74108567f8748b5c4 assets/create/models/block/waxed_weathered_copper_shingle_slab.json efa57ba131c27e0064c0d958e69b10530a26ac41 assets/create/models/block/waxed_weathered_copper_shingle_slab_top.json 4ef11a7e3de630ad46b9179e8a9a34d55202f6c5 assets/create/models/block/waxed_weathered_copper_shingle_stairs.json f32a18c76cfaca2153f6321880a8da1347be37ce assets/create/models/block/waxed_weathered_copper_shingle_stairs_inner.json 9637f78e51ca7ed812e4c64c52e08f6fa0adbfc3 assets/create/models/block/waxed_weathered_copper_shingle_stairs_outer.json -9c73020e80c31cd710c218f9699ba9a795758ad0 assets/create/models/block/waxed_weathered_copper_shingles.json +9782a25341dd2ffb146430edbe6916932250c326 assets/create/models/block/waxed_weathered_copper_tiles.json 0c9669588972d4c2152bd2b043b8386b76a6e1c4 assets/create/models/block/waxed_weathered_copper_tile_slab.json 2d01a583cc948e9e0cb814cad968ed16a07dd46c assets/create/models/block/waxed_weathered_copper_tile_slab_top.json e26dd64495ff8801593e9c22203cbf364075badd assets/create/models/block/waxed_weathered_copper_tile_stairs.json b658c1022587bd670b5acee267607719c1544332 assets/create/models/block/waxed_weathered_copper_tile_stairs_inner.json e7ae89577be9d26a071bf96cbd7ed80293902b63 assets/create/models/block/waxed_weathered_copper_tile_stairs_outer.json -9782a25341dd2ffb146430edbe6916932250c326 assets/create/models/block/waxed_weathered_copper_tiles.json +9c73020e80c31cd710c218f9699ba9a795758ad0 assets/create/models/block/weathered_copper_shingles.json 897cfc177b073ca1bcb635c74108567f8748b5c4 assets/create/models/block/weathered_copper_shingle_slab.json efa57ba131c27e0064c0d958e69b10530a26ac41 assets/create/models/block/weathered_copper_shingle_slab_top.json 4ef11a7e3de630ad46b9179e8a9a34d55202f6c5 assets/create/models/block/weathered_copper_shingle_stairs.json f32a18c76cfaca2153f6321880a8da1347be37ce assets/create/models/block/weathered_copper_shingle_stairs_inner.json 9637f78e51ca7ed812e4c64c52e08f6fa0adbfc3 assets/create/models/block/weathered_copper_shingle_stairs_outer.json -9c73020e80c31cd710c218f9699ba9a795758ad0 assets/create/models/block/weathered_copper_shingles.json +9782a25341dd2ffb146430edbe6916932250c326 assets/create/models/block/weathered_copper_tiles.json 0c9669588972d4c2152bd2b043b8386b76a6e1c4 assets/create/models/block/weathered_copper_tile_slab.json 2d01a583cc948e9e0cb814cad968ed16a07dd46c assets/create/models/block/weathered_copper_tile_slab_top.json e26dd64495ff8801593e9c22203cbf364075badd assets/create/models/block/weathered_copper_tile_stairs.json b658c1022587bd670b5acee267607719c1544332 assets/create/models/block/weathered_copper_tile_stairs_inner.json e7ae89577be9d26a071bf96cbd7ed80293902b63 assets/create/models/block/weathered_copper_tile_stairs_outer.json -9782a25341dd2ffb146430edbe6916932250c326 assets/create/models/block/weathered_copper_tiles.json 045b812ddb1ca8dd6cd9b49852ddbd37f86cd2a6 assets/create/models/block/weathered_iron_block.json a569ddd725898a86f8745e46723edeff7fe7f2e9 assets/create/models/block/weathered_iron_window_1.json 133928d853037efb81022b69377669f0b16239bc assets/create/models/block/weathered_iron_window_2.json @@ -1824,51 +2521,37 @@ cf8477d6c7558ceba38416fae755567086a856a6 assets/create/models/block/yellow_sail. 467109ede866fb030d2cdc46c832643630d982b5 assets/create/models/block/yellow_valve_handle.json 23d6852eca1bf1480dc74ed51d15c098e26a520f assets/create/models/block/zinc_block.json 617330267f01a08062b05b8516082d7ebdab3d0b assets/create/models/block/zinc_ore.json -86b835fa8d2264feb2159262b069c6c2cf68e818 assets/create/models/item/acacia_window.json ab7e40e22fedad4ae69281eb6137e699110327a2 assets/create/models/item/acacia_window_pane.json feb7bd45dc6ec0542c7af648b371e54168641d1e assets/create/models/item/adjustable_chain_gearshift.json be9e4a7937dcb87bce696e6ad234c9eff8cd299e assets/create/models/item/analog_lever.json 626cc26c8a7a2742b991b432c5104981183f1eb6 assets/create/models/item/andesite_alloy.json -158270c9fa3022d1afb56002d0ea1db3366467aa assets/create/models/item/andesite_alloy_block.json 0a79ae7caa46f64085e0bd7d94018a46f53920b3 assets/create/models/item/andesite_bars.json -11c747281cbe2d96324db27fec020100b50977d0 assets/create/models/item/andesite_casing.json ab09b7886916048add1fa0ea9e87c4644a781031 assets/create/models/item/andesite_door.json 944cbae9f7c4bf7d1734d25645cfa6b0d0f2c33d assets/create/models/item/andesite_encased_cogwheel.json bb351157b7f6771be05b4cecef17b8610c3810b3 assets/create/models/item/andesite_encased_large_cogwheel.json af792bb7d70029e66cc8aa21ed61322f899fb134 assets/create/models/item/andesite_encased_shaft.json 31c9724ae43519a02f42cebfb0dc1074a66f94ff assets/create/models/item/andesite_funnel.json 113fb6cb131bc3cdf63f558be71b8d77f9ae64c9 assets/create/models/item/andesite_ladder.json -f187d676688c728804ab3758eb4b78a431c7ec21 assets/create/models/item/andesite_pillar.json d0dd86f6c7418c27c0f930cfd20e0867936eca3d assets/create/models/item/andesite_scaffolding.json 2ef7426efa3c2609e67d2eef73f6f84a1b13d46c assets/create/models/item/andesite_table_cloth.json d5375c3de6272a00f3e3787fee6b8255f828d686 assets/create/models/item/andesite_tunnel.json d6eb7105dd9b42adde48bd70e3f2fba70751c1db assets/create/models/item/asurine.json -8b61987c61ae461e4bea0fccf5b1bb3399ac9226 assets/create/models/item/asurine_pillar.json a8e9fab6ce8dc5da29b451c827663fb553669a23 assets/create/models/item/attribute_filter.json -2a57b4e07c5a853d4875fae7916cdb71f3b3f378 assets/create/models/item/bamboo_window.json 3baee1bf202692d9e14865b7ba1e2606f761774f assets/create/models/item/bamboo_window_pane.json 6913f9acbb272de28387918ce92984fa767b4389 assets/create/models/item/bar_of_chocolate.json def88cd2c79a1f0ed40bbf5a0332187dd1d6006e assets/create/models/item/basin.json 35a1e2cb2645a8386dfee2697b47547b3f9a1dd2 assets/create/models/item/belt_connector.json -f5dcb9096a52d5d2eab1e4204fbd1222e0d5094d assets/create/models/item/birch_window.json 9589b0f3d31028c1499a49298600eede6d84f7bb assets/create/models/item/birch_window_pane.json 641b85751f91c0b4931307548c12034fc56286bc assets/create/models/item/black_postbox.json -7ca635d45fef81e6681a492be6c7bb71fd0f4574 assets/create/models/item/black_seat.json 67256e7c62c3ed2cee1dc88c2437083966165f92 assets/create/models/item/black_table_cloth.json e2dc1a8db84d84d592bfd91a26464343b8706bc0 assets/create/models/item/black_toolbox.json -20fbeb136e85d146c0e041f7f1570b1d1fd34585 assets/create/models/item/black_valve_handle.json c31038397821b6abe296d2799aa81edf3c12d095 assets/create/models/item/blaze_burner.json 9d28754112688323a6b55ecb6742e918eabfd6a3 assets/create/models/item/blaze_cake.json 01637416bb932d861e9c9b10b256b2fdf4c96d44 assets/create/models/item/blaze_cake_base.json ef453775edb9342dc68e0e4ed7aa2e845b819fa6 assets/create/models/item/blue_postbox.json -de8beb7ef521822eb9b2826806baf1fa3344a45d assets/create/models/item/blue_seat.json b1059dd00b8b4102e345a3d4f3e903a92c372ea1 assets/create/models/item/blue_table_cloth.json a82bc56a503cd15d2354c86a49fc6d1d4ed22767 assets/create/models/item/blue_toolbox.json -2f90f781cd9b5d144a6cfd4748ae3a87c9f12ba8 assets/create/models/item/blue_valve_handle.json -d16ce54ed4e2546f168d3bcf7d748ff749565316 assets/create/models/item/bound_cardboard_block.json 8facd82128e77ed41de3bb92d7714e56fc58ada6 assets/create/models/item/brass_bars.json -136f97f26217c51c932d79bf715b2a1a92e6595e assets/create/models/item/brass_block.json -c876713c3b8ed6511679d1e3186e6d6031190dd5 assets/create/models/item/brass_casing.json 378a2f1820c9abdc1080c940e5a01e30c25ea5cb assets/create/models/item/brass_door.json 2bff62a6d695a0affa217569c764e37b584495f9 assets/create/models/item/brass_encased_cogwheel.json 14cae756c604d0ea39f640f7cedc11cd403562f1 assets/create/models/item/brass_encased_large_cogwheel.json @@ -1883,58 +2566,14 @@ b78e9274156f5027a9a3b6fb7725c57a7aecc8bb assets/create/models/item/brass_sheet.j 7085ab446db5fa59aafe9bbba41c0e0f43bf749a assets/create/models/item/brass_table_cloth.json 28e104d5041c1f4676704c0f6b4e2e80aac43106 assets/create/models/item/brass_tunnel.json 35c8539a0b2f927e65a43c3a2c3cb82db429c2eb assets/create/models/item/brown_postbox.json -fce64539b36fc8a5ffa39d7a3f73765818437cbf assets/create/models/item/brown_seat.json a126a50454ea449e66c6f6e36eb96bff96652c92 assets/create/models/item/brown_table_cloth.json 90c1ec317beed0b5735c8731e3115a695b7060f7 assets/create/models/item/brown_toolbox.json -9477ab491586f1314bebf4d58387425ae56d0bad assets/create/models/item/brown_valve_handle.json 1db479848369140bb913ba09f3f1d994e4ac864c assets/create/models/item/builders_tea.json -f5ff4e2ed2ea2e43b6d02f6a95ba02b2e4b611dc assets/create/models/item/calcite_pillar.json cc2692f7964f4266ecf00fcab176b1ef0b78673f assets/create/models/item/cardboard.json -607272f2b906fdffd46677d47a4e6ecb94184eff assets/create/models/item/cardboard_block.json -70ab4eb53188efef1a157823ce90e5fd09e35d3c assets/create/models/item/cardboard_boots.json -5c67ce75ffe3f5c9a32877ffdb4005b2a44d6483 assets/create/models/item/cardboard_boots_amethyst_trim.json -2027e70e42e1c931537e591c51b1f2d1aed6833c assets/create/models/item/cardboard_boots_copper_trim.json -881e17e4d8b2be53403833ee262a7a17040695bd assets/create/models/item/cardboard_boots_diamond_trim.json -ae9617e768f8a711d932a5137bd7946c7bb1fbe3 assets/create/models/item/cardboard_boots_emerald_trim.json -62dbafe3a1493be7d46270168e57ff1f866bc669 assets/create/models/item/cardboard_boots_gold_trim.json -dcdc125780505d55bf76302fe982b23083c08845 assets/create/models/item/cardboard_boots_iron_trim.json -86a5435fcf899530bd1caa3fdf83e1dee337f22d assets/create/models/item/cardboard_boots_lapis_trim.json -527602bacf19e6ddb40023e1ad9fd532d96699ed assets/create/models/item/cardboard_boots_netherite_trim.json -bf4ec4f542e5d96ca9b6b90e298526acaa8cb8b9 assets/create/models/item/cardboard_boots_quartz_trim.json -d0a89aae893a45b14173f2f104dc0bb72d14516e assets/create/models/item/cardboard_boots_redstone_trim.json -169470769f90bb6fa0e503c78d8dde4bf63c0e7f assets/create/models/item/cardboard_chestplate.json -37ba0d5584aabd317e984d46e2e56622c10c74d0 assets/create/models/item/cardboard_chestplate_amethyst_trim.json -e50df07949d1a0a7e54e5b1635827adf8c250583 assets/create/models/item/cardboard_chestplate_copper_trim.json -1b82a900bb783a55a32d308fbec4c103981ca0ea assets/create/models/item/cardboard_chestplate_diamond_trim.json -90f5afe6a3e8292a37814ae6b8d1ca78bf1279b7 assets/create/models/item/cardboard_chestplate_emerald_trim.json -84ac8525c149e6f630fa02ca53d1e0a0b5f55b3e assets/create/models/item/cardboard_chestplate_gold_trim.json -6327a6514a3c19e9faf31c5388103e1e8cc7d01c assets/create/models/item/cardboard_chestplate_iron_trim.json -0df84176624b1cb081f8bff881156fbe530fda43 assets/create/models/item/cardboard_chestplate_lapis_trim.json -f27591c2befb21f6aa944bd2f54e7c4f58833917 assets/create/models/item/cardboard_chestplate_netherite_trim.json -3ace2f1c1a773d5d9d2b4f3d6c93f742d9bd971d assets/create/models/item/cardboard_chestplate_quartz_trim.json -9e74713fbdc8d90697f264562316f991de51d49e assets/create/models/item/cardboard_chestplate_redstone_trim.json -0b46dc6ac222fcf998100f1656047058fb8ef1ee assets/create/models/item/cardboard_helmet.json -61fad07fcc7da51ed9806938c7c1d930481015d2 assets/create/models/item/cardboard_helmet_amethyst_trim.json -c185e1b969ffb78df3d956a5907486a5abe81d55 assets/create/models/item/cardboard_helmet_copper_trim.json -b5ecea23091e2fa7d0b004a73a210ec4cf970035 assets/create/models/item/cardboard_helmet_diamond_trim.json -1b908f938a492f1faddf7f47e44f99dd0e0cc700 assets/create/models/item/cardboard_helmet_emerald_trim.json -f7096241733b0623eade076fcc536c0a3dd9f252 assets/create/models/item/cardboard_helmet_gold_trim.json -079c0ea69a5c8a7d1bb2e1bdd23ccc9c92e036d5 assets/create/models/item/cardboard_helmet_iron_trim.json -4db478f4669c26edef502b87be277be314933cab assets/create/models/item/cardboard_helmet_lapis_trim.json -ab46809613299865e33dcca39df597a239174df8 assets/create/models/item/cardboard_helmet_netherite_trim.json -03d4eb863c7b4cfc60a81b270a569440f0c62c85 assets/create/models/item/cardboard_helmet_quartz_trim.json -2703a1c5c65fe5c74c03bfe8ab6acfc4e5849cf9 assets/create/models/item/cardboard_helmet_redstone_trim.json -9987b29466b2a83ef25c66f51086b26ccd2c5a5b assets/create/models/item/cardboard_leggings.json -6a98f395678073c3ec0c09556b38cc9ac9e63492 assets/create/models/item/cardboard_leggings_amethyst_trim.json -5e932da44be1022af8c97061caca61a97c99b6d6 assets/create/models/item/cardboard_leggings_copper_trim.json -e010c6af3e4c3c5cba26491c84c2c73c3c9386c7 assets/create/models/item/cardboard_leggings_diamond_trim.json -6f7a3ed21abf915f5803922db3a15fb6210162c6 assets/create/models/item/cardboard_leggings_emerald_trim.json -8176633be5a2ea548fa39df1d875a29851a7b091 assets/create/models/item/cardboard_leggings_gold_trim.json -56254db2e5432386b4de1ab00603f72255a8aa61 assets/create/models/item/cardboard_leggings_iron_trim.json -ca37276063d58483994ab51e3f72ef20521902c2 assets/create/models/item/cardboard_leggings_lapis_trim.json -55dfc8af30c392b0a70390d90c4239aba011d0ac assets/create/models/item/cardboard_leggings_netherite_trim.json -3f7d0d84790570dd92bb83071d6ecfddadce047d assets/create/models/item/cardboard_leggings_quartz_trim.json -47963712e6a470c5d14d7ea1bc8fff2a0553267b assets/create/models/item/cardboard_leggings_redstone_trim.json +39eadb54cec52d9e2a087fc71ef83341688f2781 assets/create/models/item/cardboard_boots.json +d6a3f139fca5ac6aff94d11d75fe239283bb4a09 assets/create/models/item/cardboard_chestplate.json +82236ea8e939c46f0d2c9142336190eca2a0425e assets/create/models/item/cardboard_helmet.json +416a4d33a2b3b1921285f96436853dd7690447ac assets/create/models/item/cardboard_leggings.json 123f7b8f5129e07beead05846744ff06161ec7a1 assets/create/models/item/cardboard_package_10x12.json 4f22bc19ebf19be0efc32b5d2fe449349e6f5b2f assets/create/models/item/cardboard_package_10x8.json 599d305569d025d8771993d0b56a377f910e2a95 assets/create/models/item/cardboard_package_12x10.json @@ -1942,7 +2581,6 @@ ca37276063d58483994ab51e3f72ef20521902c2 assets/create/models/item/cardboard_leg 9dccb21720687bbd516c8598c5449028077f8467 assets/create/models/item/cardboard_sword.json 1cdb2b8801551c1540bb9b2a9cc3d725a2b433e7 assets/create/models/item/cart_assembler.json 390a06d81c8c2a0ff83196bd0154dd292206e3b6 assets/create/models/item/chain_conveyor.json -74c265b6ea2df76ae1b2e8e920eaa91749f74c1a assets/create/models/item/cherry_window.json 7aecdbca8bc44bdf9a6926889bdbf4e74c4407a7 assets/create/models/item/cherry_window_pane.json a197d08618f4035182c91a6b16031eb681ab8a7c assets/create/models/item/chest_minecart_contraption.json 293cfa8b1073f8641a2c623b73a90907576c36ed assets/create/models/item/chocolate_bucket.json @@ -1955,7 +2593,6 @@ f05a7bf70ebc7db3beb4e208269d0ad3c42cc076 assets/create/models/item/clipboard.jso 3f00f6dfc3f9e2c601f30649cb6a88a44c330c40 assets/create/models/item/clipboard_2.json 9656ebb104b88231f2582a8a854b3d00383802f9 assets/create/models/item/clockwork_bearing.json 09a557848d21d15a8484b53fda67e9b86ab6b40d assets/create/models/item/clutch.json -83ebd837c4752b23d9dc7e54e54c182b02e0f26d assets/create/models/item/cogwheel.json dcaabf9723d27f154f012fb308edbabf9b3d76dd assets/create/models/item/content_observer.json de48f4b6fa26928ebc7d5d60e6a0767093430d65 assets/create/models/item/contraption_controls.json 33cfd6dcf11287f5e666c6a4f4af026b9b05f30c assets/create/models/item/controller_rail.json @@ -1963,7 +2600,6 @@ de48f4b6fa26928ebc7d5d60e6a0767093430d65 assets/create/models/item/contraption_c 68d0bd260e5062448ca9008f7cf44e963d941653 assets/create/models/item/copper_backtank.json 6c53b1a6ed28929b7a0a090edf6101e610f842fc assets/create/models/item/copper_backtank_placeable.json aaac7663d062731433c920d94a24b9b3a521dd8c assets/create/models/item/copper_bars.json -688e4dee99126b7507761de618d6788c18f17153 assets/create/models/item/copper_casing.json 68890c027cd6a094b484a237d3ff5daeb09622af assets/create/models/item/copper_diving_boots.json 23499699c6ea6a30673835056f5d0039519413fa assets/create/models/item/copper_diving_helmet.json 0e394c50a977eae45d3d8e6a62e256a5408ac994 assets/create/models/item/copper_door.json @@ -1971,14 +2607,7 @@ aaac7663d062731433c920d94a24b9b3a521dd8c assets/create/models/item/copper_bars.j ccdf08652511e5737a8489d86ea9422ade4f4ca5 assets/create/models/item/copper_nugget.json 86a770e9b2af1f19bf633f5cfeecd84848f73fbd assets/create/models/item/copper_scaffolding.json a4fd2f4f00e03b2ac5d863e93827d39a984cc2ff assets/create/models/item/copper_sheet.json -79d9f8667965072f12e51e6601b5c36f8acc125f assets/create/models/item/copper_shingle_slab.json -9fe6f0bdea4595b403ed2d2cbc2023a9abeb79f0 assets/create/models/item/copper_shingle_stairs.json -13b18ba2938e283d507fbca70518cf52198cdc71 assets/create/models/item/copper_shingles.json 9a33eeb0f7c682ee2f8c0abbfa174f8828acc2b5 assets/create/models/item/copper_table_cloth.json -a7147444fc28a4cce21b6cf38e9528537e27c352 assets/create/models/item/copper_tile_slab.json -7330324d6c64f0340d676ecef83a930515d9130e assets/create/models/item/copper_tile_stairs.json -19642e4ea5deecaf57059827c4c13a19d2e73822 assets/create/models/item/copper_tiles.json -08c35e85afe4eb2b106133c5d9c7d7c64ca9a915 assets/create/models/item/copper_valve_handle.json 5cec229a3117ea5987aa42288c070427ac48a5dc assets/create/models/item/copycat_panel.json 1b6707005830ca066a7e997c73391ca88c70bdb0 assets/create/models/item/copycat_step.json d042526836aa5261a49557e6c656ee06d6eeb2b0 assets/create/models/item/crafter_slot_cover.json @@ -1988,8 +2617,6 @@ ae5f96175f8b70144a940789aaa3956173906939 assets/create/models/item/crafting_blue 01fbc5c7662880fb67a8a38b909b0bd55864a34b assets/create/models/item/creative_fluid_tank.json ad620bd5eb32a41b0a8a130f49ab3dbb398907e5 assets/create/models/item/creative_motor.json 612778c4a390c3fc9de7ef40713375dc7be85270 assets/create/models/item/crimsite.json -e432e359b77e7129e18c1d4daf68d11c4a661110 assets/create/models/item/crimsite_pillar.json -9c77e6d7d56310b34468a6d52080e477e893494d assets/create/models/item/crimson_window.json cfad32c8024f9f1479aed6916735a4d75b16dc4e assets/create/models/item/crimson_window_pane.json 189ddf2f3c83608ddfe9e8d2fe88d8b4610ade13 assets/create/models/item/crushed_raw_aluminum.json 4e74e066349d0311064e21fd72aa40e249e2e830 assets/create/models/item/crushed_raw_copper.json @@ -2006,135 +2633,44 @@ aca5ad87a4e9e3d9518fb89f86c0174b96a7bdca assets/create/models/item/crushed_raw_t b6acd86be9e6cac8b9ed2bc6297d27941ca05f46 assets/create/models/item/crushed_raw_zinc.json b67e95801010eab58de02f2b0160bff3f008bd18 assets/create/models/item/crushing_wheel.json af189b0c04482064520d84546d81af8154824292 assets/create/models/item/cuckoo_clock.json -314fb287c7b16a6478fbefde0da80de8828b684e assets/create/models/item/cut_andesite.json -680fe77d50f7c3253ec4997f74761f962b784e15 assets/create/models/item/cut_andesite_brick_slab.json -3c1d56f9686bb2b97c168b0509ddfd06e80be9a0 assets/create/models/item/cut_andesite_brick_stairs.json 4222b965f8a18f78b92838e4642a28fa3e0ad648 assets/create/models/item/cut_andesite_brick_wall.json -e2840073eac2e6419cd312b3d0177d4c64a5346c assets/create/models/item/cut_andesite_bricks.json -c100e02ef9b05f4f6df3ddbbfe91db1032d4854b assets/create/models/item/cut_andesite_slab.json -f435a67b3d89d12b6e8cb5071a67e35f0918dc79 assets/create/models/item/cut_andesite_stairs.json df9084d532a085220280bc7bee579e1079fbf786 assets/create/models/item/cut_andesite_wall.json -025eedca45b222b91d93b9a3a89fac5ad328b152 assets/create/models/item/cut_asurine.json -022c56e7aafa7ca4cdd1a88426eb43f9e02c3cc2 assets/create/models/item/cut_asurine_brick_slab.json -3131e09a221c2f0a17cfc7277603f2e3c8164bc7 assets/create/models/item/cut_asurine_brick_stairs.json dc1f5f03acc1165606c48df97953164f6bd7f092 assets/create/models/item/cut_asurine_brick_wall.json -1ceb483f428448f00a08541fbcf4f4787aef3f1e assets/create/models/item/cut_asurine_bricks.json -e81d7df1f1b8281c38400713b09cbac59c4d53cc assets/create/models/item/cut_asurine_slab.json -cf534603fe71423e0ab80d431ab12394d0a6bb21 assets/create/models/item/cut_asurine_stairs.json 7ca803f5a7798ea034db6385a5f36a48e235c247 assets/create/models/item/cut_asurine_wall.json -707fb799ca44280cad0b817f29a7c75dd0f0ce5e assets/create/models/item/cut_calcite.json -f794423b242228c43345dc1f40653133fb7f3db6 assets/create/models/item/cut_calcite_brick_slab.json -8e9b46e52758ec7f21c3b84c212e2f6565bf71d9 assets/create/models/item/cut_calcite_brick_stairs.json 1447d21b7fc331528bfd15e5b9d694eb1a31cfb3 assets/create/models/item/cut_calcite_brick_wall.json -5678b9f76823efac2c6624acc7b2b911402112f4 assets/create/models/item/cut_calcite_bricks.json -c78c99c78a19097d890414b21270014b52bafd8d assets/create/models/item/cut_calcite_slab.json -e6a9144a4bb9e5af3f57d0acdb26d66dc4547217 assets/create/models/item/cut_calcite_stairs.json daf2a2513f6636d140c23b90ba87aad35476c498 assets/create/models/item/cut_calcite_wall.json -29f2bc72aa50cdf34d1d5bfd01a4512d5974dc65 assets/create/models/item/cut_crimsite.json -7c37d3de9674e70595498d1c46c5693d9f39a502 assets/create/models/item/cut_crimsite_brick_slab.json -b974c0f2f0e5119d9bac6a36946d4dfdd65b4b5f assets/create/models/item/cut_crimsite_brick_stairs.json c1289ddff572149b2171859689228615802dc825 assets/create/models/item/cut_crimsite_brick_wall.json -20bc810ca5b2a35a423e57f287e2f42ad9940b89 assets/create/models/item/cut_crimsite_bricks.json -8855eb44a68277668c77858715652d6851fa507f assets/create/models/item/cut_crimsite_slab.json -57101d3c2d570bc2c389c1e05e1354d79de70a0a assets/create/models/item/cut_crimsite_stairs.json a10cd65d675a05b9dfbdac67a2d9ca3b4381396a assets/create/models/item/cut_crimsite_wall.json -a4ad900cf65136835c259c1e349781538d537a9c assets/create/models/item/cut_deepslate.json -a63bbe474ca7d8ceafb6bfcb21a88841980fe8e6 assets/create/models/item/cut_deepslate_brick_slab.json -7c1ad49844eafbd87f8c69a077a8c18ccdd4a919 assets/create/models/item/cut_deepslate_brick_stairs.json 6a4ee2e810731e0702c1493237343a567cc736d6 assets/create/models/item/cut_deepslate_brick_wall.json -81b10b5d159db4000f4f6569b83fc7e8f702f015 assets/create/models/item/cut_deepslate_bricks.json -ff0d08d1b59de36b016f7952d2bd72d8e1eb1293 assets/create/models/item/cut_deepslate_slab.json -627c806a6eba8b730682821deb31627d75683e88 assets/create/models/item/cut_deepslate_stairs.json 9bdb85a688b09eb34eb8024a6808406118f78133 assets/create/models/item/cut_deepslate_wall.json -c33c48d71d98f4b8a84c7f0a4ee88918fed3e798 assets/create/models/item/cut_diorite.json -63bc297b782c40c513873b7f8fd8284abce01753 assets/create/models/item/cut_diorite_brick_slab.json -f604d088c8c7c6d847795459231d0df8c73d95fb assets/create/models/item/cut_diorite_brick_stairs.json b06be3da6017aa7fbc38b8aecda0d30dae313c13 assets/create/models/item/cut_diorite_brick_wall.json -e8a697df63b0b5fa74dbc70e76b55718a2cc388f assets/create/models/item/cut_diorite_bricks.json -4650f375365caeb237947f6e933d174ebbfbc1e2 assets/create/models/item/cut_diorite_slab.json -933d14f51272b39fc13e94d58f3100469d7cbe06 assets/create/models/item/cut_diorite_stairs.json 0cc44bb9ad0ed3ff11bc6113d0a9e31e99b169b8 assets/create/models/item/cut_diorite_wall.json -e2123180fd5312d1e67b3a030fcbc4b6f11aa8bf assets/create/models/item/cut_dripstone.json -a815b2a927853d6d82d8b69f862be3091c5c8caa assets/create/models/item/cut_dripstone_brick_slab.json -b8cb1b04eb869a06ded04c4c3acac6e5a315ee78 assets/create/models/item/cut_dripstone_brick_stairs.json 87fafd603eb4ba41981cd9c9371ac4618909f94d assets/create/models/item/cut_dripstone_brick_wall.json -4b5d7bbee5741b112e2cb354c5fe49c088fc9b2f assets/create/models/item/cut_dripstone_bricks.json -756c801f6bba006fbfd3486e95ba870909ab2902 assets/create/models/item/cut_dripstone_slab.json -c59d314e1b5cce1c3745ce164c2a094e17f7a003 assets/create/models/item/cut_dripstone_stairs.json 125b24d28a9957740855467440ad8508d21c24d7 assets/create/models/item/cut_dripstone_wall.json -2fbce0b481f7cf2cf4f0fd03c86ef743b7c30879 assets/create/models/item/cut_granite.json -3584117ed8a69c3842fde1d6accfaaa2c72e44f4 assets/create/models/item/cut_granite_brick_slab.json -c68d1c09b9091bc501279115be16f83508b88fed assets/create/models/item/cut_granite_brick_stairs.json 5a37b24319a8708e444902eae3596b68daaffd15 assets/create/models/item/cut_granite_brick_wall.json -d8860602cc52fac5a09354c56e78fdfd7d9cb6a9 assets/create/models/item/cut_granite_bricks.json -c2f6603e8cbfc0cdf5e5ef10c6a4baef9c917b6d assets/create/models/item/cut_granite_slab.json -66f8e6d556446441e157427437e9563075e2d6ce assets/create/models/item/cut_granite_stairs.json fe06c8aeab9e4c8a145375af46cbdaed701baad4 assets/create/models/item/cut_granite_wall.json -b5c3df9c28a14683a363769cad5d154af56b8da4 assets/create/models/item/cut_limestone.json -2822ebe1d4211f240e31866759e25add5f0fb56d assets/create/models/item/cut_limestone_brick_slab.json -694dfb73585167011d8123d64f5896697594f4ce assets/create/models/item/cut_limestone_brick_stairs.json db8851d6a1b7604ca1ba7615e1f162f6f5220801 assets/create/models/item/cut_limestone_brick_wall.json -7d026353711a464400e69c7e86c9b9c6aa70bf6d assets/create/models/item/cut_limestone_bricks.json -75584aa5e06168d8866b022fcd72377351b774d9 assets/create/models/item/cut_limestone_slab.json -1df9a186a146e597b48da4c4461f1a98ecf3646a assets/create/models/item/cut_limestone_stairs.json b70ac5462ef4d0363332656aa7cb82919f679893 assets/create/models/item/cut_limestone_wall.json -92bc693db4e0ba6164cd35d4f5fa0982f3b8f796 assets/create/models/item/cut_ochrum.json -1edc47c279fadde74322d3fa89ef776bdd6fb354 assets/create/models/item/cut_ochrum_brick_slab.json -4678e2a97c73139b458cea657a55f74659bc36d5 assets/create/models/item/cut_ochrum_brick_stairs.json 85044ec7033cd4c6aa913c4c4bb6c0e3a4386023 assets/create/models/item/cut_ochrum_brick_wall.json -3e8e00c602b1fbce888e6fe22d9525f1c025129d assets/create/models/item/cut_ochrum_bricks.json -e0e494fb7fa1767241507347318560335339a2a8 assets/create/models/item/cut_ochrum_slab.json -de7c5917bcb14f398d39e3932bfe5e1967ed7a24 assets/create/models/item/cut_ochrum_stairs.json 5a8f8c84e95ee0ab97106a801a456282f5ac207c assets/create/models/item/cut_ochrum_wall.json -1631a807135cf993d9a81068c65e78face2f24e0 assets/create/models/item/cut_scorchia.json -ac3a29573ce099ac57f59d0a2f1cdc0a453e0621 assets/create/models/item/cut_scorchia_brick_slab.json -d3a8a8e0e85aaaadccb18cdce33da54ae0e8a8d7 assets/create/models/item/cut_scorchia_brick_stairs.json 83be13f6cbd9a58e10869e4152066cf3b265f347 assets/create/models/item/cut_scorchia_brick_wall.json -5ecb9692e478e29d64aeb5867e8677671560755d assets/create/models/item/cut_scorchia_bricks.json -0fee2e7f8e80bbd33e4d928c8374e6dae65f0b1f assets/create/models/item/cut_scorchia_slab.json -88a6b3709bab76390ace6f641eac18d43c9d099f assets/create/models/item/cut_scorchia_stairs.json d733d43252bf27b6fb1d7e016dc77556c3d1eb71 assets/create/models/item/cut_scorchia_wall.json -ce75fb80c38c94bf6bf631eeb756909decaaaab0 assets/create/models/item/cut_scoria.json -d78a5126aefdd4cd182f9ec0ddda64df00d0f01c assets/create/models/item/cut_scoria_brick_slab.json -661d49b996f9c97a333e7e39dd13a0476db6b142 assets/create/models/item/cut_scoria_brick_stairs.json 3be69c075b479ac53c6201d7d7224d399f8009b6 assets/create/models/item/cut_scoria_brick_wall.json -81aa0bd4ec878754043a107466dcd87d49b3697c assets/create/models/item/cut_scoria_bricks.json -824bedfbeec53ec8f539fe73c0a3c3d927a21aa4 assets/create/models/item/cut_scoria_slab.json -15560f1251f18d53fe1b71adc6be5060c4d8fb94 assets/create/models/item/cut_scoria_stairs.json e35ebcc4f7f7b94623af85b181d916e48fbbb5ed assets/create/models/item/cut_scoria_wall.json -71284d3d6dba230dbecd01eb015e0e65877b820d assets/create/models/item/cut_tuff.json -4c7d5fadb0b0eaecf2055a0cd279f9ec130b93d0 assets/create/models/item/cut_tuff_brick_slab.json -6f32b83c9f82424c0e2a2e0a8813eb44c2ac4527 assets/create/models/item/cut_tuff_brick_stairs.json 9088296b7677bddf16d670858a619d846a134ef6 assets/create/models/item/cut_tuff_brick_wall.json -4de100799e290db3fd46923781a83e6a12654266 assets/create/models/item/cut_tuff_bricks.json -e9134027cc917e2e878456edb49bcfee382e73b1 assets/create/models/item/cut_tuff_slab.json -8235a34249197c100645b55ded5ff619a055d8a6 assets/create/models/item/cut_tuff_stairs.json a1626993eafa8d85dc950e17cbf78378ed64c7d2 assets/create/models/item/cut_tuff_wall.json -a343c74f1e55426330df18f522e6d2a81276c499 assets/create/models/item/cut_veridium.json -c1c5561ce31e237b7ea8f1adfb6a79e661b7f940 assets/create/models/item/cut_veridium_brick_slab.json -f633006045ccfcdf486d7a240217229d6eed717e assets/create/models/item/cut_veridium_brick_stairs.json 8182109a002317dd8d2767b3828f8c44166a053f assets/create/models/item/cut_veridium_brick_wall.json -3c3fd197f8e299ff90850e24c6507ea12f373123 assets/create/models/item/cut_veridium_bricks.json -410b949304faa5856028f7c42ab762b7498ffd95 assets/create/models/item/cut_veridium_slab.json -62697c0922b11537914d2f4f84faa0b909ee518d assets/create/models/item/cut_veridium_stairs.json 3921d61a26d48d999cbb2f6645611e53ea71978b assets/create/models/item/cut_veridium_wall.json 73c2eed9b6a906a519e27361211ae05bc6ed2d87 assets/create/models/item/cyan_postbox.json -eef3be2fa3b6424436a553e3c1bfee3979015962 assets/create/models/item/cyan_seat.json fb3660aa1b33ef63361d91598c2b46dd5b1c30d7 assets/create/models/item/cyan_table_cloth.json 265d5d6de4238442bb9b161dba0a2fc2f063df0b assets/create/models/item/cyan_toolbox.json -8beb6459822efe59d0f60749143d73c5390e39f2 assets/create/models/item/cyan_valve_handle.json -2e0a1bb3f3498454eb23dab5d4eb6fad98fe586c assets/create/models/item/dark_oak_window.json e30c50f79332cb2cd2815554af84747c58545a39 assets/create/models/item/dark_oak_window_pane.json -5b90f8778ae1c2dbd99da89407f12bfb4775b123 assets/create/models/item/deepslate_pillar.json -9b5b804fe75a3e748a0d9a6761ab46178e5f3850 assets/create/models/item/deepslate_zinc_ore.json 7ff5075e907b57d6b0f6fd0a31d0e46464afe634 assets/create/models/item/deployer.json aa44d681c3ccffe08aedbda093062b1a5ab3302e assets/create/models/item/depot.json 63e24083922af9d5300aea771bb63bb9962ba3e6 assets/create/models/item/desk_bell.json -85a5830ca034be9a0ed534186210aa975278b20b assets/create/models/item/diorite_pillar.json 2a992f0961b8bab5628e075da413c91e903e424c assets/create/models/item/display_board.json 0dd4d33644c9ec7dbf920d7fd7b713e4b413b330 assets/create/models/item/display_link.json eb750000addd1c25e79fc9fb277ccdcc3274852c assets/create/models/item/dough.json -5803643723c0aa65d6c531c1f9798556cd36d21a assets/create/models/item/dripstone_pillar.json 97ef1363d4a64103d2ec3b0e8640cf931d0c3f94 assets/create/models/item/electron_tube.json fa82ee6ea59876a9ea0f02d0fafd102ba26752f8 assets/create/models/item/elevator_contact.json d6c1c5ff9506a60fbdde4580dad39d97fc1832d3 assets/create/models/item/elevator_pulley.json @@ -2142,14 +2678,7 @@ d6c1c5ff9506a60fbdde4580dad39d97fc1832d3 assets/create/models/item/elevator_pull badd4326fac0b0a1590a2e9bce7c2cdd4e4562f3 assets/create/models/item/empty_schematic.json 5daa4b49db850923319916aaa9842c33f99e0a00 assets/create/models/item/encased_chain_drive.json 7ec3ed4aaab72d76f6414447bbb3ad7887adf61f assets/create/models/item/encased_fan.json -3e1fdcc80fd68199b1890bcc830f78c48e7c0e43 assets/create/models/item/experience_block.json 9775e83414c0febb5c5b832437b0580e91bcbff3 assets/create/models/item/experience_nugget.json -721c8ac46bf23abec2bbf4cff6dbfdf96cc569a6 assets/create/models/item/exposed_copper_shingle_slab.json -6e1c7fcd8da84dc2d49adb9802ce4fb431eddae1 assets/create/models/item/exposed_copper_shingle_stairs.json -87add851ae3271d733c9e6888865c288b6716f3b assets/create/models/item/exposed_copper_shingles.json -a443633d90ef9ac2a866b69b2ecdfad1841dc3e1 assets/create/models/item/exposed_copper_tile_slab.json -9bb425a14635fc8b36a9a95f3d0c54e0b129b7b4 assets/create/models/item/exposed_copper_tile_stairs.json -fa7ffb172a43774cc07a2bb201e7010a2549001d assets/create/models/item/exposed_copper_tiles.json 8b64a93d9b6e33e3caa66adb7a0cc8c5cd473023 assets/create/models/item/extendo_grip.json 9114fa2e92ea4b7bf949b2e5a26290b0bade1af3 assets/create/models/item/factory_gauge.json dad31483f65baaf187e6553e3cd301c5d69e9db4 assets/create/models/item/filter.json @@ -2160,7 +2689,6 @@ dad31483f65baaf187e6553e3cd301c5d69e9db4 assets/create/models/item/filter.json ddeba2ef1d185629be5c88aeb2105fe0aaae3951 assets/create/models/item/framed_glass.json 02a88f5c9aab6fc2f6cbbdaa871fd67476c9a9c2 assets/create/models/item/framed_glass_door.json 3ed4300d2fb60b4e2761fd7a2d1f116fecea150a assets/create/models/item/framed_glass_pane.json -127386f4dee6c305023e45ad6b2f04fd6d4e5009 assets/create/models/item/framed_glass_trapdoor.json b17d9fd1a92db0965f2e5da6215956b0451af29e assets/create/models/item/furnace_minecart_contraption.json 7b3a197eed9dec75f95aaed8e438d49d46948f1d assets/create/models/item/gantry_carriage.json 8fb838ee0868f371eb538f98ffeeaa6d0cfa5f0c assets/create/models/item/gantry_shaft.json @@ -2168,77 +2696,41 @@ b17d9fd1a92db0965f2e5da6215956b0451af29e assets/create/models/item/furnace_minec 41438bcba9657f3db9ae35cc20b03dced22c99db assets/create/models/item/gearshift.json 7c850a41a754e46bb9c9f257ed621e37a1b9506a assets/create/models/item/goggles.json b1ae37998326c8ca054e57b0cbff0b51cad98625 assets/create/models/item/golden_sheet.json -85c301898775d5720d4d11c1c555b331a5c2e93b assets/create/models/item/granite_pillar.json 44173ca711aa497d08ca3b8a9613290378072870 assets/create/models/item/gray_postbox.json -b8d6d2d163e2ab5f654bbc4eda9ad63f8064d27c assets/create/models/item/gray_seat.json 4a9aa604745afcb19c3495a879013e263415f214 assets/create/models/item/gray_table_cloth.json 6492f86b693f924d0222d0ca1d16fbe33d797b1a assets/create/models/item/gray_toolbox.json -2a9500f9630b1da44615c7c9ca145b56324c46bb assets/create/models/item/gray_valve_handle.json 1a97f63df2977ac2f2e3363c61a7e36bf60d3ce3 assets/create/models/item/green_postbox.json -2843370b0e693e1ba1777c26416914edbd87c4f9 assets/create/models/item/green_seat.json 334fd81d5e6574220ee5815f1452b4f4aa7ad223 assets/create/models/item/green_table_cloth.json 561e0579101bf602b252c0b9a5eec468c89d0e40 assets/create/models/item/green_toolbox.json -7d3ddad087b4d2c6a32f97092533cbfb5de0cb3b assets/create/models/item/green_valve_handle.json -dac0331061c464e6d3e2070b232781c632840191 assets/create/models/item/hand_crank.json 9e352162c8135773a4eca41871beea8f3ca650ae assets/create/models/item/handheld_worldshaper.json +dac0331061c464e6d3e2070b232781c632840191 assets/create/models/item/hand_crank.json 7bb435c53cbf935d80a28746125aebbd6263e45c assets/create/models/item/haunted_bell.json -2e97629313eab1a4ac4b38785dbe7ed45346e625 assets/create/models/item/honey_bucket.json 81d67fb0e59f25762a412990884813c72d399d55 assets/create/models/item/honeyed_apple.json +2e97629313eab1a4ac4b38785dbe7ed45346e625 assets/create/models/item/honey_bucket.json 70185e640169d6253f06fb98f31b240f4807a53e assets/create/models/item/horizontal_framed_glass.json d47884b13fadf545bd585cd9ae347368924b04b0 assets/create/models/item/horizontal_framed_glass_pane.json 58b6f4ec2af3a69ae7145fb25d73451b6e8a2834 assets/create/models/item/hose_pulley.json 14ae1ba5e842715fc4526b19e20c74d10102eb4a assets/create/models/item/incomplete_precision_mechanism.json ae5c5925ecf775a4f5c3dc3c79d9766d7dd34ab6 assets/create/models/item/incomplete_track.json -43173d18384817288a9ba687da77a4fab31b1957 assets/create/models/item/industrial_iron_block.json -4596b83d7da43a670f2274c8389cca9897ae379d assets/create/models/item/industrial_iron_window.json 199e1b60315fc2d016b69d2d60fcb790a6e075fc assets/create/models/item/industrial_iron_window_pane.json c6e3e4ca8b3dfdaaa943faa3dc89c0b2e6f2b5c4 assets/create/models/item/iron_sheet.json -d1fbf1be53208c3ab5384dfd6be4d980c858941c assets/create/models/item/item_drain.json 5adda29ca25d00eb41884d0b7ad4a471e250ae10 assets/create/models/item/item_hatch.json -908dd0a4eafd868d280e25cfb7721f20b649560f assets/create/models/item/item_vault.json -5fba1fa33e360c2744ec74d7ccb63f9baa295546 assets/create/models/item/jungle_window.json 1a76bf2c7cf1036c458651536a7be8511a39d551 assets/create/models/item/jungle_window_pane.json -26c3f75074779ec0286e19219bd277147bfb9e96 assets/create/models/item/large_cogwheel.json 23f9028ae83a1723071c67cb6a1742731969e21e assets/create/models/item/large_water_wheel.json -33978f928e1f548a2b53081d6a7517e41d875ec3 assets/create/models/item/layered_andesite.json -c4282864fa5dd189b851a2494e55d4cbcb67ad50 assets/create/models/item/layered_asurine.json -1baba6ebcb0d9f9caea736ede395032d91138b7d assets/create/models/item/layered_calcite.json -0b125c352a50dae3b7473ae203f411f6f7a49936 assets/create/models/item/layered_crimsite.json -e57b9a96c7ce0eb85f7dd3dfc0c396ccc42e047d assets/create/models/item/layered_deepslate.json -595fb61683e4dadeca1567fe86c03b7d0cf61c65 assets/create/models/item/layered_diorite.json -8d1e8ee93322492c3a759dbf97a88502054a818d assets/create/models/item/layered_dripstone.json -a22638fd361a8185175e107a8ee092a9ac030b7b assets/create/models/item/layered_granite.json -082a810be93074d9be64bafd04aed9e01a61787f assets/create/models/item/layered_limestone.json -5dce9fcf047617deb7598f6444b6dc45ccba2a45 assets/create/models/item/layered_ochrum.json -2d19b81d7452d83908b11611fa30f36e7e05e3c2 assets/create/models/item/layered_scorchia.json -14494272713544a1595d654fd397a986b2da0951 assets/create/models/item/layered_scoria.json -b1174d783c62dda84aafd4259c622197f4664421 assets/create/models/item/layered_tuff.json -952b07dbf9ecc1883deabaa1344667f13936f7f2 assets/create/models/item/layered_veridium.json 623c937db944651cf1075b3875afe002db527ed6 assets/create/models/item/light_blue_postbox.json -b44a9f1bd9079f3533d7f708d76eb19a864e5ebb assets/create/models/item/light_blue_seat.json df2a3c76b7dbe1f5f6556436e7db3b72288b2232 assets/create/models/item/light_blue_table_cloth.json dae914625ff1bc3ebe1463485cad4526a7d7e9f5 assets/create/models/item/light_blue_toolbox.json -1d94314f185151eb9dcabcef950abf6f86c3c836 assets/create/models/item/light_blue_valve_handle.json b56a28924b0b1b2530ebac7834e011700b09b966 assets/create/models/item/light_gray_postbox.json -1747bcdea3b1d3f5dfb786102069e07198d36dfe assets/create/models/item/light_gray_seat.json cc8834024208662cb100f7cd38a04637da3b6852 assets/create/models/item/light_gray_table_cloth.json c8513eb1c89652783e26d7dcfcf64afa97619bc8 assets/create/models/item/light_gray_toolbox.json -3774d23e76b5712e7004e333e0a770f2230c2998 assets/create/models/item/light_gray_valve_handle.json +8f53caad3899a30be5087a0ba155080834418cc0 assets/create/models/item/limestone.json 26b8e1daf9cc4b206fb5f62904c7f1701ba93e67 assets/create/models/item/lime_postbox.json -32cd55a1c97a31a13ad106a457ec9925aa91f6d3 assets/create/models/item/lime_seat.json a0843c3731fa3c4d23bc2b91fd68410fcf1df149 assets/create/models/item/lime_table_cloth.json 931d187c11cb95a0eeae8f256187ef551b42007e assets/create/models/item/lime_toolbox.json -d0f4148bdb0a905e68f54b5dfd829fd47e528fea assets/create/models/item/lime_valve_handle.json -8f53caad3899a30be5087a0ba155080834418cc0 assets/create/models/item/limestone.json -fba1e7d1cad39c89976b427db62544d80f47ad5d assets/create/models/item/limestone_pillar.json -1d30f9b525e8e9736b34a92f848e235c71fd6bd8 assets/create/models/item/linear_chassis.json 8f622f5f79446f6060d9e8815205fce919c8c829 assets/create/models/item/linked_controller.json 538e28af9013a43c258a659cbe67671991f3eee7 assets/create/models/item/magenta_postbox.json -ad6fd371ee989c9c3c21e762273e8a4e903f0af8 assets/create/models/item/magenta_seat.json c50cb6b0285ee3a2b7d7f592ee48672d66e02af3 assets/create/models/item/magenta_table_cloth.json 7c0e3f91e5ab029473736deffb2b2aab9d4763c7 assets/create/models/item/magenta_toolbox.json -6d82582e5afea919927606b20a74cbda5223956f assets/create/models/item/magenta_valve_handle.json -a4ecba2ee36699401de661b89065bf0738487a87 assets/create/models/item/mangrove_window.json a8d3d6f1329c75d4d5a1db3e7fad40eaeca53716 assets/create/models/item/mangrove_window_pane.json d5b1665cdcf03baef41a8d3fbbdcc747cd6867f8 assets/create/models/item/mechanical_arm.json 95d437fffd455e5a22d288bb7683fbdce211fa8a assets/create/models/item/mechanical_bearing.json @@ -2247,7 +2739,6 @@ d5b1665cdcf03baef41a8d3fbbdcc747cd6867f8 assets/create/models/item/mechanical_ar 16d2bbc82369aeedb8f194c625666867e8ccbafb assets/create/models/item/mechanical_harvester.json 7673e14a84a38a603804d28ec288ac701a1dbc83 assets/create/models/item/mechanical_mixer.json 4f3f62fc36717797d7e731d80b2a1396ddb34c03 assets/create/models/item/mechanical_piston.json -a5637c3d0477113ef87311510892256476c30e17 assets/create/models/item/mechanical_plough.json df4da272a430c5af74d7f456278589cf09691eed assets/create/models/item/mechanical_press.json 3a9bdf4c1283a74cb9a70c0089b3b00fb6e0a3c7 assets/create/models/item/mechanical_pump.json 5a69999e11638137b488d4158ab8e659aa9ff32e assets/create/models/item/mechanical_roller.json @@ -2264,110 +2755,49 @@ c11656a940ef54a023634376c742b3fb17201f92 assets/create/models/item/netherite_bac 7d68ea71d2a468260b9eaf72e02f08246ddacb49 assets/create/models/item/netherite_diving_helmet.json f80358eba19bc8d1741e4e25753866799631a118 assets/create/models/item/nixie_tube.json 33c5dfa7ef718fb29cf59bb0c04ebd88cf20eb1c assets/create/models/item/nozzle.json -39626402ba637abced828902d9d657ab09edcadb assets/create/models/item/oak_window.json 7d9eef77eb18dd5c768e48b5871ca2dcdd1a136c assets/create/models/item/oak_window_pane.json af50363d603d61340b336569d58c1febde253665 assets/create/models/item/ochrum.json -62ec1afee14f9de3f5b02ee930d002a240a3c337 assets/create/models/item/ochrum_pillar.json 226f99c241b1d8b03d8fc57db32c1bee0721b64f assets/create/models/item/orange_postbox.json -56e7d28824d3fc566b5f551babbe423a550ef08c assets/create/models/item/orange_seat.json 9f122183a1b04ac6346631db4f505e53ed333acf assets/create/models/item/orange_table_cloth.json 96cc543d5afed90a022ece7b8671cd47a9b6fb68 assets/create/models/item/orange_toolbox.json -7e767ca9e0ddb769b38fabd9289648ac63f5413d assets/create/models/item/orange_valve_handle.json -82152bca4310111d91584a2a78f05e158bb4bd90 assets/create/models/item/ornate_iron_window.json ca749a88faeef441c55c0527d81257187938b6b0 assets/create/models/item/ornate_iron_window_pane.json -c9c7ccdb68de2e77cd9f7053fab19493dd30a985 assets/create/models/item/oxidized_copper_shingle_slab.json -89c5f7a0a28f238ebed2641e243a47e4be2ad5ab assets/create/models/item/oxidized_copper_shingle_stairs.json -09b3cd8ff7b29a6dd59f739a95bb708646d23537 assets/create/models/item/oxidized_copper_shingles.json -f1af7c5f3840efc3ae07940ee6719eb3417a0e1a assets/create/models/item/oxidized_copper_tile_slab.json -ef2fe68d407a03bf1ed8f2d2f3e7323777d061bb assets/create/models/item/oxidized_copper_tile_stairs.json -1c3428e2aed32a013631db012642a34d4eaf0785 assets/create/models/item/oxidized_copper_tiles.json +b21a1f3ee7de3e17f69d27fd13ae6b23b62aa22c assets/create/models/item/packager.json 5b974e55caffdbfc2156eb8b59dd99db12243bd3 assets/create/models/item/package_filter.json 7fd76e7d2e6c6d94352f1fa08d096b63616ad01e assets/create/models/item/package_frogport.json -b21a1f3ee7de3e17f69d27fd13ae6b23b62aa22c assets/create/models/item/packager.json 76aeceb41bb7df873dbafe1bd5e26deb24abf93f assets/create/models/item/peculiar_bell.json ab6c05a0468f3f4295a07adb362fa2d36cf6e3e8 assets/create/models/item/pink_postbox.json -df13d4281dc45041ecd93504d45daef61d070581 assets/create/models/item/pink_seat.json d142627de73dc821281d64ab54fe9956936253b4 assets/create/models/item/pink_table_cloth.json 842afb2a345dbaba857e90f7dffa724841ef7b2d assets/create/models/item/pink_toolbox.json -6b85a0da81b2d18fb54eb05e187a2ce8cd7b09eb assets/create/models/item/pink_valve_handle.json -9e8b4c1a0bbcb0ea9b15aec174d8f98b572133d1 assets/create/models/item/piston_extension_pole.json -c146c83b6e22b08663586c068a49e4f8b13b62aa assets/create/models/item/placard.json -e7af5e60ae5bea6818e2130f2186b0027ad11cb7 assets/create/models/item/polished_cut_andesite.json -bea24ec6f8f388bc62498a934b8b8bf931bf8170 assets/create/models/item/polished_cut_andesite_slab.json -58a624985eef4c41cb0738133566e880dee421f1 assets/create/models/item/polished_cut_andesite_stairs.json d3b2e24f153f9e288fb56d474f0b8feeccfae7ae assets/create/models/item/polished_cut_andesite_wall.json -2de98d6bf74dade4b1e94f419b4511966e095f06 assets/create/models/item/polished_cut_asurine.json -39483db3944873b7ef99e67fe7e23db9b49487a8 assets/create/models/item/polished_cut_asurine_slab.json -30caf1cad8d09ee7992a5d0aee329da852bf7226 assets/create/models/item/polished_cut_asurine_stairs.json 8cf5b122c024ff7c398ad9a185b5d0267fee401a assets/create/models/item/polished_cut_asurine_wall.json -5745cf6602e2aadc6897c3951e9d23648371a77f assets/create/models/item/polished_cut_calcite.json -a6961b6562ba86e47e2f3bd3524adfb946c5fb7f assets/create/models/item/polished_cut_calcite_slab.json -9f142b570a24cd693e4fc0e46d41101249cc546c assets/create/models/item/polished_cut_calcite_stairs.json ea6d092404ce471d8d9cf912a24e85100e559515 assets/create/models/item/polished_cut_calcite_wall.json -0d75b2cdf2ee0ca9366b26c1f7042bb9b3e3753c assets/create/models/item/polished_cut_crimsite.json -4eaf830038b0684b8be5a37e8b62280f454c0d94 assets/create/models/item/polished_cut_crimsite_slab.json -01e7053aaa8d1583714be17b445cf90312540f9e assets/create/models/item/polished_cut_crimsite_stairs.json f76d84032f0b26e8a694b3975b1566fff5ece685 assets/create/models/item/polished_cut_crimsite_wall.json -fdc01c9d9baf014168558962f302c6a9b2cd38da assets/create/models/item/polished_cut_deepslate.json -d01c305db85a2be216849606b068e6670fdc6bc1 assets/create/models/item/polished_cut_deepslate_slab.json -d43b7a19e39fab494df52bbeea082436caa868ed assets/create/models/item/polished_cut_deepslate_stairs.json 4df1fa4deb87b12550b55b5f6700320e99a37880 assets/create/models/item/polished_cut_deepslate_wall.json -a3dbfb3fd5d6cb27e9ce47e75e2e16d2b4d65fa9 assets/create/models/item/polished_cut_diorite.json -61195beac08641af7a1f13552a4b0077897e8552 assets/create/models/item/polished_cut_diorite_slab.json -99b8f22e26bb0fc48f036d90a692d990bf552451 assets/create/models/item/polished_cut_diorite_stairs.json 1329f356bf861be8d364bf3b459d76ad3ca4c0f1 assets/create/models/item/polished_cut_diorite_wall.json -71927f3fd3380836c900415606eab949ec86e25d assets/create/models/item/polished_cut_dripstone.json -224cdaa14e176d89a7d2f67c177ca9076da21ea8 assets/create/models/item/polished_cut_dripstone_slab.json -1e81eecf324f4932faf19b85f289fb9a6fa6fe73 assets/create/models/item/polished_cut_dripstone_stairs.json 22c3d7380a8649113a3e1503691433da695bc550 assets/create/models/item/polished_cut_dripstone_wall.json -775004268b0c6bd967d64f39e3608874a8d22124 assets/create/models/item/polished_cut_granite.json -cde5e71f2d1ba95a96a4f8d5e448263e674d632c assets/create/models/item/polished_cut_granite_slab.json -8a6a0ae23ad011c4f37f4426b3c341fa41a5fb9e assets/create/models/item/polished_cut_granite_stairs.json 6db86ac9c0cb5c1ac70d111667f29e702953b493 assets/create/models/item/polished_cut_granite_wall.json -6cdac5d468fe1048f28b97f25c492461935f3d3e assets/create/models/item/polished_cut_limestone.json -3cc8a3ac60048ad2ac53b951b34e4558484d512a assets/create/models/item/polished_cut_limestone_slab.json -6b23a45d715b347205d88322ba5357736038bdcc assets/create/models/item/polished_cut_limestone_stairs.json 621229d04220d9461f86a11c2a0dedcecdf55c70 assets/create/models/item/polished_cut_limestone_wall.json -fec9427e82dc7482d51bc6a69d5f8064c0bb5169 assets/create/models/item/polished_cut_ochrum.json -fb43ab3e2e47855f701cff43b030c96d06544de7 assets/create/models/item/polished_cut_ochrum_slab.json -46feb1f7cf17b1891e0a13b91f7ce0ae4788859f assets/create/models/item/polished_cut_ochrum_stairs.json 499916f4d1246048904874d1dd96043018fce084 assets/create/models/item/polished_cut_ochrum_wall.json -7ee7f71b331268b83c4d88e84aa61cd2b0d84039 assets/create/models/item/polished_cut_scorchia.json -465ce7731f07c5d0c30baac9bbe98ce3de7d1867 assets/create/models/item/polished_cut_scorchia_slab.json -1f9183d7391877edf537d6fefacefacd6294bd69 assets/create/models/item/polished_cut_scorchia_stairs.json f9c637017fef273a5db10e4274b114c53b816be1 assets/create/models/item/polished_cut_scorchia_wall.json -77930b949fcfd26f92948d579e0ba1ea469529bf assets/create/models/item/polished_cut_scoria.json -4534ba5dc2ef9f3e82be3e0ad7a2a822f37eb928 assets/create/models/item/polished_cut_scoria_slab.json -c7cd8ddbbb743d496967342fdb6429fee30c2cd4 assets/create/models/item/polished_cut_scoria_stairs.json 3f798afe8f9289886466655c500f72372739e276 assets/create/models/item/polished_cut_scoria_wall.json -974f2e2f73274d41958155ed4b1293c20c4ac17d assets/create/models/item/polished_cut_tuff.json -5f9ec4f49e7f1d9dbf47eee3d6b853109322d652 assets/create/models/item/polished_cut_tuff_slab.json -885dd48c9f6c6c042bdefda92cfaf99d7279ffbb assets/create/models/item/polished_cut_tuff_stairs.json 4b6667928da0ce360aa5e2a0386c5d4dcdb84532 assets/create/models/item/polished_cut_tuff_wall.json -922ed7985f52aca87cfd058facde3e8831ca7e52 assets/create/models/item/polished_cut_veridium.json -4c6ae9e84eb2a6bfbb1b3ad5333bcba8ffce0cc3 assets/create/models/item/polished_cut_veridium_slab.json -a8301c6a6829cd38756de308ca295941ca0feaea assets/create/models/item/polished_cut_veridium_stairs.json 6246017e60e6c16ee890bcd069706328ecf74f83 assets/create/models/item/polished_cut_veridium_wall.json d4fab67193aa83af93250d85c5afcb726ff02e80 assets/create/models/item/polished_rose_quartz.json e367355acdd2206b003e6e581db6fd0755ed87e4 assets/create/models/item/portable_fluid_interface.json d4c6b58e05da230410a2e8338be9f829924eb936 assets/create/models/item/portable_storage_interface.json 7b42172683521605ec006d62b7b3444c0f45ad35 assets/create/models/item/potato_cannon.json 28b870dd4da7697855bffb4fe3a08cefbe862e88 assets/create/models/item/powdered_obsidian.json -a06275da5e5cec7c17edaae8b5a693a3eeff2fe2 assets/create/models/item/powered_latch.json a1c6fd9b035eed7de732f4080cedaa118a2bc559 assets/create/models/item/powered_toggle_latch.json bd70b798ca9f73f4e5aabc30e286487f5363122e assets/create/models/item/precision_mechanism.json d9a736e7a6fc70e0848de3e318c739d58b1e563f assets/create/models/item/propeller.json 34c09fb1eb46ed362aa384958c2ad2cc96688abb assets/create/models/item/pulp.json -9b41eec5759887be9bae3d27654bf478a7eff676 assets/create/models/item/pulse_extender.json -ea76bd3bd9e5bea4d64d91347d473b538e926b02 assets/create/models/item/pulse_repeater.json -6ff9ce0cc633ea39b779b2e873a1d0fd7cfe7119 assets/create/models/item/pulse_timer.json +b0a21b488bbefe7ac36f481149819454ed1ee84c assets/create/models/item/pulse_extender.json +ea8198f088f63bd0a13def975d4dfee3ff0f174d assets/create/models/item/pulse_repeater.json +2c1cb5115b9b04cc4a87dc4f0c866a73fe3f38fa assets/create/models/item/pulse_timer.json 8496f6c5449a70eef12e9c68ba46eee2f365fb77 assets/create/models/item/purple_postbox.json -7e165f83266edf34bb03fa3e8d2a83d44829c10a assets/create/models/item/purple_seat.json 0d688a25e03c9f0e7059998a44a5be31e570a04d assets/create/models/item/purple_table_cloth.json d75c4969334f2ee1ae4a3d8ac28b001735c76b97 assets/create/models/item/purple_toolbox.json -ebffb05119f499fcec051a4337aadc47654baed2 assets/create/models/item/purple_valve_handle.json f91405b9aec1e0142c1b90582e03a1973251da05 assets/create/models/item/radial_chassis.json -1c984ea9dbaec02e88dba1b81906c9acca7ed672 assets/create/models/item/railway_casing.json 87c4c0e13441cf0238103ca065c0c16f80f60f26 assets/create/models/item/rare_creeper_package.json f15145349b717dbd58b696019d38c7c8c506dee2 assets/create/models/item/rare_darcy_package.json 8bb602b530ac2c1301776b83673ef062b7b0ace6 assets/create/models/item/rare_evan_package.json @@ -2379,255 +2809,89 @@ d3274003067a943d749ba5d23b5abc0fee8727a2 assets/create/models/item/rare_thunder_ 95aae4907a2435e31f079411dd1b3625ab2689c4 assets/create/models/item/rare_up_package.json 48ceaaead35ae1422542a615c9db55bd88f464e6 assets/create/models/item/rare_vector_package.json 5f8e5283fbebb452f1a1141b33ee73f08879c75d assets/create/models/item/raw_zinc.json -4631d67976cef148c346a7016baaa6703e4f243e assets/create/models/item/raw_zinc_block.json +9dc6c52e258b00cac6ed23147983045c43218b5d assets/create/models/item/redstone_contact.json +f8f733364bdd32b2ad597e81103bc02344ce63bd assets/create/models/item/redstone_link.json +ae0ba4827a81bd51c5c01178c2ccdae3a722628a assets/create/models/item/redstone_requester.json 4b73ee9cc2651a3d1a97476d100f9c4d7e2b2efe assets/create/models/item/red_postbox.json 8d00eb1a10055a802556eab10e13f522d12acd1c assets/create/models/item/red_sand_paper.json -b64a054c92cbd2e055502d470f3921d1077e63a1 assets/create/models/item/red_seat.json 359d9bdb2496140e297a1e5a98c9563bc09d56b9 assets/create/models/item/red_table_cloth.json ac4695cc465d094b4adba1a4e9efec42c916f37d assets/create/models/item/red_toolbox.json -02473f42ef4b53dc809c7c58ae657c014bfaf652 assets/create/models/item/red_valve_handle.json -9dc6c52e258b00cac6ed23147983045c43218b5d assets/create/models/item/redstone_contact.json -f8f733364bdd32b2ad597e81103bc02344ce63bd assets/create/models/item/redstone_link.json -ae0ba4827a81bd51c5c01178c2ccdae3a722628a assets/create/models/item/redstone_requester.json 9926bbe6dad7c4c1a146492116d232e941c80d2b assets/create/models/item/refined_radiance.json -bf827486dc7a1b3aeae577844d2dab2a97051db9 assets/create/models/item/refined_radiance_casing.json a982c29763d90556cca03074c168462a52cb9526 assets/create/models/item/repackager.json 69dc8139280bce3a7e08532afbbc5c41e7942be1 assets/create/models/item/rope_pulley.json 7a93e1b9557422f6b5dfc17e44524805ec4575c6 assets/create/models/item/rose_quartz.json -bfbe599cada68962c66cbc6a3e88019fbd9cffd5 assets/create/models/item/rose_quartz_block.json -bddc983c3d285eb14d9153f062ca6d727e4caf3f assets/create/models/item/rose_quartz_lamp.json -d45005a89e2c0d29944e0112be274365e0e318a5 assets/create/models/item/rose_quartz_tiles.json 33f17e0ab46d9bde5f3ef76d4501c72a4325087e assets/create/models/item/rotation_speed_controller.json -872b9714eb8e7c55cfb10c83be7e1698857ca028 assets/create/models/item/sail_frame.json 670e978a34faf6a3acd7880b2f94c2574178d586 assets/create/models/item/sand_paper.json 6854451e331242ec50c186a545538024b07ec123 assets/create/models/item/schedule.json 0effa517c214ba07dba2f4ed12dfcf4785e42dd8 assets/create/models/item/schematic.json -2a52f084fa8187dd8da28fe820dde50c47a93b57 assets/create/models/item/schematic_and_quill.json -4c8b34627001e35ee15412a0cd037d0f24ba914e assets/create/models/item/schematic_table.json 8b7727844d8c12c3c22828c7f65fc7ac2d273e36 assets/create/models/item/schematicannon.json +2a52f084fa8187dd8da28fe820dde50c47a93b57 assets/create/models/item/schematic_and_quill.json 2955563914c2f84ed06474c135062e91189ddf3a assets/create/models/item/scorchia.json -669041e5ad29d2166cc8895f85aa262040671d3e assets/create/models/item/scorchia_pillar.json ff52eb59dadfe675e416440f3115856a501428a6 assets/create/models/item/scoria.json -2b5db844faf2dea0672def113dddbac323ca71e7 assets/create/models/item/scoria_pillar.json -ff36a19e124caf2ee8a03767e39601df6866075b assets/create/models/item/secondary_linear_chassis.json 480a7585107ebbfd54f3288eccb68e639790fe3c assets/create/models/item/sequenced_gearshift.json abaa6da82babc26717ffff44fc41327bd015c9a6 assets/create/models/item/shadow_steel.json -ffaec38d11b91add4e150e33d0e0e49394f5beca assets/create/models/item/shadow_steel_casing.json -b6fcd9722e5a09a9207964cba68752512e3b945a assets/create/models/item/shaft.json 617c6e2f759b2a95da7ee7192a2661afc6f6e8f8 assets/create/models/item/shopping_list.json -fa92996fada8545fc340fb401bd0568f56809bf0 assets/create/models/item/small_andesite_brick_slab.json -08474bf814a55795c1f94203ceb8a969be2a2132 assets/create/models/item/small_andesite_brick_stairs.json 0e00bc6aa5be242217ed6fe8cbe1ccdf180742fb assets/create/models/item/small_andesite_brick_wall.json -58ca190177e77db90c8195347c29d52c2cd0c556 assets/create/models/item/small_andesite_bricks.json -b160c3277f00f19687cffb87f9cb3aa32d3633aa assets/create/models/item/small_asurine_brick_slab.json -183fa4919f06e8c3c10f1efeceefd55389a96102 assets/create/models/item/small_asurine_brick_stairs.json d6a5ffdb493fb2c8176a7e6b42e05c2d393a2782 assets/create/models/item/small_asurine_brick_wall.json -543055fabb706a93037c6a9e47c334508e41b06c assets/create/models/item/small_asurine_bricks.json -8c1b5d5d40393636c9ff10afc09038c89bc1b383 assets/create/models/item/small_calcite_brick_slab.json -481ce90fb6abb05c904f01df3fe635f702bbfac0 assets/create/models/item/small_calcite_brick_stairs.json 02adb90bdf06a7c4c57d09dfd3c77cceef9b7fbe assets/create/models/item/small_calcite_brick_wall.json -26d9361e33e362a772220146724c0927453831e0 assets/create/models/item/small_calcite_bricks.json -8f382537c99eac3335f72db8dba33ab71f99a919 assets/create/models/item/small_crimsite_brick_slab.json -b5d012cf0c5c94b73e6825b6884ab1d3eee7d64e assets/create/models/item/small_crimsite_brick_stairs.json 236457bb16bc7e949c16f3f091ee74dc3f3e6973 assets/create/models/item/small_crimsite_brick_wall.json -d5a033d3dedb799c4752b7e68b6881529f38f8e5 assets/create/models/item/small_crimsite_bricks.json -ce79900b7aa1eff0d42cabcd0a7f80ef20824551 assets/create/models/item/small_deepslate_brick_slab.json -a260711af72c749a6b72f72515bbecb2e01e3ed8 assets/create/models/item/small_deepslate_brick_stairs.json 4e474891c6a269166c2eb413fae78699e5657af4 assets/create/models/item/small_deepslate_brick_wall.json -6ce2cb7882f41fcbcd641a442c98767bda61f65f assets/create/models/item/small_deepslate_bricks.json -55b82c2f30d52acee5c3807ab2ffaed1d773cfa8 assets/create/models/item/small_diorite_brick_slab.json -49a17610b5b05595894ca2683056cecd724c1111 assets/create/models/item/small_diorite_brick_stairs.json dd3630a9c5500e6cf09e95d09e7a3cc99db11899 assets/create/models/item/small_diorite_brick_wall.json -e412eaa393965ef5426c3d8d95d5c9d69e37e054 assets/create/models/item/small_diorite_bricks.json -21e281ec7a82d48018366a0737c6867f625b4663 assets/create/models/item/small_dripstone_brick_slab.json -6862e72eedf80536f40b6ac42ff78f13f62d012f assets/create/models/item/small_dripstone_brick_stairs.json ca8613bb64ceb562c36dd1d6a3b76b5f15f35be9 assets/create/models/item/small_dripstone_brick_wall.json -c29d35da520d0fe828bb364db403b8cdf55f0a2e assets/create/models/item/small_dripstone_bricks.json -a19aa13eb3c04a9e0931e22e4170eec80950efab assets/create/models/item/small_granite_brick_slab.json -51bc02587cad5dfcfaf9d040848faa5277a25a5f assets/create/models/item/small_granite_brick_stairs.json 147a6f42be8312fbf050ad53c1625a1458f73cc3 assets/create/models/item/small_granite_brick_wall.json -81eae95d20a9e99a070dfb8f6e6c22ef29f628d3 assets/create/models/item/small_granite_bricks.json -a9599981e872e683dacd01b2f0af511f416dd526 assets/create/models/item/small_limestone_brick_slab.json -d8f8eadea13fc90a1c8ee5aca4be71fb22a79fd0 assets/create/models/item/small_limestone_brick_stairs.json 67626afe8b0fc9135456a24ea49c602b83d6970d assets/create/models/item/small_limestone_brick_wall.json -bfa76583bca68134bbe2793c263cc0b71e1406af assets/create/models/item/small_limestone_bricks.json -f7547aacb8bdaf61424cd56565e40d3cd40a1cfa assets/create/models/item/small_ochrum_brick_slab.json -8a320ff9e75e16a182cb7d07784a595fe7876e04 assets/create/models/item/small_ochrum_brick_stairs.json 0eedd4fe5b0a82de16fed148836087ff4ae64a74 assets/create/models/item/small_ochrum_brick_wall.json -2d4b22d4028c55cbabc7eb405c2c6d485390afab assets/create/models/item/small_ochrum_bricks.json -97b8e3eaddac0b93d4b6bc140f573969fcba5823 assets/create/models/item/small_rose_quartz_tiles.json -63ef9901ba1014027e8c873d8374d86abb73158e assets/create/models/item/small_scorchia_brick_slab.json -f52601fe54695c225a595a65e9130665582db856 assets/create/models/item/small_scorchia_brick_stairs.json b4e0db087dc88e0a3a4a82197a0ce347d3c7a7aa assets/create/models/item/small_scorchia_brick_wall.json -ac1bf1d2344517c18b945afa198d5d05e2866f6b assets/create/models/item/small_scorchia_bricks.json -a4bdeb066dcc44f8be058e6d9dfc0a3fd34819bf assets/create/models/item/small_scoria_brick_slab.json -5ffb0e7de917013cd82cece2506d72fce2cd5fc6 assets/create/models/item/small_scoria_brick_stairs.json 67dcbc7d52fbbe88f89b36e04f970b27024741e4 assets/create/models/item/small_scoria_brick_wall.json -25b6bb40701e782ed64414ec8391b304ad5e6b12 assets/create/models/item/small_scoria_bricks.json -91a144100eea8b4e67a0a4f31b35a714693fa001 assets/create/models/item/small_tuff_brick_slab.json -b3f89c9f8e46fbdfc58171073d6ad91c588e5853 assets/create/models/item/small_tuff_brick_stairs.json 52c1d4cfb5f1726c9ccbb00db60bdd6f760bf40f assets/create/models/item/small_tuff_brick_wall.json -90943707d8b232d816392bec8ae05e06b6eedd72 assets/create/models/item/small_tuff_bricks.json -0bb60fc6ab570db83214fd10c83d931f6677e361 assets/create/models/item/small_veridium_brick_slab.json -89918d98b6830477b21ab7fb9e30807d3ca1d379 assets/create/models/item/small_veridium_brick_stairs.json ab4e7695e99548f83a89f3d5ad7690a576bafcc0 assets/create/models/item/small_veridium_brick_wall.json -6935d6d9dbdb99fe7258d9347419d65571711263 assets/create/models/item/small_veridium_bricks.json 6cf508dbd3d015ea730366db92bb17844dc2ca06 assets/create/models/item/smart_chute.json 9201f00edcf2ffa33cb079c28b5c33e39872c824 assets/create/models/item/smart_fluid_pipe.json 67804bdd890f167010f6101a700e85a3245f4cc3 assets/create/models/item/speedometer.json 4bc463849e2309aa7bb996c403bfb565e950aa49 assets/create/models/item/spout.json -09784bf20529fdc5bb76892c10cea14187748a82 assets/create/models/item/spruce_window.json 693cdacb67b28b5d69c8541fd1e0c246b26260ae assets/create/models/item/spruce_window_pane.json b82ab0c69df330f6f938ed1beee7b4add67d2e50 assets/create/models/item/steam_engine.json 24acc593a5e910b6301afcb3f23cba526d23a0ab assets/create/models/item/steam_whistle.json 54f200be903e056e5cf9e2186f0a0a51f8f0f84e assets/create/models/item/sticker.json 0f88de164439640cc175ceef2017f7416b5a7018 assets/create/models/item/sticky_mechanical_piston.json -97222d9eb36944a89b8047423eafa6af3da82b0b assets/create/models/item/stock_link.json -67c98c6c7f2122850acfbee34688572934fdd226 assets/create/models/item/stock_ticker.json 4b640b66765b206f8c2884b7c1a1ef860b81d841 assets/create/models/item/stockpile_switch.json +97222d9eb36944a89b8047423eafa6af3da82b0b assets/create/models/item/stock_link.json 6ee792277b9fd980c40e18e841afa63fc500ed0b assets/create/models/item/stressometer.json 8d4ce1ccf180016506292f63188c10d0dabe0ee3 assets/create/models/item/sturdy_sheet.json a10bb4d6d1a4483a806e3aaa086d48c0e20aaefe assets/create/models/item/super_glue.json dddac09bb9dd962d99502ab10929ae6886fbd831 assets/create/models/item/sweet_roll.json -6264be89eb998566b171beb073594393041780ca assets/create/models/item/tiled_glass.json 20fde7ab92e521fe861374148b240378990e9e12 assets/create/models/item/tiled_glass_pane.json 4683ab824d93cd96a82143eb9c62c9777f278f18 assets/create/models/item/track.json c4bd1224b988ca10708fe9538a0baa8b88272eb5 assets/create/models/item/track_observer.json 236d89ebd8ae45344b374264d39947d82a2d1914 assets/create/models/item/track_signal.json c08a82b94666ca81a6d9134c740cc9c28ddae892 assets/create/models/item/track_station.json be3b40aee1c62680ddcf9129fd9f926bab790590 assets/create/models/item/train_door.json -1d45bba128629e6c962a9260d49f2df83958ed16 assets/create/models/item/train_trapdoor.json b3a5de0cddc4d9d2d1858535220cb527735e86bc assets/create/models/item/transmitter.json ba7a9f542e9f65bdce3d3330a95f1166a0be0673 assets/create/models/item/tree_fertilizer.json -55aafc103c38057faa3295ccc76da99f4a91de52 assets/create/models/item/tuff_pillar.json -0e199ab3e450156aae2d54c227383af9bb3f7082 assets/create/models/item/turntable.json 3e7f095acd023ec549fe41ceed9fc3997de24a25 assets/create/models/item/unprocessed_obsidian_sheet.json 63a159b54de6a31ee265750e4af4b1990820eda6 assets/create/models/item/veridium.json -38970acde350735e00b53e6836ccee428c630fcc assets/create/models/item/veridium_pillar.json 9b2e4da1ab7e20cd744adb469dd3690e33cc905f assets/create/models/item/vertical_framed_glass.json 1eda3a4bc309eb9f125c583c1d398a1cb9e3a4e7 assets/create/models/item/vertical_framed_glass_pane.json b0f6d37aa695395e28a23d36775092f63ab3f5a5 assets/create/models/item/vertical_gearbox.json 011ef16e912638b4095d34c8c711ebd67cb85fba assets/create/models/item/wand_of_symmetry.json -9c5087114e35052c5e56bb752252de5d092408c5 assets/create/models/item/warped_window.json cdc1226f8a098adbc420fe50c98466507c3a3157 assets/create/models/item/warped_window_pane.json e5939b47bf7440dc101c667e68ef6bf750a3290f assets/create/models/item/water_wheel.json -adc188e4e48bea80607c6e0c7076c9bdd7236cb0 assets/create/models/item/waxed_copper_shingle_slab.json -7e224aceaa94361256e95e4c44d8814aebaf297c assets/create/models/item/waxed_copper_shingle_stairs.json -be2f058a7ecb015599ee052ec27c4360d636999a assets/create/models/item/waxed_copper_shingles.json -68b3632c34adb9991aa993385f53624632c260f2 assets/create/models/item/waxed_copper_tile_slab.json -a7fc0cc2d32dcd49c3274597ce7121f01fca03f8 assets/create/models/item/waxed_copper_tile_stairs.json -eced19a2f721c54b968e5979cde2705f15faf3e1 assets/create/models/item/waxed_copper_tiles.json -fd428034c46a240c4bb2a1aee625b8767f41c3ef assets/create/models/item/waxed_exposed_copper_shingle_slab.json -43d714187fe6c0cd1ed7abcddef1ebcd63979ff4 assets/create/models/item/waxed_exposed_copper_shingle_stairs.json -5336907eba067492f6d00b4b8514f9663830a1d5 assets/create/models/item/waxed_exposed_copper_shingles.json -25f5a10fe8e6acbdbf8457d56aeee065835a93ec assets/create/models/item/waxed_exposed_copper_tile_slab.json -22917505d328fb5b489b9f7f9068f1514b784abb assets/create/models/item/waxed_exposed_copper_tile_stairs.json -962b24b3611abefc21920d01452944710ab0da3f assets/create/models/item/waxed_exposed_copper_tiles.json -9b7c82376ea8c1c8ecbc7bbe15283f84b0d50d94 assets/create/models/item/waxed_oxidized_copper_shingle_slab.json -fbb6043eb935aa0641a482ee7300c780be257440 assets/create/models/item/waxed_oxidized_copper_shingle_stairs.json -12c3dd893bddb66b9b387652c67c8f0e24b643ff assets/create/models/item/waxed_oxidized_copper_shingles.json -6e7bc8eb9a87d903dcc590e9918ce8d4411bf190 assets/create/models/item/waxed_oxidized_copper_tile_slab.json -10136759b31e4d957e8374948460d6c984711326 assets/create/models/item/waxed_oxidized_copper_tile_stairs.json -6b8f75d4818db903b22f4626d02671ab76a61023 assets/create/models/item/waxed_oxidized_copper_tiles.json -2bf249c677d30a4febf950fa7c6caa87c348c54e assets/create/models/item/waxed_weathered_copper_shingle_slab.json -9fa84f2555d82b5a1550b748a332ceb443a04fae assets/create/models/item/waxed_weathered_copper_shingle_stairs.json -ce2dcfc01205da1dc70f34091a2c24f563e72466 assets/create/models/item/waxed_weathered_copper_shingles.json -ab40b1a5a03cd290d53ef2ea65f90dcfcd2673de assets/create/models/item/waxed_weathered_copper_tile_slab.json -dadc7b65a4527e288c21a20df978796a8c444fd2 assets/create/models/item/waxed_weathered_copper_tile_stairs.json -02d2ac048c9bea86d10673254dfc107f3c9c5bb5 assets/create/models/item/waxed_weathered_copper_tiles.json -94db30ad2381d2f2c37cdfd0d5ce5c45a2807640 assets/create/models/item/weathered_copper_shingle_slab.json -7262c01df4b5a8cd8c6a5545062f251d5ad9fd06 assets/create/models/item/weathered_copper_shingle_stairs.json -86b8e71fa8b7aeb73eafda89d8d06d83da6a5d25 assets/create/models/item/weathered_copper_shingles.json -0b1b299d6dfab65b6060305a8b3e51f6e2df09f4 assets/create/models/item/weathered_copper_tile_slab.json -0c3989b44fde934ba8b88b071887e5ede522c417 assets/create/models/item/weathered_copper_tile_stairs.json -99f17b16b68201aefb78298b3e6c657e3c2235e0 assets/create/models/item/weathered_copper_tiles.json -b5d591fbb40e062efe301b3b3b49580e5ad64566 assets/create/models/item/weathered_iron_block.json a569ddd725898a86f8745e46723edeff7fe7f2e9 assets/create/models/item/weathered_iron_window.json 68ca3316942b2df1623893cda722402238ab7724 assets/create/models/item/weathered_iron_window_pane.json 79431edb868e6560f4f6d5b3441c0176c7699f5e assets/create/models/item/weighted_ejector.json 0fd2214cdff8a92e05d9d5ee888329b3235143c0 assets/create/models/item/wheat_flour.json aacced59d21212090d508a9684bb46c9472a8a2f assets/create/models/item/whisk.json bcf3104e463ec212dc239281033e4e80d78e1d74 assets/create/models/item/white_postbox.json -4e112e82185e2c1a5c57f5a94fa11c59c92cef0d assets/create/models/item/white_sail.json -17ed8ac7d745117f622190a46c5e1b42892afc29 assets/create/models/item/white_seat.json 0fa9208df662c018499902e3aeddf1bbec16c3db assets/create/models/item/white_table_cloth.json 432040f39177ab3df6003df24e818c73e28cf754 assets/create/models/item/white_toolbox.json -8ba8a6d4baf98f0f037f83b4b704f75a8d46a26e assets/create/models/item/white_valve_handle.json bccccbdfa5d376936e123defa44f2907dc317617 assets/create/models/item/windmill_bearing.json 47c6ad1c146366156a0ec4bc1cbf74282784698f assets/create/models/item/wooden_bracket.json 6c08d2fa59e56e4848063ab6f3e45894b89f1744 assets/create/models/item/wrench.json 3a899db3044ee39ac5d6385c16630733e00f77ca assets/create/models/item/yellow_postbox.json -ac59f141cd3c3f7e57a794e542d6e22bf8ebb8f9 assets/create/models/item/yellow_seat.json 1f9f7c6102a0c5e1a6e50a6ac67858009a13153f assets/create/models/item/yellow_table_cloth.json 532a429d58a177f61b4d67180db7676fa7536052 assets/create/models/item/yellow_toolbox.json -2c87ef8a26a01a17b2f3799d62cb27cf1107d061 assets/create/models/item/yellow_valve_handle.json -bcf63b7198d31d3a94b2566171b7e3e84464601c assets/create/models/item/zinc_block.json d4a3290393c1c659f3d4dd4e267a87d287bd49a6 assets/create/models/item/zinc_ingot.json 1e9656f81ec01a89796b175cf029d1de45b758fe assets/create/models/item/zinc_nugget.json -f3719d4d3a8d1e0d9f36db5d1317894ecacf3bf3 assets/create/models/item/zinc_ore.json -10d5f0c1763f80860a39398ecc33dbbe43099471 data/c/tags/block/glass_blocks/colorless.json -220b4c682f6cf536534e7cd6a79a9acc811bacd2 data/c/tags/block/glass_panes.json -a8425bd1e4174a0beb97a3ccc348ae7d1106725f data/c/tags/block/glass_panes/colorless.json -81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/block/ores.json -81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/block/ores/zinc.json -e475ad1c52bffedfc544e5331a87c1f5c45149fd data/c/tags/block/ores_in_ground/deepslate.json -2f6068972e364599b6849dc46fcb0724d4219d53 data/c/tags/block/ores_in_ground/stone.json -2589b135c0e96ad29076569e144528fe32ea5b39 data/c/tags/block/relocation_not_supported.json -807ea01d3b028bd226ed0befc142cbd23647e998 data/c/tags/block/storage_blocks.json -7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/c/tags/block/storage_blocks/andesite_alloy.json -70bba470740dc7a77f51b4cb1747a105b62d4bde data/c/tags/block/storage_blocks/brass.json -18f54179c6f809ff4aee792702fa35d3053e5dc4 data/c/tags/block/storage_blocks/cardboard.json -bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/c/tags/block/storage_blocks/raw_zinc.json -41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/c/tags/block/storage_blocks/zinc.json -986440996701ed47b9f9f8b8ed4ef9d711571fa4 data/c/tags/entity_type/teleporting_not_supported.json -8140415f1c16f09167f41eeee25c09706a944be0 data/c/tags/fluid/chocolate.json -0ccc9ff76001cdd7db1b79c1371f59d3283abe64 data/c/tags/fluid/honey.json -cca816b34ac2e9b7933df680aa9778ff2cfe9605 data/c/tags/fluid/tea.json -a1b994866e427870cb9b9f80cfadc9c8b84ab7ed data/c/tags/item/buckets.json -a070e35ff35f5548a7f6207d70e3c21f1df2053e data/c/tags/item/buckets/chocolate.json -06ebf72e8f6c081862236d4b068b5dfb275a8385 data/c/tags/item/buckets/honey.json -6dfaf55f80083e43c0124a8fe30ab52f4b193547 data/c/tags/item/drinks.json -6dfaf55f80083e43c0124a8fe30ab52f4b193547 data/c/tags/item/drinks/tea.json -5c28c2550ac8f806ae3f2c3ed7cf731036a491d0 data/c/tags/item/dusts/obsidian.json -50a80d3f945909004c6a5dcfeee22a01296d96d5 data/c/tags/item/enchantables.json -745512f10c4ba52f2c224607377e41011fb2ecfe data/c/tags/item/flours.json -745512f10c4ba52f2c224607377e41011fb2ecfe data/c/tags/item/flours/wheat.json -9e7d4a0ab14d66167adb2552fde87cadffae4a1c data/c/tags/item/foods.json -a6d90433b02d062af922fefb363b6e414a2e79ae data/c/tags/item/foods/berry.json -58c10659ecbd88505c43d897be9e867373d4e973 data/c/tags/item/foods/chocolate.json -801d097b0af7153e0c5c72a924d61f8afb4cf264 data/c/tags/item/foods/dough.json -801d097b0af7153e0c5c72a924d61f8afb4cf264 data/c/tags/item/foods/dough/wheat.json -b2780007ba408b98778b41e775c8ad8dfc63e5d2 data/c/tags/item/foods/fruit.json -10d5f0c1763f80860a39398ecc33dbbe43099471 data/c/tags/item/glass_blocks/colorless.json -220b4c682f6cf536534e7cd6a79a9acc811bacd2 data/c/tags/item/glass_panes.json -a8425bd1e4174a0beb97a3ccc348ae7d1106725f data/c/tags/item/glass_panes/colorless.json -01d32d3b7b033aff44c047bf289d696de0b0c715 data/c/tags/item/ingots.json -5a7bffd1d604bc6ea8b35714ef02b95773240f90 data/c/tags/item/ingots/brass.json -ccf5b08295f6362a3f6b3b595f1de1bba4b224ec data/c/tags/item/ingots/zinc.json -64e93741470484e63350bc4be984aee0ef7da6f1 data/c/tags/item/nuggets.json -7b0359cfb65849b6e66668ffe619399117867307 data/c/tags/item/nuggets/brass.json -219b4cef254c20c6ec17d04d7204f5f8e7a45188 data/c/tags/item/nuggets/copper.json -0a43fcf4ab5fc91e0027730780edd6f23af3d69e data/c/tags/item/nuggets/zinc.json -81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/item/ores.json -81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/item/ores/zinc.json -e475ad1c52bffedfc544e5331a87c1f5c45149fd data/c/tags/item/ores_in_ground/deepslate.json -2f6068972e364599b6849dc46fcb0724d4219d53 data/c/tags/item/ores_in_ground/stone.json -0b718fa5d4db0c2f2d34db1096f33a88f12f0ede data/c/tags/item/plates.json -23f4874238f7d06e80c699b672d4e9fab6eb464f data/c/tags/item/plates/brass.json -7f3f85d0978bc274e4689fbf41f7b80b023b7a05 data/c/tags/item/plates/cardboard.json -ef5256892a9d4167bf7371c7138a933a107a123a data/c/tags/item/plates/copper.json -3ca40ae504b1f68d6e7279726a2bf411509ce322 data/c/tags/item/plates/gold.json -6f72d5205b399f03e481cee15bd5c085bfe6fe3c data/c/tags/item/plates/iron.json -07a6e69488ff6994a9ef1cca75b6e911bc3e3358 data/c/tags/item/plates/obsidian.json -30496416fffaf4f845052a264023e64e52894ee7 data/c/tags/item/raw_materials.json -30496416fffaf4f845052a264023e64e52894ee7 data/c/tags/item/raw_materials/zinc.json -807ea01d3b028bd226ed0befc142cbd23647e998 data/c/tags/item/storage_blocks.json -7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/c/tags/item/storage_blocks/andesite_alloy.json -70bba470740dc7a77f51b4cb1747a105b62d4bde data/c/tags/item/storage_blocks/brass.json -18f54179c6f809ff4aee792702fa35d3053e5dc4 data/c/tags/item/storage_blocks/cardboard.json -bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/c/tags/item/storage_blocks/raw_zinc.json -41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/c/tags/item/storage_blocks/zinc.json -c741ba83b562ae3459d7c4f2db69537f549ea411 data/c/tags/item/tools/wrench.json 32c4b719e566ba43fae37ff1ae22b8045a9e265f data/create/advancement/recipes/building_blocks/acacia_window.json a6fb55aff539d2fcb61b888813c515e9a38f525e data/create/advancement/recipes/building_blocks/acacia_window_pane.json 4549e001f20fa7fe27af47cab8d3849dbdf4d81a data/create/advancement/recipes/building_blocks/andesite_from_stone_types_andesite_stonecutting.json @@ -2642,42 +2906,42 @@ dcfda223bb464a9c939ef0e5a04d57ec693b5ed1 data/create/advancement/recipes/buildin 5208df014e662ba0b691a1041d3fd46aa38350f0 data/create/advancement/recipes/building_blocks/calcite_pillar_from_stone_types_calcite_stonecutting.json dbc74843b39d0432b0aa0f5b4575042248859d44 data/create/advancement/recipes/building_blocks/cherry_window.json f11e3730f2cb5dc80a96a6361fb316fbe969bbc7 data/create/advancement/recipes/building_blocks/cherry_window_pane.json +fdde5cecf7b80f1d7c3dcad60a525f5251bc6a49 data/create/advancement/recipes/building_blocks/copper_shingles_from_ingots_copper_stonecutting.json 18908b66ccf9df3ffa79e115a36eec2041f82120 data/create/advancement/recipes/building_blocks/copper_shingle_slab.json 5978b852ddd5e71f7c29ae530716bb0c175913d2 data/create/advancement/recipes/building_blocks/copper_shingle_slab_from_copper_shingles_stonecutting.json 9ef84083108da687ccadc0b858499e9d6a255aee data/create/advancement/recipes/building_blocks/copper_shingle_stairs.json 087d22921e13b58ab3562168bd55219a737eb90e data/create/advancement/recipes/building_blocks/copper_shingle_stairs_from_copper_shingles_stonecutting.json -fdde5cecf7b80f1d7c3dcad60a525f5251bc6a49 data/create/advancement/recipes/building_blocks/copper_shingles_from_ingots_copper_stonecutting.json +42b5e98923a298e911a08efb096dfcb0f8f9c677 data/create/advancement/recipes/building_blocks/copper_tiles_from_ingots_copper_stonecutting.json 9af44f510c82e8e917e80ff5ce6de3f1194fad7a data/create/advancement/recipes/building_blocks/copper_tile_slab.json b173cbc0169855148ac2d92d945c544dcc6449fe data/create/advancement/recipes/building_blocks/copper_tile_slab_from_copper_tiles_stonecutting.json 3ce2dcbf05ad7b161abfbb8ac5d5020f0e123e26 data/create/advancement/recipes/building_blocks/copper_tile_stairs.json 3866c4971b382c0d9611325ca78fa1a28956e245 data/create/advancement/recipes/building_blocks/copper_tile_stairs_from_copper_tiles_stonecutting.json -42b5e98923a298e911a08efb096dfcb0f8f9c677 data/create/advancement/recipes/building_blocks/copper_tiles_from_ingots_copper_stonecutting.json b3152a8ce2945d310e33e892ea1590564dad06c8 data/create/advancement/recipes/building_blocks/copycat_panel_from_ingots_zinc_stonecutting.json 49d968516a822c2ea7e34d606f3d099331de3818 data/create/advancement/recipes/building_blocks/copycat_step_from_ingots_zinc_stonecutting.json +84bf38057fff76c904d72bc62865de30db89e03c data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_shingles_from_honeycomb.json e9b9682ff6b8b0f9486fa3bbb8c742079e9f8369 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json f59a1b1ee8866dd16431d75987ab6e3a0372eb8b data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json -84bf38057fff76c904d72bc62865de30db89e03c data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_shingles_from_honeycomb.json +8c08156eb6f185a7709c69f3a9688a068db01d70 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_tiles_from_honeycomb.json 640629248fa97f4e4b7ed1a78a028e67862b2578 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json 16cee57a91d84dccff3090b1adc4dd109b958936 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json -8c08156eb6f185a7709c69f3a9688a068db01d70 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_copper_tiles_from_honeycomb.json +64daaa0e0c2bd70eb6e8b729258d5ce688759ea1 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json 0a4844e3bb5906f771d87b8272c185e96846e880 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json 0e2b44edc9b78c899a8679a34a37049533e8c0e7 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json -64daaa0e0c2bd70eb6e8b729258d5ce688759ea1 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json +7a62577561d00409791fc9f49a157db93e87889e data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json ece882ba24c121f8e8d886e4d64b9fb2062a582f data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json 7867377074c351bf44e0914617c9ea6715c0eeef data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json -7a62577561d00409791fc9f49a157db93e87889e data/create/advancement/recipes/building_blocks/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json +e0b3b70012a7b3b164f756ec5cd9d263b35607fc data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json e0d548f381b3d6ded1e285e3d9e54bcb5f130586 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json 095e2bc582440bb3f270fbaacbab958c165c42b8 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json -e0b3b70012a7b3b164f756ec5cd9d263b35607fc data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json +aec2df88934a2ad3cab4a68a54194990b319a99e data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json 2e47b7162055b9a2126208c9d52ce4090a64d035 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json 95b089513c06ef51da2aa13944a97431bcf5a94d data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json -aec2df88934a2ad3cab4a68a54194990b319a99e data/create/advancement/recipes/building_blocks/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json +d1743be3482e46b8c41bce64b7c091f1ae9b388f data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json 1dbb541acf1e2f01d31bb5bda7042871163bb8c2 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json f2fbcdd5e536c754c90e60954ba2026c1aa1d280 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json -d1743be3482e46b8c41bce64b7c091f1ae9b388f data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json +e7de42ea6d74ab5ec4049c4e111daf5370f305bc data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json 4d9c0114b24b79c6ac60045c76f44e13994c9af0 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json 668fe2557cca31e21ab8fa1933275a226c5fa272 data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json -e7de42ea6d74ab5ec4049c4e111daf5370f305bc data/create/advancement/recipes/building_blocks/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json 6aa348f11525a05486700e695440e5a7ddd74ffe data/create/advancement/recipes/building_blocks/crafting/kinetics/black_seat.json a2afcdcab8e5de162212df062117f52002dd9689 data/create/advancement/recipes/building_blocks/crafting/kinetics/black_seat_from_other_seat.json 473802773561022e7fb00a6c5087e170d5233204 data/create/advancement/recipes/building_blocks/crafting/kinetics/blue_seat.json @@ -2778,6 +3042,7 @@ f89ab380ba13d0b01d0a54c631c42ca51d636d63 data/create/advancement/recipes/buildin 16aa1f901b8b5faed2c313182bd65f513e37d498 data/create/advancement/recipes/building_blocks/crimsite_pillar_from_stone_types_crimsite_stonecutting.json 4e1cb49a63cea2aba8ba81a3bdbe56eb66f1bd65 data/create/advancement/recipes/building_blocks/crimson_window.json 96eb80fe00e14cbc628f948cd7afe32088a607dd data/create/advancement/recipes/building_blocks/crimson_window_pane.json +d7f8670f796713996ad37c191c9f73dd1992bb00 data/create/advancement/recipes/building_blocks/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json d16c6bd3c7a8f4b345ed55e0b99fb32a68bc344a data/create/advancement/recipes/building_blocks/cut_andesite_brick_slab.json 363d83eb73d2063532715e87ee8ecbe963bf97f3 data/create/advancement/recipes/building_blocks/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json cc9c610d9aefcfb251bc0165a79fb048f20704b7 data/create/advancement/recipes/building_blocks/cut_andesite_brick_slab_recycling.json @@ -2785,7 +3050,6 @@ cc9c610d9aefcfb251bc0165a79fb048f20704b7 data/create/advancement/recipes/buildin fa7cd47acfd9cd424be3c809977e77d46d01c4d5 data/create/advancement/recipes/building_blocks/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json e23d72456040acafb4f7db2922aa64220d8abfb8 data/create/advancement/recipes/building_blocks/cut_andesite_brick_wall.json ead7c1fca486a434acf3ae2b3d5f9770addc228b data/create/advancement/recipes/building_blocks/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json -d7f8670f796713996ad37c191c9f73dd1992bb00 data/create/advancement/recipes/building_blocks/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json f7cc7dfff15cbe07a5b0799b0622b21cac6709d5 data/create/advancement/recipes/building_blocks/cut_andesite_from_stone_types_andesite_stonecutting.json 910bf1f2c9ee42cfacf04be57bdf4e0242e14576 data/create/advancement/recipes/building_blocks/cut_andesite_slab.json 149f0e1dafab82fa88c03ffcf02508e0078c8c54 data/create/advancement/recipes/building_blocks/cut_andesite_slab_from_stone_types_andesite_stonecutting.json @@ -2794,6 +3058,7 @@ f03e25aa4c0493842e5567e29f1cd98e355d4a3c data/create/advancement/recipes/buildin 42453c7ec48795a63686a0f7853932615ae6642a data/create/advancement/recipes/building_blocks/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json c1a5f347a93096d84301efd76d3b78f385cc6326 data/create/advancement/recipes/building_blocks/cut_andesite_wall.json 161cc8e58cfffbf3345bb98d729301502aee13b1 data/create/advancement/recipes/building_blocks/cut_andesite_wall_from_stone_types_andesite_stonecutting.json +2347db7a657f028740b99b9541bb2a11ee181a37 data/create/advancement/recipes/building_blocks/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json 9d31d748e220f2fc1c28aa8d5ec07e7850d28aba data/create/advancement/recipes/building_blocks/cut_asurine_brick_slab.json f84d4c1a0972a9a8658a05235c994fcd16c49643 data/create/advancement/recipes/building_blocks/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json 5e5b39bce5ee601e56b4a790a033b4efb207024e data/create/advancement/recipes/building_blocks/cut_asurine_brick_slab_recycling.json @@ -2801,7 +3066,6 @@ f84d4c1a0972a9a8658a05235c994fcd16c49643 data/create/advancement/recipes/buildin f854ddc73077664208a885d5322ac9138af5843d data/create/advancement/recipes/building_blocks/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json d89914f735841a71642069b94cd8d3f0ffaa2115 data/create/advancement/recipes/building_blocks/cut_asurine_brick_wall.json 31f43ff35315f41d43ce03f0aa70bdbb5a61bce5 data/create/advancement/recipes/building_blocks/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json -2347db7a657f028740b99b9541bb2a11ee181a37 data/create/advancement/recipes/building_blocks/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json 055aa16eee6c21cc7954919e7f7563206636b987 data/create/advancement/recipes/building_blocks/cut_asurine_from_stone_types_asurine_stonecutting.json 11d0045022b05fe8fc7acf972effb1530e4d8200 data/create/advancement/recipes/building_blocks/cut_asurine_slab.json dc375e796a429b7625c0acaf7fcd12a9796ebfc1 data/create/advancement/recipes/building_blocks/cut_asurine_slab_from_stone_types_asurine_stonecutting.json @@ -2810,6 +3074,7 @@ dc375e796a429b7625c0acaf7fcd12a9796ebfc1 data/create/advancement/recipes/buildin 75140c5ce38784feec8ab073d589b0a9d3144032 data/create/advancement/recipes/building_blocks/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json f7fb17e30378104a7bd0ab16e75ef8b6d7b87342 data/create/advancement/recipes/building_blocks/cut_asurine_wall.json 6a7c66bc5a6eb7f7dad2fe41b413398589aa9b73 data/create/advancement/recipes/building_blocks/cut_asurine_wall_from_stone_types_asurine_stonecutting.json +e4e526162813e778b82a79495cf9d45e25877275 data/create/advancement/recipes/building_blocks/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json 86e0feba60ce4cdfe27b6e05020580b097484b75 data/create/advancement/recipes/building_blocks/cut_calcite_brick_slab.json 45a7737b6448c43748e1a9d5b339ad9c9e9284f7 data/create/advancement/recipes/building_blocks/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json 49738f3a9a83d7f4b858540dd75ce354c884989b data/create/advancement/recipes/building_blocks/cut_calcite_brick_slab_recycling.json @@ -2817,7 +3082,6 @@ d6973c0b0aeb335c29fd61719051b30afc9abb0c data/create/advancement/recipes/buildin a62e6cf3b06587de9065e2a159de433386a8a51f data/create/advancement/recipes/building_blocks/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json c09efdf5020cec8efe6d0b6990bdcc3ddcec5222 data/create/advancement/recipes/building_blocks/cut_calcite_brick_wall.json b297f0e6aea4932de1474f4597902056cb74d21e data/create/advancement/recipes/building_blocks/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json -e4e526162813e778b82a79495cf9d45e25877275 data/create/advancement/recipes/building_blocks/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json ba4850caafe21cd39af33d34ec0848fc7dc1909c data/create/advancement/recipes/building_blocks/cut_calcite_from_stone_types_calcite_stonecutting.json 9dbe2dbd142461778001a35f5558e9cc09eb168e data/create/advancement/recipes/building_blocks/cut_calcite_slab.json 5a06242dc2934c444d4fe553890a365f294a53b1 data/create/advancement/recipes/building_blocks/cut_calcite_slab_from_stone_types_calcite_stonecutting.json @@ -2826,6 +3090,7 @@ f657df0c876be8b95d8c888b07bd5bd258cc3f47 data/create/advancement/recipes/buildin 79f3e282cae68668f7bdfefe6e5f7da3942abe75 data/create/advancement/recipes/building_blocks/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json 15074bdb89ae486701c0f99e0dd62def30c1f30a data/create/advancement/recipes/building_blocks/cut_calcite_wall.json 47e67ca4ab59686b63e9c9a5ee78cae67240644c data/create/advancement/recipes/building_blocks/cut_calcite_wall_from_stone_types_calcite_stonecutting.json +cdc7e41782ddd395870b6db97600364bc52b8fa6 data/create/advancement/recipes/building_blocks/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json a19b3a2e5ac6e2cbc8cc9cca6cf50718bc67e496 data/create/advancement/recipes/building_blocks/cut_crimsite_brick_slab.json f6ad0b0f5a8824aadac3971530e80f2325f2d76f data/create/advancement/recipes/building_blocks/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json 396f473034624f36ee2d745fb7785d9c28c4c1be data/create/advancement/recipes/building_blocks/cut_crimsite_brick_slab_recycling.json @@ -2833,7 +3098,6 @@ f6ad0b0f5a8824aadac3971530e80f2325f2d76f data/create/advancement/recipes/buildin 57df874d707774ac9b21a1cc54ec87f5b41e9f7b data/create/advancement/recipes/building_blocks/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json c4c56c8ef621dbaff812cc57d07ec9cd74c7db94 data/create/advancement/recipes/building_blocks/cut_crimsite_brick_wall.json 1d5a73de69d44b3f132878c108a7b17d8ddc2b0e data/create/advancement/recipes/building_blocks/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json -cdc7e41782ddd395870b6db97600364bc52b8fa6 data/create/advancement/recipes/building_blocks/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json d41c895d6e2d966a35adc0b3148e6137ffec54e4 data/create/advancement/recipes/building_blocks/cut_crimsite_from_stone_types_crimsite_stonecutting.json 363d0022f2346ce801412db2c329355ee79d1c10 data/create/advancement/recipes/building_blocks/cut_crimsite_slab.json 2dcc1001140e040b402906047e7c0ede720916f5 data/create/advancement/recipes/building_blocks/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json @@ -2842,6 +3106,7 @@ d41c895d6e2d966a35adc0b3148e6137ffec54e4 data/create/advancement/recipes/buildin 105da1bcdbc78cfa900125d24d4bd4a7ec9e12a5 data/create/advancement/recipes/building_blocks/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json 4244398e285923a6f0c44bbc5aae36bb93dfb481 data/create/advancement/recipes/building_blocks/cut_crimsite_wall.json d112f87ba2c71cf1c36fca893dcd0d0a9925a9f9 data/create/advancement/recipes/building_blocks/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json +1f9c5dab6f221e232d1879532cc705f26f68fb78 data/create/advancement/recipes/building_blocks/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json 208b48e80b3279d6feee484c864f00bdc05c2572 data/create/advancement/recipes/building_blocks/cut_deepslate_brick_slab.json 3124528886e3a3634327e678261a7964c7185b20 data/create/advancement/recipes/building_blocks/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json 2cf3c0c73db420e26ef39dae11060d0f44b2106f data/create/advancement/recipes/building_blocks/cut_deepslate_brick_slab_recycling.json @@ -2849,7 +3114,6 @@ fe7b07bcac20da899dc76c1fda785a776f0769ef data/create/advancement/recipes/buildin 0b451015abc9228e65b80b238b2173e81b356bae data/create/advancement/recipes/building_blocks/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json 0ee53a136c9adee06ac1fdbfb2fd87d5e8ec9c14 data/create/advancement/recipes/building_blocks/cut_deepslate_brick_wall.json 0f3acfcf8dae7589634fb2b07b5f012e0e9130f1 data/create/advancement/recipes/building_blocks/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json -1f9c5dab6f221e232d1879532cc705f26f68fb78 data/create/advancement/recipes/building_blocks/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json bd89c77a7902aafcbac52bf7e320eadc1e7e2de7 data/create/advancement/recipes/building_blocks/cut_deepslate_from_stone_types_deepslate_stonecutting.json fa13e89da85d932fe1e6598ee9c5703906b0fd1f data/create/advancement/recipes/building_blocks/cut_deepslate_slab.json 96c13482c5f94e889b875bce38f567f27b99888c data/create/advancement/recipes/building_blocks/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json @@ -2858,6 +3122,7 @@ a64347cfb7b8f2b81dc7fb1cd9a24aa06e7f61ad data/create/advancement/recipes/buildin 6bc033f2ce16da0b96633d57140efadcfecb5bcb data/create/advancement/recipes/building_blocks/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json 8b27b0d5538c8ab8df40ce8004dd435d4d03e730 data/create/advancement/recipes/building_blocks/cut_deepslate_wall.json ac9b7350d678016a589e987457581dee460c84c1 data/create/advancement/recipes/building_blocks/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json +6e85b39a862b1dc4c66e11965667e864b850e437 data/create/advancement/recipes/building_blocks/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json 8bf0c57773fc766a602e99867869315fe432710c data/create/advancement/recipes/building_blocks/cut_diorite_brick_slab.json d30b2d3b31fa48827cd1f783d3e17503563d3b05 data/create/advancement/recipes/building_blocks/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json 01cc7f63a2032ed49bc435405a234ec5ea730e51 data/create/advancement/recipes/building_blocks/cut_diorite_brick_slab_recycling.json @@ -2865,7 +3130,6 @@ d30b2d3b31fa48827cd1f783d3e17503563d3b05 data/create/advancement/recipes/buildin 0d9f5b4c9665bcb9196141a8be0aa02ca0244c9c data/create/advancement/recipes/building_blocks/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json 138d445ea3ea80f1e49a94e94bd6f32592dcc3a2 data/create/advancement/recipes/building_blocks/cut_diorite_brick_wall.json bb468bed45affaf061e97f543f3b2a0a98267ffb data/create/advancement/recipes/building_blocks/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json -6e85b39a862b1dc4c66e11965667e864b850e437 data/create/advancement/recipes/building_blocks/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json 1812082b347617dcfb602e4b5678c1a822057910 data/create/advancement/recipes/building_blocks/cut_diorite_from_stone_types_diorite_stonecutting.json 01a422b3c771b9555d2207e071f02384a4fdc918 data/create/advancement/recipes/building_blocks/cut_diorite_slab.json ac9a166edaaf344f53c6770409daedefc3e30f74 data/create/advancement/recipes/building_blocks/cut_diorite_slab_from_stone_types_diorite_stonecutting.json @@ -2874,6 +3138,7 @@ dfa2e8845baa5beb4b69b05750774758588d5b63 data/create/advancement/recipes/buildin a2afbb3d28af9673f74a9420016ce9d04722aac0 data/create/advancement/recipes/building_blocks/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json 82bd10e86f9aaf82bf5b269d44638e7310fda7d4 data/create/advancement/recipes/building_blocks/cut_diorite_wall.json 1ec6d25496a43234d052d19a1e98926425f54d69 data/create/advancement/recipes/building_blocks/cut_diorite_wall_from_stone_types_diorite_stonecutting.json +683c77b1d1d235db0038c740f35c004eb391bff3 data/create/advancement/recipes/building_blocks/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json ba507c7758c9e16dbe6b22ef04ec34599f411177 data/create/advancement/recipes/building_blocks/cut_dripstone_brick_slab.json c4d08cb4c5aed828ac1ce6a2136d4b018f0f9380 data/create/advancement/recipes/building_blocks/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json 804c240d0f489d224daa02dcbd24ec5bf731fa7e data/create/advancement/recipes/building_blocks/cut_dripstone_brick_slab_recycling.json @@ -2881,7 +3146,6 @@ c4d08cb4c5aed828ac1ce6a2136d4b018f0f9380 data/create/advancement/recipes/buildin cf92ad5fb648bf9b822a6c28c5da7f9263e5455a data/create/advancement/recipes/building_blocks/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json 879a411a8538c6eba9a9778459bfff848a9906ec data/create/advancement/recipes/building_blocks/cut_dripstone_brick_wall.json 3c786410bcf3aa5b5390d08782ce5ce93a62d0fb data/create/advancement/recipes/building_blocks/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json -683c77b1d1d235db0038c740f35c004eb391bff3 data/create/advancement/recipes/building_blocks/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json 82516c611961b196c642be25d89855e4e09ba62d data/create/advancement/recipes/building_blocks/cut_dripstone_from_stone_types_dripstone_stonecutting.json 40a93b8d46ca7b9c845f781468c39a22a24ec752 data/create/advancement/recipes/building_blocks/cut_dripstone_slab.json fc3dd4d6dfe64be6cb18a60187cdbe334e0a8b91 data/create/advancement/recipes/building_blocks/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json @@ -2890,6 +3154,7 @@ f0cdc642691d63da453572bcb0a1ed962d49c977 data/create/advancement/recipes/buildin 149b7b80f9fd4ce42a2ce7fc5e9963259c539509 data/create/advancement/recipes/building_blocks/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json cb95fe834793ed5afea13fb819968ac63e415361 data/create/advancement/recipes/building_blocks/cut_dripstone_wall.json 9e03e0649db9c4fba75bd1d5f3586f8c6b5e5a29 data/create/advancement/recipes/building_blocks/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json +8e471b811a517e2f80080a0f981254886838f0ca data/create/advancement/recipes/building_blocks/cut_granite_bricks_from_stone_types_granite_stonecutting.json 7aabe61caed367117d8dd48858968049a852099e data/create/advancement/recipes/building_blocks/cut_granite_brick_slab.json eac6be7e8ab1a64a13bf4602f7c5b5e4b61ce15f data/create/advancement/recipes/building_blocks/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json ac0a8a5547e055aa0d982fb18e4f124ddb59abdf data/create/advancement/recipes/building_blocks/cut_granite_brick_slab_recycling.json @@ -2897,7 +3162,6 @@ aee31c97873d8b5bc3f50d6112da3b65ef1a5d3b data/create/advancement/recipes/buildin 61094e4909a59768f423364e12226da240bd291e data/create/advancement/recipes/building_blocks/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json bc18e6264a4a5c5540421b488d3c6c0c7713dabe data/create/advancement/recipes/building_blocks/cut_granite_brick_wall.json dad83cbda015e619777b54acf711cffd51ba473a data/create/advancement/recipes/building_blocks/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json -8e471b811a517e2f80080a0f981254886838f0ca data/create/advancement/recipes/building_blocks/cut_granite_bricks_from_stone_types_granite_stonecutting.json 296e6dac4a02095d0148ff5fe0dd7bb0d5060aa9 data/create/advancement/recipes/building_blocks/cut_granite_from_stone_types_granite_stonecutting.json 72a7152134054f99a96647d944717350806b710d data/create/advancement/recipes/building_blocks/cut_granite_slab.json 755a26796359a202f43bdd41846ddb77e105d2ba data/create/advancement/recipes/building_blocks/cut_granite_slab_from_stone_types_granite_stonecutting.json @@ -2906,6 +3170,7 @@ dad83cbda015e619777b54acf711cffd51ba473a data/create/advancement/recipes/buildin 7d9f7b30c52ee5b37189ea6bf0bb2b8dd8a137b3 data/create/advancement/recipes/building_blocks/cut_granite_stairs_from_stone_types_granite_stonecutting.json 4800afd527d53c602df4b9d7250032b6d8fb56f8 data/create/advancement/recipes/building_blocks/cut_granite_wall.json d3d0f5984ec829ed5f3de4f294217b73114a13fd data/create/advancement/recipes/building_blocks/cut_granite_wall_from_stone_types_granite_stonecutting.json +ab89617360cd034e76c3c5035c3a4a73df52eaf9 data/create/advancement/recipes/building_blocks/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json 0ca412559e4bbf39a80c3f8d1f6c40946918ca08 data/create/advancement/recipes/building_blocks/cut_limestone_brick_slab.json 376c71af5e062a7a73d0e25b7652dd7e346c649d data/create/advancement/recipes/building_blocks/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json fe1e45591a730862e3ab1969f9f035a020368ae9 data/create/advancement/recipes/building_blocks/cut_limestone_brick_slab_recycling.json @@ -2913,7 +3178,6 @@ f84e2e1a4aedf1fe96f74d1b14160f8c1129f743 data/create/advancement/recipes/buildin f05ffc5676020623a395ca80192c2e1a7b3d997c data/create/advancement/recipes/building_blocks/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json 8590f9a6eefaf4cd00380019e39f07796389e675 data/create/advancement/recipes/building_blocks/cut_limestone_brick_wall.json 7358129ef3943efd2bb541249ed5906d85f154d8 data/create/advancement/recipes/building_blocks/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json -ab89617360cd034e76c3c5035c3a4a73df52eaf9 data/create/advancement/recipes/building_blocks/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json 67d0b65fa06ae6a32dc1b837f2f9805aaf317665 data/create/advancement/recipes/building_blocks/cut_limestone_from_stone_types_limestone_stonecutting.json 4f933dc793d28c0e6484f73bf762cb513f78193f data/create/advancement/recipes/building_blocks/cut_limestone_slab.json 887d5e9702db6aa54f42316dd4a8796919036e0b data/create/advancement/recipes/building_blocks/cut_limestone_slab_from_stone_types_limestone_stonecutting.json @@ -2922,6 +3186,7 @@ c53b221beaa99057365579723dee727c04893f9c data/create/advancement/recipes/buildin 5a55ea4bd3732b5442e03a837bb5301f75c5b045 data/create/advancement/recipes/building_blocks/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json 53499ffc43ece3d22cb918df9bfffd041ffad2f2 data/create/advancement/recipes/building_blocks/cut_limestone_wall.json e84db91e52c6df5e26c767813de27165ac595ddb data/create/advancement/recipes/building_blocks/cut_limestone_wall_from_stone_types_limestone_stonecutting.json +b79374e86759d6f813f2a69570ac2b1534f3c2f6 data/create/advancement/recipes/building_blocks/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json 1765db8fb1a550e100aab4eb4db22cd0e06671ca data/create/advancement/recipes/building_blocks/cut_ochrum_brick_slab.json 5975e398dba7a728fcae8e354b9d11ca3e4bfe0f data/create/advancement/recipes/building_blocks/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json db04dcbe79711ede7aefc5e462884ff2d6060329 data/create/advancement/recipes/building_blocks/cut_ochrum_brick_slab_recycling.json @@ -2929,7 +3194,6 @@ db04dcbe79711ede7aefc5e462884ff2d6060329 data/create/advancement/recipes/buildin 2f837f432fb7b64a80430cffa5d3cbdbd517976d data/create/advancement/recipes/building_blocks/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json 348241ae9e279d86190ea594a0381cc1e1e23809 data/create/advancement/recipes/building_blocks/cut_ochrum_brick_wall.json dc7506294a0e6a42a7ff16a1f463f0144a1098fe data/create/advancement/recipes/building_blocks/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json -b79374e86759d6f813f2a69570ac2b1534f3c2f6 data/create/advancement/recipes/building_blocks/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json dcb4cae43b1fc1c5439297c404124df57058d17b data/create/advancement/recipes/building_blocks/cut_ochrum_from_stone_types_ochrum_stonecutting.json 69cd84933e40df8d38015cf473fbbaebeaa470f2 data/create/advancement/recipes/building_blocks/cut_ochrum_slab.json 3ec22429c458921961636eff47424285c8131178 data/create/advancement/recipes/building_blocks/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json @@ -2938,6 +3202,7 @@ dd512336a2f6b8f042c37456d7851e288a1b4a3f data/create/advancement/recipes/buildin 397a89e408ae636013913d7c3e3140075b974257 data/create/advancement/recipes/building_blocks/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json 92944c0057d874f90b958dc201fface849c57d0a data/create/advancement/recipes/building_blocks/cut_ochrum_wall.json 69e8d05d5f29ba4e7e8aa000b789ca77fd710d72 data/create/advancement/recipes/building_blocks/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json +605017225b7c47b4e24457667f8ddcfbfc6f4d33 data/create/advancement/recipes/building_blocks/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json 1d88345564c74f9f2aa9b95930680d59fbd2ab1f data/create/advancement/recipes/building_blocks/cut_scorchia_brick_slab.json 32139e6a5def1f684129cf912268969a9c350fb4 data/create/advancement/recipes/building_blocks/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json f6724edbf71b9116e32f2e2deba2a1f69c7b353d data/create/advancement/recipes/building_blocks/cut_scorchia_brick_slab_recycling.json @@ -2945,7 +3210,6 @@ f6724edbf71b9116e32f2e2deba2a1f69c7b353d data/create/advancement/recipes/buildin 1742becd2866369e7e83c09ce26361b318a5ca3f data/create/advancement/recipes/building_blocks/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json 8b700cd48af33c10f183ccfc193ee1caf1a9d2db data/create/advancement/recipes/building_blocks/cut_scorchia_brick_wall.json 50b2cb262f4b9e41add4946fc8b770454fb512f7 data/create/advancement/recipes/building_blocks/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json -605017225b7c47b4e24457667f8ddcfbfc6f4d33 data/create/advancement/recipes/building_blocks/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json 4b413b03707043094d2e74eb532247b49f8b085a data/create/advancement/recipes/building_blocks/cut_scorchia_from_stone_types_scorchia_stonecutting.json 61fefdae478aa1d044ccf4c8199446e80f12da0a data/create/advancement/recipes/building_blocks/cut_scorchia_slab.json 8afab975904151777b01944b6a27b4372ff8f771 data/create/advancement/recipes/building_blocks/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json @@ -2954,6 +3218,7 @@ f6724edbf71b9116e32f2e2deba2a1f69c7b353d data/create/advancement/recipes/buildin a1211498c1ac9fb18f4375fbfb0cadef6bfdbb46 data/create/advancement/recipes/building_blocks/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json b584c0e9ba096eb0e587417d7a2edcad361034ec data/create/advancement/recipes/building_blocks/cut_scorchia_wall.json f1d3b68e8fc07cc5d8212a79df2037474ce5a6c0 data/create/advancement/recipes/building_blocks/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json +28a214df44498922136dc224f59f8fd032211ac7 data/create/advancement/recipes/building_blocks/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json 3caa22c5924cfde3c0a8109667d08c7383a54b81 data/create/advancement/recipes/building_blocks/cut_scoria_brick_slab.json d377172d301dce551f4c79ace69b194802bcc009 data/create/advancement/recipes/building_blocks/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json 4356fc54e5e6951c277957347a98d44c686326ae data/create/advancement/recipes/building_blocks/cut_scoria_brick_slab_recycling.json @@ -2961,7 +3226,6 @@ b5c47a69876686e90c6b8196037d991821e026ed data/create/advancement/recipes/buildin 5b2337e8de4ed04f7e2ba214c6a2efc8d4dd8337 data/create/advancement/recipes/building_blocks/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json 50e070d78d6703b220d0d222eab0381c0fa117f0 data/create/advancement/recipes/building_blocks/cut_scoria_brick_wall.json e66ef8f716fba4577cc5239a6f509dee7effc043 data/create/advancement/recipes/building_blocks/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json -28a214df44498922136dc224f59f8fd032211ac7 data/create/advancement/recipes/building_blocks/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json 7187d70a073b78e75626d4c8c4829b34403bc93a data/create/advancement/recipes/building_blocks/cut_scoria_from_stone_types_scoria_stonecutting.json bff26e292fe7edaa4c4e6e8ce4616a97a049362c data/create/advancement/recipes/building_blocks/cut_scoria_slab.json 85f41de2c73e324d59e1be3a8899d8ba1dcd18f4 data/create/advancement/recipes/building_blocks/cut_scoria_slab_from_stone_types_scoria_stonecutting.json @@ -2970,6 +3234,7 @@ ba25b90fc35aee1925345b6b50bcd78626ef0abb data/create/advancement/recipes/buildin 91715e737d4126a928941de7ddb968066caf75c4 data/create/advancement/recipes/building_blocks/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json 9444e03bc145b2acd67a470510cf02eb5a6f514e data/create/advancement/recipes/building_blocks/cut_scoria_wall.json 53d43a65c2486cebacbfc3bae7bc7c16cdd9594c data/create/advancement/recipes/building_blocks/cut_scoria_wall_from_stone_types_scoria_stonecutting.json +2c6bcb3b4363679d83b469481b09d805c35b1f84 data/create/advancement/recipes/building_blocks/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json 111c30a1e7ea7756cade694771d9e1835f981531 data/create/advancement/recipes/building_blocks/cut_tuff_brick_slab.json f0ace25bdc0cfde4dab33201724886a5bb51bf00 data/create/advancement/recipes/building_blocks/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json 8a0243c57ec66473ac634172a6d4fb3959832134 data/create/advancement/recipes/building_blocks/cut_tuff_brick_slab_recycling.json @@ -2977,7 +3242,6 @@ f1d57b25821f47a13a833cad7e57e7b9ee38d140 data/create/advancement/recipes/buildin 13f1d3f4ef3338fb99838e16ec6291470bbefaa9 data/create/advancement/recipes/building_blocks/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json 0811e10ca6f218dc0e48d16dc6f8084a41d96796 data/create/advancement/recipes/building_blocks/cut_tuff_brick_wall.json 091d3f9749fc1585a08c8e36fcf2b1eb41130117 data/create/advancement/recipes/building_blocks/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json -2c6bcb3b4363679d83b469481b09d805c35b1f84 data/create/advancement/recipes/building_blocks/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json b0ee58e0d684534f4419d2f1c8be0e788a145eb4 data/create/advancement/recipes/building_blocks/cut_tuff_from_stone_types_tuff_stonecutting.json 8129587da96a7b4b16a96c23e06c708b0e91d908 data/create/advancement/recipes/building_blocks/cut_tuff_slab.json a9548e2dc121e75011cec76ec09dd974355084d3 data/create/advancement/recipes/building_blocks/cut_tuff_slab_from_stone_types_tuff_stonecutting.json @@ -2986,6 +3250,7 @@ ab13ab490d87739a47fc833fb3400cfc1c58ef66 data/create/advancement/recipes/buildin 39ede38af807e25cf530869680dd47520297168b data/create/advancement/recipes/building_blocks/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json 1f48e8f9200da2131b0933aa4596d9f6b13c61ee data/create/advancement/recipes/building_blocks/cut_tuff_wall.json 64201c58d9d0144009c9e57c92fb578c21cd9d4c data/create/advancement/recipes/building_blocks/cut_tuff_wall_from_stone_types_tuff_stonecutting.json +bff6e8048300e4cd5341844d132ea7cfce0fb892 data/create/advancement/recipes/building_blocks/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json 85d573da7f9daa653555a12a78cc86b481e2a179 data/create/advancement/recipes/building_blocks/cut_veridium_brick_slab.json b79c4c37fbb99cc4e7a15e189cb9fad3137355bd data/create/advancement/recipes/building_blocks/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json f898450f805f1af7faa063903edd5c083826e8a4 data/create/advancement/recipes/building_blocks/cut_veridium_brick_slab_recycling.json @@ -2993,7 +3258,6 @@ f898450f805f1af7faa063903edd5c083826e8a4 data/create/advancement/recipes/buildin 5f58e476ed0e98dbf90fae48988834bc2b669b1d data/create/advancement/recipes/building_blocks/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json c42e378cbb5f5808b3e8aee572fce187f72a0f47 data/create/advancement/recipes/building_blocks/cut_veridium_brick_wall.json 82fe2d3675fdd2f27703b44cafe4a5934bbada05 data/create/advancement/recipes/building_blocks/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json -bff6e8048300e4cd5341844d132ea7cfce0fb892 data/create/advancement/recipes/building_blocks/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json 59d1f533826ea22e5f37a26517882ad63fea3793 data/create/advancement/recipes/building_blocks/cut_veridium_from_stone_types_veridium_stonecutting.json 095cecc94addafb742dbf59c6e924c25d156188e data/create/advancement/recipes/building_blocks/cut_veridium_slab.json b18fd614317e4fe7a9555eee73987dea3baaa06b data/create/advancement/recipes/building_blocks/cut_veridium_slab_from_stone_types_veridium_stonecutting.json @@ -3181,6 +3445,7 @@ b90704e7c706ffebbda3910dc0751bcf759c4fab data/create/advancement/recipes/buildin 3fec66efc28ddf566d2a595979924a63e353045b data/create/advancement/recipes/building_blocks/scorchia_pillar_from_stone_types_scorchia_stonecutting.json 085bb17a93703a0a96fd1fce559da2c3d63c0251 data/create/advancement/recipes/building_blocks/scoria_from_stone_types_scoria_stonecutting.json bb37d058b6c0ba4b00affe44cc84054f6ab719bf data/create/advancement/recipes/building_blocks/scoria_pillar_from_stone_types_scoria_stonecutting.json +cc31cfe5a9200359dd637b7a080bfed90073b3f7 data/create/advancement/recipes/building_blocks/small_andesite_bricks_from_stone_types_andesite_stonecutting.json 549fb86b10f1e31314c6d1e8e5fe1c8d09019801 data/create/advancement/recipes/building_blocks/small_andesite_brick_slab.json 5cfb16bbbde12ccc54e3e3fb303e352a682fe753 data/create/advancement/recipes/building_blocks/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json 73ae7f6ad44f6082c9b3704bb95f11b3ce117bf3 data/create/advancement/recipes/building_blocks/small_andesite_brick_slab_recycling.json @@ -3188,7 +3453,7 @@ bb37d058b6c0ba4b00affe44cc84054f6ab719bf data/create/advancement/recipes/buildin d0e8075d55e182739d4b60a0ece323a22da04903 data/create/advancement/recipes/building_blocks/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json 25c5b4f655eb30c8228b6e99ef5f2cb99d6fb8a3 data/create/advancement/recipes/building_blocks/small_andesite_brick_wall.json 49b80ca384bacf16b9c5d146e6f02f527a9ddf14 data/create/advancement/recipes/building_blocks/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json -cc31cfe5a9200359dd637b7a080bfed90073b3f7 data/create/advancement/recipes/building_blocks/small_andesite_bricks_from_stone_types_andesite_stonecutting.json +87aced01f43660cd8968e29eca4845e4273fa0f0 data/create/advancement/recipes/building_blocks/small_asurine_bricks_from_stone_types_asurine_stonecutting.json a9ddca29b2a065fe7609c4959e244a2eef9d91d3 data/create/advancement/recipes/building_blocks/small_asurine_brick_slab.json 579b943abfff2f4119ccbda15948dbd7c3c2ee1d data/create/advancement/recipes/building_blocks/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json 9ad3343fe200cc97925136342cab3cc9b01e72e6 data/create/advancement/recipes/building_blocks/small_asurine_brick_slab_recycling.json @@ -3196,7 +3461,7 @@ bde5bd254cf0146afdbdafb5b378c69d9b89bac9 data/create/advancement/recipes/buildin b53eb099d568c9928ef7223f131dbcf9fe32ab61 data/create/advancement/recipes/building_blocks/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json 6d957a4ac0c8e307db9373249d83afc7bc7b2450 data/create/advancement/recipes/building_blocks/small_asurine_brick_wall.json a371b1cd7c129bafeca982ea0198a4c77b3907d4 data/create/advancement/recipes/building_blocks/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json -87aced01f43660cd8968e29eca4845e4273fa0f0 data/create/advancement/recipes/building_blocks/small_asurine_bricks_from_stone_types_asurine_stonecutting.json +d6ed5686fc761f19d3d46a105f33ad919d9d161c data/create/advancement/recipes/building_blocks/small_calcite_bricks_from_stone_types_calcite_stonecutting.json 0e7834429ae12569a707afbc25ff196403a996a0 data/create/advancement/recipes/building_blocks/small_calcite_brick_slab.json 73d3affeeaff062914085b0d5cd3fdc0bbea318e data/create/advancement/recipes/building_blocks/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json 8a6522ff3533524964d7f8c176edeee4351741ea data/create/advancement/recipes/building_blocks/small_calcite_brick_slab_recycling.json @@ -3204,7 +3469,7 @@ ea8e14ac3de6be23db875e0bdadcc6bedc8be3fd data/create/advancement/recipes/buildin 1b23738f2fa70b3a69a083b4b52bc0246ed051b6 data/create/advancement/recipes/building_blocks/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json ad77499b4a9fd80a1c0072cc697c6447230c397d data/create/advancement/recipes/building_blocks/small_calcite_brick_wall.json 1548dd77ee65da485f9556f3d0d1ba6954c8ba4d data/create/advancement/recipes/building_blocks/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json -d6ed5686fc761f19d3d46a105f33ad919d9d161c data/create/advancement/recipes/building_blocks/small_calcite_bricks_from_stone_types_calcite_stonecutting.json +fea18e6b18f9712a7ce60bc0f62efc8d7df77c17 data/create/advancement/recipes/building_blocks/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json 92797c6ca920b314f1c70e9ff680feb701d01ec6 data/create/advancement/recipes/building_blocks/small_crimsite_brick_slab.json 42fe38c8ae46877d1ff326867f0b43067c790ece data/create/advancement/recipes/building_blocks/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json 0b2fcbd0f26064399a87ae2eef4c816bc8e2bd21 data/create/advancement/recipes/building_blocks/small_crimsite_brick_slab_recycling.json @@ -3212,7 +3477,7 @@ ced6c5d007f160de349ad10e011e8353681a355f data/create/advancement/recipes/buildin 9770ecaf17f3f1babeb63e0fe9e6268a1ac4c02a data/create/advancement/recipes/building_blocks/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json ebe213621481398dc70b942d78605f1b3ec9b593 data/create/advancement/recipes/building_blocks/small_crimsite_brick_wall.json ddf50a3000b7412150ea66fb96911ca5b6a68704 data/create/advancement/recipes/building_blocks/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json -fea18e6b18f9712a7ce60bc0f62efc8d7df77c17 data/create/advancement/recipes/building_blocks/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json +d64a0084d42d9eed7eea00d54aa38ced0c154050 data/create/advancement/recipes/building_blocks/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json 22ba4c785d745d3079cfcaa623f1e99189384e5b data/create/advancement/recipes/building_blocks/small_deepslate_brick_slab.json e8d7b890f4c288be9a683c2b76dd8324a07ba622 data/create/advancement/recipes/building_blocks/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json c5bd936ca0b0676740c4bfe3a754ded1adefb7d7 data/create/advancement/recipes/building_blocks/small_deepslate_brick_slab_recycling.json @@ -3220,7 +3485,7 @@ b6744c53e8289514e70a8b397702ae3e19049b69 data/create/advancement/recipes/buildin d74b9213efe04e377567be6eaed9bfc2e8f023c1 data/create/advancement/recipes/building_blocks/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json 698dd993666e17e86c124567aa1cfbaefff7ed45 data/create/advancement/recipes/building_blocks/small_deepslate_brick_wall.json 59eea27ab9a2ff599c8915aa57831685fa8a2976 data/create/advancement/recipes/building_blocks/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json -d64a0084d42d9eed7eea00d54aa38ced0c154050 data/create/advancement/recipes/building_blocks/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json +7021b9257cc34d547d3f09c877f0be923e324c78 data/create/advancement/recipes/building_blocks/small_diorite_bricks_from_stone_types_diorite_stonecutting.json 8e5f1940d5024f90f0a371b22f3f9934e44ed58d data/create/advancement/recipes/building_blocks/small_diorite_brick_slab.json c7cf75c429018c8bf4e2bd5b949af2b8b257a149 data/create/advancement/recipes/building_blocks/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json 23fd18600a12809c25f206a964e2efbd5f60c655 data/create/advancement/recipes/building_blocks/small_diorite_brick_slab_recycling.json @@ -3228,7 +3493,7 @@ c7cf75c429018c8bf4e2bd5b949af2b8b257a149 data/create/advancement/recipes/buildin 7f73ba52e2dec108bd84265394f4c23796f2a194 data/create/advancement/recipes/building_blocks/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json 64618d70b31703997e3fa971c960ffdcac5fcc9e data/create/advancement/recipes/building_blocks/small_diorite_brick_wall.json e27924afd4c2a06facc898e1ee2fe952cde5f375 data/create/advancement/recipes/building_blocks/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json -7021b9257cc34d547d3f09c877f0be923e324c78 data/create/advancement/recipes/building_blocks/small_diorite_bricks_from_stone_types_diorite_stonecutting.json +5cb2df2b9ad851391bd9d5816e369036d2728fe6 data/create/advancement/recipes/building_blocks/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json 971dc2ae3e16a81322a8a2a37406f5ed49d4443f data/create/advancement/recipes/building_blocks/small_dripstone_brick_slab.json 7af1042046f49a8c31507a940c5a5ae8f5e37ee7 data/create/advancement/recipes/building_blocks/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json ce1fe4af97a00669c206b9de3d43686d1ce5005b data/create/advancement/recipes/building_blocks/small_dripstone_brick_slab_recycling.json @@ -3236,7 +3501,7 @@ ce1fe4af97a00669c206b9de3d43686d1ce5005b data/create/advancement/recipes/buildin 83dcea396cc7715d1e5809e434f8223e4c6e0a44 data/create/advancement/recipes/building_blocks/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json 862ac7526473d2477f3342b3cab7d15930858c4a data/create/advancement/recipes/building_blocks/small_dripstone_brick_wall.json 6648f07c9d07870ffa099922ab774426d9da1efd data/create/advancement/recipes/building_blocks/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json -5cb2df2b9ad851391bd9d5816e369036d2728fe6 data/create/advancement/recipes/building_blocks/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json +1e0a0fbc471874defae4d95ad27d11aaa1830f8e data/create/advancement/recipes/building_blocks/small_granite_bricks_from_stone_types_granite_stonecutting.json 08dd3af361e0c41871936d07a2c2754690eabcac data/create/advancement/recipes/building_blocks/small_granite_brick_slab.json f87a6558469d358234d3427a3912eca3cbc800cd data/create/advancement/recipes/building_blocks/small_granite_brick_slab_from_stone_types_granite_stonecutting.json 59d9cb43bda1755b7a320a046a449f1f8180d15e data/create/advancement/recipes/building_blocks/small_granite_brick_slab_recycling.json @@ -3244,7 +3509,7 @@ f87a6558469d358234d3427a3912eca3cbc800cd data/create/advancement/recipes/buildin 5402524445569b82d00b8f4245106aa56395a004 data/create/advancement/recipes/building_blocks/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json 3d0001dbb12558820426a0a55b595f8f477cba03 data/create/advancement/recipes/building_blocks/small_granite_brick_wall.json 24c51858c7b3228c6bc8930553367eeefc5f48fc data/create/advancement/recipes/building_blocks/small_granite_brick_wall_from_stone_types_granite_stonecutting.json -1e0a0fbc471874defae4d95ad27d11aaa1830f8e data/create/advancement/recipes/building_blocks/small_granite_bricks_from_stone_types_granite_stonecutting.json +3ec680251397b9510437bfc1d32c2ef8436504d4 data/create/advancement/recipes/building_blocks/small_limestone_bricks_from_stone_types_limestone_stonecutting.json ec5f34e014de8516d07aebb6f90272827323f2c9 data/create/advancement/recipes/building_blocks/small_limestone_brick_slab.json 8502c201260f2594cf719871b29f34aea95b2d5a data/create/advancement/recipes/building_blocks/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json e53a87977dd09883bbc76d4257a1d7a7df8e4ce8 data/create/advancement/recipes/building_blocks/small_limestone_brick_slab_recycling.json @@ -3252,7 +3517,7 @@ f7e1552642e9aa49f76c80426770944503097d7b data/create/advancement/recipes/buildin fcf34518efda771467fdfb45c65b51ea39b99c56 data/create/advancement/recipes/building_blocks/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json 3f8a1e201ecd01a327711b10a47e38928b3c407c data/create/advancement/recipes/building_blocks/small_limestone_brick_wall.json 4e26970310170a836b8f2d724ae4441178733f6d data/create/advancement/recipes/building_blocks/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json -3ec680251397b9510437bfc1d32c2ef8436504d4 data/create/advancement/recipes/building_blocks/small_limestone_bricks_from_stone_types_limestone_stonecutting.json +edd0107c28ae4270088e0a5c16ed2402e62dcf91 data/create/advancement/recipes/building_blocks/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json 16a8af3be6ee3ae82c41d6a14a7d327a6390e012 data/create/advancement/recipes/building_blocks/small_ochrum_brick_slab.json 87dcc5566290cfcffefebc4543027e5d4ea9b92e data/create/advancement/recipes/building_blocks/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json 5aae32d9aec249c8d7a215ddffa5709b3509a271 data/create/advancement/recipes/building_blocks/small_ochrum_brick_slab_recycling.json @@ -3260,8 +3525,8 @@ fcf34518efda771467fdfb45c65b51ea39b99c56 data/create/advancement/recipes/buildin 4f63b2f5f8db9fbd8d1197ffae6cdfc29a9be6b1 data/create/advancement/recipes/building_blocks/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json 431abace65a5a4e33ec5ce84d5615175f410e8de data/create/advancement/recipes/building_blocks/small_ochrum_brick_wall.json a013d00470f2a75bfc11baaac4d1788376e1c431 data/create/advancement/recipes/building_blocks/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json -edd0107c28ae4270088e0a5c16ed2402e62dcf91 data/create/advancement/recipes/building_blocks/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json ef6f0afc7bef69195f2e33c495985519fe853e32 data/create/advancement/recipes/building_blocks/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json +8b674afed8b43ee48504912a5ae4ea21f5a10143 data/create/advancement/recipes/building_blocks/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json ae72270a73e9ea194eeb2cd063e0ab84b87923ac data/create/advancement/recipes/building_blocks/small_scorchia_brick_slab.json 5d0d3a453f5c0c67183fcefd4c36aaf32926b89e data/create/advancement/recipes/building_blocks/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json cc28c600dfbdc86d53bd9901de581169a19859ff data/create/advancement/recipes/building_blocks/small_scorchia_brick_slab_recycling.json @@ -3269,7 +3534,7 @@ cc28c600dfbdc86d53bd9901de581169a19859ff data/create/advancement/recipes/buildin 7bd877b88002d3c3f97b2249cf3c14f5f511785b data/create/advancement/recipes/building_blocks/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json 305007687d881c3068f15059b48c57e3ec8a5602 data/create/advancement/recipes/building_blocks/small_scorchia_brick_wall.json 578227270017e950d4d431de8e58a1ae4dbb48ff data/create/advancement/recipes/building_blocks/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json -8b674afed8b43ee48504912a5ae4ea21f5a10143 data/create/advancement/recipes/building_blocks/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json +4871d6708ba577798dded7f8ec600a9bc0029613 data/create/advancement/recipes/building_blocks/small_scoria_bricks_from_stone_types_scoria_stonecutting.json 83a179d29543a60d8a4a82cad080e51c81719135 data/create/advancement/recipes/building_blocks/small_scoria_brick_slab.json 6b98f60417bba54111b881ba0038fde5b054d5ae data/create/advancement/recipes/building_blocks/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json 53e9ce2cce0c5d18abd5aefc131bf99bd6c61d4f data/create/advancement/recipes/building_blocks/small_scoria_brick_slab_recycling.json @@ -3277,7 +3542,7 @@ cc28c600dfbdc86d53bd9901de581169a19859ff data/create/advancement/recipes/buildin 33caec029963504c47819e75e7c359b2b429b26d data/create/advancement/recipes/building_blocks/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json b2cb06364e0da7eed69a3f5297994c7f14e0e44c data/create/advancement/recipes/building_blocks/small_scoria_brick_wall.json fae58c3443a58a4698bfa0d6a172da28fffa36cf data/create/advancement/recipes/building_blocks/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json -4871d6708ba577798dded7f8ec600a9bc0029613 data/create/advancement/recipes/building_blocks/small_scoria_bricks_from_stone_types_scoria_stonecutting.json +a779e720efe53416e917070a5fcf416fddd41262 data/create/advancement/recipes/building_blocks/small_tuff_bricks_from_stone_types_tuff_stonecutting.json 263864bf9652ea6e172066932235bf90fedbdc81 data/create/advancement/recipes/building_blocks/small_tuff_brick_slab.json 09d4364c684ff162f5fd7bdce3af6c03d3ec1ae3 data/create/advancement/recipes/building_blocks/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json cd43f49994d8d0e1fbe80dad2e4ed19d509c894a data/create/advancement/recipes/building_blocks/small_tuff_brick_slab_recycling.json @@ -3285,7 +3550,7 @@ cd43f49994d8d0e1fbe80dad2e4ed19d509c894a data/create/advancement/recipes/buildin 7704f8943431ba550157b186521ae273bd23280f data/create/advancement/recipes/building_blocks/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json ceef05bdaf659b233c4b1521ecec8ae2e69c2ecc data/create/advancement/recipes/building_blocks/small_tuff_brick_wall.json 64c30666d192ea8c908864a6f17213b5cd93d5bd data/create/advancement/recipes/building_blocks/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json -a779e720efe53416e917070a5fcf416fddd41262 data/create/advancement/recipes/building_blocks/small_tuff_bricks_from_stone_types_tuff_stonecutting.json +bb7d0fa749a3c87f44ed49d8b6666b49a1f4ccf8 data/create/advancement/recipes/building_blocks/small_veridium_bricks_from_stone_types_veridium_stonecutting.json 9b2973366d20a035e4550aac87893cebc102cd9a data/create/advancement/recipes/building_blocks/small_veridium_brick_slab.json 7b1e4a37fcc3bba444a2880550fb382acc07355a data/create/advancement/recipes/building_blocks/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json 844ea134c14e81491002a0ebc9ea6fd20fc901d8 data/create/advancement/recipes/building_blocks/small_veridium_brick_slab_recycling.json @@ -3293,7 +3558,6 @@ a779e720efe53416e917070a5fcf416fddd41262 data/create/advancement/recipes/buildin a535cc1429800464ee5fd3141151f929e5422fbc data/create/advancement/recipes/building_blocks/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json 893195329eba2645d39981e24f3a2caff4888687 data/create/advancement/recipes/building_blocks/small_veridium_brick_wall.json e519defa9fb502899b7441c494d9e1f862324f06 data/create/advancement/recipes/building_blocks/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json -bb7d0fa749a3c87f44ed49d8b6666b49a1f4ccf8 data/create/advancement/recipes/building_blocks/small_veridium_bricks_from_stone_types_veridium_stonecutting.json cb3e2f36ae1bf1c7d7d579725415e5a33f401756 data/create/advancement/recipes/building_blocks/spruce_window.json 06cd064517ca8d95ea531f590c7362ab17cdf29d data/create/advancement/recipes/building_blocks/spruce_window_pane.json 9377613ce7eac47ffdd044a10d657cbfae19bf0e data/create/advancement/recipes/building_blocks/tiled_glass_from_glass_blocks_colorless_stonecutting.json @@ -3399,1416 +3663,1414 @@ f1851907409adcfed3f1eb801c730667964603b2 data/create/advancement/recipes/misc/cr 1be58611d10486912c0746b76014105e5bbe8705 data/create/advancement/recipes/misc/crafting/logistics/white_table_cloth_clear.json b8e0b1d3a9205e35bd52e452b4a4d5b2118b9533 data/create/advancement/recipes/misc/crafting/logistics/yellow_table_cloth_clear.json 6a3fb4880b11fcfd8e90bead3fd1d74078b94838 data/create/data_maps/item/superheated_blaze_burner_fuels.json -a52ad72afa1447df01c0305f6580b9e60836c76f data/create/loot_table/blocks/acacia_window.json -4029a3a69234261a3a64bf2280ff7ee15dfbfdbf data/create/loot_table/blocks/acacia_window_pane.json -5eee4b2702e432e03b1f46c6f1573ceee67b131f data/create/loot_table/blocks/adjustable_chain_gearshift.json -95ddcd4d49a2fd3174689c1e39ba5e5f583be36f data/create/loot_table/blocks/analog_lever.json -814857f893aa281546f96192e28917d0b1207e81 data/create/loot_table/blocks/andesite_alloy_block.json -aaaedbe325d5358d10e15389009dbf7fbf9bc637 data/create/loot_table/blocks/andesite_bars.json -d46459cf38853767c34bda3909f24370f2d6943d data/create/loot_table/blocks/andesite_belt_funnel.json -3086cbf5ae5034d23ddd6c057d113736cef40516 data/create/loot_table/blocks/andesite_casing.json -58e150c67c259f5460e5c5dd5cbf6e4cf7299d69 data/create/loot_table/blocks/andesite_door.json -9a5be1db8d171e74d256ad3326004452bf86a07b data/create/loot_table/blocks/andesite_encased_cogwheel.json -4b71486ad67bc07dbae4fed50fb12d0a08d40841 data/create/loot_table/blocks/andesite_encased_large_cogwheel.json -18935527f056240bf2f69bd227fc01e87f569353 data/create/loot_table/blocks/andesite_encased_shaft.json -ac6b9e99a900f203f69c5127cc44c0de48b0d946 data/create/loot_table/blocks/andesite_funnel.json -1d9b959e0a6b965fef70136c2988e37c94f58b9e data/create/loot_table/blocks/andesite_ladder.json -93e40b5e41c32af364a4636989a72ef7901e6bd6 data/create/loot_table/blocks/andesite_pillar.json -191c341be37299e8ab0d692eb3a185188157ebdf data/create/loot_table/blocks/andesite_scaffolding.json -d3a343785cc9e9ac0e9d2309ef4203121c9ab385 data/create/loot_table/blocks/andesite_table_cloth.json -1c6f1dd9ec49b7db86e43706e940208b51e0f6d5 data/create/loot_table/blocks/andesite_tunnel.json -d408536459078c1d72770b7431137d7d8d8ff3bb data/create/loot_table/blocks/asurine.json -3129cb3d97d657bf16ea5973b3bde1e31ff054c7 data/create/loot_table/blocks/asurine_pillar.json -5cf461659aa72871bd06f24eb7f2cd44784d7f2a data/create/loot_table/blocks/bamboo_window.json -4ae32940882433c435b0b37476b231ea372f2ac2 data/create/loot_table/blocks/bamboo_window_pane.json -8ac6f7a29c32e636b0639ac2caaa60882617f675 data/create/loot_table/blocks/basin.json -d964b7a8f6a4ce28ce640d31a01e77eafcc181e5 data/create/loot_table/blocks/belt.json -119ef0728abdf46237e718f6862b293870422b81 data/create/loot_table/blocks/birch_window.json -de9b6ce5471c757afc2f922d02418ecf8cbbcf1f data/create/loot_table/blocks/birch_window_pane.json -4aec2374e76dfa5535fe22b1fc02b4b2d453217d data/create/loot_table/blocks/black_nixie_tube.json -6ed685605e24af5c6ff5d797dde8492069427b76 data/create/loot_table/blocks/black_postbox.json -7ce6dd2c0d02eb1b56ec441044dfc608ea6bcb41 data/create/loot_table/blocks/black_sail.json -2449b8c173fbbc2a96e0b8d1996d72fb60527e64 data/create/loot_table/blocks/black_seat.json -2ac4a51540f596ddb81f9fa1b72bcc02c3a6b1fd data/create/loot_table/blocks/black_table_cloth.json -193e26e0c4eecf16de2f7b662fe6f028bf41b441 data/create/loot_table/blocks/black_toolbox.json -f911ac185cd48afa2393d24f28a688936a9fa147 data/create/loot_table/blocks/black_valve_handle.json -eee41c02c8cfcdb56f31e74fc266783b785bea9d data/create/loot_table/blocks/blaze_burner.json -247d12823eed3b9248003aca8e3ead87972ac61e data/create/loot_table/blocks/blue_nixie_tube.json -76217732c9bddf77b7de735b4380d9f92adca9b3 data/create/loot_table/blocks/blue_postbox.json -bb9d906a97810ed1461ed321ef8e4bee1dd104fb data/create/loot_table/blocks/blue_sail.json -833fe6bc3020055dd0d6f46b324cbe27b248708d data/create/loot_table/blocks/blue_seat.json -2b7aa6506e02be7a7b76228bc16bf05d0920195e data/create/loot_table/blocks/blue_table_cloth.json -8db18471fdedf92ab335c2fb4ec7525cb9e4deaf data/create/loot_table/blocks/blue_toolbox.json -6d7ecb10e21b1e12c83c71736f14cbba3ccd7aaf data/create/loot_table/blocks/blue_valve_handle.json -13d77897fe33778996bddec2fa5f367984507899 data/create/loot_table/blocks/bound_cardboard_block.json -7d8b199f381003e5a74a8144976b65c93a09dbcb data/create/loot_table/blocks/brass_bars.json -64a5869c6b3edeca06771f8ef64ef9521d83302a data/create/loot_table/blocks/brass_belt_funnel.json -78ecee2c9baf6b0c78f6c7aa692e102a3f4dda74 data/create/loot_table/blocks/brass_block.json -d45666afba904c2f3fdcfe78a4d22f0ab98efa5d data/create/loot_table/blocks/brass_casing.json -bb07dcb6f4f1e01b85a00ab0fdfb27100e8a5622 data/create/loot_table/blocks/brass_door.json -ac59fa67bd9bc003afc50202d0ca576a9b0a2957 data/create/loot_table/blocks/brass_encased_cogwheel.json -cecada7e520f41c014929136b53509b9b75c2dfd data/create/loot_table/blocks/brass_encased_large_cogwheel.json -e466a397f84957616f7e83954db2050355f052c9 data/create/loot_table/blocks/brass_encased_shaft.json -7b79b14f64108cd8a734f95dd8c721830b48ac82 data/create/loot_table/blocks/brass_funnel.json -8d58d4c771843950a14fd7b800a05736c1fc88d9 data/create/loot_table/blocks/brass_ladder.json -429d524c9848b44d19028126f0efd678e0c4b680 data/create/loot_table/blocks/brass_scaffolding.json -ce1aa8d4b40ba0d0898c552811f1a6f7e94879a5 data/create/loot_table/blocks/brass_table_cloth.json -af90102bfe0e3a14bf1330cddec553f27b8fba89 data/create/loot_table/blocks/brass_tunnel.json -d391cff5b741fd6ddf5b6fa64e05526eb3a9f0d9 data/create/loot_table/blocks/brown_nixie_tube.json -bfa0365507a888134c20b36af4bd7944263687f0 data/create/loot_table/blocks/brown_postbox.json -862bd3ceed05ea45c03911bb8403817b73c4bc38 data/create/loot_table/blocks/brown_sail.json -6ddbdd489120be56f50272c86ecdb886afa3a8e4 data/create/loot_table/blocks/brown_seat.json -0aa66846a1b29feda9c63b9364860c4c75eaf2e4 data/create/loot_table/blocks/brown_table_cloth.json -3c42163563c844a867c2c12e63f10afe22adb03c data/create/loot_table/blocks/brown_toolbox.json -7c7cf4c30786f6e0a699e2b3f9120343e53107f4 data/create/loot_table/blocks/brown_valve_handle.json -06d1c478e4236210aa12b5911691868fef33bb5f data/create/loot_table/blocks/calcite_pillar.json -3d65461b1fc2667f446aefa2853621c06068bb38 data/create/loot_table/blocks/cardboard_block.json -515c839deea520b07b03f7ba65c4a7b22fdf5ba3 data/create/loot_table/blocks/cart_assembler.json -aadd8aa7f8433896bd4fea56f43e496cbc5be25a data/create/loot_table/blocks/chain_conveyor.json -4c7cbc8159dadd6ac105e73a6e743c9ff632b004 data/create/loot_table/blocks/cherry_window.json -60d07939f01c41f903cd65c1599a8fcbb59a1641 data/create/loot_table/blocks/cherry_window_pane.json -fb4877d45df15be1a74378ab28f23fbf9d0657ef data/create/loot_table/blocks/chute.json +5d6d7e7151db85518979da12f38eb98886e7b026 data/create/loot_table/blocks/acacia_window.json +839c0169db4773c7fbd565cc7c32485cfc0a4240 data/create/loot_table/blocks/acacia_window_pane.json +79c3d32e5c0b913e3ec5f4266455a1e699ac9b3e data/create/loot_table/blocks/adjustable_chain_gearshift.json +08eabd859beb54eaf5626794fda6c2c31ed0c779 data/create/loot_table/blocks/analog_lever.json +2c9465d9594e60f7951b2d7d4c6e902bab556f2b data/create/loot_table/blocks/andesite_alloy_block.json +6d4a4a0a7d7cb7285468ea63b36c981c4d64effa data/create/loot_table/blocks/andesite_bars.json +0107213106d91b61c1df97535889c0679e09e140 data/create/loot_table/blocks/andesite_belt_funnel.json +2f85ef6f98eca8acbd2f86c28eecf69d3fa135f9 data/create/loot_table/blocks/andesite_casing.json +32ad8d054228f5fab144803fbaae170f1ffc4211 data/create/loot_table/blocks/andesite_door.json +5be5d51725edc57a39a6ee800d428a90039019ac data/create/loot_table/blocks/andesite_encased_cogwheel.json +21d1a64f3a784d8ff4e1092466054a5aa9a28575 data/create/loot_table/blocks/andesite_encased_large_cogwheel.json +e8d1ca881b5acf8d15075cd318858c96035764b8 data/create/loot_table/blocks/andesite_encased_shaft.json +5614e719a4a149d85c3f28289b9ac71e5f455205 data/create/loot_table/blocks/andesite_funnel.json +05b55dab387319bba8fe2ba10411c5d5568d2a53 data/create/loot_table/blocks/andesite_ladder.json +e91d8da2d40b821c360215460a09fc5098c99099 data/create/loot_table/blocks/andesite_pillar.json +f6e7f332e35496a1fa9c461c559fd23f4eb6ba7c data/create/loot_table/blocks/andesite_scaffolding.json +ec92c307581801b7107b2c300aa989231e127d86 data/create/loot_table/blocks/andesite_table_cloth.json +b03318ae5dc57fbadc5181c1787f2a540334eabc data/create/loot_table/blocks/andesite_tunnel.json +6942a871ef29c0e33958507096cbf1b8c0585596 data/create/loot_table/blocks/asurine.json +c16f7da3e4120cef02883f7f6bce6a9a00adf59e data/create/loot_table/blocks/asurine_pillar.json +8047157ff7ddf72047e018172e4894e287afde9a data/create/loot_table/blocks/bamboo_window.json +acb95d47d445d9c264ac69e9c3a2d02b17d00291 data/create/loot_table/blocks/bamboo_window_pane.json +89bae721135280272c8ea2c6e489b91a7f810b17 data/create/loot_table/blocks/basin.json +1d335796015a3b3b187fda46da9d053c5278160b data/create/loot_table/blocks/belt.json +a440e26e46136463901ecd9cfb2ed83539b94de0 data/create/loot_table/blocks/birch_window.json +f0d726fa4284b07b367617103fe95f0c60fffef3 data/create/loot_table/blocks/birch_window_pane.json +86fcb7ed320769f53c5e77d0311fc7074c1c3960 data/create/loot_table/blocks/black_nixie_tube.json +8a1f3122271293ed7e1a8515d249f8eb724c4cf2 data/create/loot_table/blocks/black_postbox.json +559b5e76dd4f7331d5773a70cdfdad6dec54b439 data/create/loot_table/blocks/black_sail.json +6ed8b2a04ef2f5bcea5386adb3cc58da05f65d28 data/create/loot_table/blocks/black_seat.json +d33b608bbab0b3461f6d565101295bfa00f46c72 data/create/loot_table/blocks/black_table_cloth.json +11e63c36354d8f087c2ded96ab99a591b03cd8c5 data/create/loot_table/blocks/black_toolbox.json +6191f80363ccccc8ffeadba369ea27e2e9e419d4 data/create/loot_table/blocks/black_valve_handle.json +60eada2f51371c527ca7bb529c5c7103f03bcde4 data/create/loot_table/blocks/blaze_burner.json +e9957377bd1ed37404ae77599f0ab4a223282e14 data/create/loot_table/blocks/blue_nixie_tube.json +9f2644cd63279077f15f2ca450473521bd658970 data/create/loot_table/blocks/blue_postbox.json +794928fcc74c382732edd7d2c9a70f0617dbb1b0 data/create/loot_table/blocks/blue_sail.json +abed1142040d633b4d04ca29d9908c38e1646262 data/create/loot_table/blocks/blue_seat.json +06446e9ec584aa1ec0dedc5b569681e000d77162 data/create/loot_table/blocks/blue_table_cloth.json +a2edad2a4567731eca49335ebb920be264aec27b data/create/loot_table/blocks/blue_toolbox.json +8eeab82928f7464f352dc242f480f5e9dd0f865b data/create/loot_table/blocks/blue_valve_handle.json +409a086c1bf613671818fbe13362f9889d747c27 data/create/loot_table/blocks/bound_cardboard_block.json +fcf759e182e7d306ada15e8bc73de4e5e2bceba5 data/create/loot_table/blocks/brass_bars.json +90e8442923ae3f93e875bffb79af842266d760e1 data/create/loot_table/blocks/brass_belt_funnel.json +9ad5f21c414a055398b71efd50d628fdfa17d473 data/create/loot_table/blocks/brass_block.json +ccbc95d0b4cb432d83a4fff818c0896ac9c570b5 data/create/loot_table/blocks/brass_casing.json +ce1a7c5ffb474c9dd1d1cd83b204abb0211a0849 data/create/loot_table/blocks/brass_door.json +8dc6d49e1b3270dce34480e7f92a7674692a61ce data/create/loot_table/blocks/brass_encased_cogwheel.json +381ba6f036e92b0284cd43c1605394e2e6110655 data/create/loot_table/blocks/brass_encased_large_cogwheel.json +f82dc8d63eeff1ca2848812dad18cce0520f5235 data/create/loot_table/blocks/brass_encased_shaft.json +544434451ca82ca3fb45e0585f2ff787ebd82391 data/create/loot_table/blocks/brass_funnel.json +3a9c7ed8ee9437a876ce5d16924ccf903cdb4a00 data/create/loot_table/blocks/brass_ladder.json +c92cb8637f1aed8cbdb18d1a14a6bab002d31ac1 data/create/loot_table/blocks/brass_scaffolding.json +66d641928c3674125c0804408e5d8f4084058a87 data/create/loot_table/blocks/brass_table_cloth.json +ec7dcee90890ac03ebe41f7eb730f9bbfc6fdee1 data/create/loot_table/blocks/brass_tunnel.json +e91ba9df7bb90ee2e080d8b86b7d4a8ab2f196b4 data/create/loot_table/blocks/brown_nixie_tube.json +f4ff89d42bc8671efb1c1a02711e129ce0427ef5 data/create/loot_table/blocks/brown_postbox.json +ed0ef0207ca935c4badf667477f3e5a2d257ab6c data/create/loot_table/blocks/brown_sail.json +070fcb0839095cc1fd9e170ca8752a3a614fbc45 data/create/loot_table/blocks/brown_seat.json +aaaa49523dac65396b5e5360cb26ae139326c8cb data/create/loot_table/blocks/brown_table_cloth.json +27ed04879d5d65f26b407183352714dc1135e568 data/create/loot_table/blocks/brown_toolbox.json +898e8a293bdd5edf59bc1743e7ab501c66645705 data/create/loot_table/blocks/brown_valve_handle.json +d4eef9afcfbd1e3d896a50697a6748f6c354b24c data/create/loot_table/blocks/calcite_pillar.json +560994f2e631c658cd5568881c01333c329c8428 data/create/loot_table/blocks/cardboard_block.json +28d95346f9a7d654af861f28071d63b18a0028d0 data/create/loot_table/blocks/cart_assembler.json +278063dc92237fdda8e28078a9939f7a21cf5a82 data/create/loot_table/blocks/chain_conveyor.json +50b2237f4d5299c130440b185c16850efbfe8605 data/create/loot_table/blocks/cherry_window.json +c0e17aae76e91df29d584421cb3395a51b6db9d9 data/create/loot_table/blocks/cherry_window_pane.json +a799cfe0eae2d786b3af5c1d2c424e074a6dd0a4 data/create/loot_table/blocks/chute.json ace9255cbdd1af5e5068916d2a6bed2f861f81f1 data/create/loot_table/blocks/clipboard.json -bfd871acdde6c239098ead188a5aad7636d11bc0 data/create/loot_table/blocks/clockwork_bearing.json -46b60dd75e2710a12642cf99b53b593e0e39ea85 data/create/loot_table/blocks/clutch.json -420404718066035bc7a25f7d5c758a8945dddb66 data/create/loot_table/blocks/cogwheel.json -9553bd58623a5df8f5cd6706633a96699afa4dc1 data/create/loot_table/blocks/content_observer.json -cef6a697d6797dbd5395a4377c3e943ca3099433 data/create/loot_table/blocks/contraption_controls.json -93e18057b39238aa3bd913e10ea027eb37d38d94 data/create/loot_table/blocks/controller_rail.json -f2058ad809606d54123c7efbad2a6b995ed1defe data/create/loot_table/blocks/controls.json -7de53424f1539c847eb91b6731a24ec9a011fb9d data/create/loot_table/blocks/copper_backtank.json -fa0856e11351ad0882de2066569807e782071881 data/create/loot_table/blocks/copper_bars.json -5f48b688829ca7849997d88697cff2de1ede4804 data/create/loot_table/blocks/copper_casing.json -0937b9f634b86dbe41e07eda52c69993fce60fb5 data/create/loot_table/blocks/copper_door.json -8ed70d812f38adfa147db07a4f2bbe206a69ad20 data/create/loot_table/blocks/copper_ladder.json -ac621731ca23e6fbb1003be59edacdf837dbc37e data/create/loot_table/blocks/copper_scaffolding.json -be31f0c68bfe80dff88959bd30ef9a9080dd3b3b data/create/loot_table/blocks/copper_shingle_slab.json -83ae2652a2df217730d6fb34a65c3962e82a961d data/create/loot_table/blocks/copper_shingle_stairs.json -9be387731859ccc3aec7701c1804ddc3c5dde216 data/create/loot_table/blocks/copper_shingles.json -f6a29868a011d9ad73bc29be94ec2a07a2626323 data/create/loot_table/blocks/copper_table_cloth.json -adbe83d6bf88dd7d2b0b8788bb619cedd37f59d9 data/create/loot_table/blocks/copper_tile_slab.json -1e06f16b1fa8e78af5cbfc90ba8ff1136de83d2d data/create/loot_table/blocks/copper_tile_stairs.json -9cb359c96543d7421250c4ef4e83a5e170974efb data/create/loot_table/blocks/copper_tiles.json -4f75cad20e6b091d1f07cf3db98520d2dc3af5e7 data/create/loot_table/blocks/copper_valve_handle.json -14a493a7bad6bd399b662da470b71810bd56e812 data/create/loot_table/blocks/copycat_bars.json -3a2f3ab0834a0c5089ba0a11f5e9784ce59ef6d8 data/create/loot_table/blocks/copycat_base.json -a4c40e586fe5b866665ba52555ac8941b00267c7 data/create/loot_table/blocks/copycat_panel.json -c17df625c252aae4a52161da1d7ce9fccde1174d data/create/loot_table/blocks/copycat_step.json -c0f3ae61748cf5952abc3c2d0d7fa397eaa48257 data/create/loot_table/blocks/creative_crate.json -05906a2f442c1c5ed7d756afaed35f0d57f63a29 data/create/loot_table/blocks/creative_fluid_tank.json -2fc01f3d7b96f7fccc45b5dde19332aa2f037f78 data/create/loot_table/blocks/creative_motor.json -d73dcf030855d1d88fdc7e2a0c94f3d12fe8f600 data/create/loot_table/blocks/crimsite.json -e9cc56f746d021b122e3b40d4e7e61bd2e11e645 data/create/loot_table/blocks/crimsite_pillar.json -20db40cfd8d16f06f6067038adb79f20176f9cff data/create/loot_table/blocks/crimson_window.json -34629ceeb99bcfc15ae3f2977cb1e4b84aa74a66 data/create/loot_table/blocks/crimson_window_pane.json -b892718d33caf0c260b902c92f46f3bfd827af45 data/create/loot_table/blocks/crushing_wheel.json -ff7853a5d5c0f3bddbcfe07e47efd1ff04b14f0a data/create/loot_table/blocks/cuckoo_clock.json -9083b026ee254645430434b67c2ba7a842f888bf data/create/loot_table/blocks/cut_andesite.json -c74a4cac08ab1f66146466ff9fb40c8f210de63c data/create/loot_table/blocks/cut_andesite_brick_slab.json -df3f5dcbf676106800bc1113bb022658eb5e85d6 data/create/loot_table/blocks/cut_andesite_brick_stairs.json -95c5a4a3327f522d986d7baaa747fce5ead8c032 data/create/loot_table/blocks/cut_andesite_brick_wall.json -c1aa69f80ba11dd52fb3627fc32377599f5ff887 data/create/loot_table/blocks/cut_andesite_bricks.json -cb6cf8aefaac1e00596bd64a182a329dbba7e659 data/create/loot_table/blocks/cut_andesite_slab.json -7106a637809dcbeb9d4a02a7ff9dc52f7fd9d7a2 data/create/loot_table/blocks/cut_andesite_stairs.json -e3cfa2ecb0b90ebe07cc98f8e47d22d2c0da67e5 data/create/loot_table/blocks/cut_andesite_wall.json -75eacbc0656e7a83a20a054755ea7d7d78af983d data/create/loot_table/blocks/cut_asurine.json -43ad24bb9da878111f3606a17ef9b45bcc4964ae data/create/loot_table/blocks/cut_asurine_brick_slab.json -8f4d0af32546b6cc77c68a08dc74494b8be1b7c3 data/create/loot_table/blocks/cut_asurine_brick_stairs.json -bb9ce58aa5b4e38c4d3b29aa8e0d905054023eae data/create/loot_table/blocks/cut_asurine_brick_wall.json -f780d37b956ed734cafcbe42b77f1a8ebfa33350 data/create/loot_table/blocks/cut_asurine_bricks.json -972ca04f91a1ce4d35995c14e1b17f773b15b61e data/create/loot_table/blocks/cut_asurine_slab.json -a55778dd8735286c3abc65046186b6b8dff0367e data/create/loot_table/blocks/cut_asurine_stairs.json -70284c686f16d215ff1a8fb19bbe36fddbd31e18 data/create/loot_table/blocks/cut_asurine_wall.json -0f450ecf60c5d201f332b2736c552d0b51b159b8 data/create/loot_table/blocks/cut_calcite.json -ec0d2854433ac4f58e53685c69dc19629fee16ca data/create/loot_table/blocks/cut_calcite_brick_slab.json -584e39fa0b78ba8649f69b53f9f032dd1532d6ac data/create/loot_table/blocks/cut_calcite_brick_stairs.json -cc9cbdb7a50305e47181b2452bfce887f9879437 data/create/loot_table/blocks/cut_calcite_brick_wall.json -aec526af372816f306826eefe4a6318db7964892 data/create/loot_table/blocks/cut_calcite_bricks.json -b4e5b6d5cb63b7b1a4fe639fd727a381bfd00588 data/create/loot_table/blocks/cut_calcite_slab.json -ca83b89401dba12341e6f26786103c10c90447ca data/create/loot_table/blocks/cut_calcite_stairs.json -64df1c4a373c28bf9be3630935b01a43abd22e03 data/create/loot_table/blocks/cut_calcite_wall.json -5df3a2229657d7b616790e922b1d1d558b4a5128 data/create/loot_table/blocks/cut_crimsite.json -6fee8d6425e1c832abed8fd9bccc8e6fae9441fc data/create/loot_table/blocks/cut_crimsite_brick_slab.json -3123bc9e6123dfeda9bb3cece5c2220ac8485535 data/create/loot_table/blocks/cut_crimsite_brick_stairs.json -56a8c7b1588f6fa9a1fb438e91b04673e02a0c86 data/create/loot_table/blocks/cut_crimsite_brick_wall.json -59cb609bc9671ac481832eeaf942533c6861fc0e data/create/loot_table/blocks/cut_crimsite_bricks.json -90ed82b09f2650ee913956d62803d15fc4c0bdbd data/create/loot_table/blocks/cut_crimsite_slab.json -0e237e008523ed3e9934c598a708be533aaa0861 data/create/loot_table/blocks/cut_crimsite_stairs.json -48e1edca75186f160a12fa26ac262c7f86d62c82 data/create/loot_table/blocks/cut_crimsite_wall.json -7bfe4d183ed26de1d7b241c27880a70d28426502 data/create/loot_table/blocks/cut_deepslate.json -fa4b940ad8ee432ee0fabf496d2da3d5039c204a data/create/loot_table/blocks/cut_deepslate_brick_slab.json -1063a94b3e90a52a7492d85b1c086514333f3421 data/create/loot_table/blocks/cut_deepslate_brick_stairs.json -878d809a038c626e8054f9b71e27be08388d7615 data/create/loot_table/blocks/cut_deepslate_brick_wall.json -6e375a42ddf38c99fee86531471573716e27fa44 data/create/loot_table/blocks/cut_deepslate_bricks.json -7b5e46aaf34d71993f50b5b6fa1cd5d7ea64264c data/create/loot_table/blocks/cut_deepslate_slab.json -7d45e8bb037a1e550132854200d57ce31e073993 data/create/loot_table/blocks/cut_deepslate_stairs.json -cd80fd4f573d59c22f0b9799f1ba7422215d4ff1 data/create/loot_table/blocks/cut_deepslate_wall.json -d79d52657307a30422d9ff2eb1caad78024c24f7 data/create/loot_table/blocks/cut_diorite.json -1809235166024fa74f65a96b622faa8eddf4ce14 data/create/loot_table/blocks/cut_diorite_brick_slab.json -a6bb9fb4eee3dab9a540b228801ce100c048c2a7 data/create/loot_table/blocks/cut_diorite_brick_stairs.json -690a938a04543cb60f2952335be26b2df9c75715 data/create/loot_table/blocks/cut_diorite_brick_wall.json -9f627b6449ae27a1990b84a60349736129a11e39 data/create/loot_table/blocks/cut_diorite_bricks.json -208999222adb5b1cd4fa47b85000841dbae4ad21 data/create/loot_table/blocks/cut_diorite_slab.json -12849a868e8dff48ebb688c84fc53d4cee2a4eaa data/create/loot_table/blocks/cut_diorite_stairs.json -469fffcdd40aea22fedb81b7778cc3c61928f3fd data/create/loot_table/blocks/cut_diorite_wall.json -302d0bb640f696109fe4edc0c1fa9db332231511 data/create/loot_table/blocks/cut_dripstone.json -eb31bc108180e2248d575d5d72325b5585254af0 data/create/loot_table/blocks/cut_dripstone_brick_slab.json -9b624a456baf55960675d7857e159f69911a281a data/create/loot_table/blocks/cut_dripstone_brick_stairs.json -b4c754d4d5a6c28f537c2d73844e39059b2c1450 data/create/loot_table/blocks/cut_dripstone_brick_wall.json -48707f37b94ff1a930ee45bb9e8b6b4b67226945 data/create/loot_table/blocks/cut_dripstone_bricks.json -eb9eca9a69f763cbe81dc79375ef76978594b51e data/create/loot_table/blocks/cut_dripstone_slab.json -47fae3abc8bea3ee802d6759192e631f50329c5f data/create/loot_table/blocks/cut_dripstone_stairs.json -70b71cc460cba2955694baf0550eadc2187e3a8a data/create/loot_table/blocks/cut_dripstone_wall.json -26433a16a91414be15b20dc85b81b76d086be889 data/create/loot_table/blocks/cut_granite.json -c6b8dfa87e9c33a0dd2b3398dcc524347e826d44 data/create/loot_table/blocks/cut_granite_brick_slab.json -5e00417f06b4d357e7469f0efa6e319dfc587da3 data/create/loot_table/blocks/cut_granite_brick_stairs.json -8d8779846af8121426f128cc7b5d501037bd1cd4 data/create/loot_table/blocks/cut_granite_brick_wall.json -65c3936e78a90c53faa0b9f9b3034afc2728e7b9 data/create/loot_table/blocks/cut_granite_bricks.json -6e7253b2801611b4698e786f495c2ade1088ee0b data/create/loot_table/blocks/cut_granite_slab.json -de8c10fb2c7409a3375f2db5cdce2027c3f419bd data/create/loot_table/blocks/cut_granite_stairs.json -cdf40bb46d9457a66129b300dc4d3f0160cc1de2 data/create/loot_table/blocks/cut_granite_wall.json -ac5f062c7fc270c63d67ccecf19499a9e91fa1c4 data/create/loot_table/blocks/cut_limestone.json -3b6d3a9b12cf1c2a20bf337cc0155bb66967f0ee data/create/loot_table/blocks/cut_limestone_brick_slab.json -701249cc12b7aa6f5cc1691ac4dd17e665aa2180 data/create/loot_table/blocks/cut_limestone_brick_stairs.json -3b8c5eef9b0e8c35e8573ce91f5fddbac7f76f24 data/create/loot_table/blocks/cut_limestone_brick_wall.json -b60fb652e1f83b1af12a15cb47450bd9a6087f6a data/create/loot_table/blocks/cut_limestone_bricks.json -ba186786e8677f1c769e8f231fe872c48330e13a data/create/loot_table/blocks/cut_limestone_slab.json -d354966d57804afda39ff27336d8b0f38acf6ea3 data/create/loot_table/blocks/cut_limestone_stairs.json -28b4eee2c6da259e50c58a51905fa2b79a9b89ef data/create/loot_table/blocks/cut_limestone_wall.json -b3d6d90dd0c3e9d4b47d1f87d5abc354dd8c1447 data/create/loot_table/blocks/cut_ochrum.json -67cadc71d90fb2527b9b2b72a74463d71571e493 data/create/loot_table/blocks/cut_ochrum_brick_slab.json -487b3e7dc1d9d07183b9b699e33f6371858435aa data/create/loot_table/blocks/cut_ochrum_brick_stairs.json -289757860f07b63dcce531a74ce7e60b4669c51b data/create/loot_table/blocks/cut_ochrum_brick_wall.json -5856859aae0cc633cbd9d83ea7cf7910ce1a88de data/create/loot_table/blocks/cut_ochrum_bricks.json -c9deec5e3c7343afa3d013704179e2147b2eb7ec data/create/loot_table/blocks/cut_ochrum_slab.json -e851d829db8ea4398bc1cbe6e743b4fba98d3413 data/create/loot_table/blocks/cut_ochrum_stairs.json -5dce8524b70baeefaeba13422f5900b1a161a867 data/create/loot_table/blocks/cut_ochrum_wall.json -293064edf2909db8c9edc26bedd1cc023c647664 data/create/loot_table/blocks/cut_scorchia.json -895c4b9cc71701a26ae0e765ee67f0c06cc70a9c data/create/loot_table/blocks/cut_scorchia_brick_slab.json -c53d72176cb5dd93977975dd84647391fa563e3a data/create/loot_table/blocks/cut_scorchia_brick_stairs.json -460232ca38cba2f0adc5316d6db8db94db231953 data/create/loot_table/blocks/cut_scorchia_brick_wall.json -767910313f0983ebfb49b80526747d762cbdf782 data/create/loot_table/blocks/cut_scorchia_bricks.json -c8201964d877a932fe9a9a2d0360004440f7c380 data/create/loot_table/blocks/cut_scorchia_slab.json -dfd09849dbf48a064269a5ea28d0422caa87e4d4 data/create/loot_table/blocks/cut_scorchia_stairs.json -bd5304e38bb92a445c159e9fe647b906e28b232e data/create/loot_table/blocks/cut_scorchia_wall.json -6b87a22c39b545d5be92e476751b99ceb4bef740 data/create/loot_table/blocks/cut_scoria.json -659e86f89499539e435989c2eb29e88e9a0ff9f4 data/create/loot_table/blocks/cut_scoria_brick_slab.json -8434d461090bc43328eec0b4249d27a9ba383707 data/create/loot_table/blocks/cut_scoria_brick_stairs.json -e3f853395b9b6fb7d5bb103c121a77e04526a9e8 data/create/loot_table/blocks/cut_scoria_brick_wall.json -833252d2d63c7502f6f0d7981673a8081046c944 data/create/loot_table/blocks/cut_scoria_bricks.json -8360d736887ae3dc22bcf522791ef981e380456c data/create/loot_table/blocks/cut_scoria_slab.json -c771f03308f45e1e87d92181f94cdfd4e61fa5d8 data/create/loot_table/blocks/cut_scoria_stairs.json -6fecb7fa2774ea63ac0c66e9c3d0f41d6b8cdff7 data/create/loot_table/blocks/cut_scoria_wall.json -396074ee7fd5a3ddbac9332c74b7bdc4164919e2 data/create/loot_table/blocks/cut_tuff.json -5148f230c773b83268d52650bdacc660025feb95 data/create/loot_table/blocks/cut_tuff_brick_slab.json -19719a4a3f63d1ec46a9ca9736a825d2dcc880ff data/create/loot_table/blocks/cut_tuff_brick_stairs.json -e20991b67c07dca62c212b43da5b7e7e98146c0e data/create/loot_table/blocks/cut_tuff_brick_wall.json -81465ef7aa555d36adf249bbc9acfe80abbe308e data/create/loot_table/blocks/cut_tuff_bricks.json -6d16bd3860207ff6912afc2bf3f0454b572aabba data/create/loot_table/blocks/cut_tuff_slab.json -c14e52ac9901aa873c33d51988bd26465ce0e095 data/create/loot_table/blocks/cut_tuff_stairs.json -dd70800c79fa2ff56bd4ea032cf069bc27cc9076 data/create/loot_table/blocks/cut_tuff_wall.json -1957b610d14460cc9ca797fe953bf9831509cdbf data/create/loot_table/blocks/cut_veridium.json -c1515a908bde249c087be1e73aec37773bc3dc5c data/create/loot_table/blocks/cut_veridium_brick_slab.json -d9552e3e9f4de0e09df8ca9446066e94c6e2c681 data/create/loot_table/blocks/cut_veridium_brick_stairs.json -584c4bd13d9870f9798155b47cc0d32e5751294d data/create/loot_table/blocks/cut_veridium_brick_wall.json -673d1f0fefa7725ac5bfcabfcea577041adc4eeb data/create/loot_table/blocks/cut_veridium_bricks.json -009186ed0efe29a229a28cfd913bc02ddad217d4 data/create/loot_table/blocks/cut_veridium_slab.json -4845f7127921c7dd93a59118e63c37107d6c2061 data/create/loot_table/blocks/cut_veridium_stairs.json -b56caea031d637321eddfd5d122fc357d2c2e49c data/create/loot_table/blocks/cut_veridium_wall.json -ffb440a03f5e513b8d20c2725a95dc5c9b84c73b data/create/loot_table/blocks/cyan_nixie_tube.json -914146303ae7e73c4f9283ea61cd5443f49f5cde data/create/loot_table/blocks/cyan_postbox.json -8858b4e1b4e51889b2006005585a17e4978ed8e9 data/create/loot_table/blocks/cyan_sail.json -8dccecb2c87d7421efdfb3fb97ae62b79f0b4411 data/create/loot_table/blocks/cyan_seat.json -30bfeac6b7766ff1985ce9953f0dd6824f177aef data/create/loot_table/blocks/cyan_table_cloth.json -67e232d6049f94d8d6ecf355728d41ab7b9825fc data/create/loot_table/blocks/cyan_toolbox.json -8c7fd26e7bd03916014274e005d69ab8f14df973 data/create/loot_table/blocks/cyan_valve_handle.json -30de983a730e4373802b6972a6be462fd1c9cb1f data/create/loot_table/blocks/dark_oak_window.json -c5825f38af7c1aedc302dcf099299a2ef8ffc234 data/create/loot_table/blocks/dark_oak_window_pane.json -7134df2866c392beb1be53423c091af06de79370 data/create/loot_table/blocks/deepslate_pillar.json -9b8cb7660f2019bbbf8baa2ba856afa20cb0c095 data/create/loot_table/blocks/deepslate_zinc_ore.json -8c1d8d9680834419b9049bc11137316b75f59f46 data/create/loot_table/blocks/deployer.json -9ded269b860ed96c964f6f8960a680a5c87fa033 data/create/loot_table/blocks/depot.json -eec1b262b34fc05a95bbb3762cf96a050030d010 data/create/loot_table/blocks/desk_bell.json -98987901bdb35efe2922b420def9cdb116ec5416 data/create/loot_table/blocks/diorite_pillar.json -6dda1fa6622ce351af2e0aeec2b5c2e4183fb593 data/create/loot_table/blocks/display_board.json -5320ddec6855d99e5685bb424d02165eca480805 data/create/loot_table/blocks/display_link.json -7e5ae3352268f975a517dd3682be7f8c7f2de3ab data/create/loot_table/blocks/dripstone_pillar.json -e4c0fa9229143078e12da226804e3e92e49a31a3 data/create/loot_table/blocks/elevator_contact.json -52a1b1e28189f2d152829cf166215326f7c73712 data/create/loot_table/blocks/elevator_pulley.json -dfe0af3ff61ed2b3082e49c745d8a3e0c5973f4b data/create/loot_table/blocks/encased_chain_drive.json -a2e9a8a10b7fc730c1d7c8db3b529e7a37b683f5 data/create/loot_table/blocks/encased_fan.json -7ede9f64839f51e6a2eb05b08577d2873f281401 data/create/loot_table/blocks/encased_fluid_pipe.json -4869211639326efaabd1aba1067bfbb3ab012884 data/create/loot_table/blocks/experience_block.json -9dbd37ef5ff549f10475101205c1a9d4a44140bc data/create/loot_table/blocks/exposed_copper_shingle_slab.json -d2c9abd9260eb82ea1c2eeae5e2d6abd0b4d3ce8 data/create/loot_table/blocks/exposed_copper_shingle_stairs.json -9fa4b0c8ee313b6c9a57d7d5b687cdd01c8259d3 data/create/loot_table/blocks/exposed_copper_shingles.json -6841c02935838f00011d33fc392965326c4dbc5b data/create/loot_table/blocks/exposed_copper_tile_slab.json -432a047156b93a09b7e027fc34f5680a8f68dc92 data/create/loot_table/blocks/exposed_copper_tile_stairs.json -f0905ae4c9bdff8fe9e1ab4682a7b1efe2d27d9d data/create/loot_table/blocks/exposed_copper_tiles.json -4dd285b35d9b94d48f7aa783e93bdd04d58c4a26 data/create/loot_table/blocks/factory_gauge.json -3fae2a7a3f133a1d7c76ce91f6c48eab787d6ff6 data/create/loot_table/blocks/fake_track.json -1d4734d6d9ba039c0dfa2271f08cdb55e35b721f data/create/loot_table/blocks/fluid_pipe.json -9c112883a3763b2d286d9a5a0980dcea82bcc9e6 data/create/loot_table/blocks/fluid_tank.json -14d7f09950c12cf939ee1807048a308821460bbf data/create/loot_table/blocks/fluid_valve.json -b1ced25e638167cf0a59332ec450edec9a3bd309 data/create/loot_table/blocks/flywheel.json -396dcbf7e019d4d06b7fe64722f1bc534567ecb2 data/create/loot_table/blocks/framed_glass.json -49648fb28c84fe10aee43ea5543dc3e5238cb9e8 data/create/loot_table/blocks/framed_glass_door.json -cb04b3823740e7f7aafbca298a5ce8ab321578b3 data/create/loot_table/blocks/framed_glass_pane.json -7b2474aca42058587647db1abfc3cb0d4563745d data/create/loot_table/blocks/framed_glass_trapdoor.json -7dffe8c8e89a09d4c076c816201530472b4bc87b data/create/loot_table/blocks/gantry_carriage.json -45007a805570679b431ca703c635ce33f52e0277 data/create/loot_table/blocks/gantry_shaft.json -f33d0bdbf35ca5294684b0628419ad11d508a649 data/create/loot_table/blocks/gearbox.json -a4c86e5456bbbcc417d736151ac6a15c944d555b data/create/loot_table/blocks/gearshift.json -ffa2776989447e44fa10673986961ab395ebd592 data/create/loot_table/blocks/glass_fluid_pipe.json -07d8265c285ebb69b9160d516905ae1f17acc87d data/create/loot_table/blocks/granite_pillar.json -41feb0f235495384ebca5b6f70d01b6f0c0c8878 data/create/loot_table/blocks/gray_nixie_tube.json -6f123d5e6612274223ddb695e582abd952d3521c data/create/loot_table/blocks/gray_postbox.json -bd526fc4f0acea571c37b2ecbb7267fee6be29f0 data/create/loot_table/blocks/gray_sail.json -5e23e2032f92737eaa6e6cfb4c62232566f06e77 data/create/loot_table/blocks/gray_seat.json -d60c2dfc073632b8488e13190b15436173c9caa4 data/create/loot_table/blocks/gray_table_cloth.json -4e594acb009eebd555ff61de128e855352538cdc data/create/loot_table/blocks/gray_toolbox.json -aa0d47422e0adc3fb18e5c0eefd25c417ddbf9ae data/create/loot_table/blocks/gray_valve_handle.json -4cfbe1bdc89916f78f891b9dbaed461cd838584b data/create/loot_table/blocks/green_nixie_tube.json -e99e3895a19faa928e40fa17fbfbda6d3566b1ed data/create/loot_table/blocks/green_postbox.json -6c22cf8de05828af7979dc32d9e151297d551fe5 data/create/loot_table/blocks/green_sail.json -fbd61c331d4fda692f0e7174aed5aed3652d3553 data/create/loot_table/blocks/green_seat.json -b918c78d0c8dabd9a6962e4c441096a12f4f47d1 data/create/loot_table/blocks/green_table_cloth.json -82226509053d610f4b63e0cb2e708f0b9c052cbd data/create/loot_table/blocks/green_toolbox.json -17cbfa7c5627a2ac92826e349d09509f4722fdef data/create/loot_table/blocks/green_valve_handle.json -8dfbcb358f008317a0515ca35f3976470ca7c4e9 data/create/loot_table/blocks/hand_crank.json -f917ddc34b196750efbab88ee5565ecd0e38e0e6 data/create/loot_table/blocks/haunted_bell.json -1556c75c0c6ab642b9a781175e48c414c596ea44 data/create/loot_table/blocks/horizontal_framed_glass.json -53ae980a8b1c734d9eff2e0c7923249a14890fa5 data/create/loot_table/blocks/horizontal_framed_glass_pane.json -e65fae1b9b72cf2208696463fa20a82a4d64fb62 data/create/loot_table/blocks/hose_pulley.json -34c239150baa92e03ca89430148560e1b7a1f02d data/create/loot_table/blocks/industrial_iron_block.json -a6e90879b993c4f682c5b7af4dd328b61b2ea6d5 data/create/loot_table/blocks/industrial_iron_window.json -d35c072f356d9decb9c435612e8f1e795f5417a6 data/create/loot_table/blocks/industrial_iron_window_pane.json -c22dea1941471be65c811cdc2ce7b77d2247e9e1 data/create/loot_table/blocks/item_drain.json -528078b0cf042236d2cb0701fb55f41f54aa932b data/create/loot_table/blocks/item_hatch.json -72b5a7288f7f54694df5f456e4ab4433bd38dfff data/create/loot_table/blocks/item_vault.json -175ea3533b385a0e9317d3dc6f8587373469482b data/create/loot_table/blocks/jungle_window.json -717139146aff26b315f7bb1cf2b91c595d42970b data/create/loot_table/blocks/jungle_window_pane.json -6b3f6cfa31bbde8c72989be6505a6c6967b33263 data/create/loot_table/blocks/large_bogey.json -df05939acedf93b586191cc06acf5e6883836be2 data/create/loot_table/blocks/large_cogwheel.json -eaba5847c82b7cbdb114882d47ba5c3af68d5f7d data/create/loot_table/blocks/large_water_wheel.json -1edc716b0015a2338603d576d1a7c6866682b394 data/create/loot_table/blocks/layered_andesite.json -f62e09ac8009c117e4c9dc1c59377d9df381241a data/create/loot_table/blocks/layered_asurine.json -414926a57ef0769e3ea6758de0e34f34b6604760 data/create/loot_table/blocks/layered_calcite.json -c63e44db67eeb024fcbdbedb2e942ab02ba7e078 data/create/loot_table/blocks/layered_crimsite.json -831b9b0343dc792b6031e088958d3b842ab3f839 data/create/loot_table/blocks/layered_deepslate.json -3ffac59d530ef44b4ebf17f6fe699f5616e4067d data/create/loot_table/blocks/layered_diorite.json -5a0e86ae818424a176e6c11c0fe50323d98260f3 data/create/loot_table/blocks/layered_dripstone.json -90c11ecda80569650f26d32a8f78a317f4d767c5 data/create/loot_table/blocks/layered_granite.json -afa7076b6634f7e3d58e5370e220e9409c82f3dd data/create/loot_table/blocks/layered_limestone.json -ae3b9785ae64f1c936cac555505f97774b09fd95 data/create/loot_table/blocks/layered_ochrum.json -83a1bfddc1aa56849a9360ab6e5ade62c14bb946 data/create/loot_table/blocks/layered_scorchia.json -6f6da7d84dbbdd2f555d76f5876834392a0dd71c data/create/loot_table/blocks/layered_scoria.json -b4882fe056a8d03bddf7a8c4fa70ee06548e1743 data/create/loot_table/blocks/layered_tuff.json -7f9ea6bfcf8344018866013e12d23edf21f034e9 data/create/loot_table/blocks/layered_veridium.json -54a876a52655d5c9c33325a7d07c7978d33adca6 data/create/loot_table/blocks/lectern_controller.json -8a6153a0b5857c77cdac0cffcb22e30ae6181f3a data/create/loot_table/blocks/light_blue_nixie_tube.json -27bbda185ab99cff4974e6bfc40b72265896ef42 data/create/loot_table/blocks/light_blue_postbox.json -304072298d4078eca7e0fb8c58ea3144afe246a8 data/create/loot_table/blocks/light_blue_sail.json -a1396be526ef27c6d0f97cdd0f0e61f810e7353b data/create/loot_table/blocks/light_blue_seat.json -b281c6ff8b383f27bba02e11819ddab13c80a473 data/create/loot_table/blocks/light_blue_table_cloth.json -ade300271765f9b15ef5e060e244331185f85677 data/create/loot_table/blocks/light_blue_toolbox.json -bf4e6c308d82f15689406b5b3e88fe95d49a9a44 data/create/loot_table/blocks/light_blue_valve_handle.json -6928acbfcafdfead9750be6760da163b86532054 data/create/loot_table/blocks/light_gray_nixie_tube.json -eb95d1e0abb93d5efecb0809e3901f37021c4dfc data/create/loot_table/blocks/light_gray_postbox.json -886ef98e4bd60d8860b56441da6928e24f262d70 data/create/loot_table/blocks/light_gray_sail.json -1ae0ff25ac9468e67ab1847b87a37829328d4c84 data/create/loot_table/blocks/light_gray_seat.json -e61e9b3e116037c4ad44a7e222e5127e5767ddad data/create/loot_table/blocks/light_gray_table_cloth.json -277d8f3a5b5d348e591e565b64e274148c6374ff data/create/loot_table/blocks/light_gray_toolbox.json -3e586bc1281f15e25e75475dd726578ff032c6ae data/create/loot_table/blocks/light_gray_valve_handle.json -582bb26f6df37d0c2dbe12983ad05fc74f5fb5c0 data/create/loot_table/blocks/lime_nixie_tube.json -ec9d973d218b26d51b82f265603feab31170c619 data/create/loot_table/blocks/lime_postbox.json -623ac65211a9920325308b55285f78e3b7275751 data/create/loot_table/blocks/lime_sail.json -7efe69664a781b292f491d5ff89e27dd5991f3cf data/create/loot_table/blocks/lime_seat.json -10ecd65ecba6b66652dd04a385fc47a44c1f8110 data/create/loot_table/blocks/lime_table_cloth.json -e1eb71cc324d27291f6489cd232a43d3603b6934 data/create/loot_table/blocks/lime_toolbox.json -1a3ed7cd5660d7ea014956ea642e0b07d89bc297 data/create/loot_table/blocks/lime_valve_handle.json -c6bb0877c537dda15469934383dc45c608bfd1a4 data/create/loot_table/blocks/limestone.json -49058a62e1abd34917f983b6bc13cc4353b613a2 data/create/loot_table/blocks/limestone_pillar.json -baf70f9eb579f20b232a2af4e6b00a54f84844e6 data/create/loot_table/blocks/linear_chassis.json -e4c0f8ca822cf7555bd011825b430c3c735160d4 data/create/loot_table/blocks/lit_blaze_burner.json -6bd8b044cc9c69a5268372e5436f556da2c1bf21 data/create/loot_table/blocks/magenta_nixie_tube.json -601bc43286b9f6b978ae8681281bf8e195f8211d data/create/loot_table/blocks/magenta_postbox.json -b4d06c9ce7fbec0f23bb6dbc446b77d070f06775 data/create/loot_table/blocks/magenta_sail.json -300e480d8e43e3a4ca19a92ae1360c02f7c5accd data/create/loot_table/blocks/magenta_seat.json -64bbc8f91a7b60d86c76e237cb87863f7f7539c9 data/create/loot_table/blocks/magenta_table_cloth.json -23eaf113b93c6653123ccc463d48a26785a0af6a data/create/loot_table/blocks/magenta_toolbox.json -347115d1507997a6f838d222092092ab994db7e5 data/create/loot_table/blocks/magenta_valve_handle.json -242d5de5c5c7511faf43fb2b06519543b34085ef data/create/loot_table/blocks/mangrove_window.json -6d2b9ebdc1f0282876645e41987710826f81849c data/create/loot_table/blocks/mangrove_window_pane.json -b8446967e73dacfbf6f084a68cf2d3df300bc077 data/create/loot_table/blocks/mechanical_arm.json -92e14f004898e382cd4b8f76c355f77342e997c3 data/create/loot_table/blocks/mechanical_bearing.json -8b56cb488bac4ca7aee7d1f15c0b85f3991a3173 data/create/loot_table/blocks/mechanical_crafter.json -c8e825704d35e75e0a7ae96d9771d498b0a947c7 data/create/loot_table/blocks/mechanical_drill.json -f42bbb5eb58ffdd6e6ec9a08fb878317f02b20a2 data/create/loot_table/blocks/mechanical_harvester.json -3cb3ad320fe0a50462a888421ecacbe94db31844 data/create/loot_table/blocks/mechanical_mixer.json -5818d9379b754f1142491d676a9887136f4efdb3 data/create/loot_table/blocks/mechanical_piston.json -b57ce35c2dc324f82d666d0af129f522e96baea7 data/create/loot_table/blocks/mechanical_piston_head.json -d054f791dac1f827a3dde74cb2115f8d104c9b84 data/create/loot_table/blocks/mechanical_plough.json -9d71dd7a0fee7dc2035fec4d93b4cdac99d1a769 data/create/loot_table/blocks/mechanical_press.json -764122c5d55c8c8c7754c335afb1fb91cb7c79db data/create/loot_table/blocks/mechanical_pump.json -75f8f9e0a9d0ad79e9e6b01fda086611fe138021 data/create/loot_table/blocks/mechanical_roller.json -4b4cedbf902810e0e42af4fa74d254bc9ec8b590 data/create/loot_table/blocks/mechanical_saw.json -1597e5cb939788130a6e69893b2b4cc0b2dd8c3e data/create/loot_table/blocks/metal_bracket.json -fde340fb25b8ac62b53b6e702081d7aa84d22646 data/create/loot_table/blocks/metal_girder.json -91a971ae39186e9a25b90179cbbaf96923aa73bf data/create/loot_table/blocks/metal_girder_encased_shaft.json -1561ba41cff26d63cfde5594524270d81f087eaa data/create/loot_table/blocks/millstone.json -d6cb5841ea16472edc4ac08620a44b3dd80893b3 data/create/loot_table/blocks/minecart_anchor.json -fa0a57242873c6ee7290da5aeab6f88e37c27b53 data/create/loot_table/blocks/mysterious_cuckoo_clock.json -fa4825248b9c9ff41c1de3165d5c008ba5cc4ebe data/create/loot_table/blocks/netherite_backtank.json -17c677fdd1aba0b97ef143de2e6a968971793b91 data/create/loot_table/blocks/nixie_tube.json -1ffa2df71b22ae8450044bba8486f96b453ed402 data/create/loot_table/blocks/nozzle.json -806049653f7b89bfcb3389ad1a3b201abd05713d data/create/loot_table/blocks/oak_window.json -14c50f4c7571652c28216fead974f3a187f2b9bf data/create/loot_table/blocks/oak_window_pane.json -461e9818f41aab34905757a423455cdcee780e67 data/create/loot_table/blocks/ochrum.json -1259a439286385d5b7c48bff89d0839f1f2e02c2 data/create/loot_table/blocks/ochrum_pillar.json -3f6940f13ca705bad7cdb9a9b80a3ae84f70f80c data/create/loot_table/blocks/orange_postbox.json -d6323d4b30faa87cd4b5b8b815cb16f78296f203 data/create/loot_table/blocks/orange_sail.json -119fc4c3055c09c7958ac405925a6b7be2081c6b data/create/loot_table/blocks/orange_seat.json -24b82ccacdc00d98a660c20384c76927cd8c2948 data/create/loot_table/blocks/orange_table_cloth.json -7e8feafb361c26b182803a105664b63cc06bd5b1 data/create/loot_table/blocks/orange_toolbox.json -30aef2df782b6b35cd16b4c205bb15de85bc0664 data/create/loot_table/blocks/orange_valve_handle.json -03d488b5bd20de9c7c6dc67a2e720e73c4192ba4 data/create/loot_table/blocks/ornate_iron_window.json -9e2e856c9a822e0d1edc113026d007502f3bea8c data/create/loot_table/blocks/ornate_iron_window_pane.json -62c43a533e4ffeeec9f7657db5a796569087f806 data/create/loot_table/blocks/oxidized_copper_shingle_slab.json -f47a01824093455030fca66e7b8a39bcfc61d219 data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json -3e54d3c4755a43d837a1d9b2005ea1dee4d02555 data/create/loot_table/blocks/oxidized_copper_shingles.json -4d815b361af81bd0c0e14c853ca54ad3cde66a57 data/create/loot_table/blocks/oxidized_copper_tile_slab.json -d599ef03d1b69e4367ec0dea78f52c1964c99f9b data/create/loot_table/blocks/oxidized_copper_tile_stairs.json -4d2a2863697664b3b71f02aa703c3504cd5cc826 data/create/loot_table/blocks/oxidized_copper_tiles.json -54aa9700df601640b705d912abe773d5b6ee2b1f data/create/loot_table/blocks/package_frogport.json -ab8cee7abd7dd92428bf7d8f0f5edd35082401a4 data/create/loot_table/blocks/packager.json -58bd9fe9d6706998bfbda3b077cfd0a740972091 data/create/loot_table/blocks/peculiar_bell.json -4d7724df6fefee4512c4f7886d0e103d1dc39510 data/create/loot_table/blocks/pink_nixie_tube.json -df7b12349c64d035eb563535b03cb70d780c5a71 data/create/loot_table/blocks/pink_postbox.json -85811771fbc36f645fdb9f510639715399503c99 data/create/loot_table/blocks/pink_sail.json -9a5652002131d14c585a6e434a4457ef36d2f60d data/create/loot_table/blocks/pink_seat.json -23e3176e0511b3910b9dcefa1821af9c9acfa34b data/create/loot_table/blocks/pink_table_cloth.json -36deb46e99b564d06b1cb4747fed1415ae7463d6 data/create/loot_table/blocks/pink_toolbox.json -e234842b7d2334b77d02e383908795f0714b21a2 data/create/loot_table/blocks/pink_valve_handle.json -175735e4a055945df59fb6206ef1a6ebf8ca3e8f data/create/loot_table/blocks/piston_extension_pole.json -2272411ee08b5b57aae700e9b193b330ca9a60fc data/create/loot_table/blocks/placard.json -22be2b2dbc6080c96a8a874bc2ddb3066792d594 data/create/loot_table/blocks/polished_cut_andesite.json -00a039f8a94b22347dabaf03814e1db741e24fe4 data/create/loot_table/blocks/polished_cut_andesite_slab.json -2a48d6b2d78126797c813d5737fa501a7b900af6 data/create/loot_table/blocks/polished_cut_andesite_stairs.json -9ad0f8009f61539ca91435e139ba7662411d0ea6 data/create/loot_table/blocks/polished_cut_andesite_wall.json -bcfe079deb1cf7a395fd7fc980eb66935eb8b279 data/create/loot_table/blocks/polished_cut_asurine.json -06884db5c4deffebab9432224a16c1500ffaab1e data/create/loot_table/blocks/polished_cut_asurine_slab.json -7791af44ae654190331b39d50c388c9287f2b9d8 data/create/loot_table/blocks/polished_cut_asurine_stairs.json -322f57b452d34037f4beda35ab97393e18c0f8c4 data/create/loot_table/blocks/polished_cut_asurine_wall.json -a66de65059bfec09a5a8e43fdd8cdf4a47f59394 data/create/loot_table/blocks/polished_cut_calcite.json -3c62439de0dc22e2d14ccc2a2738918bc9eb5eb5 data/create/loot_table/blocks/polished_cut_calcite_slab.json -a2fd3fcd7e056aa0c6b87e20125b5f649fa480e6 data/create/loot_table/blocks/polished_cut_calcite_stairs.json -12a00a84392faf12beca7e38ba0416aec6bf292b data/create/loot_table/blocks/polished_cut_calcite_wall.json -d556d7420258b29f157f2467b52f1187f32e2e70 data/create/loot_table/blocks/polished_cut_crimsite.json -0fc1e5657000102afeef28c72aba625829a35df2 data/create/loot_table/blocks/polished_cut_crimsite_slab.json -c880b21ba9602bf5e4f66c55ac811b1234b54b99 data/create/loot_table/blocks/polished_cut_crimsite_stairs.json -a1a1584954a0111f03425a0522b39fdb37f14445 data/create/loot_table/blocks/polished_cut_crimsite_wall.json -af58023b1fc16468951e09b9d587a39fdded571d data/create/loot_table/blocks/polished_cut_deepslate.json -4540a423972c8861d5b39450345567c073e7ce93 data/create/loot_table/blocks/polished_cut_deepslate_slab.json -92fa3b6a67548d0ac119978d3a708f31355854fa data/create/loot_table/blocks/polished_cut_deepslate_stairs.json -a9117b44cba75caf740f9d6ce9cfc0a7c4eec36f data/create/loot_table/blocks/polished_cut_deepslate_wall.json -99cff2e2d27b10ec0ab89e92b06d85538039d9f7 data/create/loot_table/blocks/polished_cut_diorite.json -932cfc27e8a56a8b801c81437ea4380736a87616 data/create/loot_table/blocks/polished_cut_diorite_slab.json -c78e0e81c5904d1f5ec7d1b28f2d4e1086b27fdd data/create/loot_table/blocks/polished_cut_diorite_stairs.json -4e04c7ebc457b5290c879f287a4dd2e3b31a039d data/create/loot_table/blocks/polished_cut_diorite_wall.json -376eb5d458acee6123de2c9b4c5fa35d3fc6c649 data/create/loot_table/blocks/polished_cut_dripstone.json -57f4bb84c0525ce1ea5efc79047b67c0aef3f54a data/create/loot_table/blocks/polished_cut_dripstone_slab.json -e4e2c0d9cba5e8679514eb829cd995542277df5c data/create/loot_table/blocks/polished_cut_dripstone_stairs.json -0714b36fa2564fa084d8b6bab8332024375dc0a7 data/create/loot_table/blocks/polished_cut_dripstone_wall.json -9e1634837f3ebf509f52410602ae423334ba8635 data/create/loot_table/blocks/polished_cut_granite.json -482a4343e02501e11313e4ff271efd7e72fbc60c data/create/loot_table/blocks/polished_cut_granite_slab.json -4a30d39f86ee4b28dd0d5a915b523039bdcc2555 data/create/loot_table/blocks/polished_cut_granite_stairs.json -e73ac90dc54715d20a47dcfaecf4c1e46ae5307e data/create/loot_table/blocks/polished_cut_granite_wall.json -0de24ce0e565c6eef5612c56f4eb2493a3becbac data/create/loot_table/blocks/polished_cut_limestone.json -47dde57d09fcb418aa8c3647a5c49b0f287a56e2 data/create/loot_table/blocks/polished_cut_limestone_slab.json -8d034cde21fa7bb9a99acc9bcf507206bb63ce66 data/create/loot_table/blocks/polished_cut_limestone_stairs.json -87153582c3cde4aa5929cbbc6a973b9b2fdfeb75 data/create/loot_table/blocks/polished_cut_limestone_wall.json -10d6098e4760579172f3fdfd7b0fc2f207d1ab30 data/create/loot_table/blocks/polished_cut_ochrum.json -8509759fc2281ea5dacc9e1a2c4e376f5043a87d data/create/loot_table/blocks/polished_cut_ochrum_slab.json -dff51bdc7dc003a5746d64bb7cb6d87b6ca15e00 data/create/loot_table/blocks/polished_cut_ochrum_stairs.json -c0a8764a390fab9572bd73c5937e2e054f16081b data/create/loot_table/blocks/polished_cut_ochrum_wall.json -d9942ed6a840413d6ccccf03a89f549172caac37 data/create/loot_table/blocks/polished_cut_scorchia.json -921ebdfd3081eb3097ece0e4881360868a6c1575 data/create/loot_table/blocks/polished_cut_scorchia_slab.json -a90b393b5305c4c023ad3da494a00bb0853cadda data/create/loot_table/blocks/polished_cut_scorchia_stairs.json -3175aa4bab3136d7e183561877e9a24ad68ea54e data/create/loot_table/blocks/polished_cut_scorchia_wall.json -419487b555053abf25c85a77278bf8c38be989b4 data/create/loot_table/blocks/polished_cut_scoria.json -4c43639190b86bcbb0c5218c5b011376fd3105a8 data/create/loot_table/blocks/polished_cut_scoria_slab.json -954a2b53d76f818913da887970b2cafdc3446e9d data/create/loot_table/blocks/polished_cut_scoria_stairs.json -37543104768ffd05ef5b1ef1610cca6ed50c59ed data/create/loot_table/blocks/polished_cut_scoria_wall.json -8088f4c41ecda536358daea4c6b0139b4ad00559 data/create/loot_table/blocks/polished_cut_tuff.json -0f173290ef0c1be886317d4c342442513069065d data/create/loot_table/blocks/polished_cut_tuff_slab.json -38b4b3a3391e97df78c03633a7e36252a68eb216 data/create/loot_table/blocks/polished_cut_tuff_stairs.json -8a5023bf2dec91ef7b477fd18908a214c770f5ad data/create/loot_table/blocks/polished_cut_tuff_wall.json -cdf6ec51c66354c702d7cf51584ffc2905340de5 data/create/loot_table/blocks/polished_cut_veridium.json -9c0c275ad6dc663515107f086fc6bb224b7e2efc data/create/loot_table/blocks/polished_cut_veridium_slab.json -191463586831c7cf9c36a05e8efdefa44b800fd6 data/create/loot_table/blocks/polished_cut_veridium_stairs.json -a1eb9045896a2c35c8c464119eec61f678c33fc1 data/create/loot_table/blocks/polished_cut_veridium_wall.json -1cb52ea23d6c2e5e53b48e6f6584d8be85f59e2b data/create/loot_table/blocks/portable_fluid_interface.json -863742c7065425784335306e808c22f06ade115a data/create/loot_table/blocks/portable_storage_interface.json -2e6f8734e99436e1f8accc4ae3d056961ab16796 data/create/loot_table/blocks/powered_latch.json -5d990ef847b3607eb3699bf147de84798c9c2b0d data/create/loot_table/blocks/powered_shaft.json -afe84b9468fba532acc447236a9a0cbdd02c4560 data/create/loot_table/blocks/powered_toggle_latch.json -fbc433a7e8518860bc828a52b56dba92e4dff66c data/create/loot_table/blocks/pulley_magnet.json -e654e6cedc0373e97caea947e7e605bc4095da88 data/create/loot_table/blocks/pulse_extender.json -422385f062dd63edaf246c42fb0e617e92e6cc44 data/create/loot_table/blocks/pulse_repeater.json -93f0c41aedaa2b9baceda78b93a4b3198962e3f9 data/create/loot_table/blocks/pulse_timer.json -6f453ea136098a5872aeb4e2ad1e5b78d2fd571f data/create/loot_table/blocks/purple_nixie_tube.json -53e964048baa1b98877a559e8fda6c8f367d5cd6 data/create/loot_table/blocks/purple_postbox.json -c6b7a02db55cf0824a48156adf469c478dfd6a8d data/create/loot_table/blocks/purple_sail.json -73cd7cc36fafb491666d2bccf1b4f24624b3c8f2 data/create/loot_table/blocks/purple_seat.json -b4746e296f4bf63778e40a751b4c7fa8be45d21d data/create/loot_table/blocks/purple_table_cloth.json -a2dc953584e904ce239830c7442a27d061b8abf7 data/create/loot_table/blocks/purple_toolbox.json -0354f88c3e1d0b6580b9a23d23752dcd9b86fc31 data/create/loot_table/blocks/purple_valve_handle.json -9e5e841d9f9a00d560ed17a7e197dc56bae334b7 data/create/loot_table/blocks/radial_chassis.json -73a03fa31e299cec2c8a3dc0f31a8aa354b49bcd data/create/loot_table/blocks/railway_casing.json -f76e5a157d2aeab5708f464b1f3c8e47b3855f18 data/create/loot_table/blocks/raw_zinc_block.json -a50e1c28af16e9f1b4f48aa974461167139768a7 data/create/loot_table/blocks/red_nixie_tube.json -f36f1e69e4fb8723238f81aadbac892f54b5ac62 data/create/loot_table/blocks/red_postbox.json -977d724cddf8eba053a3310ad0d30af15199bbed data/create/loot_table/blocks/red_sail.json -9aedede893e2127a1cdd17695699397d8d5c6ce5 data/create/loot_table/blocks/red_seat.json -09796bc3be977e17927d0a9e32bff2982618e844 data/create/loot_table/blocks/red_table_cloth.json -64e109220500a29d40f6a0e48f60df599619e1de data/create/loot_table/blocks/red_toolbox.json -17d75711f4ef5d76aa931175364642732fb0c60d data/create/loot_table/blocks/red_valve_handle.json -bbc2d61eeea335f8f011d799ef6a5484ca027640 data/create/loot_table/blocks/redstone_contact.json -4fa70deeac7e56121e42fb602dfa27ee1727f749 data/create/loot_table/blocks/redstone_link.json -efc3a5595e4daf67fa43f84c9869dfc76fd6fca4 data/create/loot_table/blocks/redstone_requester.json -632067fe6309e31e78637eb0272209b630750242 data/create/loot_table/blocks/refined_radiance_casing.json -ee2c4d66d1264ec613e9e84fcac814d2f5806258 data/create/loot_table/blocks/repackager.json -354a3b6c73379b7100b0dd12b3f3b008830c4d2d data/create/loot_table/blocks/rope.json -f74fdd78961619d712891c36e0a0778c25e145dc data/create/loot_table/blocks/rope_pulley.json -77d2da2217689608095866de4af4b41104348354 data/create/loot_table/blocks/rose_quartz_block.json -0e6d1ec2887616e26bd5f75dd5fe86afcfac4546 data/create/loot_table/blocks/rose_quartz_lamp.json -a0575567d5679f2c54e5a25c6ec12338f8cdc939 data/create/loot_table/blocks/rose_quartz_tiles.json -de74765a3bbffafb87d632857dfcfa83f863f814 data/create/loot_table/blocks/rotation_speed_controller.json -2af8df3e36ace336c43d68f4e53564640a89845f data/create/loot_table/blocks/sail_frame.json -5a54e930243919991d71a1c3296002ff86dd88e1 data/create/loot_table/blocks/schematic_table.json -e98386140d22934485f990654b33446e275181f2 data/create/loot_table/blocks/schematicannon.json -1d9b0df1330f44681bbd56f8560a30ef9e2175ff data/create/loot_table/blocks/scorchia.json -e39f189bfaebd31aedceb11e25720f1e08eb238d data/create/loot_table/blocks/scorchia_pillar.json -5e3a37dbb2fcc0d6be042bfd063fd8b1414d6169 data/create/loot_table/blocks/scoria.json -37fe52f5a939f8ed37db120ea02e7c6875bccd4f data/create/loot_table/blocks/scoria_pillar.json -d39afcaedc84d582c0c1f21ec5945cd0a67d389d data/create/loot_table/blocks/secondary_linear_chassis.json -e33a34b47e07cf3262c0dbdbc651b31b9492b18f data/create/loot_table/blocks/sequenced_gearshift.json -7d61387106e5e7fcc4aa0b05b9560cd5f4ef7df8 data/create/loot_table/blocks/shadow_steel_casing.json -7e67d04f861e0a680487e27f94022a7850652dfe data/create/loot_table/blocks/shaft.json -220febcbcc4a993d475b683ebef7468ebdb7bf26 data/create/loot_table/blocks/small_andesite_brick_slab.json -b4764c5bb538359bcc2a599ff3b7474ade2115ed data/create/loot_table/blocks/small_andesite_brick_stairs.json -a891496ffb91bef56c3b684cb55a57e27a72154a data/create/loot_table/blocks/small_andesite_brick_wall.json -e88ff4ab1341c2db8338de0708b0ca8f40f15a8b data/create/loot_table/blocks/small_andesite_bricks.json -1a5d3543ebb7c0064ba8ff01160a22a0f5f29f36 data/create/loot_table/blocks/small_asurine_brick_slab.json -64f4b44b786eda91d432f20c8b725b0415440b56 data/create/loot_table/blocks/small_asurine_brick_stairs.json -60a1d505e955047cf933ae55efc2e7c10d0a5a79 data/create/loot_table/blocks/small_asurine_brick_wall.json -576d8f6beca755a4082f1c8941e2590c1d18107b data/create/loot_table/blocks/small_asurine_bricks.json -64bcfece2507b8510633ae20c00ab989232664ff data/create/loot_table/blocks/small_bogey.json -b673542c79f4a82f2e80c0931354e994292811f6 data/create/loot_table/blocks/small_calcite_brick_slab.json -e10d286286bba8e172a56e0eeb9af18d06d1a76d data/create/loot_table/blocks/small_calcite_brick_stairs.json -d7214e942b203823fa2fece883e8406a7721369f data/create/loot_table/blocks/small_calcite_brick_wall.json -c03bba06f66262c0ced5e85fa7dcbfbfc8c9db71 data/create/loot_table/blocks/small_calcite_bricks.json -ef8b0f604b627715542e8216ae5448e88995cc13 data/create/loot_table/blocks/small_crimsite_brick_slab.json -dbec9246ab957a3ed2dbd0707df12c1496258e05 data/create/loot_table/blocks/small_crimsite_brick_stairs.json -d4d5bd8b101655205c4f293f23e83f610e179e91 data/create/loot_table/blocks/small_crimsite_brick_wall.json -f49d32973b0be51229f4e3fdc13958c9852c5c8a data/create/loot_table/blocks/small_crimsite_bricks.json -44567c10c28ddd221198824766d3fec289fb29d4 data/create/loot_table/blocks/small_deepslate_brick_slab.json -fc141f5cdb1001d344b5ef8fa3ad1fdfeb01d048 data/create/loot_table/blocks/small_deepslate_brick_stairs.json -3cf68d27362e9bb5dc3255ccf810097fbee511ba data/create/loot_table/blocks/small_deepslate_brick_wall.json -8caba3e7001dd8df4d3e6365b97849570c74c840 data/create/loot_table/blocks/small_deepslate_bricks.json -f6565f4bd11b7e95008b0f8fc3f5f2c7af1b77f8 data/create/loot_table/blocks/small_diorite_brick_slab.json -e3cbe41b4b2c38d0d5e625e34b61fc79db16d3bd data/create/loot_table/blocks/small_diorite_brick_stairs.json -787dfaa16dc30155c90cc360f6927fa067a30ed8 data/create/loot_table/blocks/small_diorite_brick_wall.json -4f22a84f105c2fabfd08ff0782ec30bbdc59f940 data/create/loot_table/blocks/small_diorite_bricks.json -f72338c9252528e41f60cb183cb4ee07cea47bf0 data/create/loot_table/blocks/small_dripstone_brick_slab.json -bedf0fba68e8a8ce4205a968429ebe9c3ddfb528 data/create/loot_table/blocks/small_dripstone_brick_stairs.json -c1168f58f342dfa332bfa7f53f5f03383c55ccf2 data/create/loot_table/blocks/small_dripstone_brick_wall.json -d9cc7f58c791e040df4abfce225524e01eb01d49 data/create/loot_table/blocks/small_dripstone_bricks.json -4d111f8580ac97cf1b49b667462f7141846f3d3a data/create/loot_table/blocks/small_granite_brick_slab.json -c16e015251126614960d3e6300cb04d3aeaf49b4 data/create/loot_table/blocks/small_granite_brick_stairs.json -e0ff780ddeb5d5c8d2b6cd7736ac05f4556de52c data/create/loot_table/blocks/small_granite_brick_wall.json -8437e7e28e45c10562d182c4c07189bcc108cabb data/create/loot_table/blocks/small_granite_bricks.json -5222ac5255c9a9ada0ce1da0fd4f4acbeee8ddb7 data/create/loot_table/blocks/small_limestone_brick_slab.json -97310b6b1cbea869ebaa52861542787c49cee017 data/create/loot_table/blocks/small_limestone_brick_stairs.json -0855921034db43692baa9fd0bcb767154f96d591 data/create/loot_table/blocks/small_limestone_brick_wall.json -c60def11fbac5010bf749960e084dd5cd0dc4b07 data/create/loot_table/blocks/small_limestone_bricks.json -8ced0c24db685dbf4382b7b71124005edde9e0b2 data/create/loot_table/blocks/small_ochrum_brick_slab.json -090e7154fb2c3dfd20d37aa87f3df4572a27c615 data/create/loot_table/blocks/small_ochrum_brick_stairs.json -60f2d9970ad8caf8ffe3aa8083dbba671b8d4b8b data/create/loot_table/blocks/small_ochrum_brick_wall.json -eb6b2171a6c99a3a28089752f26ddc6ac1f941d1 data/create/loot_table/blocks/small_ochrum_bricks.json -a001d069c2b4d15c6dfd0312749765fc4e89571e data/create/loot_table/blocks/small_rose_quartz_tiles.json -d521cf885c737da2e4717d43072840ffd3f4c5d9 data/create/loot_table/blocks/small_scorchia_brick_slab.json -de6b5d583e1adf4d49147e0719616dfd0165726d data/create/loot_table/blocks/small_scorchia_brick_stairs.json -895603c6920338ffafd8d0d1310e47ac20bdbfda data/create/loot_table/blocks/small_scorchia_brick_wall.json -ce71e670948453691d4f09c8110b952afb41afa1 data/create/loot_table/blocks/small_scorchia_bricks.json -d1954c07a66f40123d8d78602795efad7c92070f data/create/loot_table/blocks/small_scoria_brick_slab.json -291b5a560f09ed8f09ccc949a1a4da0006f139c7 data/create/loot_table/blocks/small_scoria_brick_stairs.json -ed572e947f78d637e6e1a4166c111121087c41c3 data/create/loot_table/blocks/small_scoria_brick_wall.json -8b7e61477c4fdc834d669bda9197b585d60f26a2 data/create/loot_table/blocks/small_scoria_bricks.json -ad8a3571dc3ae0ee1ec7be7f35c9796e544f0682 data/create/loot_table/blocks/small_tuff_brick_slab.json -17f4a98a81e5920b75c88133d15b63d431f3fb64 data/create/loot_table/blocks/small_tuff_brick_stairs.json -7defad704f6278e329af634acfb9efd617b2003e data/create/loot_table/blocks/small_tuff_brick_wall.json -2c7097ee677f42452212b5dce8959065d2bb0e15 data/create/loot_table/blocks/small_tuff_bricks.json -c7771827a715b9eaacd1a7b7e863e274b1dee11f data/create/loot_table/blocks/small_veridium_brick_slab.json -818b65dd5d868527e7df7658a4f62a93f2795186 data/create/loot_table/blocks/small_veridium_brick_stairs.json -7733e53a90f2ba9c17cdedaa8720e70df1a8d2de data/create/loot_table/blocks/small_veridium_brick_wall.json -e499c0a8a0f804003612f3a4c9286cb4b033fe4b data/create/loot_table/blocks/small_veridium_bricks.json -a121d21b81e93c119b6ee32ca21d260d9c33cb2a data/create/loot_table/blocks/smart_chute.json -4556eb2d607db3631d0a9524d22a50686ce4a5a8 data/create/loot_table/blocks/smart_fluid_pipe.json -9601e8ba0eb098cc409557f17b01669d8b971461 data/create/loot_table/blocks/speedometer.json -8f128b5378546f2ffb055b4e5b701998dab907ba data/create/loot_table/blocks/spout.json -87fd503ea56617be5d84f5d22142b0bfcd9d42cc data/create/loot_table/blocks/spruce_window.json -cc32f9da329cd6966ce826bdc5c6ee2fb9263a2e data/create/loot_table/blocks/spruce_window_pane.json -608680fc36663fe146ca2ab260e31f00b1523727 data/create/loot_table/blocks/steam_engine.json -9df3e402f71a3be0c6bc83b273037bb64ae1969c data/create/loot_table/blocks/steam_whistle.json -cae1bd9100b62841e260880faa80e2442f44a141 data/create/loot_table/blocks/steam_whistle_extension.json -0bc3fdde351129e3a261a2420aff9d3f063c235e data/create/loot_table/blocks/sticker.json -074f526902cb5fcff2129614428aba1ea05a6649 data/create/loot_table/blocks/sticky_mechanical_piston.json -af312881ec9bfb0902438f53c5cac020244bdba2 data/create/loot_table/blocks/stock_link.json -f4fa9bb255348dc79dcc0468b3beb9ad075eb036 data/create/loot_table/blocks/stock_ticker.json -a7332324e63f7d28621ddfbd54eb3d091461d890 data/create/loot_table/blocks/stockpile_switch.json -b13496b1b4bc0be30605832e23894fb374dd796e data/create/loot_table/blocks/stressometer.json -bd4667e5f5d87530cf0d4cbeca55e1260c1cc1b2 data/create/loot_table/blocks/tiled_glass.json -47c3367353742c62b137bc78c475197f1ac89d19 data/create/loot_table/blocks/tiled_glass_pane.json -ea279a86c8558a3e1e48f4f6f204bb8f084125ca data/create/loot_table/blocks/track.json -325af1ed4461435bba044281c9ab73cf312dd324 data/create/loot_table/blocks/track_observer.json -e4a6ebe0a7f4a855c8f3a185b767acab5bb83a43 data/create/loot_table/blocks/track_signal.json -c56ac3606324aa49785f13c50f93349f9c5a8e93 data/create/loot_table/blocks/track_station.json -b7b63971b1fba7e7f6269c584b4cc00511a71589 data/create/loot_table/blocks/train_door.json -7c676b403bd47a4b9871a16082ecb56a879ca8ac data/create/loot_table/blocks/train_trapdoor.json -79e5d3f90079a476ba1cecbc44fa2ca220dfcf4c data/create/loot_table/blocks/tuff_pillar.json -af81cc4610b35aa5827c67e6e6441354b7bb6f0e data/create/loot_table/blocks/turntable.json -8d1b935b59afa7331629b148c974042c877e3f88 data/create/loot_table/blocks/veridium.json -727a688bd2346f544ed7c3dd3cc52a113acbe932 data/create/loot_table/blocks/veridium_pillar.json -47a865c64088825005f45da1322bb649af23a9d0 data/create/loot_table/blocks/vertical_framed_glass.json -fe5dc182b81193540561853b9e95e4d1ef6448f6 data/create/loot_table/blocks/vertical_framed_glass_pane.json -b180bda46ae32ce935c2d9960e2c12e39d4fc014 data/create/loot_table/blocks/warped_window.json -dd1ceaa6571263b397919345e04661484fe42aa4 data/create/loot_table/blocks/warped_window_pane.json -ccab211722d7f06913a549851b0d6e8278edc845 data/create/loot_table/blocks/water_wheel.json -ea5dfcedc928e8dfa1c59cf3917d1577dff87494 data/create/loot_table/blocks/water_wheel_structure.json -cb31be1e75ca822454bd0a89954f74c4c8726b33 data/create/loot_table/blocks/waxed_copper_shingle_slab.json -c8e440e42141788d1988c57ab91cb1bfcd977407 data/create/loot_table/blocks/waxed_copper_shingle_stairs.json -bbc6fc068adccea464909b87f1d1f426324d74cc data/create/loot_table/blocks/waxed_copper_shingles.json -807da1d66d6c7d07efc8973de43415fa4b5ddfdc data/create/loot_table/blocks/waxed_copper_tile_slab.json -92759871a9c84815b98b6dcd22fcf0dd958bc8ab data/create/loot_table/blocks/waxed_copper_tile_stairs.json -a3b8f12d983077477963fd3fc893c5acd36ad552 data/create/loot_table/blocks/waxed_copper_tiles.json -be5aabc98f4d70028f2b49ae1eaf0bc68a693c53 data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json -a99143d290addb98427be53d7fea1cbc702d630c data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json -eb9781d081d52c34c041004c774b52169b4a9ca0 data/create/loot_table/blocks/waxed_exposed_copper_shingles.json -234cbb59a0e00d82c5508c8e9a61e328c22c1c56 data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json -de628114eb25f393efc4c0934d79c5bdc4365f75 data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json -e79c0636852b37a463dc122d66cdec27d3aa10c4 data/create/loot_table/blocks/waxed_exposed_copper_tiles.json -c8935df7d4634dee2b01c8a0ac5de12397f4d9ed data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json -2b9370b7fa362ea88f916dd53747da80e4ae3357 data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json -60fe0594baab9599956d990ba893f8915835db81 data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json -de4d25cac546559173f740752625c82dfd6bae09 data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json -2ed72fc0ea28303f5c6d1039662f55c677cb7bcb data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json -f0721c371b08214337f3f4fce3a3705840310bdb data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json -9a7b265a963e122d510de64012ed1d98ad9017f9 data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json -62f25a1bc013e9c3d487d9a53407e58d89907c5b data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json -f309ffd94dfb3591efd2fab337a871a0ceff1084 data/create/loot_table/blocks/waxed_weathered_copper_shingles.json -3fa20e33ced4aee01775db57629b9580a6b8e200 data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json -59b28bd57f461482a394dbce9ea10ee25fc7c294 data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json -26e6a96f50e7f3384f896bf8a5c3d5ff2b422526 data/create/loot_table/blocks/waxed_weathered_copper_tiles.json -278a56aa433ba3647107b3bf0553da5a5f6d40dd data/create/loot_table/blocks/weathered_copper_shingle_slab.json -198babfd55c3a30c6ac61e81d5e01b0cf8fca80a data/create/loot_table/blocks/weathered_copper_shingle_stairs.json -3cd15ae684bc0e4e41f02b3ee79eafdbf052620c data/create/loot_table/blocks/weathered_copper_shingles.json -d6862dc9f7d291df618fbce71eebf613711a5517 data/create/loot_table/blocks/weathered_copper_tile_slab.json -57d5065d53016e4b1ef0fbad9b84605b1546bcc4 data/create/loot_table/blocks/weathered_copper_tile_stairs.json -771d98a6627d707228719e843bc80636b02dc985 data/create/loot_table/blocks/weathered_copper_tiles.json -013deea9b687ce96e5042de13ab0cba9dadce364 data/create/loot_table/blocks/weathered_iron_block.json -1e7855557a38e42fd87214d038c6cec043b7205d data/create/loot_table/blocks/weathered_iron_window.json -8a45920e58e71c16e51e4fd1ecbeb35e4b9e380b data/create/loot_table/blocks/weathered_iron_window_pane.json -f6ba0623b4bcea2f3796df4c65c494fc072d2c21 data/create/loot_table/blocks/weighted_ejector.json -978263272f632ed79a61d52a0080de0b7b8102d6 data/create/loot_table/blocks/white_nixie_tube.json -3d8a4d4a9634d49b20f65ebcdddaef2d0f21b36b data/create/loot_table/blocks/white_postbox.json -129c6772c1c12271f9b0d41c77f41ce34fc437b1 data/create/loot_table/blocks/white_sail.json -84c79bc47b4a74021e91745356bb24fe02402209 data/create/loot_table/blocks/white_seat.json -cda45c1338e6c9078a107e99c70690fe3e0aa7c2 data/create/loot_table/blocks/white_table_cloth.json -d57be6ed6974991b069b67308b6e76b1087e8edc data/create/loot_table/blocks/white_toolbox.json -2fae4331c0ab590aef542cf4e23deea579d734f8 data/create/loot_table/blocks/white_valve_handle.json -bf0ea5c6957a43b6c4b1914df70e0b8f6585e638 data/create/loot_table/blocks/windmill_bearing.json -ed989d41a4b640dc1ffb15c9c0712ee3172d408f data/create/loot_table/blocks/wooden_bracket.json -d9f853e662b004b6ffdbb82af99ad7e774698178 data/create/loot_table/blocks/yellow_nixie_tube.json -a536699cab16540eb906e0b63a2c5064244c7b6c data/create/loot_table/blocks/yellow_postbox.json -0ead61521fec15522633d6cfdeb77150bb30d075 data/create/loot_table/blocks/yellow_sail.json -3ae6d4e380237face57b9187ab8570967226b3b1 data/create/loot_table/blocks/yellow_seat.json -573457c5bb1a8693f4b877620468703c86051a3a data/create/loot_table/blocks/yellow_table_cloth.json -1982a44da9977b5a3869d1daaf597f97fd6c5166 data/create/loot_table/blocks/yellow_toolbox.json -b9648ec56e55fe2b9d54adf172405519a46bfa66 data/create/loot_table/blocks/yellow_valve_handle.json -8be474a69469561dfe759159a40fb135a6ad5de6 data/create/loot_table/blocks/zinc_block.json -0620e48b7e41246f20811d342b1b6726b0486deb data/create/loot_table/blocks/zinc_ore.json -b1d3db189866252c7eaf30e35d954b8138d1989b data/create/recipe/acacia_window.json -c171ca867caebbae0349ad8a6c9f65f5bfc80a72 data/create/recipe/acacia_window_pane.json -4e6f8a7222fc840077ce8634e3baf5d6a4db5df5 data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json -8570a9e0f3504aa234bc852fb5f6840cab985ca8 data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json -7d901728514e73cf91d424dc4b623db45c8621a3 data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json -2840092275df37ab236bccdb2b20ecb542ff4a0e data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json -69a608c6e0dac82fba8da96b66ef656305056aa5 data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json -d55133ef8c0b447070c85d8b5963e3e9eaf8eda9 data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json -774c44dee2a34e789cd1f5dfa83dc6dcf1b791c1 data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json -2964ad221993198b21dafb23f77adcb45f62a55b data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json -b9ad4f08c8e73eff2a3af104fdc1816c8875ebff data/create/recipe/bamboo_window.json -73e6a6527c8544d32637ac86c3b39a70fd8ba64f data/create/recipe/bamboo_window_pane.json -6a7c7ec5d153f0af65e125b60b1f31b46026c98b data/create/recipe/birch_window.json -d91e294b1f9da030a649a9c75061118d170ca482 data/create/recipe/birch_window_pane.json -85349e6333562dd8ac1dc26701a5eda410056b60 data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json -306166af92e281786e60c093ba04d25694309d9e data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json -a61a06765fbb9c6598c58c676e7e7c6f61aa0f62 data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json -b48bd70f4b135d26f5f7e43780658a6d14aba7e7 data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json -75e27c2f9bd5da937e3d9dbdc2596905fd4ea424 data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json -6f2d33bbe2b5a9493f208a333f99a4a5593fd7f6 data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json -242febe9fc4c0148652856f6b857e924698b1cbe data/create/recipe/cherry_window.json -ed111740bf5455e2ef7354b0eff25d45f5123717 data/create/recipe/cherry_window_pane.json -203bdcbb104885118fc048f1570f5ef5129e8769 data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json -1d87f9d401594505827efe0ff7e7665140945744 data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json -e28fc06cfdc0361d3559128ef6e078155c093961 data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json -107047822b6f8ccec98d157bea8f66f3792d8ea7 data/create/recipe/copper_shingle_slab.json -df0f478caf9ecc1ab7761599619059388b97aaae data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json -1d36c79b1ced143c867eda7fa006a7336f207c82 data/create/recipe/copper_shingle_stairs.json -5673480e55f6a07f7423591ea1de3c4fb50aaa1e data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json -a12bde1f3e97d98cdce2127b6e9c5b4686814a47 data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json -89c3317a1b639a78727a62c4bf8114ad6f2ac9da data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json -1fef1cd4343a377d3625547e479bf3670bbca8cd data/create/recipe/copper_tile_slab.json -e21dfa3d69d59f3974b99ec7937946987f1690a7 data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json -a32df4fe0a1f8135106f00c6c4764656200f6f32 data/create/recipe/copper_tile_stairs.json -c297b9b08ee0bcf342572f1c360d2b7853c6990a data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json -bf71026eace283822e7ff72dd1f596b008839a59 data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json -a86bf8a5957ca55753c859e53553f61c9921757f data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json -6c6e7503b34f70df751cb5aaa0da201449e137d0 data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json -11aa479e0db2c378edb1c9d55b19bf0c741b18c7 data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json -4591da80b4a727413d984f00f6818d9c8ffd2d09 data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json -7123aae340658e235ea862fb5f3af0455be21eee data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json -23ccafa875e81f088383b8aa8ad89f6d4e8b901c data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json -5303df9a8521a56043fc98531daba6b8afc8da3a data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json -be46ff64e53b37d76af24dcb1d40e828b463bbe1 data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json -e886f848116a7d24d1672096f24e8c9310b29f39 data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json -a51104159b27425178a9349986d190173887b4eb data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json -b1e897da1cb2b58a81d6601f27ed79a7ac17bdf3 data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json -9b278d39ea6963523b58688fcdfa70ebdd625acc data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json -a4eed71ac763e25c5c24cff693f3f962a1a7962b data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json -dc6319cd5993dfda4163c66f176f31e15176c5cd data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json -e2569e5090a18f390ab92d05a88dae4d7498e571 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json -072be1979e6996d58c12580c4c19b5b8c033bb03 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json -3ee6d6e1c9b35ecac6f8f513a5887d0e6ae267c8 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json -334dbd21604090c3fa52ca827bdbbf197d8767aa data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json -a963f31ce70b1995648d1e3d8a5a4a957d86adbd data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json -544acb34ad66e62a7d75f797a7fda40a0ee5a982 data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json -b4257d7929fc595e87d8064f0e4dae67f472b834 data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json -b7e9302e9556a1da759bc7c4f2b32f3b3e06d2cf data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json -f3c7f6418ba92910228bbaf1ac7cdeb4cdd723fd data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json -4c97e25ac50ab72de59eba73f4cea345569e5776 data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json -01233358e13522530e6513b718c9ff82d407fdca data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json -4f473c7d5970d0ff92d7fe870205c616c3d53092 data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json -c288ea326dd88738b065a243fda2ab192832c301 data/create/recipe/crafting/kinetics/black_seat.json -484a8909ac451acaa3d07a26adb66e825b09e053 data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json -e1a63a20cfcc59f6c8cbb65d0305920e2c7b4797 data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json -a7c399b0b6cf33272466f90a8f98bc885539f6e2 data/create/recipe/crafting/kinetics/blue_seat.json -cbe993ec17380d28a26448910861d779270a145f data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json -275ffccb12a3f1536babeb970905e9ecb0d4cf1f data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json -acfed0a7d1a603ea9a665f7dace83f1a568fceca data/create/recipe/crafting/kinetics/brown_seat.json -86ef29ed7904bcc069193b10b3ec643c57c66b65 data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json -899ae926ca4e6d5e6bd99b2be4f408571d663955 data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json -9fc933f7005f3e02c8acce3c7196c6730ea4903d data/create/recipe/crafting/kinetics/cyan_seat.json -3d4502386006dd873ac57985c8d0b2f0e3a19423 data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json -86def8c5ee270654760fe6ec67a5bc40c14b9ba4 data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json -4950989c7f519c40ec36e97543c1e12396c3e18b data/create/recipe/crafting/kinetics/gray_seat.json -174cfe75a3faa2687a4938905e266d0331fae7fc data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json -5187547c58c0d9f2055f5a26f6b8c45953e7d555 data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json -69a9f6d583e92661319de35b1c7c763b82969565 data/create/recipe/crafting/kinetics/green_seat.json -585225174dba0dda2162d28fd78269495066bab9 data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json -3970fd66cfa3ab55399c052de30c93d4aca6793f data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json -b5742bc5c8a41244ebbcc9ab540a72022485093f data/create/recipe/crafting/kinetics/light_blue_seat.json -83674145be0387e0a626f9ca97b093bfdb7432fe data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json -fc76a65bd610ad14f86e0f00c269195a7b2d6b2b data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json -979c5de52378583ebcd1e7ea279ed80380cafbba data/create/recipe/crafting/kinetics/light_gray_seat.json -c08c79ce0f42d2588e134e4c470c90893c77d3b0 data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json -ab08512d189080509976a2701930b5918d44de97 data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json -394f4d942813a0a9ef8d4f3a26247dddcaf24543 data/create/recipe/crafting/kinetics/lime_seat.json -0bdcb3f779ccec2608d6bf484027c6cd8dc7b433 data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json -8cc3f7177fb88c75a7eb4bad9a06bfbb9ce167b8 data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json -7b0cef50013463f99c2eb9bc102b42f396fe8e12 data/create/recipe/crafting/kinetics/magenta_seat.json -fec746b771d02641408c3109030f0a1fe214707f data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json -1cec09cae22ceabc0771109d30ff6421017348c8 data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json -89a3ea30a151c350e3ac663866b9e0efc2d5edc4 data/create/recipe/crafting/kinetics/orange_seat.json -7b3cc5aab4bab826d4767eaf2f9a07ff4527f043 data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json -dd79f395e36e328944f46581178dd3d676b4c92b data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json -3a7768d8a13e90d5d1445b07921138e65d0123e2 data/create/recipe/crafting/kinetics/pink_seat.json -6b9629bb914ca3df96e4c70de35afc921b8fe0d7 data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json -7ff3d8338199a5255e0b1d057cc6f7d02514e60f data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json -e0d0959b07fadb9a504e30c4a50725b8da8cc702 data/create/recipe/crafting/kinetics/purple_seat.json -6726272bbe6953ff8d6dec40723b8d648cd8e527 data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json -7ceb8fc67ba550c3d4f9d309957f57f197d3d33c data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json -82ce82f1f914c1008cabafff4940200ec7aa4bc0 data/create/recipe/crafting/kinetics/red_seat.json -6d05a1a12365f0d111c0c280009091bcaaefde9f data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json -c6fbc9906ac5f88027e6961c1c433706b081bf34 data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json -30f65b8f9a74aacf77378b400055cacb3604654e data/create/recipe/crafting/kinetics/white_seat.json -6ebc3f41f01480e52be77485f5069f981b6dee4c data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json -1b844bf710c447ac16057d675d6e43290cd32ee7 data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json -8369384543664adb40d22f7605b6bd0b730e7005 data/create/recipe/crafting/kinetics/yellow_seat.json -4a22f935f085350f3bb0e26c84e82fe20a729e4c data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json -3aa95d12bc13bdd6f9e7d2a065a5273726dfd41d data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json -26330290deb8620b949cb5aec980e7064ff17c05 data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json -6d3679655e80b66e3d434564cb517a041712360c data/create/recipe/crafting/logistics/black_postbox.json -ae927f33c10a9f3eaa30d43fa84a97d9480ca71d data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json -e3a338c1feccde76d24fff6923a53f70a21a98fe data/create/recipe/crafting/logistics/black_table_cloth.json -4ab298e2c19afb5422f63df75ca9fc8642f2f5d3 data/create/recipe/crafting/logistics/black_table_cloth_clear.json -bfb3d99a3603dafba9598639b04b7b45a9b9b0ac data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json -c21f1e592f77fbe9a03179718e02c9ca1fc928e8 data/create/recipe/crafting/logistics/blue_postbox.json -6717e5cd7a83cfc4b1a904a7432f8bfc8d26ae06 data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json -24ed78395f7b91231192e956134aebf2b2ecacf6 data/create/recipe/crafting/logistics/blue_table_cloth.json -65ef9f2245a70e030fbdef0d1efb726d125277c4 data/create/recipe/crafting/logistics/blue_table_cloth_clear.json -910d6ee52adbb53510714f93c8dbffe2900a5f1a data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json -21fcc51f324fdf6725cbb1901d17899e8b5f38c2 data/create/recipe/crafting/logistics/brass_table_cloth_clear.json -52be952e232264fde163c142ac76f5cf87ac92b7 data/create/recipe/crafting/logistics/brown_postbox.json -4608e3fdd4995fbeb8830e34d327cf93ccf2ead4 data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json -1916db06cb487bb7240abc4375915ea09464cd81 data/create/recipe/crafting/logistics/brown_table_cloth.json -3278d325b2651f93b7a5728e9af63facab9e86c3 data/create/recipe/crafting/logistics/brown_table_cloth_clear.json -949f048b5e4adc4c33297f14e4f8752517bd137d data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json -3d126ad8d78094773fff06bb82a25a912e42ab67 data/create/recipe/crafting/logistics/copper_table_cloth_clear.json -65b8052b14944bcd29afd23512163f68617afe99 data/create/recipe/crafting/logistics/cyan_postbox.json -6d3c24e3b73e3f6f3ef1a4c79921b1081465d378 data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json -aa8d1f3bed71e87663a4c95651737bc0d932d2b0 data/create/recipe/crafting/logistics/cyan_table_cloth.json -4b936e2965452ee096f8724d6dfc5be8ab8344be data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json -1514cbb10a0a5f886bb6b62d86598d94758ddb2b data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json -2457cbfa068c37b0a113198fafd16acf285f3809 data/create/recipe/crafting/logistics/gray_postbox.json -5e015cb773bcec1813368a348bbfcc0aa4247023 data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json -5d1504168aee183ae713050413d24bf817b8a40c data/create/recipe/crafting/logistics/gray_table_cloth.json -4db8f57b80415d9e765053dcc62c58ee2534a55b data/create/recipe/crafting/logistics/gray_table_cloth_clear.json -d552a29357fbd8b6b07589ef63d8abd9c69df0f9 data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json -855da276ad1e0704f61a97f0ab04a43312f5e650 data/create/recipe/crafting/logistics/green_postbox.json -bbf0368fed4eb9eaf7c5d134a82de21626c3c793 data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json -e7f4a0e25e762f0eea88d7433fbe61c39442140d data/create/recipe/crafting/logistics/green_table_cloth.json -536c87689ac07474f9b3e840e6fad832c6b3baba data/create/recipe/crafting/logistics/green_table_cloth_clear.json -fd21c6ac7c5421247a14ca19bd9e79c0371e976e data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json -aeb90ce6c5fdf96e971b8f5036b253703976082e data/create/recipe/crafting/logistics/light_blue_postbox.json -956d322ac42f974b150d718f367962c1a44ff16f data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json -ad5510381fc915c3df850e788b231b7ee4bd865f data/create/recipe/crafting/logistics/light_blue_table_cloth.json -9ca411d53cbdf611af357de572452711f27ddc41 data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json -1baf7f292a22d8eedf8da826c749a007b6365952 data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json -09d86f03b7ab82a0bdf0b631faac3864c06843af data/create/recipe/crafting/logistics/light_gray_postbox.json -5fbe8ea36b4539fced87837e67696b18d2cda7cc data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json -daf2df00ce4bcdcac67f3278587993258971818c data/create/recipe/crafting/logistics/light_gray_table_cloth.json -f4450f8c130664016753562a90606f7781f11e55 data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json -9bd372f79b4fe78ccff0762219f601dab6816f0e data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json -b3451ea6fa4738bbdd02e907b7d973c8245967b5 data/create/recipe/crafting/logistics/lime_postbox.json -1217207118f8855f562bd01385f7b3b91c09a71a data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json -1c40fa40219581e1f51d86d95ad8313dfa8f65bf data/create/recipe/crafting/logistics/lime_table_cloth.json -40cf058ae49c1db811f824a71e29a5e4c5e51ea7 data/create/recipe/crafting/logistics/lime_table_cloth_clear.json -a4f543489d7850426c51aef1f348a2b6e2774e5b data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json -4ff12e02878342d5387ee84c27df3dfe36c1bf1a data/create/recipe/crafting/logistics/magenta_postbox.json -6e3cddd7d4ad46a3ac602e7e14da2e600fe29313 data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json -8759962df0e6f224fab5a687eb46b5bb34641659 data/create/recipe/crafting/logistics/magenta_table_cloth.json -a219d7a79dbd519cd52b0bb1abe85e690f702ae8 data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json -71853ee5883612b7558907228219d8098b1a764f data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json -048e81fb80da06e4ebd6252a0fc45e7518373315 data/create/recipe/crafting/logistics/orange_postbox.json -e4feb5e18fa32caaef904519c97a2e6d5a25acfd data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json -e3a375d84cad9d7cb4fb587b184c2121fcf3de1f data/create/recipe/crafting/logistics/orange_table_cloth.json -7e6a1f4d001c22d5ac20fc4552652c588fb85a0a data/create/recipe/crafting/logistics/orange_table_cloth_clear.json -13871f02e495febbd495a8ca0a0afea611dfd5d7 data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json -a508f777f0f347dc15652b84310386c1689e0cd3 data/create/recipe/crafting/logistics/pink_postbox.json -e71e979e5d040cf37866bf53103c7fb911147c4a data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json -9b01fd7b30df8e6bcc5599a07f740821b5d42013 data/create/recipe/crafting/logistics/pink_table_cloth.json -6c0e2cdf5428068b9b5b584a5b0bd9841fbd5249 data/create/recipe/crafting/logistics/pink_table_cloth_clear.json -fa31e472af7ca78e48b398172d14fba7fed7dbab data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json -ba483b8b6159f59806d2723e39c49cc619908ede data/create/recipe/crafting/logistics/purple_postbox.json -8239f8c1c55e080b701c9829650e9a0750b39fe0 data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json -815d674c76febc578ea992dfc176b2ac25b46942 data/create/recipe/crafting/logistics/purple_table_cloth.json -14ac1af124637316b24bf1abcf9323d32e5cf062 data/create/recipe/crafting/logistics/purple_table_cloth_clear.json -5e0a916081c848da8678899bdda4f362080a11e1 data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json -fb5ca053a9b5435b4220aa862935b911e5b2c5d5 data/create/recipe/crafting/logistics/red_postbox.json -83c04b547be8e6dcc46c6cc769eb122aea763b8f data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json -d860edbb0774d5e0523081066f961a50925ab2e4 data/create/recipe/crafting/logistics/red_table_cloth.json -d39f13fde2e681dea3806b2441fde72e75006671 data/create/recipe/crafting/logistics/red_table_cloth_clear.json -e95bcf606181b5e99ecda968bacc198770adaec4 data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json -fa1be64050984918a03db5a6e5db0af4ed326c89 data/create/recipe/crafting/logistics/white_postbox.json -23fed614ec2fdf862ee134ee6a9317d07fb483f6 data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json -cf3890d4973d93c72e479554f52091d0959bbc7e data/create/recipe/crafting/logistics/white_table_cloth.json -b5be7981cade4a59dee86a7fdde6a70c3de41d62 data/create/recipe/crafting/logistics/white_table_cloth_clear.json -9d8c1e91c615c6141391255ca20a6dac4f12feb9 data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json -628d43a1a8a1292f0b65b2ac3a387a5aa0ec8e98 data/create/recipe/crafting/logistics/yellow_postbox.json -a3b9f443044679ddd03eb4430837b16f9863d755 data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json -49e4c5a5fa6af096d8bfd5b37fc13b28529c09f0 data/create/recipe/crafting/logistics/yellow_table_cloth.json -b970903b31b74fccd07e799730bb4326268dfa3c data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json -a7475466c0492b9133de6c1bf0b9128fbb0b7a80 data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json -8aa4c3acfc2cfbd03472f1e95cf25c3b716e5a23 data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json -1a4e1b1f8af9c282748511c260f860a39c301690 data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json -e8494de2dbe28a17ba142e5ed0bfec90b410d364 data/create/recipe/crimson_window.json -0fd5420419074e56d0d99e13d54c0a3ca7fe7778 data/create/recipe/crimson_window_pane.json -8cd7638a98bcf87b64cd767f817c2cb7523820bf data/create/recipe/cut_andesite_brick_slab.json -83693038cfedd3d7890614dc5037792968fc44ee data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json -0d43a20e130bbc139b71b5e8f21f760e5ad6f1a2 data/create/recipe/cut_andesite_brick_slab_recycling.json -0c34e7989089377636904c3aebca01520daff516 data/create/recipe/cut_andesite_brick_stairs.json -b2f438a4aa046b633e3d587338c0c634c835bf13 data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json -ef52ec838c0618d7ace8fb1b6d5725ff55fd2c21 data/create/recipe/cut_andesite_brick_wall.json -299049de0a742b5a7e86123723cdb19cd720d536 data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json -477102f2f11e9afdf14b2c90b19b97d933f669a9 data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json -a7bf87dc98487d8461eccb3183dca33d6aaf9367 data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json -3f11ba863ec765cd3127ae572a02877c7cd55ee8 data/create/recipe/cut_andesite_slab.json -a515fb7e320b86859e012939c11a0c12b76dcf0d data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json -5b98dbd1bf7d50b4fa8ee714984d8f46adaab6a0 data/create/recipe/cut_andesite_slab_recycling.json -870d728ef9b9f44797c4ea917f372143005b8652 data/create/recipe/cut_andesite_stairs.json -1e63614979801cd7993eae6ea2a890ddabb640f3 data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json -bc49661b9d42e57dee313e6a31a6861dd87e0e0d data/create/recipe/cut_andesite_wall.json -74002a806da93ecec663ee12e4dc046492f31660 data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json -6e54c30402b78b96cbb0adab233a0592215efbdf data/create/recipe/cut_asurine_brick_slab.json -334d5820b9c0fb570a754b868dbe3337e0712b08 data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json -fdb29748daf00786e8d2c03d1a5acc7e953d1ad5 data/create/recipe/cut_asurine_brick_slab_recycling.json -a2a4d68d998fe056877434cc9bf2054c12137811 data/create/recipe/cut_asurine_brick_stairs.json -43b212114ec9b1fb596ca208c69e9629fe6e2613 data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json -02a5895e0362629d1ef70b3c63d02cb914e299d1 data/create/recipe/cut_asurine_brick_wall.json -0a9104aaa29131629d871d2d5ac98e5fa3447c18 data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json -59f68892f58a96605452b74365a8552b5ab86f6e data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json -e1dc2f692fb29f7638dbd7766a72cedb34d74daa data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json -a20726a02708df809895f78e638836dbf7d8267c data/create/recipe/cut_asurine_slab.json -57f7ffc8cd8f48c723cc99c68397de5f25e40d86 data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json -9914c294d8a0afd13addf216405436ec486aa56a data/create/recipe/cut_asurine_slab_recycling.json -7be9d4b40d747faf1994da11a17e54223d77f951 data/create/recipe/cut_asurine_stairs.json -8483ae6f7b89d6f5946891ed9c3c9d859ff2a872 data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json -731d543ecc6597770332074b1875db8cae4d82c0 data/create/recipe/cut_asurine_wall.json -2bca1be9c0c9b49acb6ba53d126c6d2fc77d4fc3 data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json -6685e75a91919245f7b9c40e1bf6d4ba31872f60 data/create/recipe/cut_calcite_brick_slab.json -9f05d16a5ae853394116462cfcda09c9b44c4ea1 data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json -eee138ca1e0ebbef91a8e0b98c671e2da5b7f2ef data/create/recipe/cut_calcite_brick_slab_recycling.json -d5816e0d952965cb88edd543ec8f5d28afa59609 data/create/recipe/cut_calcite_brick_stairs.json -7d3893d8e270a2677931fa6f623fc0281a374740 data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json -3c6a210ab3f3dfe48348cd540c9205ee72ef0b41 data/create/recipe/cut_calcite_brick_wall.json -27e084e9558afced081603f95d86b095bb297060 data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json -b175fbd14668584b6140e301d9b4b749d5b29e77 data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json -133fd0c742754d566405e0f08f48913fb98cc2d2 data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json -e1d0bf1626ffb021e5f74c57f798bfdadb5de3c6 data/create/recipe/cut_calcite_slab.json -478b9d77fbead6519516854819971e2bda6b7950 data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json -341452a6e328ada84614e145741dc99be75d8522 data/create/recipe/cut_calcite_slab_recycling.json -4cf35bd694c41c15ae5a924b36b9b55bd3fdcb95 data/create/recipe/cut_calcite_stairs.json -ddbffa2431157eb16f6ed0a86e1efb2e1045b4de data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json -9678655d83e113114df25d1036e19841ace079c2 data/create/recipe/cut_calcite_wall.json -9a9a84a8dea91a3ac3c3f6cfb0fdec7c86e7e88a data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json -ee8148b6038733a3d89c75de62b18862a73e7424 data/create/recipe/cut_crimsite_brick_slab.json -8ab63831305b9690132549ac6f3a50ea22537543 data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json -bfd0c80376b074679f26b8dc36c34b8c0db9c433 data/create/recipe/cut_crimsite_brick_slab_recycling.json -0d3320fb62d959d19e648f7d24baa0982a176a56 data/create/recipe/cut_crimsite_brick_stairs.json -574026327d5d485816a25a6ef2c3a5dce1eae974 data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json -47265524a99b0b3dc5a30707e4840a0a73f2f614 data/create/recipe/cut_crimsite_brick_wall.json -f971221f68f83221dd1733510fd4669c6c5aa510 data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json -50cba8b6338abbe18b5dc69e872ec4581c2cd1f8 data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json -d87e8434a07461ed1c0b12bf5f93f46b60958b99 data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json -19822505dfcba3f1c3fb13dbe7df078b9ec9b506 data/create/recipe/cut_crimsite_slab.json -27c6daf2049b498b4db2ed44b2b1604c32d942b9 data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json -a75aa9c88f08483e48557ae68c3c909a944d5cff data/create/recipe/cut_crimsite_slab_recycling.json -fcb82b31589c4be1bf56a2529916912ad7e4ad5c data/create/recipe/cut_crimsite_stairs.json -85007419271c9a1ff62758173ffdd1fd7fc33bd2 data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json -ed5d240225abd48595079f38859ce4ef47da17d5 data/create/recipe/cut_crimsite_wall.json -c4b3caa1ab28ea566b5c9460a00466479c100b9c data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json -a1baf124738a37b21f162d54325b9f199cc331a6 data/create/recipe/cut_deepslate_brick_slab.json -4d34a8eb1bd12c0985b89639f4a913c65ac7052f data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json -7d453d5c7120b16ce64b7892baf1d181236c8c0d data/create/recipe/cut_deepslate_brick_slab_recycling.json -0bcb4b15059be973903b9d9bd18de265d68b7a51 data/create/recipe/cut_deepslate_brick_stairs.json -addb7b56660e660b88b40706df80ddfb6675f23d data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json -b1f8b9243451287c6f3144d427fc39fc24cd2e80 data/create/recipe/cut_deepslate_brick_wall.json -b0fa51ecc7cb1bf6b0dd4dfce7ef8211b8b563a9 data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json -47fd794de847de30f62bb0cf2124e8720e845ee6 data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json -e9267a046baa32ab6ce2709c66793d205937b83d data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json -c39d26761faa621e974b1bdbd3bad24613728e09 data/create/recipe/cut_deepslate_slab.json -6c45d138e1d7476355f85c827de9bcf12b23521a data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json -e65a7402f69c7a2fb80ad52d02a6bd8494244a8e data/create/recipe/cut_deepslate_slab_recycling.json -954ace84f9147d4f68a8556b1d44a17c98b39bc4 data/create/recipe/cut_deepslate_stairs.json -a8b236242c608ebd92a8558762d1a43e876b906e data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json -3552d33ce682ca27905c4989eefd8cb5fe8c287f data/create/recipe/cut_deepslate_wall.json -71b60926816d57379109b233379fe64d4cb3de13 data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json -72d23fcba7f78fb21e05028c07451339a41f8520 data/create/recipe/cut_diorite_brick_slab.json -ced141e9252d474680d934ea013ac6e375031c78 data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json -c107c83ecea1cf95738e079dbd7576bf39e5f84e data/create/recipe/cut_diorite_brick_slab_recycling.json -82397d06b767f7a57954bb6b5abf287c948075ed data/create/recipe/cut_diorite_brick_stairs.json -63f141b3db3d0dcbfb3f44658236b9b5a11c5545 data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json -7448a4ade36a685bb97b788bb6aa238484e81361 data/create/recipe/cut_diorite_brick_wall.json -3adb178c90946adedbd6bf5e486af0135bde7b26 data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json -82bc72e5c6d8692cf7f46f6ef8cdbed1924c56b1 data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json -05ef6881a220d520cef32be97d310e9015cc6bf0 data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json -ee626f692bcf95ee8dba8d8c374ccff00cf0e0b4 data/create/recipe/cut_diorite_slab.json -9f91da5906ad3b787b0b3ef878fa2a8cbcf88cfd data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json -ed092c1e8ea8c7a553a6b90b77ad0ccfc9568c9b data/create/recipe/cut_diorite_slab_recycling.json -8ab5bd81def3496696e5fb3e73d056ad0374341c data/create/recipe/cut_diorite_stairs.json -8ce83756180f28669b9e4c7535a9f0f14aafe029 data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json -e05b450acc9b43cf3acd4c54707032c4d8e41991 data/create/recipe/cut_diorite_wall.json -7ed948da4a19be55d6e1273d89104abf2f046678 data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json -87bb1bd50cf019be8c2c21246d002a7fd586aaf3 data/create/recipe/cut_dripstone_brick_slab.json -47376a8f7edeb3cbd6211c0010c1e59cb9df68a5 data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json -ace14568eb94f8c49142d758257802f3a6c65c3e data/create/recipe/cut_dripstone_brick_slab_recycling.json -256b83a7bcea8fd0249ec50fb98a7bd744c70dad data/create/recipe/cut_dripstone_brick_stairs.json -65f3f4200c8649f116c7c55dab6fce3df4433768 data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json -ee01253710eda1cf11ed4ec676e0279101dbf1af data/create/recipe/cut_dripstone_brick_wall.json -0191cfa2ba07c62a86faaaee8d108051e36f13c6 data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json -fd4c3dfbd46f42bc6bb0b6cd7976091a7acfc0b2 data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json -bbfd0f93c6fe8cdcc257f179d97856f4ba5b704f data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json -4fbe5dcfa80a64b63aa03cec4d7db2a7b3a220bf data/create/recipe/cut_dripstone_slab.json -be2ef7b6554d6917aa020d30bd431b2017875992 data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json -4d7fad7f52200bfbf3a52517b304987127e16762 data/create/recipe/cut_dripstone_slab_recycling.json -2ad65862bf6f9faeb0f7e1cdbcadbbb5f8c0409d data/create/recipe/cut_dripstone_stairs.json -8cf740116db9fef6fe491829e47a5228139bb711 data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json -d92027d2dab3d0654f11f8aa218eb7eb781f88c2 data/create/recipe/cut_dripstone_wall.json -47ea3d9dcf811f646fed31e5c36b95514c1f9d56 data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json -411cab44c635c0b231748310f3729837cfbf22f3 data/create/recipe/cut_granite_brick_slab.json -16d929ba8349773a6ebb76c922d212dce2b81161 data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json -4c92c07a3981856b34aab17ae4f9c2a47942f3ee data/create/recipe/cut_granite_brick_slab_recycling.json -7c7e559595ed17218a2dca0b2a49c3370e522306 data/create/recipe/cut_granite_brick_stairs.json -ea869f45312f4b216d0b55bace9fab1a25c4982e data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json -f52eb2b5a0a240821fd9d65cbd2b3dc477cbd1d4 data/create/recipe/cut_granite_brick_wall.json -c0c40956d6f4c1b88f4c3bc2d9dd19cf6e986cb4 data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json -ec08535247d34df02874be655a2096dfc8684458 data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json -70cf360814c48dafa5e48d8b93b178ad34c48751 data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json -a512a53f43d7de550c07d131d363d7afdaa37924 data/create/recipe/cut_granite_slab.json -8e96b3def6d20d43c9f53c39b97ef4e21d138ef9 data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json -1dbc2ab5bc41b27cedcac0fbf7f8999411ef3ac4 data/create/recipe/cut_granite_slab_recycling.json -d7d05d39cd399ded3416f1e66c25b0043c99474d data/create/recipe/cut_granite_stairs.json -b6d3425bbcb456481d9ab71d4d6f8a9f6a174f52 data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json -6257451dd69a31e2bbadb86b6cfff14fb168733f data/create/recipe/cut_granite_wall.json -0395923f8896b0c1cc9451ad9857f9a18c2fab73 data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json -6a9ee92b1960841106a83fc11cf8e17f3ed1bfa2 data/create/recipe/cut_limestone_brick_slab.json -e5ca8abd1fb8e405af6c8ac2dda7ed5c25eabe15 data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json -0878b00b45912c9de471cbf632803fb3dff521ee data/create/recipe/cut_limestone_brick_slab_recycling.json -ab2f4ed7677b269b8df59f71dea0a7f0557521f8 data/create/recipe/cut_limestone_brick_stairs.json -0b3c581c06d33c2eb43477bf20ec74db0d7d25de data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json -7e2b84d99681cd84c773911396cca9a748467058 data/create/recipe/cut_limestone_brick_wall.json -45b8e862d91318424c621455cc977066550789d8 data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json -6a1aef2e70f9ca14416418a0e6aed359d1b05376 data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json -e126ad383ee2b73bf260209e9ac7efad02980440 data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json -14ae224dc2749c0fd1fb4edef71a43d2b4a04e56 data/create/recipe/cut_limestone_slab.json -21c6e0f4401a97230a8b321eff273cdc3989ea32 data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json -1ef8e8cb47e31fb09d1881187be904a163841fde data/create/recipe/cut_limestone_slab_recycling.json -7559486bac6b99c07c863aab4267fb0577414298 data/create/recipe/cut_limestone_stairs.json -44532586580ec6ba1305a65edfa3af33d767c3db data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json -d46aadbaed1cb0359287b007c5166ccd455ef1bb data/create/recipe/cut_limestone_wall.json -c028efb9eb3313b589e9cfa1ff3a68b3abb1b82c data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json -90e7363cd0f419597429679dc731f43caf6f446f data/create/recipe/cut_ochrum_brick_slab.json -52640ed7e9da5417884ca36f19ce7154ba3ee8b6 data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json -1b6fd9f85f2c3750ea64e54575f851ddfcb14e93 data/create/recipe/cut_ochrum_brick_slab_recycling.json -634302ae8ba7f998f423eef41754a91c2cf5fac6 data/create/recipe/cut_ochrum_brick_stairs.json -a309e94cfe9edfafaf072e50a6ea4a8c76a9df4f data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json -411125b4e0d3bf47e8e18ca7825a24fb2f261ebe data/create/recipe/cut_ochrum_brick_wall.json -049acf879bd1f28658b2c19fdb08c2361f692efa data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json -24b91dab9c2e17a9706c284b19d656691cb5fa4d data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json -4bc3c7ccf7a51cd2eb36f7c84f7b7ba004f66340 data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json -f174549d95caff6a97b0e3f36f69e9517057da9d data/create/recipe/cut_ochrum_slab.json -5ca8ee291ba3f4dcc19c2a7772d600d2af3288df data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json -c70eaa0ea72670276ecaf086659156fc2439ca30 data/create/recipe/cut_ochrum_slab_recycling.json -0fa8e2776c1c18ba0b6df0d88dac5b45044a54d4 data/create/recipe/cut_ochrum_stairs.json -ab2b7ab9e698ab193820679f05064a05b2e9a6c3 data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json -89f8e3ddb80d219e33589a6d3bf044ad16437368 data/create/recipe/cut_ochrum_wall.json -88375ebcefbca06a883a737bbdd719558e37bea9 data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json -67d5d05f08fdffcfc6dd95973721eca75ae9d259 data/create/recipe/cut_scorchia_brick_slab.json -3380b5a8e104039c654bfcecce4564c50f746753 data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json -5204ac10290d2e255e82a52090d7ef80a4c011ef data/create/recipe/cut_scorchia_brick_slab_recycling.json -a551c85b644e0fd46e97dd8e23f4d257fce7bc23 data/create/recipe/cut_scorchia_brick_stairs.json -ecbf9a4c567c399b0033c70038fe61e11fbab2b6 data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json -e0fae231a7f421622d9e0974244677a970ec3509 data/create/recipe/cut_scorchia_brick_wall.json -9a69245ac57213f09e31cbefd727a5d7df03191f data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json -8ae796516980ec394bd70f6bbcb80f89fd51fc4e data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json -3b3c7df45af8b5efd50879843d0d97b12720ac05 data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json -3386eea0b4735f6385d5341a95573410ec398277 data/create/recipe/cut_scorchia_slab.json -1f340c973708d9113d1fad4ee33920dcc02689f6 data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json -f63401671b19393cefa835cb45422e88e81b0a1c data/create/recipe/cut_scorchia_slab_recycling.json -9cab058bdd8512091e88e25beecf5d29764ab90d data/create/recipe/cut_scorchia_stairs.json -14ae67345405ef1165e9428a5bbc464302814a57 data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json -22a3117998b385c14884e0d8c13cd9ffc004ba28 data/create/recipe/cut_scorchia_wall.json -b49096816a4cc5766d82ed8686ebbfdc27675daa data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json -61ac56bafc1c9f9cb2a69adf37e429b4ef07b2ea data/create/recipe/cut_scoria_brick_slab.json -6310dae69c4158b2e8f2363c64e20e46f0e637ec data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json -94f37d5a7ce7c5ab1598dc88b386aceb8703ed7e data/create/recipe/cut_scoria_brick_slab_recycling.json -35dbedefdaa507779842e024eae179f5abe5c021 data/create/recipe/cut_scoria_brick_stairs.json -66a2cd4e9036dc89fcf3c7fab35f625e05bb33a1 data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json -22136e4cd83a00b0ccc3dc3695b2737b65b8bc07 data/create/recipe/cut_scoria_brick_wall.json -b84b4a07e36ba8bfc1f21393f25664e0339d4076 data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json -f27e0f19c4acefe896393a52a4746405b7730107 data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json -538b822d752acee64a893d665915a5c393d968cd data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json -a2f1dd79d8c9a528301072715874ace31b15072c data/create/recipe/cut_scoria_slab.json -efd2e2f6f288491892b9bf31496eb34ef943c70d data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json -afab245c67f67f1b134797234876476da0165c4b data/create/recipe/cut_scoria_slab_recycling.json -920a42cbecf4bffde6231acbcf61380156488a75 data/create/recipe/cut_scoria_stairs.json -4ef5debd034947fee3349e6a57a17003c8f01cf7 data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json -c217760d2c8a7f54307185f82f0ae5d943425995 data/create/recipe/cut_scoria_wall.json -200395bdf139cca768345d72dc6719463b1ea2bb data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json -9ed09210cc1e13995ea3d9e7035b94f085c06f13 data/create/recipe/cut_tuff_brick_slab.json -c66cb050fa2f37d8e8829c315cd78beb00ab2771 data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json -95cfefe3b39b18fa311c53ce0e912441b88ecb62 data/create/recipe/cut_tuff_brick_slab_recycling.json -746a7411dfd688399f16efedf045b77b81428be6 data/create/recipe/cut_tuff_brick_stairs.json -f5364fe13bbff909246c026b7d8e3ef44c0b65a9 data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json -5b4365578c72c866bb80b09ce218fa282a1d3f8f data/create/recipe/cut_tuff_brick_wall.json -c917d73ffd53826566cb6b0a74e058fd24fcd3e9 data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json -a16f5d421178318e0b23c10f71fe1d75ef199bad data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json -c48da1f4611f43b13f51ff9ad94d1433dc023235 data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json -d3940a9586b8d31b32d89b89d44abed27fc488ab data/create/recipe/cut_tuff_slab.json -11791c045424017553e82c82baed0add6d160c3b data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json -1e4cbf436db8a227ca25aa8c610eb6d026413cb6 data/create/recipe/cut_tuff_slab_recycling.json -fe812b86f3343cfb50fd8c5f84cf9b8c4391d6da data/create/recipe/cut_tuff_stairs.json -c703afe0fbcd96a3bbfc5fc7f013f02f64f87c7a data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json -a05164f475b36bbb428e6b7d4015fa03146bf459 data/create/recipe/cut_tuff_wall.json -ea923fcc25c9d8f2072a8504d586f94032f9f4ce data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json -d1b0082101cb24047255962eebc7bf4883881fda data/create/recipe/cut_veridium_brick_slab.json -499b1a182cc186daff220fb1d4d15aff1701007b data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json -9d7a9b05ed600b637e8a2356c3ff9557348a9cd2 data/create/recipe/cut_veridium_brick_slab_recycling.json -c6d6c19345c85abed52a1763425e1250692513c8 data/create/recipe/cut_veridium_brick_stairs.json -12c592b309ffefd0c5d343b8a9b8102036b8dc2c data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json -cb09f1112dab7fd5a99a2a1fb236afad75ccf3b0 data/create/recipe/cut_veridium_brick_wall.json -d028dfb4772158a7c9e22285e770657d71d07069 data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json -c5248dca486a41b2990fc6268349a822b8d132d9 data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json -dc8b64eed004f91b7d5fb8ab1bd389770f5d6175 data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json -e32255d4f0b86fdcfef7215d968bc17dd996e048 data/create/recipe/cut_veridium_slab.json -110350391aefe1c616d02673459d92c3dd1e2376 data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json -514b4b99f3e9dbb417b32fd69f32719210fdb50f data/create/recipe/cut_veridium_slab_recycling.json -98743bdac5f38b9cbc8de011bbd76c8ed5ce7d0d data/create/recipe/cut_veridium_stairs.json -aa00680d22d399e5f4af88f49558d55862256e02 data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json -6f91c49ee04c5c3ca5896df3178cdf3ea592f460 data/create/recipe/cut_veridium_wall.json -e0532310710d83745d77ccb4c6af5f34ee159160 data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json -62475d543e18f2ae59b36f51f4a89ce3615446f4 data/create/recipe/dark_oak_window.json -840d833fa7efdf6b43c4c75fb669af8fed5cb8fb data/create/recipe/dark_oak_window_pane.json -b061d45a736a281db4b8c5e01ffe46ea0fb58c41 data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json -351eb78d80bdc3ac985d5305ae40e354d4e43070 data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json -6f49fdd85fb1144f69fba08e1abf6525584adbca data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json -ab6d67b9385b9002a910c8bb26e622fc78a7f946 data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json -7d33f2a2fb4478fd606f2dd8d2d129cf6c78bab8 data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json -85e39f206431cade8808e34a289f7a5103314a2f data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json -d36d8dd56400f4ee20fcf7289c4da986506619ad data/create/recipe/exposed_copper_shingle_slab.json -da85945219b38e5e0003a3c77bc156b290a8d5eb data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json -a8578a4905af276e3198ae1e9804f88374cd5d42 data/create/recipe/exposed_copper_shingle_stairs.json -b45cc43a66752c9f776605059bb9d425137cc317 data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json -9c068454bc5e6cb0eaaf26007cc74b504e023903 data/create/recipe/exposed_copper_tile_slab.json -2c1e40d6ef3643a4ef432c3b4bb675b6ffebd6ff data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json -77102e7775975c8f260195b160722963821ab675 data/create/recipe/exposed_copper_tile_stairs.json -0aaeb26bb696cfaa0b0a04ed6262b5b216ab72e1 data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json -7503d10582a7aa55dac9b02ba92d6d48d3dc719e data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json -32792fcfaf91eda2c6f513a703dd9f6356577401 data/create/recipe/framed_glass_pane.json -3df1678ed26101a21a91f1f53fbfd82614020fba data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json -9ed41c9847b3484ace5a5d1e306333e75d33d219 data/create/recipe/granite_from_stone_types_granite_stonecutting.json -fd91c8dd6d92895f660cc7074a1da5cebdcbc2de data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json -25759767ce55493645ae42eea4da07ab1d864c66 data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json -0f4293781643718675a9fbfb1437cbd8d8460676 data/create/recipe/horizontal_framed_glass_pane.json -56689674cb2526bacecd196baf0c709b7a253667 data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json -c2f564cbe6675708534f986cd286a04af0bb1907 data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json -234c9db9e8b4c5ab47a26c37d83d29e515f70188 data/create/recipe/industrial_iron_window.json -225ded7fb5dcf2af0634939fd374f4dfd7457081 data/create/recipe/industrial_iron_window_pane.json -f91f83e55818bd049911dbf44af13b28ce538844 data/create/recipe/jungle_window.json -353bde71b8f302f87222fb466ecedd10bf65e16b data/create/recipe/jungle_window_pane.json -c2edd8cfc32898b086ecca4a8b2d4b3a01b83f00 data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json -63a7a4daa1e4b1e4d04a54964e342f3ef10250ed data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json -15c59007aecdc6c46f35d82ac3bbc89697863258 data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json -4da2475af1bd2ed6dde7985d5c7c46d7ba534817 data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json -c67169987cc77f142e5440b0ba7c2f3740d479a3 data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json -797125ead29074a129151c0954c039c89b7b32d0 data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json -94cfb1c4a63ec501dde6f06cd80d4d5b43a3add0 data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json -87329e6e87a79c55a21557adea88f4765f947679 data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json -a43af2e5970c3fa1f25a222f71aec8865819f43d data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json -d1cc1fa9ab19a7dac26a9d5e910a206a2300a8e1 data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json -1b038ebdc38877c34d60cc6aec0eebe6302969cd data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json -04b50e24295f2f49c8e36c568b819559b25317b8 data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json -26661107b582a3a96e9a246307de4010f3b08c1d data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json -39c65a71dc2427813df0f55cd23fbee9d56d91fe data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json -9ef1ab11ee37f28500f62084485e4c51cfb7e48b data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json -7f5544a9d1773eeda0e54f480ae8257cab4439bd data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json -5ac3c99615d020ee1dffd093a29774f52a05356c data/create/recipe/mangrove_window.json -b762665fdcaa06dca02b25f2cca48e5f6a2b760c data/create/recipe/mangrove_window_pane.json -9b36351c098fb14ea3134984f4bcc8c9ddbe1ee4 data/create/recipe/oak_window.json -5bf208c1566d8e1ee4bab90769a61c1017a28d20 data/create/recipe/oak_window_pane.json -3d4851c0c06ff7920be49553597b3f845ac3f01d data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json -c37a340b6b5311042907ade43629ea2b1a711070 data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json -d369028ca3824301dc6e472a5616cf1c68a1c896 data/create/recipe/ornate_iron_window.json -316d5d1557d9f75ad23883ecb34f65b3d8e6d2c7 data/create/recipe/ornate_iron_window_pane.json -c6ee49fa0ea5ee1ce29d929cf5cc7f78a0715bc0 data/create/recipe/oxidized_copper_shingle_slab.json -61b46578a467ce1e22f73ddad56e5153f2edbb69 data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json -bcd2651cec4aa0113fa48a7c53d77d52a3bc1763 data/create/recipe/oxidized_copper_shingle_stairs.json -5ab07528fe84f56f676e6498c99a4d7f3aa610c0 data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json -71142e05134545f03bd7c11bde5bcf26c58efe04 data/create/recipe/oxidized_copper_tile_slab.json -1131fc4ad4cbd63a922f4eec4996a2522054cb9f data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json -eb82fb289c59488ef167c73de44a4a565108f9bc data/create/recipe/oxidized_copper_tile_stairs.json -526b1498b2ac5190122f3c024de9711cd4bdf0cb data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json -c4ddb882dab1a9553a87a1ddf40b7fc0bab516ea data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json -b999f7414a285a8b329c564c6f8fa14f758310cf data/create/recipe/polished_cut_andesite_slab.json -c1ff3b84ac04333e7858b19d7f1bec2c47c4f7f3 data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json -fda584f099673d0870ea595bc7b6a9f073082d45 data/create/recipe/polished_cut_andesite_slab_recycling.json -2268ccb727570b4359576874b5093cce8693261e data/create/recipe/polished_cut_andesite_stairs.json -80d01f9b99fb9fe533ff027855cb29949b1bd6cd data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json -cef40f22d54bcc72d7278e64e6cc7cbf3f679604 data/create/recipe/polished_cut_andesite_wall.json -0bc6cc8b968e1ec03a40ce5211297dbfb271bb4a data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json -3259cfce6ed2f37fef77f674912dcfedc9344e0a data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json -8dfd1744c2f3fd06f6edea5c136b407903cccbaa data/create/recipe/polished_cut_asurine_slab.json -8615619a23c992e1b1c033285a46609720d73ece data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json -da2d746b378c34f227478d39a9ae7fc1326027e4 data/create/recipe/polished_cut_asurine_slab_recycling.json -de933fe1e6f2f8f2f710b25ad861ba29b240b903 data/create/recipe/polished_cut_asurine_stairs.json -c069b3f5ea12f6a3b1691edb0630632f49387683 data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json -f7786e8fdf27aa8729271be2a87635cb578c1878 data/create/recipe/polished_cut_asurine_wall.json -987189ee672160648abe697adb23de509cf42710 data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json -da9287e22a5d6a73493a52ff3e3b4e620ed104ee data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json -268eb7b948ffa1c4ef67c3f1acd7c84f2b5d7103 data/create/recipe/polished_cut_calcite_slab.json -f9b0857360d152ff454c3ab28c7aaaf0bfc50832 data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json -90065836fb0e87bac09ffebbdc1a693fd3d96788 data/create/recipe/polished_cut_calcite_slab_recycling.json -50e5ae23dcc7fec2daf0e8fce1da7786143759a4 data/create/recipe/polished_cut_calcite_stairs.json -c829676e0e8d70d13a9a9a1fff6e66acc7fc3913 data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json -bd9e6cbd975f674f0285e774406ea6b864369aba data/create/recipe/polished_cut_calcite_wall.json -b14a16c6495d1b2a91523be0637bf9e0c25e2206 data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json -8790c751b134d238f357e6ec28cf24023b14de0c data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json -eac9373be879943e93b1b352704c5dd0bb84854b data/create/recipe/polished_cut_crimsite_slab.json -be0cd5c6583347d3772c00b8818768b36654dc80 data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json -ee9a54ac125109a7571d025b008e98114bd6cc81 data/create/recipe/polished_cut_crimsite_slab_recycling.json -cc6c057b73a66089b55806dbcd0525e0c74672ab data/create/recipe/polished_cut_crimsite_stairs.json -857830bfdac53a0d6689ed5dfd6c81dbf35cf50f data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json -7238426d75820d380c2a0a0818956b3d46de2a88 data/create/recipe/polished_cut_crimsite_wall.json -af562093be87a3d0b5d546d776da0d33e2955bd5 data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json -b4f02e1bd7a8952d9800dbc71c2996ebfd90a476 data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json -742dfc4d70ab87bc670727ea3ecc95c502a08b87 data/create/recipe/polished_cut_deepslate_slab.json -3d7afa5429277934a7c0165bcf34b8a4d3f77a04 data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json -0118812c5feab1c0eea13f726baf92696b6c63e5 data/create/recipe/polished_cut_deepslate_slab_recycling.json -04faf9c41083b8b96b0b4c5dbabdbea99f72c1a7 data/create/recipe/polished_cut_deepslate_stairs.json -8f6172f4073705e3197bad06291855a9176685f6 data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json -fb12d600024f908b8f32b45cd76e59f98dd01285 data/create/recipe/polished_cut_deepslate_wall.json -08a4ed60f1681292a93d1ef4de4e27cc644347fe data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json -280aa25420bae83d4c5b2302f2a14ea07b3898b1 data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json -81eeae404b4a3588e6955e0da6820c8df8e64450 data/create/recipe/polished_cut_diorite_slab.json -032eeba86c646c970d1d28588930d4b7ac555d61 data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json -081b362c47eea8f2aa40f62780e52b5801eb275a data/create/recipe/polished_cut_diorite_slab_recycling.json -85e82e55389aff0b66d9f88c4128f9c500fd4a54 data/create/recipe/polished_cut_diorite_stairs.json -a6d9cedd2a2a589ddd719df0f798d2fb7b830290 data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json -1f4d11705b3342e548958fd935e687fc983db352 data/create/recipe/polished_cut_diorite_wall.json -4814e60ce54991d3de8ab2dc706d737d0a14758e data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json -41560cc8a6d8c4d1635f92a0d31fa95658f60c80 data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json -b71383b80882a4e80b9abfcfa5a3aa2945986acd data/create/recipe/polished_cut_dripstone_slab.json -a93c065404904050d2ad1288fe12b310520db004 data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json -f5d8789cc9756ece4029cea9ff2754a1f477cc26 data/create/recipe/polished_cut_dripstone_slab_recycling.json -a9d9ec22bc2e97cf92cc6cb01ef2fb408c15ad87 data/create/recipe/polished_cut_dripstone_stairs.json -60d21da387f0524d9f86037045a25d718667c988 data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json -284cfe5e02ae6de44b0fb3aec6449852b51df085 data/create/recipe/polished_cut_dripstone_wall.json -e259056f8fb8db1023f4e610ad85560af4d734ee data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json -48c30b0170ed11e88a7260ea9c0a07dd4036875e data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json -58ff798e872bf751b32b4789be6ea5264e57113d data/create/recipe/polished_cut_granite_slab.json -21190e3a8d754ead491c173b8998340b7f68108b data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json -0fb01c096593cbfb2a0c27ba52bbbbdb3b83a3ab data/create/recipe/polished_cut_granite_slab_recycling.json -03765e04774472134ecd1eea4010fd5e59eaa72b data/create/recipe/polished_cut_granite_stairs.json -c05d6d502d2f5bf2b3eef8222ccd39e1e727f38f data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json -61ded8af34bdc6dbac55741f92b064e1e8f53adb data/create/recipe/polished_cut_granite_wall.json -1105ce60018cf7a4249cdedf4185541ddc513c12 data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json -00fcacced2a2833c80b85aaffa0b60c449bfbb2b data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json -3872170096adc44a166b26812ddbd026384bf9a8 data/create/recipe/polished_cut_limestone_slab.json -6ecef76c90b90fec1d82936e5853a7ad23e0ba87 data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json -dba8691f7e601bfa419adc49f115be7b850f5e54 data/create/recipe/polished_cut_limestone_slab_recycling.json -9df7aefc77b43970ee6a903b9777d300b927aff4 data/create/recipe/polished_cut_limestone_stairs.json -3635b2596e2efdac6c14a81a58f70de17cdec47b data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json -5c06c80b4ffd0d2289c542d9f99fe8866b0f3a94 data/create/recipe/polished_cut_limestone_wall.json -6a74a94c8c0697381506fb53142f8d8d51e06b1c data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json -3868af6bf3be33020156684e1b9af17bae4f9155 data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json -f607c7c3b5e9fa34883ffe6ce3fb871123abe23b data/create/recipe/polished_cut_ochrum_slab.json -f6bf6d46f6d39b9ab41889a06c5ff364cf987dbc data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json -6353dbf597a899ef37b0653b3586c54cd467e6f9 data/create/recipe/polished_cut_ochrum_slab_recycling.json -52aadf60d107b8fafcc1b5da40146cf0e92470e6 data/create/recipe/polished_cut_ochrum_stairs.json -cdbad017310f9e6af6704ee7130c5b8f0fc530c0 data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json -ace42b6e9e32cf15df6238f4e771932683d266c5 data/create/recipe/polished_cut_ochrum_wall.json -41b7c8212b64b9bc2f7bc866d8ee60beb5ad1040 data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json -c859bbb71c03bb46aa3841b8f5054c196575e81d data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json -003729d2b63a16703d6bb6421fb2eb269eb17798 data/create/recipe/polished_cut_scorchia_slab.json -8c2241d6b613517a9106f38431c523fa957ac722 data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json -76bf6d60fcfbbc11faaf25843f257d35b126c1c7 data/create/recipe/polished_cut_scorchia_slab_recycling.json -3e5b0f632486595f452eeeb706b0970c83d93f61 data/create/recipe/polished_cut_scorchia_stairs.json -bd790e5ba79b7858baea27d77b752d523f443c97 data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json -99aaba7034d5d5b596d2cfcd0f204e6f0b4a0561 data/create/recipe/polished_cut_scorchia_wall.json -d011c333329cdea42f5445317b1f142b176ca43a data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json -3cfd36a4994fe85367cf215e4d4593fd06dbfaec data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json -8618bdf723d7c4dc111871d35fec9510094d4679 data/create/recipe/polished_cut_scoria_slab.json -7bdf972250413ab5f2b3e242078ad0aca95a9014 data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json -850da5e0458ace242dd3a3ef56ebe207079524c8 data/create/recipe/polished_cut_scoria_slab_recycling.json -ecc78be88e454a9db35214984985a8e0b3cb7cf3 data/create/recipe/polished_cut_scoria_stairs.json -d2f054070435bb2ad834839507a866f4f19bc893 data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json -ec40cecaa9d89a15884f85fc7c8bbe75a515ab2e data/create/recipe/polished_cut_scoria_wall.json -8bf30d96103712e0ead7418f58986fa97e5942c0 data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json -094baa17a196cf164108f9f3aa91f2c485fe25dd data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json -e83b0226c852e37cd1dc035f6c17058ccd62fda7 data/create/recipe/polished_cut_tuff_slab.json -81896e9cb75bd206ac7618192ec9612e62a310f9 data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json -07b44f7b98e6b9050d400955f812b4e705c54065 data/create/recipe/polished_cut_tuff_slab_recycling.json -37abb27a25dee5d8c06b930d3e94887565ec2938 data/create/recipe/polished_cut_tuff_stairs.json -ae1ac44664da18b7f451c9ec73e4bce163b1c796 data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json -b7a2cb852cacd7757de3d03a5b43b3204fa96129 data/create/recipe/polished_cut_tuff_wall.json -346d9efbc67af889e8d1ef90618b1c3a89303a3e data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json -7817b1132dbe74b1d7973461405df72464f9927d data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json -f7d63417c93181c43fd7ff6747b29bf3b53439d5 data/create/recipe/polished_cut_veridium_slab.json -48fbe3ab4b5f9919568109a6d34cc2a249075c0b data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json -81bbe430e90b803d20f95f8f052bad21f4fc837f data/create/recipe/polished_cut_veridium_slab_recycling.json -556632dea4fe166616d6ef0a598274a9819247ec data/create/recipe/polished_cut_veridium_stairs.json -754d9891130ba03c90e68b4b0320b6534bf47b42 data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json -e871d73b4312730c0d68fee7bfe032c296e9b483 data/create/recipe/polished_cut_veridium_wall.json -6d2f6e7833f705f656c666b446e2e8602aa9a3ac data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json -0d63c15b3eb3e721bada4d58c0dc68b5fa26fe3d data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json -3741a6ab5b1c530d867fde5ba7c41e54a1b7089e data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json -9fb1410ba84395d43cbdaf66098d48d66e17bc66 data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json -9dc3a4f21fb46a6521498a0a9503c45a0908e4b0 data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json -73dec330c78e3fba2cf4a8dee61a43ffd662e170 data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json -b268c4f7aa568fbc1dc90b2df8d6e233bc19a4d6 data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json -1b704dcf0304379925ab916eae21ca9b26ab8c26 data/create/recipe/small_andesite_brick_slab.json -d2070e200d5d930aed7a4204874a8b5581c5859f data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json -718319bdaef7cece527edaea52cba57b48caa332 data/create/recipe/small_andesite_brick_slab_recycling.json -5c46f26fcc291ac58e8c6e9c2d3bc188f31f2903 data/create/recipe/small_andesite_brick_stairs.json -7b792a515d791b90a1b07b7c5a371616f866013b data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json -b9e6f1ba29168d8aa747d671e856e3f15f36c035 data/create/recipe/small_andesite_brick_wall.json -6df8353ac373dd829f3d1e90d2e040200bb44cdd data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json -2cf0b591cbe65b3b12f93d4ae66862fd32ee7b31 data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json -e6e568bb4e3cf4b99bf2da11c4c8dfd8cb644510 data/create/recipe/small_asurine_brick_slab.json -3ef3fb04534201610ab5771e719fd711cfa9bdde data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json -e95c350d0d7bbdfd9249abc052d3faab0d585d5b data/create/recipe/small_asurine_brick_slab_recycling.json -c0cd5875ad9ad8949a65316e02a921478074a4e7 data/create/recipe/small_asurine_brick_stairs.json -2eb959f12b771b662fd018649e1152efef9b1ac0 data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json -cb56f247ac518c86befef7f75d60e57e1023f402 data/create/recipe/small_asurine_brick_wall.json -74f08b8b8f1ac578de08cc7003c7f1900f241537 data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json -edc40b00be0f41eae7d384aba4c84669f592a29b data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json -14fe6187a3303d104b1e81be36a030d2aa355950 data/create/recipe/small_calcite_brick_slab.json -7c640d0b82d300d4ba1d7be523b37830bbda126f data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json -d1606c7bbf3de96972b6e31cfc67dff47066e53a data/create/recipe/small_calcite_brick_slab_recycling.json -0c75c1e6f29967257553aedcf974f7bd7e7d16d1 data/create/recipe/small_calcite_brick_stairs.json -d1f22eee9b9fd65d6b332e946a3fa65effd8df09 data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json -b9d7cdbd521e6fe4dad6c36911f24e570f506f8c data/create/recipe/small_calcite_brick_wall.json -2889e6466decad5f21e70852fdf8b347140eba68 data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json -2ec5ed931e9f90d6a80783a6fc36aadca8d906dc data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json -c877b814b28459a61c0553f55aa13fbc8bfa6985 data/create/recipe/small_crimsite_brick_slab.json -2b2e19471cd1d175471223d615835362cf350c70 data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json -0fda53a11d2023251ede9caf47207ed69f281501 data/create/recipe/small_crimsite_brick_slab_recycling.json -64c3e638519c61c22ff60abec2b84e9f35294e0c data/create/recipe/small_crimsite_brick_stairs.json -b3b99c1ce34e6b332bf39bd67134972c95eb02a8 data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json -924f4f121cd849bd5325dde20a80beb0bffce8b1 data/create/recipe/small_crimsite_brick_wall.json -c96d531391be0b969f340f84d2aa6c20813c8f90 data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json -de1091283b9b80d5afb5205af8a71cca967c77ab data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json -eeab91312f075901ef7e9e7b72a0b25e00495b82 data/create/recipe/small_deepslate_brick_slab.json -6033cdc1238a380d5883aec53a1eed9f7e1ec939 data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json -9ae2fdacc06aeb546abd9ff2a9d046022f6aa297 data/create/recipe/small_deepslate_brick_slab_recycling.json -679631ab28647ed7374ce13a947ee36f0e573703 data/create/recipe/small_deepslate_brick_stairs.json -09fa79aabf3c99fd59ae613746fdbb9e99c07ad6 data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json -679c8f2d11820d21ec7de73c075dfcbb2c994b02 data/create/recipe/small_deepslate_brick_wall.json -8372fa382b07eaf703e421e4ae605597a9ef6541 data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json -5afbf1ff8208e83b0f0a0deddf3579bb51b6cee8 data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json -b95f8998700a4e6278cf30bd1b58722dcd72ca03 data/create/recipe/small_diorite_brick_slab.json -815cfaf6c349b09386b377aa2a5fa2079a35f381 data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json -d8f33ab1220cb171413b9421efb736f6e83fbf3d data/create/recipe/small_diorite_brick_slab_recycling.json -037e1facf512723b39eb7670fc64eaa457764750 data/create/recipe/small_diorite_brick_stairs.json -774d808562bd9a7a9fe2a8c7e8a3d6ded9e4062c data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json -8e1751c7c264ea2f5b3034b84827a117393746a3 data/create/recipe/small_diorite_brick_wall.json -209fececa046ff06db0adc27964c6b12278eeb74 data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json -f65d82a6ad9c8d453c9d1bba024477d068d3072d data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json -c338f4beb5fa722083d8bd6612707cb8fd382a7b data/create/recipe/small_dripstone_brick_slab.json -10bf601d574b116c7590f1473e08626681b84ae4 data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json -f616e769ca8ee10a9b211db9ff82a0a52e935178 data/create/recipe/small_dripstone_brick_slab_recycling.json -aba61be453e082987752fc7bb9f5395a934330fe data/create/recipe/small_dripstone_brick_stairs.json -45dc9593fbcbf6f094d356ccfbda20ba69fadc35 data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json -426195aaf176a7360036f3f99cde0ef6e317f283 data/create/recipe/small_dripstone_brick_wall.json -e70c8c28f6a55dcf532b07c60d7bf052ddfe12f6 data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json -f99315755eecef89c698f1359afc689c6b8af8cc data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json -a3119596c2e6c36e3ed2c81fb994dcfad8001212 data/create/recipe/small_granite_brick_slab.json -5098869cdc577f28cefca10a85ae081a98a91520 data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json -d0252d91a376784249123dee922a59deadf779dc data/create/recipe/small_granite_brick_slab_recycling.json -b746f0f35bace5f4b76fc21bc593cc711b420625 data/create/recipe/small_granite_brick_stairs.json -118f8964b5cf993a479772743eb3b1de9748fbbd data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json -562043d82c28abb6e2f8350611c8ff862c1027da data/create/recipe/small_granite_brick_wall.json -8874f3bbefe10d6347b78045ac149c18578fd47c data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json -8841e482a5cf5c6201fefd18e50a9c655739e170 data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json -af5f6a1026e88a4b7f0c8cbbc5c33672226cdda4 data/create/recipe/small_limestone_brick_slab.json -be304317370e08a4d22860aade79294d25a3a0e9 data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json -750e821a17b26fd23da1fa3574d445eeb8915f82 data/create/recipe/small_limestone_brick_slab_recycling.json -bbbce1bcd21b32539fbd6ab9234829db0b55d62a data/create/recipe/small_limestone_brick_stairs.json -b903ccc2867331aed4731d29c9144ef0802fbe0c data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json -04aadd9a27f502bb659f2523a781310fe918503e data/create/recipe/small_limestone_brick_wall.json -e194ae65c27ab11ba0f52713d8a4ba4f768e64d3 data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json -cbf7c22564d1cb15081fe9a55c9505fc796e4ab9 data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json -293e679b952199effeda102c94618bf890f62aed data/create/recipe/small_ochrum_brick_slab.json -9ec52e54aa5c9d78cb2fa6aef63115e6fdda7002 data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json -75d82fb9f9e27d4d53dffe0a4d0a2a55d0600fb9 data/create/recipe/small_ochrum_brick_slab_recycling.json -deedeb00577fa0b25f453a6a03e969b3c3dab984 data/create/recipe/small_ochrum_brick_stairs.json -c1821363424395814bba5027f3104f7fc757c9d8 data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json -009a389c7f8e0d3fb34716cfb9ec5e2e32eeeec1 data/create/recipe/small_ochrum_brick_wall.json -2ddcfbfc899a84d63903cc683f508237c99cfdca data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json -f95ea3878c1b923ae1e5ad8c9735da6cee77ced2 data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json -430811d92537920d21cc85b437e283692dcc4354 data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json -cd502eae6b6d3123c0b09b41df663ff1d6b1a9bf data/create/recipe/small_scorchia_brick_slab.json -ec80e25d502199d8f19dc9b1593e21d409fffb8d data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json -c16896dae6e14a624aaaa36b0bf54e06fbd26d15 data/create/recipe/small_scorchia_brick_slab_recycling.json -e79e26f550eebe2ab5cdd5826110b98620bb0a3a data/create/recipe/small_scorchia_brick_stairs.json -aefd9e5dff2c8092c8b6fb0e40656d8b7ff3d978 data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json -a0d1c17e102dd255ecd863c2a61c780e3eb5ac1d data/create/recipe/small_scorchia_brick_wall.json -e95d50497a25e0d2cae6114bb8e5473b35ac033f data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json -96fa85f37b2dc0828a8292453e1ccacfb706a84a data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json -8201aaaf3fd13fbfdc146b804cf64bbe1d3bc59f data/create/recipe/small_scoria_brick_slab.json -16d81c714b6f6babc356d6001105059c18d9407d data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json -72cca7cde7f893e7dd4b80bfd9ebe65338085cb2 data/create/recipe/small_scoria_brick_slab_recycling.json -f234bd36ee2729b885ef13a902af02af89239327 data/create/recipe/small_scoria_brick_stairs.json -bc2cb32239b06a9590431870ff70498a01db9be2 data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json -adadf0a3a0b451561b63fcf858c11e23a94ed339 data/create/recipe/small_scoria_brick_wall.json -95509fc5a52d2922ff0afd24302e92806bab3868 data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json -80bbf8949ea70e24063bb9a92ae46d75f23c94eb data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json -d5ae9f58cc9377dfc788b84f68514de17503d7e1 data/create/recipe/small_tuff_brick_slab.json -31984e0c14d38752a7c6b4b2a0887074be1ea8f7 data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json -c2f1d86cf38f72513df7e5b9fe5d651d304e524d data/create/recipe/small_tuff_brick_slab_recycling.json -a7efe685f94b63e86b3eceba54ee9c878253a3d6 data/create/recipe/small_tuff_brick_stairs.json -854d1574535e2b44eccd34368329f77b11d62fae data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json -b05e463732ab0b2fb7998089c1ed62b360f449e6 data/create/recipe/small_tuff_brick_wall.json -9dd62bd367300ed3e5c8f1554c9cc7cd015005ef data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json -4bd52fa292c4890865f0ce46216a863864029144 data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json -3ed40e1c1f9cf45a6e517d7dbc612ec00158d285 data/create/recipe/small_veridium_brick_slab.json -03892edd52fc5cbecf3dbedde9844ca0528672ae data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json -e11937423e2d8462af320677f9e4574f2216df23 data/create/recipe/small_veridium_brick_slab_recycling.json -5f508da918e84f0054f7d22de8a26e556e390539 data/create/recipe/small_veridium_brick_stairs.json -ac099efb4985649e13432befa7ac5413138eb688 data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json -988969d212b9eaba403bded733f56a83815c2081 data/create/recipe/small_veridium_brick_wall.json -5c3bf0fbee3531df35662bc7e85f8419901c43e6 data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json -da5cabe2b49efb3dc58e3b0c03b2fa6afb2e407c data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json -507e0c809d56d3b6277b76c837c37d8aae669a6a data/create/recipe/spruce_window.json -f2914b3184f59429605fb98e6815b46fb321416b data/create/recipe/spruce_window_pane.json -7231f208a00c801a6356b7f1c9b403f4bb32973c data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json -ed9c26779bd411ce012c14f3b8e596576109edd1 data/create/recipe/tiled_glass_pane.json -deb49c64605066b8a1af1cded84146c771ef2243 data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json -f3a6ab802deff58face5e21d65d35d5bfec77df9 data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json -80f80229f3aa4c66a302c4536c60fa63d6180baa data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json -2518608b2d9c292fc90c61f91867a0238764328f data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json -3ffc1d0da75236196a48ea6284fdb3c94f10098c data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json -4e9d092978a7800a62366162e7fcb05e53bb7211 data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json -9cdbfbf39ac44dd6894434f8127d5edf4dd00294 data/create/recipe/vertical_framed_glass_pane.json -634f1cff9c1bf473c8ab7c8ae3daf2495bd98c91 data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json -6552f899004dae221a53f73da8814d6f9e59fe5c data/create/recipe/warped_window.json -28a52984ee374465f568f180bdd8236f6cc2c5a5 data/create/recipe/warped_window_pane.json -25440bfd2c4a1f4682f083ed18730a424d3aecc1 data/create/recipe/waxed_copper_shingle_slab.json -8fb6b396b9a077221a237bc7a179af35c3bb9ee0 data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json -8e12f9f9ea3ea144f4fd0ec4f1020819fa1465b1 data/create/recipe/waxed_copper_shingle_stairs.json -e47f1ce1da5146bbd784f59ee90d326e60c03e7a data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json -7d057863073f01263008609e4f59c38885727491 data/create/recipe/waxed_copper_tile_slab.json -9c264bba4961ea581cea6b2794a026301e595628 data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json -ce12c4d6ff9b800536cfd1fea9bff71b271f9669 data/create/recipe/waxed_copper_tile_stairs.json -b7a1e6ce6b327ab92afeebe4993123b494456e47 data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json -a3f7f409921657b6b4f9bf54efd7d8e0e2050f7c data/create/recipe/waxed_exposed_copper_shingle_slab.json -fa0925a066e6d6ded1f760d677c6ddf8a38dd493 data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json -679bc231705623a6eec911870feb471c316ff96f data/create/recipe/waxed_exposed_copper_shingle_stairs.json -5b66db1b2d90cd4c8935b94a302da14d487b673b data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json -50f51b16fe3131d47c18aa6ada42230beca8b8c0 data/create/recipe/waxed_exposed_copper_tile_slab.json -92dcc70946d5f1b6477bcdfc1f70c904a91d0a9c data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json -fb975e2a5cca1ca3461273383dcd0c312fbe0fff data/create/recipe/waxed_exposed_copper_tile_stairs.json -6bdbf2ea8cb3d3bfa3fea25152bf652e7f552a5d data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json -fa3047579fca2566eb2e578ebd2904afc9aef2b9 data/create/recipe/waxed_oxidized_copper_shingle_slab.json -8d9e1ec5d76187c63c26a1dcd0264afb89573f7e data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json -a7a2526963ffe46b5b8f55a1ace7ef3952508f34 data/create/recipe/waxed_oxidized_copper_shingle_stairs.json -25322a1e2a86600b703eba2a8bde197892a43fe7 data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json -5250a8f13b5c6fe6dd61d09453a7843facb7584f data/create/recipe/waxed_oxidized_copper_tile_slab.json -7f34d5e30169e678dc6e34117215f1294055f239 data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json -6ba387a100c93ab43a0c8e10a5f317da791a413a data/create/recipe/waxed_oxidized_copper_tile_stairs.json -d3060b5f2eca06ae1bfb0d79ff8e3a4621cd889e data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json -803c0c110183aa5b03852f8cb900356661e74b65 data/create/recipe/waxed_weathered_copper_shingle_slab.json -753fa3757e40d00eca7a0dcd1d45f2240666080e data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json -dad6c72778189e88e96e1a0c5d42cb219724a7e5 data/create/recipe/waxed_weathered_copper_shingle_stairs.json -87fa3ebbab761ec8884e0e167e21cf013e9fb0b1 data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json -8c99901cccf2481512760df438783e1c51c09cfa data/create/recipe/waxed_weathered_copper_tile_slab.json -9f357cf61e3ee343ec5a3d5ff4c180467d75b401 data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json -eba5c96cb7b5e5dfb9bd8986d06893d162e0e35a data/create/recipe/waxed_weathered_copper_tile_stairs.json -9112881bc48ab7a389020baf63b0f1fcbcdcaecb data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json -adfa0390a8afc3a18a8a4d6cb47eb3fe38aa1233 data/create/recipe/weathered_copper_shingle_slab.json -2c5b6b2a9be17077ecffd0b40d5ce5bd80ce831c data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json -c3fb1384dfb55365fab58b1ee977d2d925c99296 data/create/recipe/weathered_copper_shingle_stairs.json -96a8a58608a372f38424b9f8c960fc67e394f988 data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json -687ac8567e2f4875a2a373b8f11aa49a06226ac8 data/create/recipe/weathered_copper_tile_slab.json -7afcb51c327e13cc58b14d0bf81f28dab897e901 data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json -9052d42b47ac485c05a43151c92966475595b58f data/create/recipe/weathered_copper_tile_stairs.json -9108525931f1904c96a6c170739a0b7f0973629a data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json -950c895d8abcb66953e20ab61df59d4e1fb62a8c data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json -ce96b2195cb8ac34d555dbd1fd9f0c4ceaa2ce6f data/create/recipe/weathered_iron_window.json -e6884ff3bfbe4279da5826ad2cbfa3ead990be79 data/create/recipe/weathered_iron_window_pane.json +b47f5d2861c3093fc7c4722839ad68f8bceba86b data/create/loot_table/blocks/clockwork_bearing.json +f33a860ef3cf9667485021de71027ea0ddadc65a data/create/loot_table/blocks/clutch.json +e0ce41b38c362ad1cae814a51664cbc210b0ecc3 data/create/loot_table/blocks/cogwheel.json +8d0bd1c3e318495bbd035ed8a10d6001ff555c01 data/create/loot_table/blocks/content_observer.json +b94eec81e99980c90d05a65c66c45d3dc287a6e8 data/create/loot_table/blocks/contraption_controls.json +54a7bc9ca9fa74b8e55dca9d078bc69da7526882 data/create/loot_table/blocks/controller_rail.json +6944106e657a905dd3d5ec05fab874479363dc47 data/create/loot_table/blocks/controls.json +b68274c618d8b4b0dec3e69799c9e4f4c79f2bbc data/create/loot_table/blocks/copper_backtank.json +53b1b87db9fe90ddbbe0d785d2e6b3743f7398f6 data/create/loot_table/blocks/copper_bars.json +81dce9556ed4ed1ca66901248c1e46ff6255b010 data/create/loot_table/blocks/copper_casing.json +c2fde6e3612cb123231cd6e38f47a108bf330796 data/create/loot_table/blocks/copper_door.json +8f3b53955f0d409884ed95e823b38e18b4870294 data/create/loot_table/blocks/copper_ladder.json +d46e0b9c98d7db616c156a476a739410678e46d2 data/create/loot_table/blocks/copper_scaffolding.json +40aa1e3286b22e1ec333f7e42c478339cb7061f9 data/create/loot_table/blocks/copper_shingles.json +5c0dfdd25aa040dff4480dd02bf026c9d534fbf6 data/create/loot_table/blocks/copper_shingle_slab.json +d6d926a86a1abbd2fbc3a82f104f27718c73cb77 data/create/loot_table/blocks/copper_shingle_stairs.json +343e1d9c698a4f4d67f4b1a75c34149bd5996220 data/create/loot_table/blocks/copper_table_cloth.json +b32ff943f587ed4434bb2dc6766aa1085296a80a data/create/loot_table/blocks/copper_tiles.json +f9b00092d9af8a3169f820b239246323559135d3 data/create/loot_table/blocks/copper_tile_slab.json +123fe902efeb6f6c424b1b2a4fa522cb933e5f9e data/create/loot_table/blocks/copper_tile_stairs.json +f561078ff6dccfca0ffbb6d410c9ff1e149ab226 data/create/loot_table/blocks/copper_valve_handle.json +a4b34efd992f70d5545d7df8b1dc6e3b94c74120 data/create/loot_table/blocks/copycat_bars.json +68c35babbdb2af741f650270abab2a6456fd8aca data/create/loot_table/blocks/copycat_base.json +2c6866f2d8069b542f16af395fe83600f46a71f8 data/create/loot_table/blocks/copycat_panel.json +103b887dfed1c4dde03555fab80da6c5ef53d0bd data/create/loot_table/blocks/copycat_step.json +5705dc0f91949942352b819dabe046495c58a1f0 data/create/loot_table/blocks/creative_crate.json +64debe238da9dc48d2096bf5aa55432a221ae105 data/create/loot_table/blocks/creative_fluid_tank.json +64fa585af739b281810fb31225feca708b95c625 data/create/loot_table/blocks/creative_motor.json +c4cf43db627c78086e852b9900752bb8fe3c60a1 data/create/loot_table/blocks/crimsite.json +4b73805fc4657de9ef716dfbe640f36ca5898aa7 data/create/loot_table/blocks/crimsite_pillar.json +198cc40d79989732128fac0a5b3244f022ad2f7b data/create/loot_table/blocks/crimson_window.json +6625e5d1a47cda08434ed095f727ecd0327fed25 data/create/loot_table/blocks/crimson_window_pane.json +e95dfcf438ab4ec965c26fbb9075122dc428e435 data/create/loot_table/blocks/crushing_wheel.json +ec07eff2af2ac9c1d357dcfdc5e798677d3d8763 data/create/loot_table/blocks/cuckoo_clock.json +c1e0a8d8712f78405d57ed175e9a00402bd539e2 data/create/loot_table/blocks/cut_andesite.json +0d0f55692876830f821c667f5dfa74a00d01092f data/create/loot_table/blocks/cut_andesite_bricks.json +e99dddf7e544e2bf6c00b743e77cdc5550bddc36 data/create/loot_table/blocks/cut_andesite_brick_slab.json +415b8531e1ac27f8b912d44ce502e368a4fa1c1b data/create/loot_table/blocks/cut_andesite_brick_stairs.json +b2dac21cb1f9f3f1ad1d82f92e2ab8bd55772da9 data/create/loot_table/blocks/cut_andesite_brick_wall.json +7636213a2a4ba1ee23a8e2997c571e7f40ee534e data/create/loot_table/blocks/cut_andesite_slab.json +03f1b1cfd5ae975fba241493db6c1acc4d01fe62 data/create/loot_table/blocks/cut_andesite_stairs.json +2734ce610addd22cd63a39d2b23bf02a96e5cbd7 data/create/loot_table/blocks/cut_andesite_wall.json +0b4feacebe6c4dfdc06e7f6324dd0043e1f67851 data/create/loot_table/blocks/cut_asurine.json +1cd9e99c8c61c5089a2838a98bf85ed74644e5ae data/create/loot_table/blocks/cut_asurine_bricks.json +a1e24610182ae84ee04dac2ae8eab6e2e39a6060 data/create/loot_table/blocks/cut_asurine_brick_slab.json +d12985e6ed45486a010293e20ba119431781f7a6 data/create/loot_table/blocks/cut_asurine_brick_stairs.json +67701eda3adc80ca9dfd16b7ebde191ec9258de0 data/create/loot_table/blocks/cut_asurine_brick_wall.json +10a0aed8c04634836ad06a2fe33f60afb3522878 data/create/loot_table/blocks/cut_asurine_slab.json +bd6876da6f347b6cb99bde7b412e41aa191be6b0 data/create/loot_table/blocks/cut_asurine_stairs.json +545c4a2b2cba7d3a93a263934efe388551d61568 data/create/loot_table/blocks/cut_asurine_wall.json +0a701f9df24949983ad62a3f14ecb258a404c7e9 data/create/loot_table/blocks/cut_calcite.json +efa84b7446404535702ee1d0e2d8ee97e5a881bf data/create/loot_table/blocks/cut_calcite_bricks.json +206e444b9b17d60adf612c0e8c44a9914ecb26ea data/create/loot_table/blocks/cut_calcite_brick_slab.json +7eebf6ab53d844bb0b15711d402a96186eab5494 data/create/loot_table/blocks/cut_calcite_brick_stairs.json +cdfc8900d93d3e9f743cb80d789910c03b5d8d3c data/create/loot_table/blocks/cut_calcite_brick_wall.json +29969e7582b6056a93c92a302e6f308447a68bf5 data/create/loot_table/blocks/cut_calcite_slab.json +b3a5c38f21ae58fec8bee099f332dc33efa83f1d data/create/loot_table/blocks/cut_calcite_stairs.json +3bfa936f925fffe274426223bf107f8618987536 data/create/loot_table/blocks/cut_calcite_wall.json +e3d3b3b285a7cbe4e55115770acec96eeb744a8f data/create/loot_table/blocks/cut_crimsite.json +353620e4b1ff3da6702cd4b8288edac9774c145e data/create/loot_table/blocks/cut_crimsite_bricks.json +27ffc94b5d987990eb937ecd37a05c9c54f5e8dc data/create/loot_table/blocks/cut_crimsite_brick_slab.json +a744c70828a9199bfc93d7ebd5d6a787dc632c4e data/create/loot_table/blocks/cut_crimsite_brick_stairs.json +4463dd104243e12e44dab75b68a050c2fa566ef5 data/create/loot_table/blocks/cut_crimsite_brick_wall.json +4f20255f4940ecf4b9fb19452e03c690df3af374 data/create/loot_table/blocks/cut_crimsite_slab.json +c6d189da7d94e4b1664bc9d9cdd6efab84a899ca data/create/loot_table/blocks/cut_crimsite_stairs.json +0921472ba30e94c902ddf97f53fca97e0d90b586 data/create/loot_table/blocks/cut_crimsite_wall.json +d0ad38eb94e5faabf6ddc93a3635f943c2f296ae data/create/loot_table/blocks/cut_deepslate.json +d986088daa8fbaaaa1aeb05ea5f5b044cb794e3e data/create/loot_table/blocks/cut_deepslate_bricks.json +f2c099c6843915c916b549a90fad51c2fa6f1463 data/create/loot_table/blocks/cut_deepslate_brick_slab.json +e80f0ef8017d1d3f414c30296e388a3ca01124b2 data/create/loot_table/blocks/cut_deepslate_brick_stairs.json +08c948665a9013d725c0188adc685f72d412419f data/create/loot_table/blocks/cut_deepslate_brick_wall.json +ccbb779df9813021e2620b0aa85c4a8f9c9e3b62 data/create/loot_table/blocks/cut_deepslate_slab.json +38483007f35e0e3dda44e7c29b6216f076444b72 data/create/loot_table/blocks/cut_deepslate_stairs.json +246b99a6ece69ce0cc1ba82c88934cd89289ca8d data/create/loot_table/blocks/cut_deepslate_wall.json +738093f43be9ed4f42ac27b5dfd2fc383249ed70 data/create/loot_table/blocks/cut_diorite.json +48838571aacee2e9cda7eeae6cbc0f70a965c6ec data/create/loot_table/blocks/cut_diorite_bricks.json +340e03a12dc3f4f1b652081d3d5335f13caee35b data/create/loot_table/blocks/cut_diorite_brick_slab.json +5844c93bb190a21c54b41a6066af6d5f603d7e5c data/create/loot_table/blocks/cut_diorite_brick_stairs.json +a87493a811863adca68b97a2907b4cb7ad9c5517 data/create/loot_table/blocks/cut_diorite_brick_wall.json +9499d7b41963e86c4f29484f46cdc6ec0ee572db data/create/loot_table/blocks/cut_diorite_slab.json +1018aef9508a0f27825050ca8f745ab21c0e7d02 data/create/loot_table/blocks/cut_diorite_stairs.json +373f2b23c2aaa6f3bf371908c3be16281a650c06 data/create/loot_table/blocks/cut_diorite_wall.json +49919e29fee93b59f2383949c017a05c21333b6a data/create/loot_table/blocks/cut_dripstone.json +dd45e55453cb165cea5edc37e82cf4ed4ba8ad6d data/create/loot_table/blocks/cut_dripstone_bricks.json +275bc187a07bdea9b8e1c83818a7952084fee666 data/create/loot_table/blocks/cut_dripstone_brick_slab.json +c3a68088939edc287e6e50ef8ee8a3f1fed2b2c4 data/create/loot_table/blocks/cut_dripstone_brick_stairs.json +8b900dedf78ef8d49175159c10098ce54947b6f8 data/create/loot_table/blocks/cut_dripstone_brick_wall.json +e070b295128a51e03ebee7c5348ac4eccddda0c2 data/create/loot_table/blocks/cut_dripstone_slab.json +d39ca833a867017c7fa8b30873dc2dd3e225f43e data/create/loot_table/blocks/cut_dripstone_stairs.json +3c06a32b1fc9336da5d8b541a2382f530971c604 data/create/loot_table/blocks/cut_dripstone_wall.json +f902b713343e3e83a488f69ef5d0f42dfe5fa7e4 data/create/loot_table/blocks/cut_granite.json +9124ea8471b0b1ce9a0c3388ec2c683a62dd762d data/create/loot_table/blocks/cut_granite_bricks.json +88c0528fbed1106e50edc95334153cd28862c610 data/create/loot_table/blocks/cut_granite_brick_slab.json +851579a01d63bb8e9f5682c9352ffa4bac0828d5 data/create/loot_table/blocks/cut_granite_brick_stairs.json +3c4c726e704a122326689aabfcce4941eaf41e42 data/create/loot_table/blocks/cut_granite_brick_wall.json +161adca231f1cd6692d257d83862954b87ae3fef data/create/loot_table/blocks/cut_granite_slab.json +ca86377857e5b25cc92b25db9c71c8c9582a5921 data/create/loot_table/blocks/cut_granite_stairs.json +1b52d19b0e391488efe314b3b920c7d462320d5a data/create/loot_table/blocks/cut_granite_wall.json +88665e3a7d430fac9e3004d28d06e1e9c24558a6 data/create/loot_table/blocks/cut_limestone.json +f769222bad9ac76f0651992103ddbc78ca623ea7 data/create/loot_table/blocks/cut_limestone_bricks.json +d0099344546e3e2b484bbe65e4626d78a9d85634 data/create/loot_table/blocks/cut_limestone_brick_slab.json +03d1fd9ba225a7260b6de76ae50c3d4a73c642f9 data/create/loot_table/blocks/cut_limestone_brick_stairs.json +fd866d0a8897ecc2311908d752bf6f51dfd0a27a data/create/loot_table/blocks/cut_limestone_brick_wall.json +32007a91d7519859d5e624843ef36c2c60c2ffc1 data/create/loot_table/blocks/cut_limestone_slab.json +0e31a92e7618aab80b81fdc3ecd771ed32901256 data/create/loot_table/blocks/cut_limestone_stairs.json +aa107fd61d179d01adc383e3a674687fed65c68c data/create/loot_table/blocks/cut_limestone_wall.json +aa28230df460788050de44e55d7e966f8aea5530 data/create/loot_table/blocks/cut_ochrum.json +8f82a8d0b234460127eec2a739e60104ff2d43a8 data/create/loot_table/blocks/cut_ochrum_bricks.json +43da78262bed74a9f9321fcfde31b63090a5e7ae data/create/loot_table/blocks/cut_ochrum_brick_slab.json +1d9749040382939895e55ef14d030191a95ea9b8 data/create/loot_table/blocks/cut_ochrum_brick_stairs.json +64fc604a6198ca4d0f92cd4a5fb7d932181c3e92 data/create/loot_table/blocks/cut_ochrum_brick_wall.json +b918f76a5dcb236bb1625b91c68486455538e445 data/create/loot_table/blocks/cut_ochrum_slab.json +84623a227401b9b3fcac14ccbb140b9777171e3d data/create/loot_table/blocks/cut_ochrum_stairs.json +20794b712f8cbf7d864cf03cfe7976f2b90beb39 data/create/loot_table/blocks/cut_ochrum_wall.json +597cf93f339e0ec6fdd1ba57b46e377df33ddac3 data/create/loot_table/blocks/cut_scorchia.json +6558df0345ecd444a54e8014ff88a796d480831e data/create/loot_table/blocks/cut_scorchia_bricks.json +ed1bcff10619c47eb40fc77757af472406e2511d data/create/loot_table/blocks/cut_scorchia_brick_slab.json +f45bbebb36734dd0c5f5f3ff3d9e4e603874408f data/create/loot_table/blocks/cut_scorchia_brick_stairs.json +079c33d13743563d69e21c324af59c29db386228 data/create/loot_table/blocks/cut_scorchia_brick_wall.json +1f481226ad0b5db8d64e8fe633b099a0eaf8542f data/create/loot_table/blocks/cut_scorchia_slab.json +be41ee7e43d05945939291a56d1447e190b0ad84 data/create/loot_table/blocks/cut_scorchia_stairs.json +3a83a43955c368e545d8c7ce7747c0adf490484f data/create/loot_table/blocks/cut_scorchia_wall.json +712bb94b06e9b4e02b419666102a417253b83cbf data/create/loot_table/blocks/cut_scoria.json +b0fa29e5a8a23d2d732d21ac3298028017f190c1 data/create/loot_table/blocks/cut_scoria_bricks.json +3370b40bc994d39593e8a496aa0afcbf25b62f7a data/create/loot_table/blocks/cut_scoria_brick_slab.json +a1d0c67d8f664c05dafa4a464d8300ff37d23c34 data/create/loot_table/blocks/cut_scoria_brick_stairs.json +05b11d5ac1303912b2b0744d90abe91303624be1 data/create/loot_table/blocks/cut_scoria_brick_wall.json +5d486c94a066eefe01549930ec742644b041419d data/create/loot_table/blocks/cut_scoria_slab.json +7d49739280db5955b45bb8c5e5a63c685f36fb65 data/create/loot_table/blocks/cut_scoria_stairs.json +4720b74f6935250bf8ed15c97923d5131d2c3f14 data/create/loot_table/blocks/cut_scoria_wall.json +7673a0c0d6e4e2857a2a1ff7908d59163762ac7f data/create/loot_table/blocks/cut_tuff.json +675afbe2caa7f2cc727efe52b7ecf6116f663a2d data/create/loot_table/blocks/cut_tuff_bricks.json +8329f7e105f9154bf0e75d44b0014d574141f3b4 data/create/loot_table/blocks/cut_tuff_brick_slab.json +581d0e4882ed0d56cd761afa77950e3deddc5691 data/create/loot_table/blocks/cut_tuff_brick_stairs.json +03aa0dd80986ca8205fb8ee3a181eef47cc1e9ef data/create/loot_table/blocks/cut_tuff_brick_wall.json +abd878e6c155e88e7f59dc8d48d16e9474715e1d data/create/loot_table/blocks/cut_tuff_slab.json +941dc5f8c8005b36c739d426fc131265415c1514 data/create/loot_table/blocks/cut_tuff_stairs.json +137914f9b30eace78c23685188c3f19f1c9526d8 data/create/loot_table/blocks/cut_tuff_wall.json +76a8074d7ccc38f60b40866eeafc436ce8ed7e03 data/create/loot_table/blocks/cut_veridium.json +ba2b5a04ce69c3f5cfdea71ae9284c4e98e0ab3e data/create/loot_table/blocks/cut_veridium_bricks.json +14cad7db2867b9c4fb35b10d5eee5070b0ce705d data/create/loot_table/blocks/cut_veridium_brick_slab.json +4db65fa11310ce1ae2ab8ad3d8437b5cc018957e data/create/loot_table/blocks/cut_veridium_brick_stairs.json +3bd1aaf6f7146b3488267596355760a7a75bad6d data/create/loot_table/blocks/cut_veridium_brick_wall.json +a020153ba0bbce33ad19a26a7a1706edf0d5dc2b data/create/loot_table/blocks/cut_veridium_slab.json +4865b039dad1b91d2573742881942029ca03a349 data/create/loot_table/blocks/cut_veridium_stairs.json +4df1639a20265ff56ade2cd9773d9da0206ae893 data/create/loot_table/blocks/cut_veridium_wall.json +63534cbd9eb282e337067c17000b2e1bb687e72b data/create/loot_table/blocks/cyan_nixie_tube.json +9609e5553b814ab4ef236433e0985fa05dcd356e data/create/loot_table/blocks/cyan_postbox.json +c85f930de98dab2de51314fb9d5a93c0b37be6e3 data/create/loot_table/blocks/cyan_sail.json +255b635d429518cd829283082af0ad1e64aa9580 data/create/loot_table/blocks/cyan_seat.json +ad7ab22e40ecc44f3ba6fabe66d4770c6aa2bd55 data/create/loot_table/blocks/cyan_table_cloth.json +cbac48746096da81709291bb8f7e288d114dfd9d data/create/loot_table/blocks/cyan_toolbox.json +6161b292f41b99363fe03939860b6531dd684c7a data/create/loot_table/blocks/cyan_valve_handle.json +5ff76a2d6fa6feb9e22aed01f14d20918b197d17 data/create/loot_table/blocks/dark_oak_window.json +19addf294d8f5f3fd33f9f8db100642208ff2438 data/create/loot_table/blocks/dark_oak_window_pane.json +ddc75a1f7c050281b2f3744b34d90c2d9fa2d009 data/create/loot_table/blocks/deepslate_pillar.json +78358aa82020604772a34195e5b60c5d84079831 data/create/loot_table/blocks/deepslate_zinc_ore.json +2fd14fe1cd20726c33c68e313979727fc13fc758 data/create/loot_table/blocks/deployer.json +73abd48343fbd7ff942ecebafaef269fc9c9512d data/create/loot_table/blocks/depot.json +efed6ff22cf922186ee7d4ad76b7e596a74f8d9b data/create/loot_table/blocks/desk_bell.json +db53e215590efa46ddb5f022d845c887571e0020 data/create/loot_table/blocks/diorite_pillar.json +7770201c49c32897f276b92672a161f98fa58643 data/create/loot_table/blocks/display_board.json +0cd115cf9b86054a2823130a421ce1b10319dc0c data/create/loot_table/blocks/display_link.json +afe1e4efec1918a4b49f4e61ea3ab98eb2f65fd6 data/create/loot_table/blocks/dripstone_pillar.json +0436c25571f95d15aa227919052ebb2926c375b8 data/create/loot_table/blocks/elevator_contact.json +e9c26425db323ec38b1b3a5308027f74e5c8ca4c data/create/loot_table/blocks/elevator_pulley.json +3f1c53f6422ed35648bb66ec337329b821917071 data/create/loot_table/blocks/encased_chain_drive.json +9434943c368c87cfa13075386437f210bf586bb5 data/create/loot_table/blocks/encased_fan.json +4fce009b85defec2158839943e796b438907bbd5 data/create/loot_table/blocks/encased_fluid_pipe.json +1ed6e752e1ea9d765643cf35e8227f7133c25168 data/create/loot_table/blocks/experience_block.json +c2738b763ce936f2320726ae9dec367ad69101b2 data/create/loot_table/blocks/exposed_copper_shingles.json +7c3d002b3f64dc6d396e6cd8385eb792f5fa6664 data/create/loot_table/blocks/exposed_copper_shingle_slab.json +b3113bad24e120072af4c2c44da9755d339aa342 data/create/loot_table/blocks/exposed_copper_shingle_stairs.json +a1dc246616579e444ac6cb0572424437f552aaf6 data/create/loot_table/blocks/exposed_copper_tiles.json +83a031de34b9c3b0c00c9fca38354d449d372234 data/create/loot_table/blocks/exposed_copper_tile_slab.json +62f5af10193c779ab6009a06b2d4bc72fd575e92 data/create/loot_table/blocks/exposed_copper_tile_stairs.json +079c3f04c0106c398ec319b0901638cbc67baae7 data/create/loot_table/blocks/factory_gauge.json +f487dbae861fea0140737d13361e0ea76b1dd4b0 data/create/loot_table/blocks/fake_track.json +efe3a526c8b0e3d0eb82bcc902c0f70b49163979 data/create/loot_table/blocks/fluid_pipe.json +c24ce72cf59b3073b147493fd4d7c1eac29efb36 data/create/loot_table/blocks/fluid_tank.json +c57b412b03d41864b9adef0368ed51410eca1076 data/create/loot_table/blocks/fluid_valve.json +2df58c73a5d42c3182c16a5c11f57020f5dfc46b data/create/loot_table/blocks/flywheel.json +9f85739dc44fe2ddb97943911020c90845e7efcb data/create/loot_table/blocks/framed_glass.json +1307f19c572bf87a9edcad726c05b1d9e4a27601 data/create/loot_table/blocks/framed_glass_door.json +e09335a62b1932b026c10e974c2ef0aae1dcd80e data/create/loot_table/blocks/framed_glass_pane.json +4223c22f154ca01122b2969d3468e992b7773799 data/create/loot_table/blocks/framed_glass_trapdoor.json +0113c8e799c84a908672c3ac0d7cc95a9229d341 data/create/loot_table/blocks/gantry_carriage.json +a41a0db3524befb52e2fe5c77a0faef1c9feb0cc data/create/loot_table/blocks/gantry_shaft.json +86930ac7f676933674d5a5fc74842773a9f3db9e data/create/loot_table/blocks/gearbox.json +2102fe658ad8e71e7641f5764bc579286cf29224 data/create/loot_table/blocks/gearshift.json +b6f56e158289be2d0da1b73d37fcdbebf087b9ec data/create/loot_table/blocks/glass_fluid_pipe.json +0dbcec59571d8652b4abfde0e63154b1c5d6a840 data/create/loot_table/blocks/granite_pillar.json +fee0d209001fd0d3faa4cdbb76d3f0f9a5580b66 data/create/loot_table/blocks/gray_nixie_tube.json +41d20b25ac7160283a1585c65731730f4934834f data/create/loot_table/blocks/gray_postbox.json +b2ff2391e9c88a1a38482030b3946569078b009e data/create/loot_table/blocks/gray_sail.json +9afb069f0f47edf4c24fe5f825024917b886419e data/create/loot_table/blocks/gray_seat.json +33f0ae6bed34ef4820087396579b344e82c6715e data/create/loot_table/blocks/gray_table_cloth.json +02c6fde3ae1693d2e6a91183df41f3ead2038803 data/create/loot_table/blocks/gray_toolbox.json +b42412ceb11504f61c4db1ebb2222ed055d148d4 data/create/loot_table/blocks/gray_valve_handle.json +d330e7efb06db9a94ad4c1021617cf7da3a93cc9 data/create/loot_table/blocks/green_nixie_tube.json +987801185d57621cd68e9e30431ad7a454c1a081 data/create/loot_table/blocks/green_postbox.json +6cb4755b088b16bf88d424d31eccaef661e5bb91 data/create/loot_table/blocks/green_sail.json +7ee6d9afba3cb6d56eaa4c9dcf87f49ed35cf488 data/create/loot_table/blocks/green_seat.json +622ef14629a767870b83cba0e41ed07110f4a43c data/create/loot_table/blocks/green_table_cloth.json +cc495d5de77c0417229f91ecd84396e0da01412a data/create/loot_table/blocks/green_toolbox.json +125c574d6983aac712e1a04f03172eb4ee2418eb data/create/loot_table/blocks/green_valve_handle.json +c7778d2064907c085ed4099d990297b0d3e96260 data/create/loot_table/blocks/hand_crank.json +ea09eecd4effa2dbb7dbd49e5f7a5938f3371919 data/create/loot_table/blocks/haunted_bell.json +d6fc4bb76a90f821f3f3bd8f061478016c1e06c0 data/create/loot_table/blocks/horizontal_framed_glass.json +2c743515976b31f7216724c8a6509eec2df6abee data/create/loot_table/blocks/horizontal_framed_glass_pane.json +856cc4b38d1d38b819da6906e235574b4c8c468d data/create/loot_table/blocks/hose_pulley.json +eb80a7e8a47b72289051f244b0093cb2d81da3e4 data/create/loot_table/blocks/industrial_iron_block.json +64d63a724efabc229fec8dc96bb42fbf6d0caf9b data/create/loot_table/blocks/industrial_iron_window.json +2c2267d376d15ead751fcd002aa7ccd7ffe28dc3 data/create/loot_table/blocks/industrial_iron_window_pane.json +86a84e5470639b7afa3bf6c99c147d9f0dc82d96 data/create/loot_table/blocks/item_drain.json +63335632776f121675acca0c59a77b3b089868d1 data/create/loot_table/blocks/item_hatch.json +550dab6e2adb7142d35fbb6911b3446bbb6c99d2 data/create/loot_table/blocks/item_vault.json +9b06489bb27c730c536ed54ac7174b1277e8dc6b data/create/loot_table/blocks/jungle_window.json +e7be0a9433c1b106df06f4199a7b1a2c2126fa5a data/create/loot_table/blocks/jungle_window_pane.json +481bbe27310084ded112948d7c8ea37c9d13adcc data/create/loot_table/blocks/large_bogey.json +d8c7dba76f90ba59993948be014501ffbe6fffe1 data/create/loot_table/blocks/large_cogwheel.json +332007078b564c673dbdcd9401058bc8ddcab329 data/create/loot_table/blocks/large_water_wheel.json +2b3909c0d8f9c72bcce4de56482f90e9951b63a6 data/create/loot_table/blocks/layered_andesite.json +0d03d7c929fec9a7bddb3417cfefd381cdcc5db6 data/create/loot_table/blocks/layered_asurine.json +983766056978a9258f0c81adc2f2ddb27a3c9817 data/create/loot_table/blocks/layered_calcite.json +76afd567de5187388891c5834440257db84f99a9 data/create/loot_table/blocks/layered_crimsite.json +718ca917483f644b99153185756ef31a11f182c6 data/create/loot_table/blocks/layered_deepslate.json +8301e0027dcb884dd89222cd65161842ad8e0f88 data/create/loot_table/blocks/layered_diorite.json +dfdd991a2b0b2f87ea9d155b319a3038fd4a3308 data/create/loot_table/blocks/layered_dripstone.json +5d96f6c47093234ebe472b3484d6e5fe63e3f671 data/create/loot_table/blocks/layered_granite.json +5f311e3c30d0a056a6bb25a45c0fd629531aee4d data/create/loot_table/blocks/layered_limestone.json +6306b1a74021146109604a881f52fdd8ce4398c1 data/create/loot_table/blocks/layered_ochrum.json +f37a97bc9b903bc1216a5b5ec48ea681e7cdda97 data/create/loot_table/blocks/layered_scorchia.json +859bbad9c4afefb9192c75318afb8575e4ac0593 data/create/loot_table/blocks/layered_scoria.json +980fdd3c0d7c2f2d2a1dee2475ac7cc3b49652b2 data/create/loot_table/blocks/layered_tuff.json +b38cfac2fa575d56b07c3840e3cecfab59500b4d data/create/loot_table/blocks/layered_veridium.json +abbb14b74e4b7d24c9dd61445ac09fcc3236c36b data/create/loot_table/blocks/lectern_controller.json +a44f4a60833cced5acc852e1bbca1277493954e0 data/create/loot_table/blocks/light_blue_nixie_tube.json +279ce350433c9df3f14be0b110a86735c974aa5e data/create/loot_table/blocks/light_blue_postbox.json +a59303d931213ee4c74741de9c6cd966c91b27d3 data/create/loot_table/blocks/light_blue_sail.json +0372815e81c14e884d8e618875866da448d782fb data/create/loot_table/blocks/light_blue_seat.json +bf83344e5f6154950c513cedab3f7f0d7c38df70 data/create/loot_table/blocks/light_blue_table_cloth.json +2de9dfb655a378dc6e03c251ca75001f1b334059 data/create/loot_table/blocks/light_blue_toolbox.json +819dad4e89210bec512c0ce56dc2a20027d60fb9 data/create/loot_table/blocks/light_blue_valve_handle.json +2d53c172b5c79d922a76ba92654d965bb12ed884 data/create/loot_table/blocks/light_gray_nixie_tube.json +927e164e2106ce462090a4890335d5519c381528 data/create/loot_table/blocks/light_gray_postbox.json +4e7856b364e11d1e1ee16f8342dcb344911fd80d data/create/loot_table/blocks/light_gray_sail.json +baa1ac76f721889b28a7a80da2182df778914d54 data/create/loot_table/blocks/light_gray_seat.json +499116bfe41a74c593ec880c3dee0beb60d32832 data/create/loot_table/blocks/light_gray_table_cloth.json +c14611f97b36d7c060cfbf7535b531e14505feb4 data/create/loot_table/blocks/light_gray_toolbox.json +e1ec159c65c5069f1f53525d572e18d0bc1d7653 data/create/loot_table/blocks/light_gray_valve_handle.json +9751b05df4a780598c309028a2db5083abb7e4be data/create/loot_table/blocks/limestone.json +c1d76b6284298a90a7a184beece1db3e4961e36c data/create/loot_table/blocks/limestone_pillar.json +3de82c2d477a127727cb2d7cc74d14d7517f9493 data/create/loot_table/blocks/lime_nixie_tube.json +4a2dc04a0a1d6414efc4a6144b15505fd365249b data/create/loot_table/blocks/lime_postbox.json +2cc316b0fef66185b9f2cae3a212553cb0c1a4f4 data/create/loot_table/blocks/lime_sail.json +4f940292f9911f52f6299a282a61235f5964a3e1 data/create/loot_table/blocks/lime_seat.json +017e8360ca5db78e458efa5acacef848d26db409 data/create/loot_table/blocks/lime_table_cloth.json +12e800492806de3b404d9e575c1260772da9960c data/create/loot_table/blocks/lime_toolbox.json +8d36ebc8c21cacf0fcda5c29b06923cf10e66acc data/create/loot_table/blocks/lime_valve_handle.json +328ed8ef43d5e54293e5c285511d41d7e15e8c89 data/create/loot_table/blocks/linear_chassis.json +823d30941dbbf46f87a76698a42962b593c83c97 data/create/loot_table/blocks/lit_blaze_burner.json +a55fd88f21fce0a99542e91fb1334abd2bf8eb33 data/create/loot_table/blocks/magenta_nixie_tube.json +d76ae2de513b46a3be115fd1a6b555c098fe40e3 data/create/loot_table/blocks/magenta_postbox.json +6dd841ae457ebec91a71563629e8ba4978dff57f data/create/loot_table/blocks/magenta_sail.json +dc999b51f950f9f75a312a4c8d25e76c541b0abc data/create/loot_table/blocks/magenta_seat.json +6a9aa12b802721e46dd3aed7457dfb3d36284c5c data/create/loot_table/blocks/magenta_table_cloth.json +e0b8f7dc0dab18deeceb150d72c552555cd93f09 data/create/loot_table/blocks/magenta_toolbox.json +5d2d71e85675210603b804869907dd4fe246816c data/create/loot_table/blocks/magenta_valve_handle.json +cf01716c62bb1974f6dd851aa96f51f909100946 data/create/loot_table/blocks/mangrove_window.json +9b406925da6fd2561f908d98b39a926c5394512d data/create/loot_table/blocks/mangrove_window_pane.json +372758c172e44b2f9bdd20025fd1558c15f8e309 data/create/loot_table/blocks/mechanical_arm.json +f63f4e0b264f5ef207399902c95d0941e054a75b data/create/loot_table/blocks/mechanical_bearing.json +75822232306e0d61a2a31bfba7e91395c9750b1c data/create/loot_table/blocks/mechanical_crafter.json +f5d06fe859b155d4aa7be0e4eca55910c7d52bfd data/create/loot_table/blocks/mechanical_drill.json +848831c3827488a49621122ebf70e4b88fa22b99 data/create/loot_table/blocks/mechanical_harvester.json +81e9c8de83b63aaf5c19c431b3a36168f07f8d8e data/create/loot_table/blocks/mechanical_mixer.json +77fefe2d1bd62056caef84faba8674dc9fd55e87 data/create/loot_table/blocks/mechanical_piston.json +a8999c26d930bbef0be5969afa7c836af3bad263 data/create/loot_table/blocks/mechanical_plough.json +e194b11b6b8037cf02c7653b0363f027a400aa47 data/create/loot_table/blocks/mechanical_press.json +7ce293b2beb98f235f474a083b41ca36f0ce6d17 data/create/loot_table/blocks/mechanical_pump.json +0f7d2e2e589e74bed85d540ce9f923adb84fde16 data/create/loot_table/blocks/mechanical_roller.json +262bb57e4639c237b597ffd4edacf2190953c579 data/create/loot_table/blocks/mechanical_saw.json +ee4ea046d76e05f4a1bc0e46a2322f2f2882fe98 data/create/loot_table/blocks/metal_bracket.json +062507952745a7853139d12d031936513c9375e1 data/create/loot_table/blocks/metal_girder.json +9abaa022059f9aa7f28592da84a2be9bdbe3bb6c data/create/loot_table/blocks/metal_girder_encased_shaft.json +6fb0d66d56ba5dc4cfa4ae7e3a5eee86255f642d data/create/loot_table/blocks/millstone.json +675c94a604109592e74d9700f609e84ae05049ef data/create/loot_table/blocks/minecart_anchor.json +5025d35d80b34d79c602367b1ff3003de0b523e8 data/create/loot_table/blocks/mysterious_cuckoo_clock.json +3c28da47a2a85c1b66cfe9a219bb039a59f8a601 data/create/loot_table/blocks/netherite_backtank.json +d7acec658b809e6335a78568622e9aeb5946dfc1 data/create/loot_table/blocks/nixie_tube.json +156b37945aad4084188152418a1079a79806be23 data/create/loot_table/blocks/nozzle.json +89b5e4253b0444954ae38d1dde963489cd9a2185 data/create/loot_table/blocks/oak_window.json +623e9fcc37df8f8cc2b4a728cc7510362119885b data/create/loot_table/blocks/oak_window_pane.json +d1a9feafca1c0d123d445caa1229129f220a0e88 data/create/loot_table/blocks/ochrum.json +7d24e99a24a94348b68a0e509769c1c10b72947e data/create/loot_table/blocks/ochrum_pillar.json +3dbf76a823a4cfe89729fb5a9105337e0d54ccc9 data/create/loot_table/blocks/orange_postbox.json +e15ae0a260cbb0bf1bd3082897d166de4592c719 data/create/loot_table/blocks/orange_sail.json +a1ce2104127e54790c8135ad21b3503d4f3f4c99 data/create/loot_table/blocks/orange_seat.json +e7b53cf3047635aa04107b04d2dddbc0ea9c9479 data/create/loot_table/blocks/orange_table_cloth.json +a1e51845bbb00452e9bcf5dc15b117c9dfb14f8e data/create/loot_table/blocks/orange_toolbox.json +ec18ec4ddd5ff1017458060ef5ef8d2f0062299c data/create/loot_table/blocks/orange_valve_handle.json +ac284239cc6326b3f470377206843eb3c14db5a8 data/create/loot_table/blocks/ornate_iron_window.json +fac0774577565eecdab7108f7ee90f825627b51e data/create/loot_table/blocks/ornate_iron_window_pane.json +9a71cb85d5473a15f63051f4207fd5ee9a321bed data/create/loot_table/blocks/oxidized_copper_shingles.json +0e6564962d7042f5f12e4a84306717444907f07a data/create/loot_table/blocks/oxidized_copper_shingle_slab.json +07cbe82ff638cfe98a954e816d77cf48a38ce096 data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json +481ba23effe314843ebd5aa17bb7d4b1e074fb65 data/create/loot_table/blocks/oxidized_copper_tiles.json +4a7cf1b5ad6ad9f1bdace925024eeb0d26a964a1 data/create/loot_table/blocks/oxidized_copper_tile_slab.json +4dd85d4aeac1a12c5d9fd90dc1ae29438229b296 data/create/loot_table/blocks/oxidized_copper_tile_stairs.json +44a8188661f11cab0635a23525bddef555de8deb data/create/loot_table/blocks/packager.json +bafe494ea9c4dcef2608a42d83729512cb3f404d data/create/loot_table/blocks/package_frogport.json +86e5b9cb2cb197f916013c88b778506f077023e0 data/create/loot_table/blocks/peculiar_bell.json +f6bcfc3e9958033b146f80d0f832147fc7ce820a data/create/loot_table/blocks/pink_nixie_tube.json +bbeab1015bad66fafcc1008343f1f83e1721917d data/create/loot_table/blocks/pink_postbox.json +5c925b2066fcb08075a4e777179a0b0761a9bf01 data/create/loot_table/blocks/pink_sail.json +9ee15b61b9a7dad76622c3715cf82f58c67b54e9 data/create/loot_table/blocks/pink_seat.json +8af494299dd25ebb5e0b45dc9cc80b9ce5a268eb data/create/loot_table/blocks/pink_table_cloth.json +9ad2bed913628ad8932de36301b7cb327b4720a0 data/create/loot_table/blocks/pink_toolbox.json +8e609b6521a33aa3a191eb1977d97fcd30dc6e1c data/create/loot_table/blocks/pink_valve_handle.json +3dca1f83be2ea101e0a772798db1daaae5ae4a47 data/create/loot_table/blocks/placard.json +070b38bcf38deed03bb2e1688d09265ce561c104 data/create/loot_table/blocks/polished_cut_andesite.json +49fef59f0dc481579080fdbb0a2e0af46785f477 data/create/loot_table/blocks/polished_cut_andesite_slab.json +84b08b30b5fbed2937e15b77a2082731d40b0ffe data/create/loot_table/blocks/polished_cut_andesite_stairs.json +a4c9a23ba038d84ad1a4db7ac2919282abc22b06 data/create/loot_table/blocks/polished_cut_andesite_wall.json +867c3c11a3674caba5bdf430d1ab573988210811 data/create/loot_table/blocks/polished_cut_asurine.json +d0bb90fb8bfb3461d243950fd0655b5ca4467748 data/create/loot_table/blocks/polished_cut_asurine_slab.json +237f5a80b3195a98436fd6367d1d141394e68029 data/create/loot_table/blocks/polished_cut_asurine_stairs.json +e5007dd43fc077336efd975e1c4bda3485c7eb67 data/create/loot_table/blocks/polished_cut_asurine_wall.json +b750fdc0d456ab17de3ce9271dd5668d87cdd861 data/create/loot_table/blocks/polished_cut_calcite.json +ca0b6090f654aa3ff4bd303f388f8b3bad3a5bfa data/create/loot_table/blocks/polished_cut_calcite_slab.json +c9e6f8b874e94a185e7a192a4eafc40be2c4c363 data/create/loot_table/blocks/polished_cut_calcite_stairs.json +9a37399827b2b5cd1f036ccbdcc95debb8d5c5d7 data/create/loot_table/blocks/polished_cut_calcite_wall.json +bb5593e9bdb5933bcb636a4572bcdb5fef683e83 data/create/loot_table/blocks/polished_cut_crimsite.json +6a30c830dbdfd4f57cdfdd0d9ef005cdd70c532d data/create/loot_table/blocks/polished_cut_crimsite_slab.json +95081a2d90810b1b1c4ad8c6d1021554f9289576 data/create/loot_table/blocks/polished_cut_crimsite_stairs.json +b41923e98d5b320003480d9ff3bc159b44fe7d72 data/create/loot_table/blocks/polished_cut_crimsite_wall.json +08a31e3a2c5caed4707adb17c129a810a3592d44 data/create/loot_table/blocks/polished_cut_deepslate.json +4f3145b7d2a59e3b7e3f493d3cd3e274388205e0 data/create/loot_table/blocks/polished_cut_deepslate_slab.json +16541646696fe9b0761e0c72bf545e2bdd1a7408 data/create/loot_table/blocks/polished_cut_deepslate_stairs.json +66be93283058d0f099c4c7c58668b9bf6bc1c365 data/create/loot_table/blocks/polished_cut_deepslate_wall.json +1bdef7b8a31f0cb3d963365983ff4d2a2ea90cdb data/create/loot_table/blocks/polished_cut_diorite.json +2931e2736eeaa7d031d2c1a1b7e8b59bf097b6e3 data/create/loot_table/blocks/polished_cut_diorite_slab.json +d5fcf884d44d51f89e0adf27bfbbf2f5d3c0c49d data/create/loot_table/blocks/polished_cut_diorite_stairs.json +393ed864cac807c4910f4e66e3e48d23f6b0c43c data/create/loot_table/blocks/polished_cut_diorite_wall.json +8411ab1fa92d586bc0d4ec7074614e78802842dc data/create/loot_table/blocks/polished_cut_dripstone.json +6ab1a3bd36d8cd7a8b806cd2d6d24222de28d1e2 data/create/loot_table/blocks/polished_cut_dripstone_slab.json +91a2cb0a1b71e1accb02c5635539d2672f229c20 data/create/loot_table/blocks/polished_cut_dripstone_stairs.json +e1720124afa4da7bee182f373cd5eb3d82e8bd55 data/create/loot_table/blocks/polished_cut_dripstone_wall.json +866c5aa9c6c25e4cc3dc1b6e356559467cbf3d14 data/create/loot_table/blocks/polished_cut_granite.json +c4e8c7e70fe43555e74de026d6bbb0bccafd4507 data/create/loot_table/blocks/polished_cut_granite_slab.json +d913ad26a4bc51aeca2d147b05f23b8a5eb266fa data/create/loot_table/blocks/polished_cut_granite_stairs.json +8f269645902bcaaf7974306c14a25b833e4fac44 data/create/loot_table/blocks/polished_cut_granite_wall.json +dc47ab2f30db4bedab29021900702fa4e038d09e data/create/loot_table/blocks/polished_cut_limestone.json +132b0311180dce2b95420e74d543287b2b05a490 data/create/loot_table/blocks/polished_cut_limestone_slab.json +90c763464c4fb0d0f4182118af2965d072a1a6c9 data/create/loot_table/blocks/polished_cut_limestone_stairs.json +82604bc5f36b55ff320c0057a69bd3c1a48c32e5 data/create/loot_table/blocks/polished_cut_limestone_wall.json +dd67c021194e7dfa0772ac2cd5f7e0e259fbe408 data/create/loot_table/blocks/polished_cut_ochrum.json +d994b763e61ba69f9a0f95c93ef2054c4c9856ae data/create/loot_table/blocks/polished_cut_ochrum_slab.json +32b173718fa1bbd214f433897369c311336e16f1 data/create/loot_table/blocks/polished_cut_ochrum_stairs.json +c79194d6c3008e167e4b78df6e627c208fe791f3 data/create/loot_table/blocks/polished_cut_ochrum_wall.json +9129914fe37ee18562e8358e8573cdbb37fd39bd data/create/loot_table/blocks/polished_cut_scorchia.json +295609a590a9226a73436584cc9ad1f6eff291c9 data/create/loot_table/blocks/polished_cut_scorchia_slab.json +622028f6755db58efe7ef14c451a014f376c60d1 data/create/loot_table/blocks/polished_cut_scorchia_stairs.json +7e67b07dec6cee1b957555a8793f9dabf1a86f5c data/create/loot_table/blocks/polished_cut_scorchia_wall.json +c71d2f2172a5f002be1e64248d8de7f5e8897038 data/create/loot_table/blocks/polished_cut_scoria.json +09b011551babfe3b2c6ed9097162ebd85d048122 data/create/loot_table/blocks/polished_cut_scoria_slab.json +5ca7ae55c25a4d24d717951f04423ec40c74c1d2 data/create/loot_table/blocks/polished_cut_scoria_stairs.json +9a7d51c614abc78bc67888181289c87e40b421ba data/create/loot_table/blocks/polished_cut_scoria_wall.json +70157c406e3bc8b5d8e8754f3d3455b24f2b8773 data/create/loot_table/blocks/polished_cut_tuff.json +8de9bd1489ddda261744ac810b111a8a59b07736 data/create/loot_table/blocks/polished_cut_tuff_slab.json +fa953172c595cbe8d4fe0381c1de16ffb67ab33c data/create/loot_table/blocks/polished_cut_tuff_stairs.json +1ac70a8c498ea080ee0e27cdb8693a7b3d1aac92 data/create/loot_table/blocks/polished_cut_tuff_wall.json +bcc6234cf481a2d683b3c12a39b93589427ddc4f data/create/loot_table/blocks/polished_cut_veridium.json +32e407e0e5056b99bd8f9983d143ccd4194e65bd data/create/loot_table/blocks/polished_cut_veridium_slab.json +20036fbb2002c08166a43ffb0fda4e76b5ae4c4b data/create/loot_table/blocks/polished_cut_veridium_stairs.json +0c0c8067ddc465a16995c6fcecfffcc65e26dc08 data/create/loot_table/blocks/polished_cut_veridium_wall.json +86055a711f3e86d81a67418d08e9076049353a87 data/create/loot_table/blocks/portable_fluid_interface.json +5127e0af3f77dd2373575a1434017de8bb9dd8fd data/create/loot_table/blocks/portable_storage_interface.json +acf9149e2dbc0f18aee68c0d58f7b2a27a25350e data/create/loot_table/blocks/powered_latch.json +827f5a4bc4b81241a427d7c9ace84ad40b275afb data/create/loot_table/blocks/powered_shaft.json +440876a2a1bbd467521e44ac38924761bd3f891c data/create/loot_table/blocks/powered_toggle_latch.json +19088a3f48ffb86c39323b67a4750279b9ba9b62 data/create/loot_table/blocks/pulley_magnet.json +d53e114ba13ed5f06f9f0afc9e6ca43b3c5a0a78 data/create/loot_table/blocks/pulse_extender.json +c3790b35061b11b6bc455656c173305d3413c7a0 data/create/loot_table/blocks/pulse_repeater.json +f22c597b41dc9c9a60c624587535a9144d3a00d2 data/create/loot_table/blocks/pulse_timer.json +4058657bd55b7c165f0b9e8cf4ca895aaf694e8d data/create/loot_table/blocks/purple_nixie_tube.json +d0d07e6300dc5bb9cbb24768c49f485f54c24b69 data/create/loot_table/blocks/purple_postbox.json +765e8754436a65782477b31ffa3996529fdebb25 data/create/loot_table/blocks/purple_sail.json +b4c65a6ff04c135b4a703b4cecfdac73710db6dc data/create/loot_table/blocks/purple_seat.json +7cb35c7bd25a5787015415f39b5875f2a79ed781 data/create/loot_table/blocks/purple_table_cloth.json +1d5ce08ad042b5c2ee789c7fe55685358a99c1aa data/create/loot_table/blocks/purple_toolbox.json +14dcb8c63b330bf68e432d1f2c9e523813e5e08c data/create/loot_table/blocks/purple_valve_handle.json +d23d8a4c527f69c09a4bebaa4b52daff87e801a5 data/create/loot_table/blocks/radial_chassis.json +c0dc3680ca1400b4120a063aa155a41c9081b9a2 data/create/loot_table/blocks/railway_casing.json +55175ee25499398ed688a1d11ae8dea0874e35f8 data/create/loot_table/blocks/raw_zinc_block.json +e224bf07db96b9609a69c8fb329d7ab7d55fa54c data/create/loot_table/blocks/redstone_contact.json +c97b2426351e25f7f11cd21f0c16a4a63c3658ac data/create/loot_table/blocks/redstone_link.json +0836683928a6a02a0054cdac775ef2f4a68f5fa2 data/create/loot_table/blocks/redstone_requester.json +85033c1f405720a4722acd41cbce6b63c21d000a data/create/loot_table/blocks/red_nixie_tube.json +c79135f5fa51cbcc24300520f6fc9e356a137eff data/create/loot_table/blocks/red_postbox.json +ebb39a362c454d239e8af1d0174335701d21aa17 data/create/loot_table/blocks/red_sail.json +8bc40fcc3c97732001e5d2342d5e3d6abd84b2b2 data/create/loot_table/blocks/red_seat.json +86da7b8aabd1c9f2cb8fb8f4c316e25030d1a7e7 data/create/loot_table/blocks/red_table_cloth.json +650c9e958c2639124a0bd0bf19d4a6e60a315afd data/create/loot_table/blocks/red_toolbox.json +9c68b08a147150ca9c0e12e77b624c8257faabc1 data/create/loot_table/blocks/red_valve_handle.json +fcac792ed27824c7f2688f95b2ee8382930fb699 data/create/loot_table/blocks/refined_radiance_casing.json +bf5c38c843c9241c28f140099ab28bcfc1413582 data/create/loot_table/blocks/repackager.json +8cefe74f29f46254d6813ee6f50879660dad31b7 data/create/loot_table/blocks/rope.json +0e2d094bb76fb014b5a2a586be43b8eadfe06c28 data/create/loot_table/blocks/rope_pulley.json +39073d8c5c64b8ae25c468fc36b8893e335361d0 data/create/loot_table/blocks/rose_quartz_block.json +beda33cc7ea219d4d6f67176d9517decd19bf5e5 data/create/loot_table/blocks/rose_quartz_lamp.json +fdf51ed31efe4ce37193418d9b78b40c45d5afff data/create/loot_table/blocks/rose_quartz_tiles.json +7af980d2ca2d050916f2aed782ba83f60cd18300 data/create/loot_table/blocks/rotation_speed_controller.json +21417fd09757317a4871b83d536f41fa3c3fdbd0 data/create/loot_table/blocks/sail_frame.json +3c8ec21972647b210dac2a20ebe4ee2893a7a265 data/create/loot_table/blocks/schematicannon.json +b3343b4b0d6a36e85c6a7117800381200b5a8978 data/create/loot_table/blocks/schematic_table.json +af95971cc3c4a699f93e6042c1d83f3d558d8083 data/create/loot_table/blocks/scorchia.json +94944cffad77dcc5eabc1761f116e133f8c4d31f data/create/loot_table/blocks/scorchia_pillar.json +93372a80b9fde5ea553dbc5b1531cd589f48cc24 data/create/loot_table/blocks/scoria.json +9584b4c30100c2103c9bc07a429406e5d7b57b0e data/create/loot_table/blocks/scoria_pillar.json +ef916ee5d60f8514e453959c6d36774e99b2430a data/create/loot_table/blocks/secondary_linear_chassis.json +d7d4f36cfa85aed53ba44bdb983d63ce0612a3d8 data/create/loot_table/blocks/sequenced_gearshift.json +6fec45aa816a7ff8510d5fbe07ca80c9a8c7c070 data/create/loot_table/blocks/shadow_steel_casing.json +a2de61b26c5ce140921e0319b66090e8e5f06160 data/create/loot_table/blocks/shaft.json +126050029498da5442e708ac05c8ae90e4c9b7e7 data/create/loot_table/blocks/small_andesite_bricks.json +f5aa2d397f07192f3fe6950d8b386d73fadafa7f data/create/loot_table/blocks/small_andesite_brick_slab.json +0ae90df8b428bbee5d1d54773263bd58c4828dc4 data/create/loot_table/blocks/small_andesite_brick_stairs.json +7427cd16d9e44caf5ac83cf4790ea53ebcd68b3a data/create/loot_table/blocks/small_andesite_brick_wall.json +08f93790db81b8fddcd54acd8c32073fb389abac data/create/loot_table/blocks/small_asurine_bricks.json +19b8b43c61c0b2bef3a4258e73bede9f6d9eb746 data/create/loot_table/blocks/small_asurine_brick_slab.json +de8266419d4997bc3b96ba6f130e34d706565a64 data/create/loot_table/blocks/small_asurine_brick_stairs.json +31172da0bd769ffefbbabbf0b8d971c9c7ac4728 data/create/loot_table/blocks/small_asurine_brick_wall.json +308b35c2155827d4db519a8030096069e4322066 data/create/loot_table/blocks/small_bogey.json +acb2efbbd2b053710cdf205653e63292d93b9f2a data/create/loot_table/blocks/small_calcite_bricks.json +9d923ea637bf02bee2fb737fe52175766ae433a3 data/create/loot_table/blocks/small_calcite_brick_slab.json +a8a038c0007cdfad066edac6e7f60bfa900e248e data/create/loot_table/blocks/small_calcite_brick_stairs.json +dab65c84afddb89da19a432f0375627751e5cf9d data/create/loot_table/blocks/small_calcite_brick_wall.json +b7fce32eded0f49ef62a39b598eeaa6bbd179ecc data/create/loot_table/blocks/small_crimsite_bricks.json +b69eb6391ed6d9d87b61efbfae19cbf76945e800 data/create/loot_table/blocks/small_crimsite_brick_slab.json +a3476610349e8871f3a8b6fb094c9992bfd557d8 data/create/loot_table/blocks/small_crimsite_brick_stairs.json +a9fcdd2812f791fe4f23d534f303a4bc79eea95c data/create/loot_table/blocks/small_crimsite_brick_wall.json +ca3884f1816b71fe71612821262a8d8bb9d65501 data/create/loot_table/blocks/small_deepslate_bricks.json +52908521785f5dac4427761fdff8b8d7a46b3c37 data/create/loot_table/blocks/small_deepslate_brick_slab.json +7598727d66149b6a86c0a8dc5305791a2812d3a1 data/create/loot_table/blocks/small_deepslate_brick_stairs.json +5ed3abece213120238aeaf04666338dbeb5f4cb0 data/create/loot_table/blocks/small_deepslate_brick_wall.json +2150af3862f0889b8bd4cb32b219e96042587cb2 data/create/loot_table/blocks/small_diorite_bricks.json +c2d06a74bc5f9c74757974a218d93dad3ca9802f data/create/loot_table/blocks/small_diorite_brick_slab.json +95cf127cd23dd1dcdca0a8e8b86cef9792988bde data/create/loot_table/blocks/small_diorite_brick_stairs.json +c3c06394ee763bd63960714ecee7ffe91c40f552 data/create/loot_table/blocks/small_diorite_brick_wall.json +50e1c273ae00103f156f76024391221e97f93d76 data/create/loot_table/blocks/small_dripstone_bricks.json +6ff0aa2fd8b8a6c444f6aef56b83dd8d6e22673c data/create/loot_table/blocks/small_dripstone_brick_slab.json +8831f5b9c9bc840b534d70d6f75c9a94d2414af9 data/create/loot_table/blocks/small_dripstone_brick_stairs.json +d1ceb37f33321bb74c475301c0d2915438211118 data/create/loot_table/blocks/small_dripstone_brick_wall.json +358758b41624f4666873d5467a354a375443f7a0 data/create/loot_table/blocks/small_granite_bricks.json +a9db100fb4ddd973f3ee3159bf50be496ed2fb62 data/create/loot_table/blocks/small_granite_brick_slab.json +6e022b41a80b3c2695e25b74a3d85b7bf068dcf8 data/create/loot_table/blocks/small_granite_brick_stairs.json +f00cf70dd7854f82fe4d05b9c06056e10c54f5b8 data/create/loot_table/blocks/small_granite_brick_wall.json +1602812f7c6bcfee308fa34a0d6411b7194d1e25 data/create/loot_table/blocks/small_limestone_bricks.json +504cd18bfa5c79186316e07e2db9ccdaa614d6df data/create/loot_table/blocks/small_limestone_brick_slab.json +105c95d6ba28772abe8feab5f2243fd518d38028 data/create/loot_table/blocks/small_limestone_brick_stairs.json +1d65421db5891892f625ba366345b66fb1444377 data/create/loot_table/blocks/small_limestone_brick_wall.json +b40769de709ddaa01ffdb969cb38c658f9880e74 data/create/loot_table/blocks/small_ochrum_bricks.json +6fb226b4ae89fac01a6429621dca973ab61635d7 data/create/loot_table/blocks/small_ochrum_brick_slab.json +ff6a966099177fa6438a7c74724092940eb89f33 data/create/loot_table/blocks/small_ochrum_brick_stairs.json +942bfbb64879c11af4b149f9ea7b48f6689769da data/create/loot_table/blocks/small_ochrum_brick_wall.json +ac7926ad59c29987db200ba9280d23cbd0cc3e31 data/create/loot_table/blocks/small_rose_quartz_tiles.json +04a8c5b1cb51af6605e8d6afb44ea1d6bf3212fa data/create/loot_table/blocks/small_scorchia_bricks.json +260236c556d642385d175f85f9a495e31e0428f1 data/create/loot_table/blocks/small_scorchia_brick_slab.json +544b46ad04ab0301087459f8642b6f1cfc64bc55 data/create/loot_table/blocks/small_scorchia_brick_stairs.json +31a455c77c1d60c1ab9b0979d9dc8efc3037c88e data/create/loot_table/blocks/small_scorchia_brick_wall.json +31b6554dc75ab6d2de04877f9094970a7e671349 data/create/loot_table/blocks/small_scoria_bricks.json +1bdf6203a6c8558ef0ba541ea9696841804a2ecb data/create/loot_table/blocks/small_scoria_brick_slab.json +e52c2d0e009812485c0c0307a87f75a2366129b4 data/create/loot_table/blocks/small_scoria_brick_stairs.json +2ee7139ceed3fcc68b4e1df752df2d79eb25d62a data/create/loot_table/blocks/small_scoria_brick_wall.json +b31781be17d639eebc8276fbd1393afd62f1f4c2 data/create/loot_table/blocks/small_tuff_bricks.json +c58c0844d8f69dfecbc0d31ecbebda06846583c3 data/create/loot_table/blocks/small_tuff_brick_slab.json +a7e2dc0174eddd1c7ddb8cea475b028f0849cefe data/create/loot_table/blocks/small_tuff_brick_stairs.json +5db69246723225c28dc7bc444ca433bd17690087 data/create/loot_table/blocks/small_tuff_brick_wall.json +9f4c04564b3b849f619dea0cf2d9b6eefbfc2d63 data/create/loot_table/blocks/small_veridium_bricks.json +0ef1b31e10d218705defb7f051998090ad921ad5 data/create/loot_table/blocks/small_veridium_brick_slab.json +b50bcf894dddc076c8caa50a6f811bcfed56b729 data/create/loot_table/blocks/small_veridium_brick_stairs.json +ef22c0e0c31acf7826097881cf747cde69d8d673 data/create/loot_table/blocks/small_veridium_brick_wall.json +970da3ee98812d0a23717a9237f777487b31def6 data/create/loot_table/blocks/smart_chute.json +98cdbdefd17fabdc09dab369c829aa68ac2fc4aa data/create/loot_table/blocks/smart_fluid_pipe.json +45356dec39129dae2f1d6b27e27e00f8e1572a60 data/create/loot_table/blocks/speedometer.json +2d6b828b6d87b758c03e2cf1350fa277e910eb97 data/create/loot_table/blocks/spout.json +de827e4968e05c6c81d38116ccec6ecc557ab8ce data/create/loot_table/blocks/spruce_window.json +99dcf12021e9e6fb882869c99c31f396d382c535 data/create/loot_table/blocks/spruce_window_pane.json +3a36509285e27d57964e9703bc8ee2d504a72fbd data/create/loot_table/blocks/steam_engine.json +2795c36d741844e871eaa5afadf90b8d64b8a556 data/create/loot_table/blocks/steam_whistle.json +cc3772ef29e9ac59e10db55f8396c28427a52f33 data/create/loot_table/blocks/steam_whistle_extension.json +2f06517cb2ef786a52b6ad58a624d125561e0f88 data/create/loot_table/blocks/sticker.json +2f86b3f0f6b2bd9f89a5f2fd98414bef9cfa37e5 data/create/loot_table/blocks/sticky_mechanical_piston.json +04c74cebcfd654fd5ba7bc44eeed5b35f8371934 data/create/loot_table/blocks/stockpile_switch.json +11b3575b7dd3f9eca0dbb600a7ba6d140f509e06 data/create/loot_table/blocks/stock_link.json +e4744d52ea345f52c84548e2bfdb868ab37009e6 data/create/loot_table/blocks/stock_ticker.json +8aad40b9e6c0079e8949ce9f64b002eb38548334 data/create/loot_table/blocks/stressometer.json +dc0c1e7b525e9718a5cbf75d378e6f1336e59a14 data/create/loot_table/blocks/tiled_glass.json +e9c232a6c3593cd1963f1235d22689acbefaa25f data/create/loot_table/blocks/tiled_glass_pane.json +70297df7fcdabc056a9ed68823b416c3171f34e9 data/create/loot_table/blocks/track.json +03435e8a8dac7fc1584be387dba920b3136e26d0 data/create/loot_table/blocks/track_observer.json +8c16edfdef8dac6bee2b62575a54750171442267 data/create/loot_table/blocks/track_signal.json +de78c4aedb4e04ef0298230cd3b83b2176102a80 data/create/loot_table/blocks/track_station.json +28bc4183bf36c179afeaa4f8218446fd71ea7898 data/create/loot_table/blocks/train_door.json +c509527041021792597f1dd7224a190e9fa2fe14 data/create/loot_table/blocks/train_trapdoor.json +7838604920d6a74c3ff826cb628bdb78437ca0ab data/create/loot_table/blocks/tuff_pillar.json +cc6d70cf3dd63f5f570c1022aef2bbc3281a8f0d data/create/loot_table/blocks/turntable.json +ac99f48e79cd6f974237cae655d76350ab2fe1a6 data/create/loot_table/blocks/veridium.json +41203c47357ab9a2f5b9438f2372440807ea0379 data/create/loot_table/blocks/veridium_pillar.json +fa0edd34e0a0a717d38e0b20c8fae736b387be5f data/create/loot_table/blocks/vertical_framed_glass.json +d6f93c4fa63d55fea8a60fd140eec299735894ef data/create/loot_table/blocks/vertical_framed_glass_pane.json +8eba3b63b985fa170458abfb4865613de6a3b46d data/create/loot_table/blocks/warped_window.json +691ef0a633365ba4862731143a8701d086115a1d data/create/loot_table/blocks/warped_window_pane.json +b5309ed9fcb53418f0654b65d83dbfbb2f055626 data/create/loot_table/blocks/water_wheel.json +16c898142f2cd604ebc962c2f53e8b91297f50b5 data/create/loot_table/blocks/water_wheel_structure.json +8a2fe0a82be1f73dae8dff457aa6b44519f0698d data/create/loot_table/blocks/waxed_copper_shingles.json +e5817d14c8b7b0064d0300da244943df4750904b data/create/loot_table/blocks/waxed_copper_shingle_slab.json +d4b78d9e7d1666afd5fe1ca50e89ed7c28cf4184 data/create/loot_table/blocks/waxed_copper_shingle_stairs.json +3ee7061c9738415eee3097aa21105878cd725817 data/create/loot_table/blocks/waxed_copper_tiles.json +cdad3cb4a3b40a8031eb2f3501a2c28c14e71ad1 data/create/loot_table/blocks/waxed_copper_tile_slab.json +2e8167afcd15324f6d46db3dcf755576f5d40f1f data/create/loot_table/blocks/waxed_copper_tile_stairs.json +33326b8ed9d1e5841c0704e7f14594294b7bf019 data/create/loot_table/blocks/waxed_exposed_copper_shingles.json +366b6628b0c0c48fafd93ae42a82a74a9edea864 data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json +8c3800da75867faa658cfa7c2765e1808b833c37 data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json +32fd2bc057fc531fde851d436719e824d9a41720 data/create/loot_table/blocks/waxed_exposed_copper_tiles.json +70c34a1c7dea20264e07d2ece67451c05a3e997b data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json +5c46fb8884a013888247861d6973e2128e5fc630 data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json +4263bc6345018ee2412dbbec54bd403f325324e3 data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json +afeee7c7698c12a12f0e2314b5304713e4e877d9 data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json +0e7a5468521e5ec3bac569b898d55f46650baa3a data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json +77b1dd3ca21eda4e4b4f46174250ae5ca7246bc5 data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json +081a660fc532e527741c1e6bbb45cfc6926e3c99 data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json +3dd402580945364e9dac46cfef6dff4c5c1ade01 data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json +cee6a8c07b49c57f5606bd3cd5a4878a5d76a93d data/create/loot_table/blocks/waxed_weathered_copper_shingles.json +2736247732b9951fd3619907765688b35a300ee0 data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json +c9d164c999de372c49fdebf075112f7220b12573 data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json +fd107293a2d0f955766ab25a2f3157c1464c6cb1 data/create/loot_table/blocks/waxed_weathered_copper_tiles.json +04dab1b8e3a3ec0c1912167951d4a5c00c2e900b data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json +143b412775818c43630c56e20f3331b87b9bb046 data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json +78153be20aa4cc1a110c861f0d67ee02dd3e3c60 data/create/loot_table/blocks/weathered_copper_shingles.json +1768352a20b4ae3e8e856bbac96d5e1fd9cc84f2 data/create/loot_table/blocks/weathered_copper_shingle_slab.json +f48be0d00c6e8d8804ad68fcaab3c4aa49538830 data/create/loot_table/blocks/weathered_copper_shingle_stairs.json +c2fcf6997860168748a0c593b3d1a64e5f9b5f5b data/create/loot_table/blocks/weathered_copper_tiles.json +a6623a9d7934f723b412d7324dee7432af8b54c0 data/create/loot_table/blocks/weathered_copper_tile_slab.json +b4df5946a29d998731fa6395f3bc3db26eada3a9 data/create/loot_table/blocks/weathered_copper_tile_stairs.json +c278abbdf0ce704fdb3064b95d3285601b1bd296 data/create/loot_table/blocks/weathered_iron_block.json +1b9edc30805dfe0fb0e8306ae03dfb447118c4a5 data/create/loot_table/blocks/weathered_iron_window.json +ebbbc3fc7fa90f659e730edb05bc13ddd084c44a data/create/loot_table/blocks/weathered_iron_window_pane.json +33bd310c12499394db8ca4d6d2875df4054aa255 data/create/loot_table/blocks/weighted_ejector.json +b261f23cc88f56d994fd05d9e48f8315bf7a18c1 data/create/loot_table/blocks/white_nixie_tube.json +9014c6d28e5639ecd2c4248db616c749c4770640 data/create/loot_table/blocks/white_postbox.json +8c595f994312e6a8e140ba7994533d17c55402e4 data/create/loot_table/blocks/white_sail.json +c3498d87aed9ef8e3ed53380c22f602798d10ee6 data/create/loot_table/blocks/white_seat.json +4f75ac6054dbe5b86e70353215cfb46e476a58c7 data/create/loot_table/blocks/white_table_cloth.json +f8ac1ae0e455d81b8b12d8d3383dd0b31c871c7b data/create/loot_table/blocks/white_toolbox.json +0063ed0cd85d02a4556a51f938d7dbc3629514e0 data/create/loot_table/blocks/white_valve_handle.json +1bf33460c99dac908d15f2d38398722cb0a86e54 data/create/loot_table/blocks/windmill_bearing.json +356caa86ef45715d2fe217684923920d3823960d data/create/loot_table/blocks/wooden_bracket.json +721e71491eaba71c285cd55d0fdade5d3294a3f7 data/create/loot_table/blocks/yellow_nixie_tube.json +52d50c12ca2c5956c8aeca86d5c80eacdd7f0876 data/create/loot_table/blocks/yellow_postbox.json +e47556ce6f118e131a01b0fdff06ba8b8d292891 data/create/loot_table/blocks/yellow_sail.json +297d4f44c9fda974d4e6bd1c6da800b17dd8dba8 data/create/loot_table/blocks/yellow_seat.json +73f5ef51e61ae33f54ff61bfe1598ceb7b490969 data/create/loot_table/blocks/yellow_table_cloth.json +9f5e6d429b99c7feb9a13204468b53c4c2183839 data/create/loot_table/blocks/yellow_toolbox.json +fc7c61eeda0aca51a9be45773bc680f1984c0c68 data/create/loot_table/blocks/yellow_valve_handle.json +e427386250dfd6c59c7b48716f40877d2557401a data/create/loot_table/blocks/zinc_block.json +aaa015ff317afd2ec6c8333ac7a09b3145050fd7 data/create/loot_table/blocks/zinc_ore.json +814de7606e66acd031cc518e909a9dc1099fa644 data/create/recipe/acacia_window.json +5feea5ff24fd50b8d0557b852f6c1a51f9ffaefa data/create/recipe/acacia_window_pane.json +8a4cceb62197339c5c17f84a3c54dfb5fa6b5508 data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json +acda6d29ba0b1ab798c59df07a297c5f0f96dc3d data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json +1b8c3e7675d6c63c9ee73f36f7230704408cc946 data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json +b0d51f337bb195782a2e9d1cd20afff9323d2822 data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json +6a096f6a54225bdc03874adb45d2c78bed5b3bd9 data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json +2a4389e074a2f65be130f00b693a8a071d9a0d4b data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json +eb6871a0544ac33a1af32f532f56cb528d0d3d66 data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json +e658a273425843c6f2be2e1304cfbc8d3fff64d3 data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json +3219a970ea17ce5617f5b0b0ba76a495a382b8ea data/create/recipe/bamboo_window.json +67c9e10e9dea0d3a5be47e8370a138fedc331b01 data/create/recipe/bamboo_window_pane.json +9174292029f62cc74873ed3b8d8d09ab77fd3f64 data/create/recipe/birch_window.json +b7ed709d5de503c6602477166e8f1b15de989ad1 data/create/recipe/birch_window_pane.json +a000006b81779aff105a3a1525d4f2dcbc9ffcb4 data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json +50d3dabd98aa161eba5b012106ec382641db4f20 data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json +ddc9768abb47d0a8bb426e6e44df750c4518d0da data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json +d5585030e5e9e8ea337e34b8b188538a691d3ffa data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json +56562e8b90053377456053ffce2a96cc7ec82197 data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json +d1fc8bd54085249951c13d249a6a5cff7fcc438d data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json +29d1033a4c31121f0753eff5ccaf35b4419dabd7 data/create/recipe/cherry_window.json +654ea00dcfe1b586330ba4e4962217d9348db02b data/create/recipe/cherry_window_pane.json +b6e73963580c8185604bff8d758377b1a741ed5b data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json +b07bf8b3e673cf2ff08b9fc5be009481670d6216 data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json +9d16757e7ff4763d3d05c58a6cc3e95c01eb086f data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json +3f06da14ddb93be5c9315e27bc352035d585edf8 data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json +ce2bda486a6fb3b81f4cd1eabd85a02935614836 data/create/recipe/copper_shingle_slab.json +c9f9f498a411c913ab20d43229013d7f21888b4a data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json +0083aab2e4584894553d68f0dbf13883990c050a data/create/recipe/copper_shingle_stairs.json +9ff4e4ebf165037b6321e9c91a628138f952c874 data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json +5e12186742dcac49b6873e098c712f5ca115cd6f data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json +ff676f4387a108d00717effc3f873a5073069e62 data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json +6099d72fe114c697e1cb21b9b722cca23f98d952 data/create/recipe/copper_tile_slab.json +b98a4540de9d90951a45269b6cf41f8d333cb8d9 data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json +a095e75b3340aeccb487b98a495b091a8596f466 data/create/recipe/copper_tile_stairs.json +9c4abee845743015479699c41f880ddcb7aead28 data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json +af985442b8c95d2ec08e4971569dc050898d7fb1 data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json +304226d3111fc133d2c8467d268a4fa3eecbd4e4 data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json +11365d1bb718b59f3e884b8049aa5c07a81fa507 data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json +e6f489afa25f9ca420b9dbe268decbe3836bbfc1 data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json +f97127eb0ce0037c50aea843345bbcbb5c82d897 data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json +30b5bf43cc807d617005e100c478f5994680dd65 data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json +875e8f187aad4e0ec22497a6e43d3f488bafbf0a data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json +cb7d1f64d004be6aa3b8111fc4bf612fed9a9559 data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json +fdd01313b72e7ba3e8bd432357a85c5d3be5b564 data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json +de994923d1d081036ef9a5d16b0d7c18a7d2d79e data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json +cca35684a82332479be6e14930f7010ebee6b01e data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json +01e3e52247c274105496542680d1f90078eeffd8 data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json +cab2f172221d75eaece781165a20e50b8d26ac90 data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json +dcf0b8fefe7a9fd45fd2bfc022a249e69bead188 data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json +bc39d79170cd123d3d38ee527513173a0a9982e7 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json +667719c2e2999f8f1ac2d31bd92d3f9113b14753 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json +69463641479835168bca6bfdda3037a4c5558c19 data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json +da01a474be2dc6c98bd05ddbf0df5be7b6740aa1 data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json +a9fcd1c99c7272d61a1e5514121cb408a21e8230 data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json +c255ab0ffb038c13107db2ea934bf6e3bbb4da5e data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json +d429384e6507bf3d8712026b2aef1115b3fa593f data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json +99bb0f3be8d476bd51cb36d51ccb789f92799738 data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json +af5ad5546c77b8af77d488796fc3ffec3008347c data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json +38cd5bc04dbc8f477d8b708ad33e0eeeef14faa3 data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json +ce39a4f7f86d722b9875f38c92a2ea77c1ca9868 data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json +6ab2b614db17e90a24cd39e36ea9a4d32715fe06 data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json +6ec5fcc6bd7f4e2347675211241526acb30429a3 data/create/recipe/crafting/kinetics/black_seat.json +1d7462cf7a760413680d72fdd348be4a0099e861 data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json +f48a8780aa5dd2adefe671d18adacdbbe02a8087 data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +544b57868494400f1293d4f03055853253127265 data/create/recipe/crafting/kinetics/blue_seat.json +ebbe093f1195e6cefaef7a606386b7a9f9e2bc99 data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json +270e336a9146c7c57d30c78cb9f40eb218685ad8 data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +c91834a61658b98e91ebdc6d1e38d3935c636b72 data/create/recipe/crafting/kinetics/brown_seat.json +a2067451cd1459d68891a9b02f74282b810c3b9d data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json +3540c8801794003cbebaefa1e35a138020fad5d3 data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +f700a6d3f66cb7891a8da6bf955a737c9af384b0 data/create/recipe/crafting/kinetics/cyan_seat.json +4ad9d11519a572d2a36d89cb482aecd702ccdb97 data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json +25a3d5729e81c1525341ab518e6943fc40eb3522 data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +140fb0cb8eb772b02f4227a52d47894a2bd77a72 data/create/recipe/crafting/kinetics/gray_seat.json +e3e760b0d1d626f22df7bbce19110414c716ac72 data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json +9151535f196ed20233e0d9c6145c73fade82afdc data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +7a68ed04e5264f78013f4bed4d5569f0a1fe12b5 data/create/recipe/crafting/kinetics/green_seat.json +5de8db09be5d8ba400d5bc5f0aedb88b511af644 data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json +e2fcc64ae3910bebea621de4e609074f602be3a0 data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +fe16a75186e4ef2067157919f417e4d1dc90eb8c data/create/recipe/crafting/kinetics/light_blue_seat.json +ca962932412ac932727dba0078897cd18280dc99 data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json +bb9757e5b018cc00f47b9e84fc4e389f11e483ab data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +c19603b03fab4f1f3093b48ca0480e52bc199502 data/create/recipe/crafting/kinetics/light_gray_seat.json +74f36589431afa4afcb759bfedba2a2a11a745e1 data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json +eed3e28dfba2a018b94501eb49cc86eaaa2ff94c data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +4dd5401ef4f05c0ca39bfa1586433cfe6d58a4c1 data/create/recipe/crafting/kinetics/lime_seat.json +aa7bd64aca9d159c6a191f25bb748363bec5ec50 data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json +d1936a7dc420760e54cd132a577ec107a4944ac3 data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +6f872c42bed4e7cf0e5dde6161369f62c9f1135e data/create/recipe/crafting/kinetics/magenta_seat.json +98cf5c947e86da6f492901c3983c8bd3681af408 data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json +057d095449e76816c7792bd67b803f8d87adedab data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +0c4f4a868102334944c62e2270a3e63f6cdebe95 data/create/recipe/crafting/kinetics/orange_seat.json +73595d25b86732b9b3b5daf661fb4c152ba4a5a4 data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json +1c0db6a5910b113d499a8ce572ca523db3c31b9d data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +d087693da268a6dcade81772732bb9eed9ef37f7 data/create/recipe/crafting/kinetics/pink_seat.json +eb3e9a3b91e12b28388d5c829a626464122011b8 data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json +4befba7e8b20c6930d31394c8bb84779c55fd375 data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +6c1e47e8c0f80f64632d5191ddf56e8ad7e1d072 data/create/recipe/crafting/kinetics/purple_seat.json +ccd7092931676f0e08dd20d242d16aa3a8afddf7 data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json +80500d9149ac2f6b6700b59ed4492417294f75c5 data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +cddeae215a3b6729121e10c6d8a520e9844a467c data/create/recipe/crafting/kinetics/red_seat.json +8d7939d1a68b59824a55c6ab153bbb6cb7f0f8f8 data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json +21f8b75caa6054f619e6390675b35ec4e02972df data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +9b1ed70013e9468b7e8d03b21b5b00c21121bdf4 data/create/recipe/crafting/kinetics/white_seat.json +f3adf575c0bdda5f422e1689cc2f14ac7c94be3c data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json +1eb9abd7d713e88c2f85944737f2c63c2bd06b67 data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +6fc8b3d31e727b295ccd341f19212727025bb33e data/create/recipe/crafting/kinetics/yellow_seat.json +f212237939c396577c02cc7ae974b3f625c38942 data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json +126061b81f60642893b6bea076a37f156bbcea46 data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +064a89f1633b23c51a576a26545992a35ec01261 data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json +e4f813cdc1e97984553c05149d77d534d75eaa0c data/create/recipe/crafting/logistics/black_postbox.json +f90ea98d7695e9ee2cc55de4c99f426618149fcd data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json +c192a9383a611d0d9100568a0b84cca05abe4803 data/create/recipe/crafting/logistics/black_table_cloth.json +5174d7703523c88c5843c51bbdc10ecfaf31b152 data/create/recipe/crafting/logistics/black_table_cloth_clear.json +718ee5492380d67a23a8904582ddab25b54bc54c data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json +a4a69edc7fd81026abb02b0fbb9519e90a824edd data/create/recipe/crafting/logistics/blue_postbox.json +c6717c6282c1f055f33b4901360b8803fc99eb41 data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json +028d124c23f8135ab8a6c6cd18cf4a6fa96c60ff data/create/recipe/crafting/logistics/blue_table_cloth.json +cf8e5ab546c0304f001aa8b38082c9b5cde748c5 data/create/recipe/crafting/logistics/blue_table_cloth_clear.json +bccc71cf1839bf8a72d06a033dfed1f57056fd87 data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json +ba6217a1fd12751539a9c2484f65318f79ca284f data/create/recipe/crafting/logistics/brass_table_cloth_clear.json +5722b5de0d3117ac376ee0b92cb4d12131c06a46 data/create/recipe/crafting/logistics/brown_postbox.json +1caa070e0412ec73a28d041998c4d3fc696830f4 data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json +1efefc6c2f6a0b5a362890b8a1833042f5a9cd39 data/create/recipe/crafting/logistics/brown_table_cloth.json +86a5da25b40cd94041bb8a8a6dc4ab6b42bbaec1 data/create/recipe/crafting/logistics/brown_table_cloth_clear.json +8a7f6afd319f3e037ebc0e7404206c2502f67620 data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json +f03eef45288bb20144cd05ad6b521e19ca421454 data/create/recipe/crafting/logistics/copper_table_cloth_clear.json +11b7f776135058d0a7ec7cbd169be5c372f9dc40 data/create/recipe/crafting/logistics/cyan_postbox.json +a781d4b7cf097c27e2ab30a9a3722d213a85661b data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json +78ad491f761d6e559f263b15bdb45f4bd117d60f data/create/recipe/crafting/logistics/cyan_table_cloth.json +bd6441fcbe75b53a4b775c52f7815986b9565589 data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json +66e357d186ff8d82ef62d9b9ac1a167ef69a2950 data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json +d19dc88e36bea32f7ae9f75a1eeef4684e3701f9 data/create/recipe/crafting/logistics/gray_postbox.json +232b63917862eb07e3e64275d39f581e3b0cd4b9 data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json +da35aa45bb250547171de75f62d288aa90c4ea53 data/create/recipe/crafting/logistics/gray_table_cloth.json +f0e87a3b137100f6c3a28abed5a832f581d9ac74 data/create/recipe/crafting/logistics/gray_table_cloth_clear.json +1f10e25b74ef6d3b81ffe6f3f255ec4d135b7e80 data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json +b145579b0e9a7c928dc6a9023a542f0a6038b842 data/create/recipe/crafting/logistics/green_postbox.json +405f0d460be8454e695c3b241d87b7e0ac43ed8c data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json +7f9711003621d4e6ec4f837c937f71537463c37a data/create/recipe/crafting/logistics/green_table_cloth.json +8d42e601047fe87f5bcd22e41b658f2b7d8ab827 data/create/recipe/crafting/logistics/green_table_cloth_clear.json +32fd2b9d6a6a6a16ec51e88c6db5999f1a4d8c72 data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json +f5f0b935329e6c7490907c8cb68f979f157f2d7b data/create/recipe/crafting/logistics/light_blue_postbox.json +d54cab66b17c020b9f6f07b4814330b8ff4654da data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json +f571ef4529b69af67896156e2e5ad310930bc2b5 data/create/recipe/crafting/logistics/light_blue_table_cloth.json +85f4302c2e05b436fd88b1fc9c27eb2b626cc557 data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json +00b16d6a1b7dc3959e0aed20631573c0ab51dc7e data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json +37d647c9381aab2052c297d66a44f43fe3d9a740 data/create/recipe/crafting/logistics/light_gray_postbox.json +bc5d05b893748f34de995bafd0e496f25343ed47 data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json +839626a6570bcbc23816ec4922b2b9dbe338435c data/create/recipe/crafting/logistics/light_gray_table_cloth.json +4b400e0567f46714c73427b9b8d2e1f9384b1256 data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json +94c1ddb4cc96d8b62cfd6cfd13581ad6dab41ca4 data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json +291981c28d2683223de6089db559cf9520116ee2 data/create/recipe/crafting/logistics/lime_postbox.json +5b8df605b53b9548c13af18f32290114948dbae1 data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json +0a3d4452cbff8e76492fd5a730c43c6a25b2ec4c data/create/recipe/crafting/logistics/lime_table_cloth.json +fe19740fcf8f27d6577b78fc30952792b4c842fa data/create/recipe/crafting/logistics/lime_table_cloth_clear.json +2c395daa5d5ded1bf004e9340001e29bdedd5243 data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json +5255dbe0648a681132c259b6a92a771f4a6181a4 data/create/recipe/crafting/logistics/magenta_postbox.json +82180809b8ce10ff05a7d9640ba637d34012c04b data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json +c44a24543f8ffc76e6b1783be2114245b50fcfd1 data/create/recipe/crafting/logistics/magenta_table_cloth.json +ec0382575bb2a8bbd280e2dfb8a4a96c33e54214 data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json +1b4d29442f97b29320f61914b36e7636f23446f1 data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json +1b20ef1d2fedd5219a3430814cdedcdce1caa31b data/create/recipe/crafting/logistics/orange_postbox.json +9adc1909748bfd6bb7f490d8d2cd837522fc7cbd data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json +3d399c4e3b17ada2a9e0325796f2e772c0a8e7db data/create/recipe/crafting/logistics/orange_table_cloth.json +3043559e9c9ca3f298ea75136115637e92ae9237 data/create/recipe/crafting/logistics/orange_table_cloth_clear.json +703352b79139e336a2c5d4ba611a10f7445fa240 data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json +ed8f303e25fa160c6bee8707b87a17adbb9ec764 data/create/recipe/crafting/logistics/pink_postbox.json +fce5dfb7cf7c5bafaecdb2590ed9e327cbb73eda data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json +fe9bb1551572c5db59817f4650301683404e085d data/create/recipe/crafting/logistics/pink_table_cloth.json +0e7fd5549920f6e232a4d56bcf39077d7489e17e data/create/recipe/crafting/logistics/pink_table_cloth_clear.json +3f428bc61a1fbacf693e9d043fac5867019c3752 data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json +a45c8c4e2e64cc4c14ec60c9de70f321c72c2006 data/create/recipe/crafting/logistics/purple_postbox.json +133bd6df30ef4402a3eb681afa0a283f468acf03 data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json +74bccfa94c95b14fba4d130de428e300074c0ef2 data/create/recipe/crafting/logistics/purple_table_cloth.json +89689b0f459eca16950e729589e8da31144e7778 data/create/recipe/crafting/logistics/purple_table_cloth_clear.json +b65f3118a3562727843895acc10b1b8ba93e3f37 data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json +3cabd8b5f117affef67e6eecd313b51483783851 data/create/recipe/crafting/logistics/red_postbox.json +917b021fdcde1a0ccdd020109ea0bc3952ebb4ae data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json +11b7d21966338298bbe9bf8dca4de044f69fbd3c data/create/recipe/crafting/logistics/red_table_cloth.json +3754f042d88c9cb01064f7f97679316dd64780e8 data/create/recipe/crafting/logistics/red_table_cloth_clear.json +34c84f5e7a7ea036e31a1d740cb336a63251852c data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json +37782aae26b249ae6d2612f420f0126fbb4d8c8a data/create/recipe/crafting/logistics/white_postbox.json +7a84a57de41c43cfcd111ada8d045302cd457511 data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json +4040c14b80c687080746509aa4fbafb443ce010b data/create/recipe/crafting/logistics/white_table_cloth.json +b710f2b5dc560ea755409031c701a0884558d711 data/create/recipe/crafting/logistics/white_table_cloth_clear.json +9d25e2445dc8169863c4b86810fa82c1f091ac45 data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json +fc7a9c80c2add68de610354dc2c140bb4aac76d7 data/create/recipe/crafting/logistics/yellow_postbox.json +3161f79eeaa6ce45eb5fc17b59d1a77e2bf3c024 data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json +0075b25c85c2479ebabeb4794d4d7a142403c815 data/create/recipe/crafting/logistics/yellow_table_cloth.json +2d253929d7ec31bfd2d7dc95c1ff9314c33ed90c data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json +7a2aadfa782a84d31f886695aa97f5ded72a4a3f data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json +ec01691d3a68d020d0228a3cc68920911d701be4 data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json +e87f17d838b6a02e95ccca4ae238f48af220b4dc data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json +0c05fab6e277743f6c684909ee94a90ce498cf34 data/create/recipe/crimson_window.json +39e2998afbca516849e8420dd522c045b5089854 data/create/recipe/crimson_window_pane.json +1eb890a6aaea1dfbc3db0fc6b87113bc46477768 data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json +e000e7e54b20494d4a3e9830cb3d16fee2637e57 data/create/recipe/cut_andesite_brick_slab.json +5267723db0189bfc2abc7bfe27e5eb8786b5b59b data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json +ad70285b50539dfa3dc03f82e4e187670f4e2b52 data/create/recipe/cut_andesite_brick_slab_recycling.json +ee2b62944e57e060898b8535cb8586111e52c848 data/create/recipe/cut_andesite_brick_stairs.json +46a64bd45e25eb13fa7e5ac7cc3bdf7f8cd9ea7b data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json +f0cd7f5d8a815eb8198557c131f0edf18e956b7b data/create/recipe/cut_andesite_brick_wall.json +a8bb367b24a9a7862fda5bed82eb35cd8970fb8c data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json +d8a32a5036caacce67273181de218c2c034a4cac data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json +7421b6d74daadfc8e24ee86fa647a67ed81279e1 data/create/recipe/cut_andesite_slab.json +47ac3b20815206902057fec2aad949ab4c8b77ee data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json +638f5832878f05d4bc012953fcb16bf04871d4ca data/create/recipe/cut_andesite_slab_recycling.json +f85e7da545479d6ee84f3ae71117c74667e5171a data/create/recipe/cut_andesite_stairs.json +d869a46951395f09cf939cfc7bcffe4bb1200d6f data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json +2490b166326ac96db8c1c266097b72b2d2dd51be data/create/recipe/cut_andesite_wall.json +e44172cf895bb2f08357dd34b4cd972e2a0f0fe3 data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json +2b58f7726a22bcfb6e9321ed519135a7beeaa37c data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json +30ec0e57e73fef0a2ff5e362f821a1245a6e51ab data/create/recipe/cut_asurine_brick_slab.json +3a29790b3a661266dc3bf802df6c741942f28f05 data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json +cdc1b39ba64272a2584fb6bcdf7c01592ff0bf4c data/create/recipe/cut_asurine_brick_slab_recycling.json +77bc4a87eecf01bd89225028aa39494be52b7e17 data/create/recipe/cut_asurine_brick_stairs.json +d392de5ce520469368f83fa11e49a42c6d175e03 data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json +a4a739065993cc4c48f4d270848477b33f5b1faf data/create/recipe/cut_asurine_brick_wall.json +ec67986fe00d26d37f29eefc18ac0f6762ef3c62 data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json +ffd3598f8d8023a0547d890fe088741fd03eafe9 data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json +a37d0e3b028181495326681b95f9403105ffb6b8 data/create/recipe/cut_asurine_slab.json +46ecaa8f43ab7c0c8929383c411b5671f597cdbd data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json +cadff92331728176541b71c3f5f9d6e736285d51 data/create/recipe/cut_asurine_slab_recycling.json +5dd3670942174c8d0ae3dde427799a57a44c24c5 data/create/recipe/cut_asurine_stairs.json +3383474671183aa84247c72d484bb195dd94464d data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json +a47fb09a0b703436dae6662d114ead8d80d7c344 data/create/recipe/cut_asurine_wall.json +986ed6311b36f1e356e029e6a8037fb9ce3c00d3 data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json +b3cd23faba9d47e49a7a2511b8199f1f2359cc47 data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json +f6456e90baba87a991ebad8473bad7e33b3185f5 data/create/recipe/cut_calcite_brick_slab.json +d84dc62b357ea59ad9c524f49c9bc82f08026a58 data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json +a7c90ca690bd8f987b4325b3c1d6f71669558e6b data/create/recipe/cut_calcite_brick_slab_recycling.json +66b9fae48e1ded9d8b3aa5e482300655277de4ce data/create/recipe/cut_calcite_brick_stairs.json +52b895af76c7aaf88d05eecb2492e0459d9ba5de data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json +2d7c76a748c9775817e7ccdb5e9d49e5d70bfd11 data/create/recipe/cut_calcite_brick_wall.json +2d4c0e75140e68be7b68c53f5d497c01f8c5778a data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json +bf52ef95859c61d49ac3fd5c29ba0fc6efea8df8 data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json +14f1e49face331ca403601ca244e8441d1b13054 data/create/recipe/cut_calcite_slab.json +b972c2ad1e68e5e02d2f68be71ba4dacd5d3fc7e data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json +5f0fdf3b8fe0ac87d62ba818df6cace7e2686dd5 data/create/recipe/cut_calcite_slab_recycling.json +5acc7f09fd11c03b3d8f50f43e6b1c26b4352044 data/create/recipe/cut_calcite_stairs.json +8c1706ef9a29ab0c4025046a47de43ad2accc10a data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json +f5f65e3a0b37feeaa21b8e2bc0fa55771abd6e48 data/create/recipe/cut_calcite_wall.json +623b9fdaf977e993c3b03b74dc46e1dc19e30d2f data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json +cd10c023fa51135ebb017fa973d630ad47866222 data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json +365127322689fa23675681233f6cf298146de59b data/create/recipe/cut_crimsite_brick_slab.json +34207eeba4dfcf59643e69b910a57bfb424ff92a data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json +517eba1173a4502cb1b9bd353b0fb85c055edd89 data/create/recipe/cut_crimsite_brick_slab_recycling.json +ac8c405d83b876d52b58d3dd4aadd87056335247 data/create/recipe/cut_crimsite_brick_stairs.json +0b615255be9197d4abdf283e6aad7405974a6d09 data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json +c1d72dba658d8507335819643b0d350492090e23 data/create/recipe/cut_crimsite_brick_wall.json +27b504bc90f6f839c6c3dca6c3daa5c26499c1f7 data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json +029e485b8bceb8e96bd11a3ab8028b8a783fcc74 data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json +ac4db92772938f04d919ed954b6a86c0f6284ae4 data/create/recipe/cut_crimsite_slab.json +6738800a419a327e926683e9d6f4c4a100564519 data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json +f3c7787cd94bff9c670996c6f87e217dfaa22e84 data/create/recipe/cut_crimsite_slab_recycling.json +18b316262f26f96461449b51db8cbe617c184569 data/create/recipe/cut_crimsite_stairs.json +545232c0ed65f5b094cbbe4ae1e08261a9fd67dd data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json +5d8721b6249c40e6362382eb11c84813d42cf828 data/create/recipe/cut_crimsite_wall.json +9076f6a92b9cc0f80bc9355239cfc4f6c213aca8 data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json +dc679d8c2de09e86fddb523bc557ab59ad88fd44 data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json +92f670290c26ef9cfdd58292e0e2343cce37f655 data/create/recipe/cut_deepslate_brick_slab.json +9ffa47191fb9a188ea61823bf0726cd5c03fb514 data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json +5e7db357a82027b93a35086950afb108b954f119 data/create/recipe/cut_deepslate_brick_slab_recycling.json +9fc17ee2bdd2163722c11e9af070579bfe1c8aa1 data/create/recipe/cut_deepslate_brick_stairs.json +9e244a6afe80d2982baab810b41586603b977cba data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json +f5ee411939cb7098fc5417214352edc589a68c08 data/create/recipe/cut_deepslate_brick_wall.json +17202ac1506e5be07f6b200232e5c93aa79f3245 data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json +1d992fe3e144f32d202f93fc4d27a7ca97978aa9 data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json +1683bd7ba4f72865b0a556487b918c2a5e3cf581 data/create/recipe/cut_deepslate_slab.json +5ee1fe5c56ec70eeed075cc60342b3556322f061 data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json +1de54bd965b9313f07aee22cbb903ec5d7fbb6c2 data/create/recipe/cut_deepslate_slab_recycling.json +6e42b574340d3412e75a353c258312aec3161450 data/create/recipe/cut_deepslate_stairs.json +b17876841fa3db3208ab55021887e5434f5b3f74 data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json +64576c986b91cbb9b570d12428e6b4f814547fdb data/create/recipe/cut_deepslate_wall.json +ed411e34e8cc2c3369e0e4e3fe729f68a7baaf1d data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json +efbf510a3ee2d61d3364ecfc6e351f230048a5af data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json +99e1557f17d1a93edffce3ee9e01151612522921 data/create/recipe/cut_diorite_brick_slab.json +9a5b00ea62cb0ee0b2eafdb78f04a0db5fbb6744 data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json +3a7812e66d662092607bc5ab771faaee4bb7803e data/create/recipe/cut_diorite_brick_slab_recycling.json +f24ebe95bb8be517585efdd1bd40f50df6c6de19 data/create/recipe/cut_diorite_brick_stairs.json +87d83782c39c4774bba279202d55288a2a491906 data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json +678f08d3d17147fd7dd675742cbcabc58f643003 data/create/recipe/cut_diorite_brick_wall.json +8941d3088a6575ab9db10224138f696a26fcf5d3 data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json +b7fc26644f6b933a940b71e094d22f8d2316697e data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json +fd5a37777c72c045d2e713d0be021e425929bd66 data/create/recipe/cut_diorite_slab.json +22433027d5b3a1c520656e41c9a515eedc2a8cf7 data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json +7ba93b56a359b4e41d348128279660c72024d630 data/create/recipe/cut_diorite_slab_recycling.json +864f82e7d3bc8a61d45f1e4a37f81561001cba06 data/create/recipe/cut_diorite_stairs.json +dda4e6dc5fc338bd6391b213259fa4af0a5124a1 data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json +8ce2e061a8d9f23aa44037a498ebe0ab2fc79ec7 data/create/recipe/cut_diorite_wall.json +301c7bd4b757f2c07c900ffa750c763d0030a3ca data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json +d0638d8927ff2bc179e57d2d611476bdc79ecb63 data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json +da09f8937b834dd4686c92c847a25605d41f5881 data/create/recipe/cut_dripstone_brick_slab.json +70a1b64dc1cbce0e44d0914cb88c580870b3bfad data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json +05500ddd8847eb5c584a4d2d567b3c91908a7c60 data/create/recipe/cut_dripstone_brick_slab_recycling.json +1ab9fd01d70c13088e5ab6dc957d80f93088d06c data/create/recipe/cut_dripstone_brick_stairs.json +76a5fbf5a9063d861bab5ce9ed99e89e21427c93 data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json +0b303093f15f42dcc582a13719084a35ee271f32 data/create/recipe/cut_dripstone_brick_wall.json +fcbcb19361e4cbf7ef5a9797d4753ce592ffbdc7 data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json +de5124317ea9b8d6859f246100d630c457947033 data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json +30243e0fc70518737192947883c6a875ac75e4bc data/create/recipe/cut_dripstone_slab.json +83ffa4d21089f4d61b30208724371c7bc44796bd data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json +557da40b4ead5dde1addfd16c04515114f048105 data/create/recipe/cut_dripstone_slab_recycling.json +4ba0e16c5750078160ce5b9b781134900ace8526 data/create/recipe/cut_dripstone_stairs.json +90125a9335290eed74cc7fc8ff85c095a4ae7df3 data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json +73dc3a1c7897d462921ee79f71f89dc46b6f2f70 data/create/recipe/cut_dripstone_wall.json +fc7d94b53ad652af816f50fbcbdc1127d9c045bb data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json +dfc64473a38b6bfb65ec451969c40ba3c69dccc0 data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json +16c5bb2a7af26f34cc48f37aed7dd360d955a9e6 data/create/recipe/cut_granite_brick_slab.json +dafc7634c91f5cbde4bb15c71db7869288daa6d1 data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json +3fef9a9616bf2a7f6215cee1701398c77d0c7405 data/create/recipe/cut_granite_brick_slab_recycling.json +90034c527264710f38e29e630796296c1b4f65e3 data/create/recipe/cut_granite_brick_stairs.json +7355449d19ca132eeedb1406be9641f71e5d969a data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json +291b8474d557b42166d559686ea40dd9ae654a93 data/create/recipe/cut_granite_brick_wall.json +7270d45262d9a52e121dee703485d8ac8bb906bc data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json +bc70bd0eabadc3edcf61814c6ba8ef66d6128b3e data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json +2d3b49af882ba1d1428d358c14ac6b4b210a1008 data/create/recipe/cut_granite_slab.json +60fc49e0031616439372ed05c6cebd1b26435035 data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json +b89b3ac68652bbed5d978ad96cadff6ed1fe1af4 data/create/recipe/cut_granite_slab_recycling.json +f5f04c5255d98f4aa6faa2a12c9d2869f760bcb6 data/create/recipe/cut_granite_stairs.json +5e8334020bac98a5eec0e0aac828fe0c2d9fc307 data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json +7fd86eb0daad7c13cd3804e39e4c485f131cfae7 data/create/recipe/cut_granite_wall.json +e18f8c916d651af5503793f049adcf52ffbab226 data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json +d1374fad8f4809dd1d806f96cbe47baf50592401 data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json +ee5ce856d133652effeb4679302a70a2c25a004c data/create/recipe/cut_limestone_brick_slab.json +ec98c5573cd9c35f72789fbd803a5f9e84e4a769 data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json +b30b8400628b4bff6b1b2085593c4a0da0e84fff data/create/recipe/cut_limestone_brick_slab_recycling.json +74be8db33cdd728e6cafda13cace2503b9cc8244 data/create/recipe/cut_limestone_brick_stairs.json +5744473373e0099ce414873342c5247afff138ae data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json +6366b8929b259ffaba36053fa5c133f13b40bc04 data/create/recipe/cut_limestone_brick_wall.json +2b634b41cad2820f1b843a0fa3276745fca1e40b data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json +1fa64e0601c0dd42041303505c86cd2924f004a2 data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json +773bf2f0b64ce78b87bce7bb3f50bd2ef88c1f23 data/create/recipe/cut_limestone_slab.json +bcc9391ef8fcb1e86efdde5175074a473d6b65b8 data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json +5344ebe92cc892e1f23a4abdd3747f34fc493b33 data/create/recipe/cut_limestone_slab_recycling.json +d878965cc012d986c8618184118bab5e10e37703 data/create/recipe/cut_limestone_stairs.json +c699e90bbd9ede93b6de2e3f5ed8018445d5d87c data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json +fb2603ed7e6c49caa3f73128551baf74100437c4 data/create/recipe/cut_limestone_wall.json +611cda70dcfe927af8ccaf177ba879900a63b741 data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json +31c4d68a38e5a212b5b26bc3a13a201d08f3057b data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json +a9b890754b992e945d50d5eb80ed7aac042ac92d data/create/recipe/cut_ochrum_brick_slab.json +ba1ad3e461814be645ab7317fe3d43be6cf3c23f data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json +10fa38f6d5891e035329c25f750ad95980892f1f data/create/recipe/cut_ochrum_brick_slab_recycling.json +1c3852c249346079c452580f2dfb9aaea3a53a4e data/create/recipe/cut_ochrum_brick_stairs.json +dfdd40a3c29b93b2ad8c7e25f82a5f077a723b13 data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json +21fd08bba0a55ccddfd91547417920beb7084704 data/create/recipe/cut_ochrum_brick_wall.json +077228d80868a19bd3bb559badd3a4b738897dfe data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json +3a148623fbd8867ff7898d3e5b5aef313b640d9c data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json +903e244c894672abc86be45f3898c67e9706138e data/create/recipe/cut_ochrum_slab.json +cd06e5dedcbf07afe6986873bb4c1e889296d0a4 data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json +c3fb0c609c14a129b4b8d020f8de13eff75746b2 data/create/recipe/cut_ochrum_slab_recycling.json +bca8bb84c08f1e4fda1cc7db9cd46bdb725b62df data/create/recipe/cut_ochrum_stairs.json +7b24003741773a9a15788b64f5aea4ba10fcee84 data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json +3554380a468622619ed3929c4f5d9e9f97adce9f data/create/recipe/cut_ochrum_wall.json +769de31e70ab213406ac04edc26ee2fca36b10d6 data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json +07388be1ed7a463996b5d3a82bbf99c7e3f4b098 data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json +725a2a8a8013114f44fd0d3d97f532d10ce18ef8 data/create/recipe/cut_scorchia_brick_slab.json +9d20120c44ecfe6733b899a557c69510e8077286 data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json +fd4d2e4a595d461400ef779a3dd71f6eafa4385c data/create/recipe/cut_scorchia_brick_slab_recycling.json +9c186895709aa0a608947f4c94dc76f637f7670d data/create/recipe/cut_scorchia_brick_stairs.json +be1ee5bf993c7c8899c9e54ae02b2dd81aed214e data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json +6fd68f292a265a9559a63a10e6f4cca488f61488 data/create/recipe/cut_scorchia_brick_wall.json +2b83011fa0fe4e3c16224e071d39df887ca52526 data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json +d0d499a8c4880c9890976f92450251ed40579423 data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json +7e72885f717a7e133b1e7a308933e3de77d02aab data/create/recipe/cut_scorchia_slab.json +51b1b16fdf806044257b6c59307c458c4b6c5317 data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json +85f8833979b2e1d1461586b571b68307f25abaff data/create/recipe/cut_scorchia_slab_recycling.json +c05dec1c6c02168484fd8ac1e56aad0c97899ec5 data/create/recipe/cut_scorchia_stairs.json +2debdf41e976b0ec493f042d41809475e0c041ed data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json +99ae10ce63b24a8b9b0759780fe7e73969608bb8 data/create/recipe/cut_scorchia_wall.json +0233f1eb75617142119dcb9be2c14a374933fc28 data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json +62cd06ce20c62303dde7e004229dc499fa50c38e data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json +2fc05a6ca3827f0c6805509f3009ba9b34bf9215 data/create/recipe/cut_scoria_brick_slab.json +2d3641adf757078338cec8377663aafc222c91e2 data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json +6c0ad21e87c528723f1f348a0694bc8a56c894ca data/create/recipe/cut_scoria_brick_slab_recycling.json +5586181c158b8cf4b26485dd8eacac13903de04b data/create/recipe/cut_scoria_brick_stairs.json +1f43f57ff9904cfb68e3d732eefba3a15a778646 data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json +24df79e5440e26f3a53c7d60eaa540f8d0f0f87d data/create/recipe/cut_scoria_brick_wall.json +ba0400b5b31ff59b0f657dfad3965cd0a6f33903 data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json +81679c17fb58821541846ae239823c2d13e83d55 data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json +e3d9303b2784b02497826c6bc8582820e5b7c772 data/create/recipe/cut_scoria_slab.json +250d361903e27ac61a176b4ef9a376aac2394071 data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json +dc581d45706a44ca5e337e81315af9e2f47ced0b data/create/recipe/cut_scoria_slab_recycling.json +8cecf27ff0dc5e232d837051a4d0e18b3b68c7ab data/create/recipe/cut_scoria_stairs.json +0c80d34051fbb60111929ab45c687d90b95d1109 data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json +de972efabb99b94c9011cdfe70060b6f1ca82073 data/create/recipe/cut_scoria_wall.json +4af778d1e485e0a852439b06af64d157876d83f2 data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json +844064022cc8a4df5c490a9079299d0851a76a57 data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json +ba62c3d402847787125149d93bd14a0e5f8c2ec0 data/create/recipe/cut_tuff_brick_slab.json +c65000d2f46ae0029b6d60103ca1ec0b4382237e data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json +e7d99cd20d9c97c4ffde55d0161c4bac1cc2508f data/create/recipe/cut_tuff_brick_slab_recycling.json +3683078ff286f5dcf5e4b5ca921cdcb34d6a5b5c data/create/recipe/cut_tuff_brick_stairs.json +4ee130f80d2fdb9105b89159f3954cdcd0d40892 data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json +8d4b018e603100db809deae2c20f0d4e1b5b7f20 data/create/recipe/cut_tuff_brick_wall.json +605c28509b2d53e25bc2c86953c58578073fa956 data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json +2e75bd4cd7b930209ea6950269f851e36c4857d7 data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json +2036e3410168d38a625ec16e3a6efbbb642b70a8 data/create/recipe/cut_tuff_slab.json +e6e22b415a11afef90f76e7ee02fbfba89683c6c data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json +dbcfbe22b4c02d5bba3c61fa70bbae1d254f51e7 data/create/recipe/cut_tuff_slab_recycling.json +16839ec70b2db3d865e5834aeb67d5989e4087a8 data/create/recipe/cut_tuff_stairs.json +b65e68d1adad1a83395fbddb0035c2583f941e40 data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json +d41cd2b067d0b2452db1d715ef0985e035bfa729 data/create/recipe/cut_tuff_wall.json +dd0285169e21c196c05c83f58067144f44e1cbcf data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json +2a11672b1f60d3fb52c6f763679a9e7adfa62659 data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json +f4770f86f593d2cc1351611f311e8dd80d7cdcc9 data/create/recipe/cut_veridium_brick_slab.json +032cb50d4c3dea22b409269df9a8f057155f4fc5 data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json +7d7a13e86e29c29de3f1eeae8f92867c0fb4e83f data/create/recipe/cut_veridium_brick_slab_recycling.json +4872b9ca8a52313a61f95d7975f07becd931fecc data/create/recipe/cut_veridium_brick_stairs.json +13f2358d6135e845fc5132208027e07c2f76bd1a data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json +c02de1bbf3ab2005165a13061960e403e26ae445 data/create/recipe/cut_veridium_brick_wall.json +8d60e1721c697bd4fcda7abd7b97f39c19dc6be4 data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json +46368b92362e41a9b5046ce4579e3bf14f186dfe data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json +bb4ae135326b5d071967e86708dcb351040e929a data/create/recipe/cut_veridium_slab.json +5f9faf7d96500583eb16602ecacff2622ae998d6 data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json +0b0f06baffb58d9e7a2e2509fc719bea967472d5 data/create/recipe/cut_veridium_slab_recycling.json +257bd36cc2d9c136552f8f25d8cc95412e312cd6 data/create/recipe/cut_veridium_stairs.json +8c0f1a473b045eda8539263cc268877090063e03 data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json +870342fa5c9f07e04c6842beaba89f438b2f7073 data/create/recipe/cut_veridium_wall.json +dfc0196d883b92fbdd798c5acea445aa27653649 data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json +0a9314990524d26aa8d3d7ffb7abd58bc28d15cf data/create/recipe/dark_oak_window.json +5e90b5f8da298703bff4b68f66e2894d889574d5 data/create/recipe/dark_oak_window_pane.json +3cfb849b0cd35fe0b18e9a213392f7072bdceca3 data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json +6ecb5ab90323a85db09a81d379edd2ec424e96e4 data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json +f13b83651f5acbc15f2db69987fda45725a65656 data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json +c783ca75791be9068b530182d998643ae03a7400 data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json +341427c8fc91aa44c596014919361287dd99ec8a data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json +b56a8286cd3141b4560c9454cfac1032f8bc95c9 data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json +1a420c4b3e3eb29031665f781836b8f71577740f data/create/recipe/exposed_copper_shingle_slab.json +5b5ea91f56bcaa66e3720e30a9ca2608f1aee72c data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json +740dc4e34b1a4be0e67c7fe2d00d93e658e4805d data/create/recipe/exposed_copper_shingle_stairs.json +94dcb80456c5d3763dbad318dcd53836614bfbd1 data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json +0acfc7db6c35cbe9b1bdff1932549df95205678f data/create/recipe/exposed_copper_tile_slab.json +d4ea7bebe8e3efe1f5ffde179ade5cf7867cc607 data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json +2c9d0cdc21978bdce627bdd9658bd01c130eeb35 data/create/recipe/exposed_copper_tile_stairs.json +a801d58846fe4b4d28d6aaeb1a2d0e076a3ac8d1 data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json +8f94a4f299df607277b013cef8adef0fbf2f7615 data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json +fd1896837726732ecc545f5f484a59587e3c9c1d data/create/recipe/framed_glass_pane.json +22dc9736be4c2b30cdfab64a58ce8f52cc6c2c35 data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json +675242f57b053e8118afb52b70385391e86ceca2 data/create/recipe/granite_from_stone_types_granite_stonecutting.json +4fb10607358947acd92851a747c52218cc170665 data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json +26fb275a8f633e4e9b86d21f64790ed39da1e8ea data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json +ebcf1227e4f3d526d7e06d2b342b2109b0adf740 data/create/recipe/horizontal_framed_glass_pane.json +ac252b47ce883e3212a3903a8f5ed20bf11647ed data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json +2c2a0f047f51d6e2f55855feccdd3f43b276a430 data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json +9b55841a98a660f0c0248fb17f6ed4b864ba3b5e data/create/recipe/industrial_iron_window.json +f13cc69fdee05b51993ea30d0d2568f6888ac344 data/create/recipe/industrial_iron_window_pane.json +36ec14fcd1cbddf027d082b82f30bd1f1e677c13 data/create/recipe/jungle_window.json +4ce93877d4aea306939f039c62a50d7281d51c1d data/create/recipe/jungle_window_pane.json +55371f1875e8c836c24151c364e869a22d4f3f77 data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json +ef7d8bc3ad1974434569f70282137850df97bcce data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json +80ed141418d7d4921ea4955a2ae0cb516ccff215 data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json +5e724cf0d0a63f27270f2d1ad56fd6c2ea4f328f data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json +c1f585cef427883ae497e0618fa6c17b3cfa3781 data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json +ff8bec08d84724797f72295427abf53f8c0c05b9 data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json +dd3dfd3d0afbb480257063f95e4f1803abc3ec8b data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json +a300acac1bd1f21a8ef3898875001344ee95d27b data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json +d6ed1121162b936f5d7cddaf94515355f633760c data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json +3a88c8714252ca919e8485e9c5d6fb8d1acc6a43 data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json +b1ee08eb633fb7b8f726b650dd9304be4654f919 data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json +aeb0009a5e244882342f133dc3bfccfbb64e6daa data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json +8d6c439d3d5f8db7a8585a056874e928c268ab27 data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json +c364da435354ef82631de287a630eedf07e63634 data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json +afa04cebc4068e2b976a1cb1a3159e35ea48e88b data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json +db7a8341183d28fdb099a921e3d619ae54c0f7e3 data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json +fde4323dd4295779ab00445b076771423c5cad82 data/create/recipe/mangrove_window.json +e4b7aeec67f5b7a18dd1ed51e2e5af80125ba4fa data/create/recipe/mangrove_window_pane.json +d32597923758e67c454e03a386283fbb07540322 data/create/recipe/oak_window.json +7efd021f42899dbe33989d4ca493f119f6ce4c61 data/create/recipe/oak_window_pane.json +54ec0f7e3f5625c0453286b5d765e82e40e064b9 data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json +8b5a7675affa22caaed150dbd022cdbcc79044cd data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json +662aacedd229a215810bde716974315c01a47f37 data/create/recipe/ornate_iron_window.json +b50f88a6f29f152e693a86ead50818f9e1e7c30b data/create/recipe/ornate_iron_window_pane.json +1b5afbe738acf4fbc8065d11982b04a904454714 data/create/recipe/oxidized_copper_shingle_slab.json +a1e3b1481de6713bc48aa624f2bb868aba4f0d95 data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json +d2ce6c29f117caccdeaade2ee49f03c2838c5114 data/create/recipe/oxidized_copper_shingle_stairs.json +9dbf855c472496d20bb8e4c6c405e068760565a6 data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json +3818e9577ebcaf2e86b1b76fdf661b75914b66cb data/create/recipe/oxidized_copper_tile_slab.json +5f71e16e0112b2a309c4667c002f08456d8cca6f data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json +5955630039a1e9f159d73f1bd555b1be37c41791 data/create/recipe/oxidized_copper_tile_stairs.json +891b6f52bcdc3d6f04878ee575eac61752691832 data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json +ead7952a753b5da5f806e2f65482126c792ea841 data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json +8b4cf6794249d0b7c4367a5a036e3bd38bcddd16 data/create/recipe/polished_cut_andesite_slab.json +bf9a2c750513814aae3df64308caafb78bb7f28b data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json +fdb2b21e9f0bfbc9e42d0d5ffa57a8ccd6363cfe data/create/recipe/polished_cut_andesite_slab_recycling.json +68b9f7fc9a50baca33017a9d4291806d1dc2253c data/create/recipe/polished_cut_andesite_stairs.json +ee9887f5f82b464afa321a903eb0ef18ea7d8dc9 data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json +a21b306be52b95e76a2609837917ac66e57fe048 data/create/recipe/polished_cut_andesite_wall.json +c01108db30dba1bc0027e4eff9f8ccfb1ac1b3f7 data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json +f567965eb1dbf54b9bf153fcfabbe62b54552001 data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json +8a6378f6c766c9a8f2a7bb459837d67c793d45ba data/create/recipe/polished_cut_asurine_slab.json +4bead8f3836e7ecd1a621da2e644b767b809d336 data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json +7dc2a7a6ba76d2e7478f198db8a7ea9c138696e2 data/create/recipe/polished_cut_asurine_slab_recycling.json +50616d3accce2d57393f300bb02048023c3f29aa data/create/recipe/polished_cut_asurine_stairs.json +a2b989038ac2a040982f91e44e14beda3d50fc53 data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json +de48d67ca0242fd3f092f25752bd2c280c9ad2fb data/create/recipe/polished_cut_asurine_wall.json +b63793799ed7713edfa632f3426962138b5247be data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json +618f86fb21c39dc17179dfe08608eb794b1e9a53 data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json +2fcb53388a5cd1803413ff58d3d8519e09e8d24f data/create/recipe/polished_cut_calcite_slab.json +ead997263d2dbd233f7cf6209f1963fd1664985b data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json +937d8182c2101160b0ab2ab15fbdb3aceece7f7a data/create/recipe/polished_cut_calcite_slab_recycling.json +308fbf1846d0bfd9fced4b3dbe082bf04fc6f913 data/create/recipe/polished_cut_calcite_stairs.json +2a50afb03131fbb68a26c0779fc1b9148e008430 data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json +bab5046e5b9cef8b13d77f8dd295290b863c76a9 data/create/recipe/polished_cut_calcite_wall.json +5dafe83759197ac4b997c5f16aa93cc9a174ec73 data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json +e75137a309b438eb8fca609699a91372d808c9a3 data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json +46f682047f07c7b856d2e6fd7aaad95d4792ca76 data/create/recipe/polished_cut_crimsite_slab.json +9b81e56f254a27e512d5011fb6c99a840afa00f6 data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json +f891ea6ddedfd360ec2e2083ffad1414d1135e7f data/create/recipe/polished_cut_crimsite_slab_recycling.json +fcdfdc64a5ba6b5777157ba03cc5e8e4b558b65f data/create/recipe/polished_cut_crimsite_stairs.json +abd3f1b7c2f12d7b1c011af434ba745b607651b5 data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json +391a5c6ca84b0e651357994cbcdfd51221d43789 data/create/recipe/polished_cut_crimsite_wall.json +c805e57c08e4364e713ade534ece24aa4de4a2fc data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json +21ccb3126ade90e7a3b13e421351906f0bd5bea2 data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json +cdc873316483a0fdd27bdf0fc0f97a2b9c10af4c data/create/recipe/polished_cut_deepslate_slab.json +a0776fac4fb7fc16595ee9c197d099a9a6feef65 data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json +9e46a2e88ae07467091c0edbcc38bd988eb30847 data/create/recipe/polished_cut_deepslate_slab_recycling.json +2863724be8b27b12ea1612756f290ee02fb4ac02 data/create/recipe/polished_cut_deepslate_stairs.json +388ec52916cd1d3815bc8361aa21ff847d314e39 data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json +1bec47871e83e96da9cff178284df32c05c2e81a data/create/recipe/polished_cut_deepslate_wall.json +b896cead4016684b48ce3bae839276c229cc0028 data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json +75f77e00318ab9ccf5b63a755a5de47bc371dd9b data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json +c25cf72f82a431a247b606162951f5d889c44a28 data/create/recipe/polished_cut_diorite_slab.json +e19b67caadb306e869e518e6fd442f5bae998f5b data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json +f62f52dc080e889173f3201298eb5785f81fbeb1 data/create/recipe/polished_cut_diorite_slab_recycling.json +671c767c3b73c0fe788954c5a33ed0fa23c5b8f6 data/create/recipe/polished_cut_diorite_stairs.json +81d322917d51fab572a853586ec470601cbd3f36 data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json +fc6b819d6f0537b57a16641c1962f8b0349beb3d data/create/recipe/polished_cut_diorite_wall.json +59b69eb72a0552e87fb05bb01c5ba1ef93ba8c85 data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json +4bd87d5c515c61b6ba9f6a634596e9cb6d6bd243 data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json +626cb4249e7c3ebb8941bcf5e1e4fcf25e807a8b data/create/recipe/polished_cut_dripstone_slab.json +89c626d3732616206b7f8591705b52a92690d26f data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json +0a4acda9571c906fa40db19be2968efee1b6465f data/create/recipe/polished_cut_dripstone_slab_recycling.json +69df2dc1cb2d7194c85c6c5509041e163c5b0faa data/create/recipe/polished_cut_dripstone_stairs.json +fc741debbce0f452bfbb816624da783b993c6688 data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json +e7fe95f488898f5da21e60e5ef29762ee6e80585 data/create/recipe/polished_cut_dripstone_wall.json +1f77ac5e4a3eede56130ef2a8ff0a25d1eacb00e data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json +32bc55382900e0a04399c0c029170df55f2dfe66 data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json +274499cd6767f4259ba3aa2b2104f680e5ddbccf data/create/recipe/polished_cut_granite_slab.json +cd1f23ca69f2dc9f8dfc0c9948579b11434a4504 data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json +0f8afeb9c1f5f9a6105e91182569bdb28e674e47 data/create/recipe/polished_cut_granite_slab_recycling.json +1ef72b1e56fee1508d0626065ee86158192110fb data/create/recipe/polished_cut_granite_stairs.json +ccd29b0384efe715e6e705598478c354948b114e data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json +0829cf5a109760c010a68c6352755812374edace data/create/recipe/polished_cut_granite_wall.json +b2466afe614d7c4d97fb323dc4c4b04d671e935f data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json +499961dec05aa4eb1aac6a89917e353fa5e9b3ae data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json +3ac0c73109f05dbe23398a17caddc74499c79427 data/create/recipe/polished_cut_limestone_slab.json +b647bdbf6195138683e8a78c7822d7d49784afda data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json +c4a2a776cb5227c7801414de875725a74ace4f05 data/create/recipe/polished_cut_limestone_slab_recycling.json +496c7776ac0e362935f9f4a0cdd58d1e6f367028 data/create/recipe/polished_cut_limestone_stairs.json +2a9b085bfdc622d60eff41bc967e31ec5cdc01e1 data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json +cf17aa0ba4929e8220dd3e1284332104be882e44 data/create/recipe/polished_cut_limestone_wall.json +ba31880a79cf3f10478a695921cd34a4f8f1a345 data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json +56418b4ca24841c0d9b803e08befb715cc1763ea data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json +42b82159653ac72d861cff5dc5e5f68910b1f542 data/create/recipe/polished_cut_ochrum_slab.json +09a24af809032e0f703ba2c36f62cf110def158a data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json +b6419a846a4cb203de5f409c3b8ac0a843c48a75 data/create/recipe/polished_cut_ochrum_slab_recycling.json +b3bc6e0e54982a022fe5e3b456ab850ecba069a0 data/create/recipe/polished_cut_ochrum_stairs.json +d85848e11beea2906a139669a35b570a8bdb439a data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json +90e7301e271d7ec76f625dd2453ad4f8d30f08f6 data/create/recipe/polished_cut_ochrum_wall.json +f7b9a2744740f03463fe1c4cb491d0e27a1c91f1 data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json +82470a25ee2b62d617396eb464792609553f5e6d data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json +0ebf5852ea1258d80f05c3d7952ac04b1728c42f data/create/recipe/polished_cut_scorchia_slab.json +1ce7515a1e2223d42a03c6c781c4e01da0855e0b data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json +c1cd3efc9a1b5f9ed9b951180476a263d2b7abb3 data/create/recipe/polished_cut_scorchia_slab_recycling.json +e6e9a5506f36ab10bc84dfdb00c4ba23033eaaa8 data/create/recipe/polished_cut_scorchia_stairs.json +76fc45081e0b35348a483128919dabb60b6a7994 data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json +e37289bbbfb8820abeaa350230c4dde2f0272e5e data/create/recipe/polished_cut_scorchia_wall.json +0b1cc2b04b88c3eb433f17f719c7f614b76aa6ac data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json +502863d846db2602d41a4c6bdcb5b7c8a7491d6e data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json +ef6335bc13ad114dd3ffe5d02e566bec08d6f2b0 data/create/recipe/polished_cut_scoria_slab.json +9a8f1f40645d07aabbef97917f96a6bc158f9765 data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json +b7902aecac9c85aae01c81fab50cbf148d9b1e12 data/create/recipe/polished_cut_scoria_slab_recycling.json +df1df0618a549ef2b0f160983e36ead800ea3af6 data/create/recipe/polished_cut_scoria_stairs.json +d959c7b274d63da8283e8eb633135641a56febc6 data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json +560df4bdb86051d5488676ead42700329fd524e3 data/create/recipe/polished_cut_scoria_wall.json +e5381e9889977b5904002e6dd3a6afb15edd7cdc data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json +fb5221ba543e39ccd4f727da60e6752d8f01207a data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json +efbe0bb9b68ee777770d9ba1e007369e68032d38 data/create/recipe/polished_cut_tuff_slab.json +6e365ee93c6130d1ae7ca64fd213b5cf278d54ae data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json +40381b1b3474727c0fbcf03995ca310fc33ebb11 data/create/recipe/polished_cut_tuff_slab_recycling.json +a2c71cd1b878567d9295825321ffd7c3f9171338 data/create/recipe/polished_cut_tuff_stairs.json +35d2adf400b5e986f0aeb7f2e17db41d0e254e97 data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json +56f70e28e0ae82c993aa4b67f45df5bcffa68610 data/create/recipe/polished_cut_tuff_wall.json +2a472b96e495b05cad3be13557ffb96fc4fffefc data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json +b1c0776067412be518271b859ac42c572e2c5776 data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json +17229915484910d1ec4e4c35061578d5f9c3c04e data/create/recipe/polished_cut_veridium_slab.json +d15e7b120e9d16ea98cb6832e442b0cacbc17d79 data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json +442bb9b65031a646e0978c9a8d97fd31fe9f9e5e data/create/recipe/polished_cut_veridium_slab_recycling.json +57cd1e72d4410b2a464d600a263958e36b8bd8cb data/create/recipe/polished_cut_veridium_stairs.json +36b1c9f254109745cfc3584c4f3a9f7e634e9a7f data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json +5bf7b9678a138e2a2e728e74e1c72264ce648006 data/create/recipe/polished_cut_veridium_wall.json +44944adc269afd5b4c21f7ba1a29eb84d309bb7d data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json +0fcea022c4a540aae1bcc4e870dc5d0640e363f9 data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json +9e6fbd58f290bec68029b921ec0847cde65d944b data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json +682cbaabb5791e2232d4fc5fa8a81af37bf15a91 data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json +f1981bde127a6195fb3b1bb90844d20117b29f7f data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json +98ed4da01d0da2f54be109bf10fca7228a382d6e data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json +4cb3a98fa61763826a8a1bf65dc69fbb454d2f27 data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json +1e07576913b3c1aecc38fe3131062004e01cd7f4 data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json +383a61d32fd3f49316b7dc281a2e60351a895c55 data/create/recipe/small_andesite_brick_slab.json +9a27a4dbfba69815693bf7217a4d8c46c029f196 data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json +d52fecdc08a80fdb9c1f61d2cfed5923defc9206 data/create/recipe/small_andesite_brick_slab_recycling.json +6cd8b556a107dc50debf9940e0929dff4704855e data/create/recipe/small_andesite_brick_stairs.json +0d890b1cd6039c2e122e49b86cbab4e3cd891612 data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json +57f0343236202481856af71231b15ed565c2c133 data/create/recipe/small_andesite_brick_wall.json +8b440e77d2940ae68430dfba36a564f3688e77e8 data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json +c40415cf0949763e8890ede3485314ed1e0ba93c data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json +2f9f2f863050cc76092c65c5e5b4e14de1115aa8 data/create/recipe/small_asurine_brick_slab.json +6d2adb20782c50da070cef6a0b0d2f7eec98e76a data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json +1a8518383f4f04c41e71e4653c959036630cf1da data/create/recipe/small_asurine_brick_slab_recycling.json +13651a37a496f67ac00e95100422d1de0295befb data/create/recipe/small_asurine_brick_stairs.json +c3c7ccca9e578607620b476ee067e3787b0322e3 data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json +c63d1209f836a1d3952c6f0829faad501bc37019 data/create/recipe/small_asurine_brick_wall.json +d03bb207bcc0ddbceb848943901aa89ee596539d data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json +623a6bfcc4261d5b899a83d98e814fcbed8b75c2 data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json +7b3f0d026dd28717a7fa5edc90098c7c7bbabeb1 data/create/recipe/small_calcite_brick_slab.json +a8f55647b61a47fad343459f89084389f69c6f7d data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json +816d81a71d09a1bb61dd897f2bffd6015aa3324b data/create/recipe/small_calcite_brick_slab_recycling.json +9e0d0d61811286318beb6f8d3740f9edc4bfe20c data/create/recipe/small_calcite_brick_stairs.json +6c6b26c5bdc0249725f421be915ab20cba4ff54d data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json +9ba9ae1f60c9acc22f07e9b64f06be32cc07bfa4 data/create/recipe/small_calcite_brick_wall.json +703223fd1cb99e2c79d43969c8cab226f641118f data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json +315066b4f7e1257c8521fe2ead213c0abe32be20 data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json +2629568053387bb499fa89202af26e2747cad8e5 data/create/recipe/small_crimsite_brick_slab.json +4d86b3b42c55687445ee2418aaa814709a4beaba data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json +1f83c04b72276854983285403e305b7a24c00cef data/create/recipe/small_crimsite_brick_slab_recycling.json +efc9fc23fb92f4d1613af3bb4d29b90246dc5bbe data/create/recipe/small_crimsite_brick_stairs.json +b2057fc67b5e0833ce76101203ffc7ebc06080d1 data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json +f31b05339901b36070545339944229d19c668bd0 data/create/recipe/small_crimsite_brick_wall.json +86d58bf1e18b87a5d5eac81855fff3441c190b68 data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json +6abddb24ede75d25bd9afa0fcf76889ccffed7bd data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json +4c9f361ec1cb80bb093c065414da74fdd9b226ee data/create/recipe/small_deepslate_brick_slab.json +5a812cfdf8647f22110bce59482d83d4ef771d93 data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json +e5fc053ce0153fc06ba0c23edbb9cf26d81aa953 data/create/recipe/small_deepslate_brick_slab_recycling.json +974d3af045eeeab4915be8d50f66ec1a9045b009 data/create/recipe/small_deepslate_brick_stairs.json +e281d816363b4466bbe678658389a3c7f02c5039 data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json +dc66fe683f297e5fb591ae739e55768f3e8ee401 data/create/recipe/small_deepslate_brick_wall.json +9cf6dfb45f9588bf48fe9d06429b9e5ae7bfedb1 data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json +875ab3cbd262d2f00135ca73e83ae6676abb98ad data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json +86c974cb32fee4e232b19be5b654f7940250296f data/create/recipe/small_diorite_brick_slab.json +8cedf155c6ae2d596b5677bf388f77f7b132c481 data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json +db4e83ae7dc0cd4b1e6c2bf6a97194a151b108f0 data/create/recipe/small_diorite_brick_slab_recycling.json +f0684c138093e00008c83c8caa1d8009ed60eb22 data/create/recipe/small_diorite_brick_stairs.json +87b5ba338b8d9561ab8eb9c19dfc84f22f032952 data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json +8075fa45c927c31a887d7267eb9c5ec9d37ae8c1 data/create/recipe/small_diorite_brick_wall.json +e6ab846a8405866c354d738e66901d73e05db6ff data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json +d59b2f466a47011323b6ca09f8651ba3299c5758 data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json +fe28c26b79025bb239645add78bdc3586668e43a data/create/recipe/small_dripstone_brick_slab.json +680b2bf0579e3b9f7a65d11743bc9f771f0889b9 data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json +2be280c98feaac58efb2709080b99a5e21c17133 data/create/recipe/small_dripstone_brick_slab_recycling.json +1080c5093bc532bffb99d72847f1445a46ac1258 data/create/recipe/small_dripstone_brick_stairs.json +e40de96247aad24c20909d6fffc96a5339839333 data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json +6e9c56e1e7322a859b57e2eb7077ab614c677a36 data/create/recipe/small_dripstone_brick_wall.json +222a4e94254e79c3102ecd4e2a9fcc76aba6cf6d data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json +66c3b3bb854b6b77fd9c21443426716c93147cf7 data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json +5399007db1612de44a0f90ac9e1f25a62c364187 data/create/recipe/small_granite_brick_slab.json +535647f73873a0a358ec4e4a0a684bc49dfea976 data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json +643fa5c4efd4ae045ab27da11095ded2cfa48230 data/create/recipe/small_granite_brick_slab_recycling.json +59c779b2e9629bd69d21e086bbf36c52eb6dd67f data/create/recipe/small_granite_brick_stairs.json +e99b4d917e5ce7f8cb3dbd48556030521bd68349 data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json +1121e943852ceb7d249eeeea63538553ae7237ad data/create/recipe/small_granite_brick_wall.json +0684ca83ac979361bf7e7434f5bdd43099a9a19a data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json +b05ccc6c1e348ce34493e44f9263ba09ad1a712d data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json +d1e5460f0ba036ffc30da5469e1a5c74232388f1 data/create/recipe/small_limestone_brick_slab.json +194567b556afb571961ae443b9481a47a820d7ce data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json +b9ab59cbe9a6fc37cfc36f72a75af7b78b0d6197 data/create/recipe/small_limestone_brick_slab_recycling.json +d6390b7dc81136a629ad2b39d3f82aa263fdb0d1 data/create/recipe/small_limestone_brick_stairs.json +047cf637e9c99b73246d34f771b04d6a6fd7df08 data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json +b122f77711f27491e8db625d4923b24b6283871e data/create/recipe/small_limestone_brick_wall.json +8bcc8f3d9ebbca55fdf093674d7161461740ceba data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json +63102666bfab1b234c190d7fff2dfc38ec4b7195 data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json +87bd262c04087938c73bec611e1fa521e1431466 data/create/recipe/small_ochrum_brick_slab.json +108a7d6ee12721e35ee90e287c9a6d945e52c0c2 data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json +bb30f1720e0d92bcc26f8c1e74e404b16ebc7fcc data/create/recipe/small_ochrum_brick_slab_recycling.json +fc513086494f685f067cd3a2de67d3b5becf8d10 data/create/recipe/small_ochrum_brick_stairs.json +f5a17a12759d89faa7b222d597a047dafaba9001 data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json +90a98ae6aae6895b16d696355f05f2a6f738f1f5 data/create/recipe/small_ochrum_brick_wall.json +cdd6c88bf9ba91a9248c5c3bcc03c58703ebe5d0 data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json +3566a2af28c357b7cead3ad9ac6a4c37b38b1617 data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json +0e74f785d43b378c570c141071789dc34362d1ec data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json +fc0e491b45b77276f867117788c7775b7a92a936 data/create/recipe/small_scorchia_brick_slab.json +0107cae775cedc7872f82273289e0e5878705dd1 data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json +ca37136f216c820149e8a567d91811cf1a07865e data/create/recipe/small_scorchia_brick_slab_recycling.json +9ade1480c9ee705dee52d17daff6f49831a1afda data/create/recipe/small_scorchia_brick_stairs.json +efc19a9603008704fc7871880d878884a4fee623 data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json +45ac44eba46ce2d96cfa051de61654c4875f2b2e data/create/recipe/small_scorchia_brick_wall.json +059af065df449afb6fcbde2a710946a4a7b0a095 data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json +cd760bf66bd8d2275c76f2c32ecc9ae62ebe9bdb data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json +f9bc7951be1e3fdaa248fe5aefafd8cb29dd2947 data/create/recipe/small_scoria_brick_slab.json +9bcf04f8c76e9c577888b06eea9198f5607416f1 data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json +1ce606f1b3ce336aff96941827b6cb1a49d94a5b data/create/recipe/small_scoria_brick_slab_recycling.json +ad7c132f5dec2b33e330c416b2263ff95e6e53cf data/create/recipe/small_scoria_brick_stairs.json +7950d397335a47f01963e053168c53c08d462090 data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json +5610d61c6af8568fa9b450929c09543add1c8c5c data/create/recipe/small_scoria_brick_wall.json +9a11a4f6f2efb9f8d6d968b49e862072163a5339 data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json +7fd1953625397090c27cadef0d87e4d8c5f665e4 data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json +67fcb0c826388996e24ee37f697b8ff468ca1471 data/create/recipe/small_tuff_brick_slab.json +8cc2486d7b63a451a6e125c846dfb1558c6199c0 data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json +c3b959e99c6e7e3d2f882d779fef6863d1d7fa79 data/create/recipe/small_tuff_brick_slab_recycling.json +ffba2ca34f21f6543b800b1830f6e03217777ae4 data/create/recipe/small_tuff_brick_stairs.json +6db1e674043eeb49f39ccf1388329ae44cc6fb2b data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json +da9cc132fbec58965f14aa75d849d3ccfbd53bad data/create/recipe/small_tuff_brick_wall.json +9ee1195ec7ad017d04f755bb68f4a1eff3bd21f4 data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json +7b984b266856685a815997c3aee4ca91f18bf3b9 data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json +d132e81824696d6b1ef9ad2bfdfc362e202285ea data/create/recipe/small_veridium_brick_slab.json +a6b658653120498482f7161de5629af92035b61b data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json +37875a8d8458d1afe6a4468c0c2a8da559f823ee data/create/recipe/small_veridium_brick_slab_recycling.json +8d28a964e707383aeb4c3f19f4df834c5051bcc3 data/create/recipe/small_veridium_brick_stairs.json +c5f24086f89edc0156d533fd0af24b00d583085d data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json +143bee8339bbea5a40d2927be9a82582f2e10914 data/create/recipe/small_veridium_brick_wall.json +04f546954e2c1fcbe66b91a8555555f64aa8d3ce data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json +69c76c82308b9c850d6e7dbc28d40fb434fdf58a data/create/recipe/spruce_window.json +0d8c48e963a2d4b0af1613e27bb01ae4e505e1b1 data/create/recipe/spruce_window_pane.json +bb0627abb3e0023b23964ce010bd696afff2ea31 data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json +11fd85af37e47894526387da6fc2f4f9f7ca3259 data/create/recipe/tiled_glass_pane.json +ebc5eee8d9249cd6083648c80a81695b9eff1b72 data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json +46279401c21d265821c7be9e36552d5d8fbd239e data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json +4975ccdf9c858da224c5b903953951de71433e90 data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json +b85c02455cb1ef063c55441db8891dd886ad695d data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json +df8a845b025b06fd5e0777dfa9aa543b30e220d7 data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json +bb9d30e604b9fdbdc5733537e440b48dcc357796 data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json +cf0cc31c378fd24f3822b4fe5bb24740bbd28ad2 data/create/recipe/vertical_framed_glass_pane.json +027d5f6b12f428c5aa4fbe7d301dccb8e37cef14 data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json +d16803d75583064086a913153da0a17339e32ae2 data/create/recipe/warped_window.json +0f4db0f359417f84f62ece78ac834921abcd840e data/create/recipe/warped_window_pane.json +f41782e40d3881a4f519623adc996e23052ffbac data/create/recipe/waxed_copper_shingle_slab.json +b551954e91f36f91f693aa365ac3449046abcf8d data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json +95e7adcccb19360143199109203af7f8a85e87f3 data/create/recipe/waxed_copper_shingle_stairs.json +1f8b86ac8e9e6e6f52818c418aadcdc54301beb4 data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json +87f4d79a0198afca681d2e8eca393d005ecd5594 data/create/recipe/waxed_copper_tile_slab.json +a926551e5658b75184ad6dba91829a819566e0b9 data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json +c4c33c63fc8cf9dd0690060017aaac94acfffac3 data/create/recipe/waxed_copper_tile_stairs.json +f3b2c64f954d52c4dca2094fecea7db28b0e9750 data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json +1ca979f0cf0b029af7e0ac1adfd8aff8bb231f5b data/create/recipe/waxed_exposed_copper_shingle_slab.json +1a6e5c3c1f0fc6832e2cf0e63e351e2087780161 data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json +ba97c06521f62863275c25b423cb9bec13bb1728 data/create/recipe/waxed_exposed_copper_shingle_stairs.json +a6464ff951e540d4e39a7117531bc296d3878324 data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json +2003902ce51c35a09959e1622282459ed005cb98 data/create/recipe/waxed_exposed_copper_tile_slab.json +5776fa164883eae22eedf853abcd704710644c41 data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json +7a6e725988e104ca0e8da93aeab9e46f4b435407 data/create/recipe/waxed_exposed_copper_tile_stairs.json +e1fa27e7219fd1b9752339cc5853eb80f38c827c data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json +6f894fcb86b713f2ab2be80b3cc8e1a3a6257ee9 data/create/recipe/waxed_oxidized_copper_shingle_slab.json +c31da617189b423fd5525d2793dcb4017b485e8a data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json +5a639db29f9b0af768d64a7fd9182395aa17e7b1 data/create/recipe/waxed_oxidized_copper_shingle_stairs.json +e282ebbee9a1389181c83a938f369867d2d51eac data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json +9b135585c2066045fc2950f09a1ff43af8372db8 data/create/recipe/waxed_oxidized_copper_tile_slab.json +e650fd965ae9090a0e684cefa896f3adfc043f78 data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json +6cd741d959b4095e1941f24552f92e8e5717a834 data/create/recipe/waxed_oxidized_copper_tile_stairs.json +1298044d9b7f2632ed6742b2feb22b7144089ca7 data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json +d6eae1b57c446380594473ab074b73bc97bff095 data/create/recipe/waxed_weathered_copper_shingle_slab.json +5be34f3215b9937d38e880bb58c3b880ebf08f0e data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json +2381aa2f83610ec4403a3ca46ba99dcc4f719f33 data/create/recipe/waxed_weathered_copper_shingle_stairs.json +9c48637f9b513f25b253af2c8ebe03a9d98dff46 data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json +462650a972166dba4a4377816d9aea3ea3a255d3 data/create/recipe/waxed_weathered_copper_tile_slab.json +b4fac84eec6ca1eb1abc3afb14f64f8f7af8e256 data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json +2d11f9f45ed7ccd7a3adcbdb67b5b71255747568 data/create/recipe/waxed_weathered_copper_tile_stairs.json +31052c886bd20749bcd3ce57b0c7e3ced4e09e9e data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json +e978590c7bc68cb233307fbb6a0c2ddfa3bd4916 data/create/recipe/weathered_copper_shingle_slab.json +90931e5b3d07c36fa5add0049d40987639e189bf data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json +a32c7977085545a1e08a9e129f442a8116d1307c data/create/recipe/weathered_copper_shingle_stairs.json +09eda912e303e7630491f98a510d463608a2bb65 data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json +56656d26d073228769bc31269f2a10e93d1f7f2c data/create/recipe/weathered_copper_tile_slab.json +fd233873152c7b79ddf03c9afc177ec484f046e7 data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json +6755a4ab25b68f769b098da185b2673bc2731c30 data/create/recipe/weathered_copper_tile_stairs.json +835257d430dca83b9bdcea7900fc96442ea223b3 data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json +cffdb8a8f47d645fd7617ae278c4df6c7adfb84d data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json +1a1fdd2d2746d6aeca895164b11f967734ea731f data/create/recipe/weathered_iron_window.json +58c86689b72265b571f83e63dcafb04a4914aef3 data/create/recipe/weathered_iron_window_pane.json f365be4eda73234b73aa49c97b065f1a8baafbf6 data/create/tags/block/brittle.json 8b6c0b444b15f7fb2d55b9cbcb68537c1269f877 data/create/tags/block/casing.json c603fae95069714ac3d256dfa31f8d2639efafa7 data/create/tags/block/chest_mounted_storage.json @@ -4884,6 +5146,69 @@ a5b5711d1798473a9b25db5b7f749570ed0a2769 data/create/tags/item/upgrade_aquatic/c 1f2cee286187b04430a9787500e5cf3d94fbdd2f data/create/tags/item/upright_on_belt.json da739ad2160e7df4e0e5cc89587670ce5e9450c3 data/create/tags/item/valve_handles.json edf7390f09e622193bbc720ec51ba128ea1e96e6 data/curios/tags/item/head.json +10d5f0c1763f80860a39398ecc33dbbe43099471 data/c/tags/block/glass_blocks/colorless.json +220b4c682f6cf536534e7cd6a79a9acc811bacd2 data/c/tags/block/glass_panes.json +a8425bd1e4174a0beb97a3ccc348ae7d1106725f data/c/tags/block/glass_panes/colorless.json +81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/block/ores.json +81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/block/ores/zinc.json +e475ad1c52bffedfc544e5331a87c1f5c45149fd data/c/tags/block/ores_in_ground/deepslate.json +2f6068972e364599b6849dc46fcb0724d4219d53 data/c/tags/block/ores_in_ground/stone.json +2589b135c0e96ad29076569e144528fe32ea5b39 data/c/tags/block/relocation_not_supported.json +807ea01d3b028bd226ed0befc142cbd23647e998 data/c/tags/block/storage_blocks.json +7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/c/tags/block/storage_blocks/andesite_alloy.json +70bba470740dc7a77f51b4cb1747a105b62d4bde data/c/tags/block/storage_blocks/brass.json +18f54179c6f809ff4aee792702fa35d3053e5dc4 data/c/tags/block/storage_blocks/cardboard.json +bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/c/tags/block/storage_blocks/raw_zinc.json +41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/c/tags/block/storage_blocks/zinc.json +986440996701ed47b9f9f8b8ed4ef9d711571fa4 data/c/tags/entity_type/teleporting_not_supported.json +8140415f1c16f09167f41eeee25c09706a944be0 data/c/tags/fluid/chocolate.json +0ccc9ff76001cdd7db1b79c1371f59d3283abe64 data/c/tags/fluid/honey.json +cca816b34ac2e9b7933df680aa9778ff2cfe9605 data/c/tags/fluid/tea.json +a1b994866e427870cb9b9f80cfadc9c8b84ab7ed data/c/tags/item/buckets.json +a070e35ff35f5548a7f6207d70e3c21f1df2053e data/c/tags/item/buckets/chocolate.json +06ebf72e8f6c081862236d4b068b5dfb275a8385 data/c/tags/item/buckets/honey.json +6dfaf55f80083e43c0124a8fe30ab52f4b193547 data/c/tags/item/drinks.json +6dfaf55f80083e43c0124a8fe30ab52f4b193547 data/c/tags/item/drinks/tea.json +5c28c2550ac8f806ae3f2c3ed7cf731036a491d0 data/c/tags/item/dusts/obsidian.json +50a80d3f945909004c6a5dcfeee22a01296d96d5 data/c/tags/item/enchantables.json +745512f10c4ba52f2c224607377e41011fb2ecfe data/c/tags/item/flours.json +745512f10c4ba52f2c224607377e41011fb2ecfe data/c/tags/item/flours/wheat.json +9e7d4a0ab14d66167adb2552fde87cadffae4a1c data/c/tags/item/foods.json +a6d90433b02d062af922fefb363b6e414a2e79ae data/c/tags/item/foods/berry.json +58c10659ecbd88505c43d897be9e867373d4e973 data/c/tags/item/foods/chocolate.json +801d097b0af7153e0c5c72a924d61f8afb4cf264 data/c/tags/item/foods/dough.json +801d097b0af7153e0c5c72a924d61f8afb4cf264 data/c/tags/item/foods/dough/wheat.json +b2780007ba408b98778b41e775c8ad8dfc63e5d2 data/c/tags/item/foods/fruit.json +10d5f0c1763f80860a39398ecc33dbbe43099471 data/c/tags/item/glass_blocks/colorless.json +220b4c682f6cf536534e7cd6a79a9acc811bacd2 data/c/tags/item/glass_panes.json +a8425bd1e4174a0beb97a3ccc348ae7d1106725f data/c/tags/item/glass_panes/colorless.json +01d32d3b7b033aff44c047bf289d696de0b0c715 data/c/tags/item/ingots.json +5a7bffd1d604bc6ea8b35714ef02b95773240f90 data/c/tags/item/ingots/brass.json +ccf5b08295f6362a3f6b3b595f1de1bba4b224ec data/c/tags/item/ingots/zinc.json +64e93741470484e63350bc4be984aee0ef7da6f1 data/c/tags/item/nuggets.json +7b0359cfb65849b6e66668ffe619399117867307 data/c/tags/item/nuggets/brass.json +219b4cef254c20c6ec17d04d7204f5f8e7a45188 data/c/tags/item/nuggets/copper.json +0a43fcf4ab5fc91e0027730780edd6f23af3d69e data/c/tags/item/nuggets/zinc.json +81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/item/ores.json +81b107ada9c6ac5679a21f8c6a006bf230f69c39 data/c/tags/item/ores/zinc.json +e475ad1c52bffedfc544e5331a87c1f5c45149fd data/c/tags/item/ores_in_ground/deepslate.json +2f6068972e364599b6849dc46fcb0724d4219d53 data/c/tags/item/ores_in_ground/stone.json +0b718fa5d4db0c2f2d34db1096f33a88f12f0ede data/c/tags/item/plates.json +23f4874238f7d06e80c699b672d4e9fab6eb464f data/c/tags/item/plates/brass.json +7f3f85d0978bc274e4689fbf41f7b80b023b7a05 data/c/tags/item/plates/cardboard.json +ef5256892a9d4167bf7371c7138a933a107a123a data/c/tags/item/plates/copper.json +3ca40ae504b1f68d6e7279726a2bf411509ce322 data/c/tags/item/plates/gold.json +6f72d5205b399f03e481cee15bd5c085bfe6fe3c data/c/tags/item/plates/iron.json +07a6e69488ff6994a9ef1cca75b6e911bc3e3358 data/c/tags/item/plates/obsidian.json +30496416fffaf4f845052a264023e64e52894ee7 data/c/tags/item/raw_materials.json +30496416fffaf4f845052a264023e64e52894ee7 data/c/tags/item/raw_materials/zinc.json +807ea01d3b028bd226ed0befc142cbd23647e998 data/c/tags/item/storage_blocks.json +7d10cdf9e46a79753d4437c7bb958e3ab8bf0c89 data/c/tags/item/storage_blocks/andesite_alloy.json +70bba470740dc7a77f51b4cb1747a105b62d4bde data/c/tags/item/storage_blocks/brass.json +18f54179c6f809ff4aee792702fa35d3053e5dc4 data/c/tags/item/storage_blocks/cardboard.json +bcd593714f43bc6a0aefbd714c24db3cf9e71250 data/c/tags/item/storage_blocks/raw_zinc.json +41b2a17b5ebcff5623e25dc6232f73cf9aa70387 data/c/tags/item/storage_blocks/zinc.json +c741ba83b562ae3459d7c4f2db69537f549ea411 data/c/tags/item/tools/wrench.json 515a1c773e617dd7e38aa1b893acc7db2dd30e08 data/minecraft/tags/block/azalea_root_replaceable.json 529fa4332dd12a11ebb04e183121a2c63f866761 data/minecraft/tags/block/beacon_base_blocks.json 82274e06b6a9f3bfd83c8b59be38dee4a15b8bf3 data/minecraft/tags/block/climbable.json @@ -4906,7 +5231,6 @@ cd2613a4722ce79366433181095c27463e7c61b8 data/minecraft/tags/block/stairs.json 71aef080a900d9e86818cf579438c3d826d6567e data/minecraft/tags/block/wooden_doors.json 01d32d3b7b033aff44c047bf289d696de0b0c715 data/minecraft/tags/item/beacon_payment_items.json 056046998d063e7405c267f1ec2923260ef8c109 data/minecraft/tags/item/chest_armor.json -71aef080a900d9e86818cf579438c3d826d6567e data/minecraft/tags/item/doors.json 1b1f3841906d294c4737d5ceaffd8852d950debf data/minecraft/tags/item/enchantable/bow.json 8af94e2d73f4897c2bb2eeab107b066a476e2506 data/minecraft/tags/item/enchantable/durability.json 1a9ce7d5f5fe92d3b73e269cd5dbf5cd1f1fe5b8 data/minecraft/tags/item/foot_armor.json @@ -4915,8 +5239,9 @@ afdac448376ff5624f49cbf31feedf691ecbc4c5 data/minecraft/tags/item/leg_armor.json 0fd9f0786777d613ba7186ec00f9f972d0317c3f data/minecraft/tags/item/piglin_loved.json 1ac7c46815461cbec0d4d97f25c085fdc8375dab data/minecraft/tags/item/slabs.json dafa3bdb72fef5e6c0201c05846db3f2b214e587 data/minecraft/tags/item/stairs.json -11427a72e181857e22ec37a22462bc652e127cc5 data/minecraft/tags/item/trapdoors.json 4d07dc9a0f77c799b54a0a36e48b8d1e93cd518a data/minecraft/tags/item/trimmable_armor.json 2bcba05954ff7bc4cf9cc520478083da9973ec76 data/minecraft/tags/item/walls.json +71aef080a900d9e86818cf579438c3d826d6567e data/minecraft/tags/item/wooden_doors.json +11427a72e181857e22ec37a22462bc652e127cc5 data/minecraft/tags/item/wooden_trapdoors.json 3ef6bb2f46919301d1d679a81a1fb60974cf6068 data/neoforge/data_maps/item/furnace_fuels.json 71aef080a900d9e86818cf579438c3d826d6567e data/quark/tags/block/non_double_door.json diff --git a/src/generated/resources/.cache/c24b4d2b8d15abff51c78bd94f4403d9eae6c139 b/src/generated/resources/.cache/c24b4d2b8d15abff51c78bd94f4403d9eae6c139 index 7b80501638..12ccad8b55 100644 --- a/src/generated/resources/.cache/c24b4d2b8d15abff51c78bd94f4403d9eae6c139 +++ b/src/generated/resources/.cache/c24b4d2b8d15abff51c78bd94f4403d9eae6c139 @@ -1,2 +1,2 @@ -// 1.21.1 2025-11-02T10:48:42.61223377 Create's Custom Sounds +// 26.2 2026-07-08T18:29:28.9148316 Create's Custom Sounds 0bca17432111ff732e5188cd3098201330e386bc assets/create/sounds.json diff --git a/src/generated/resources/.cache/e0a39a97205b7149114f15de91b614248d05fd95 b/src/generated/resources/.cache/e0a39a97205b7149114f15de91b614248d05fd95 index a2623108ca..c7f98928d9 100644 --- a/src/generated/resources/.cache/e0a39a97205b7149114f15de91b614248d05fd95 +++ b/src/generated/resources/.cache/e0a39a97205b7149114f15de91b614248d05fd95 @@ -1,2 +1,2 @@ -// 1.21.1 2025-11-02T10:48:42.61095814 Create's Recipe Serializer Tags +// 26.2 2026-07-08T18:29:28.9108298 Create's Recipe Serializer Tags 0d8718f7383761bc5d7bc45306ed266ebf25dc1d data/create/tags/recipe_serializer/automation_ignore.json diff --git a/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f b/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f index e4a16f8f44..49d177cfb8 100644 --- a/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f +++ b/src/generated/resources/.cache/e0d3d0b8d9c807675613821fa865a35f707cd83f @@ -1,3 +1,3 @@ -// 1.21.1 2025-11-02T10:48:42.612135506 Data Maps +// 26.2 2026-07-08T18:29:28.9148316 Data Maps 037a93758a98377e8b7bb36cc140d4ab3842b181 data/neoforge/data_maps/block/oxidizables.json 3e7e7659355104c0bafb76c3e7617eecc42d8ff4 data/neoforge/data_maps/block/waxables.json diff --git a/src/generated/resources/.cache/eaed56ca9d9781c7626be345dd9f2c9a1fad638e b/src/generated/resources/.cache/eaed56ca9d9781c7626be345dd9f2c9a1fad638e index bb4d50ce85..97e1e4ef3c 100644 --- a/src/generated/resources/.cache/eaed56ca9d9781c7626be345dd9f2c9a1fad638e +++ b/src/generated/resources/.cache/eaed56ca9d9781c7626be345dd9f2c9a1fad638e @@ -1,4 +1,4 @@ -// 1.21.1 2026-03-06T13:40:00.199931125 Create's Generated Registry Entries +// 26.2 2026-07-08T19:20:33.6780364 Create's Generated Registry Entries abb9dd2c98388abb430343d4ac02d460e5edc086 data/create/create/potato_projectile/type/apple.json 1a20cb4e64dc07918a28fbccc73102bca3560f16 data/create/create/potato_projectile/type/baked_potato.json 8450576952f7723d22250da6f554dd0fda4e9fce data/create/create/potato_projectile/type/beetroot.json @@ -7,7 +7,7 @@ abb9dd2c98388abb430343d4ac02d460e5edc086 data/create/create/potato_projectile/ty 6cef3daecf686b417c6dfbe02556fcdff9b1e417 data/create/create/potato_projectile/type/carrot.json af17d72549ee9421d2643a215ffc2291874fff93 data/create/create/potato_projectile/type/chocolate_berry.json 8cb4811601d46db5fdc0291edce3ec2f3a64e902 data/create/create/potato_projectile/type/chorus_fruit.json -69138506c1b02aa4e2456cc1912ddb70f8a1e42a data/create/create/potato_projectile/type/enchanted_golden_apple.json +0f031858f3347575e23ea615ba45a5453ad1d270 data/create/create/potato_projectile/type/enchanted_golden_apple.json e3ab3c4bd70ad742d37091ae05774aadffb1d1d5 data/create/create/potato_projectile/type/fallback.json 98bf0ce51484c5a9709fc69d046d0c70d987cfdd data/create/create/potato_projectile/type/fish.json afe4e7cc87110d6f045f6672fb312a09290ca04a data/create/create/potato_projectile/type/glistering_melon.json @@ -19,10 +19,10 @@ c6234751ccad5111857b0ae9e297e42f529ad32a data/create/create/potato_projectile/ty 352402ba2fff3f23af178d15d61b0ba0a151097a data/create/create/potato_projectile/type/melon_slice.json cbfd3028ad878bddbdaeb0eec0cd5a1c50d4c901 data/create/create/potato_projectile/type/poison_potato.json 38116c664c63ca9da0ea043edc16a3ce9264c706 data/create/create/potato_projectile/type/potato.json -347a4a63c1cc99e293876fc2329f8db0f39272ba data/create/create/potato_projectile/type/pufferfish.json +44960086909417d9a16054b6e88ef7e653ce2243 data/create/create/potato_projectile/type/pufferfish.json 63e2df2c83982204bc92479b1df26561922e795d data/create/create/potato_projectile/type/pumpkin_block.json 7d58a0671c55e40cdb728c60152665c89209fb91 data/create/create/potato_projectile/type/pumpkin_pie.json -30bf0b35aeff136251d3bfe2af04fd89ccf953de data/create/create/potato_projectile/type/suspicious_stew.json +097137d49317b876e09ffba393945cefbde0f486 data/create/create/potato_projectile/type/suspicious_stew.json b4a7c10bd9cdcfe67df2a5766e5ec2e35a3f9b24 data/create/create/potato_projectile/type/sweet_berry.json 030ede1044384c4117ac1e491bf5c78bbd2842f5 data/create/damage_type/crush.json 92b0416950ffeb3ba68811e587177c2f8811c2c5 data/create/damage_type/cuckoo_surprise.json @@ -34,7 +34,7 @@ afdc8574e8e915dac5693f368e9c1260714ad111 data/create/damage_type/mechanical_roll 58ab7a8eed0841f05b4b1373ba159e3e6503b7c3 data/create/damage_type/potato_cannon.json 4dae2c0fc9fe6749649ef06dd3b7baaa9bd5e807 data/create/damage_type/run_over.json eefc270acd718dc889a9a15e350cee5b9c673dfa data/create/enchantment/capacity.json -d7ba49f29711546a65861c8140004d97fa09f16b data/create/enchantment/potato_recovery.json +1d74ace961f66cc77879b38ae1760c3bf075400c data/create/enchantment/potato_recovery.json 95c3416ba53bcedc4e8aae5d2e9fffb10e4f7d10 data/create/neoforge/biome_modifier/striated_ores_nether.json 422b87075cee548e3d215822f546a06c89aaf7f4 data/create/neoforge/biome_modifier/striated_ores_overworld.json 3bc0da630715b1fc7d796e1592dd15e0f36951a5 data/create/neoforge/biome_modifier/zinc_ore.json diff --git a/src/generated/resources/.cache/f5350c6189acfbe5425c2432489f46008c69099a b/src/generated/resources/.cache/f5350c6189acfbe5425c2432489f46008c69099a index 1526805938..d501d51423 100644 --- a/src/generated/resources/.cache/f5350c6189acfbe5425c2432489f46008c69099a +++ b/src/generated/resources/.cache/f5350c6189acfbe5425c2432489f46008c69099a @@ -1,3 +1,3 @@ -// 1.21.1 2025-11-02T10:48:42.580056265 Create's Mounted Item Storage Type Tags +// 26.2 2026-07-08T18:29:28.845831 Create's Mounted Item Storage Type Tags c65f95f356db09e468847e5799a2cdd8e1417cac data/create/tags/create/mounted_item_storage_type/fuel_blacklist.json fdadceec842a4cd12dd95f7e271645a52829ec6e data/create/tags/create/mounted_item_storage_type/internal.json diff --git a/src/generated/resources/assets/create/blockstates/acacia_window_pane.json b/src/generated/resources/assets/create/blockstates/acacia_window_pane.json index 0986d8c521..b4faa22262 100644 --- a/src/generated/resources/assets/create/blockstates/acacia_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/acacia_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/acacia_window_pane_noside" + "model": "create:block/acacia_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/acacia_window_pane_noside_alt", + "model": "create:block/acacia_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/acacia_window_pane_side_alt", - "y": 90 + "model": "create:block/acacia_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/acacia_window_pane_noside", - "y": 270 + "model": "create:block/acacia_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/acacia_window_pane_side", + "model": "create:block/acacia_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/acacia_window_pane_noside_alt" + "model": "create:block/acacia_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/andesite_door.json b/src/generated/resources/assets/create/blockstates/andesite_door.json index 624be8620f..31c7d7caa8 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_door.json +++ b/src/generated/resources/assets/create/blockstates/andesite_door.json @@ -1,244 +1,7 @@ { "variants": { - "facing=east,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=east,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=east,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=north,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=north,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=north,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_top" - }, - "facing=north,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_top" - }, - "facing=north,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=north,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=south,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom" - }, - "facing=south,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_top" - }, - "facing=south,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_top" - }, - "facing=west,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=west,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/andesite_door/block_top", - "y": 90 - }, - "facing=west,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/andesite_door/block_top", - "y": 90 + "": { + "model": "create:block/andesite_door/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_ladder.json b/src/generated/resources/assets/create/blockstates/andesite_ladder.json index 908fbe9ae8..16272bb148 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_ladder.json +++ b/src/generated/resources/assets/create/blockstates/andesite_ladder.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/andesite_ladder", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/andesite_ladder", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/andesite_ladder" }, - "facing=north,waterlogged=true": { - "model": "create:block/andesite_ladder" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/andesite_ladder", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/andesite_ladder", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/andesite_ladder", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/andesite_ladder", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/andesite_pillar.json b/src/generated/resources/assets/create/blockstates/andesite_pillar.json index 4817482396..247397afa0 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_pillar.json +++ b/src/generated/resources/assets/create/blockstates/andesite_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/andesite_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/andesite_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/andesite_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/andesite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/andesite_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/andesite_scaffolding.json b/src/generated/resources/assets/create/blockstates/andesite_scaffolding.json index 153f5928b7..15138ba1e7 100644 --- a/src/generated/resources/assets/create/blockstates/andesite_scaffolding.json +++ b/src/generated/resources/assets/create/blockstates/andesite_scaffolding.json @@ -1,9 +1,99 @@ { "variants": { - "bottom=false": { + "bottom=false,distance=0,waterlogged=false": { "model": "create:block/andesite_scaffolding" }, - "bottom=true": { + "bottom=false,distance=0,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=1,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=1,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=2,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=2,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=3,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=3,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=4,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=4,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=5,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=5,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=6,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=6,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=7,waterlogged=false": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=false,distance=7,waterlogged=true": { + "model": "create:block/andesite_scaffolding" + }, + "bottom=true,distance=0,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=0,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=true": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=false": { + "model": "create:block/andesite_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=true": { "model": "create:block/andesite_scaffolding_horizontal" } } diff --git a/src/generated/resources/assets/create/blockstates/asurine.json b/src/generated/resources/assets/create/blockstates/asurine.json index 9411ef97a7..61ecfb8fee 100644 --- a/src/generated/resources/assets/create/blockstates/asurine.json +++ b/src/generated/resources/assets/create/blockstates/asurine.json @@ -1,18 +1,7 @@ { "variants": { - "": [ - { - "model": "create:block/asurine_natural_0" - }, - { - "model": "create:block/asurine_natural_1" - }, - { - "model": "create:block/asurine_natural_2" - }, - { - "model": "create:block/asurine_natural_3" - } - ] + "": { + "model": "create:block/asurine_natural_0" + } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/asurine_pillar.json b/src/generated/resources/assets/create/blockstates/asurine_pillar.json index cf97a669ae..205708acad 100644 --- a/src/generated/resources/assets/create/blockstates/asurine_pillar.json +++ b/src/generated/resources/assets/create/blockstates/asurine_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/asurine_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/asurine_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/asurine_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/asurine_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/asurine_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/bamboo_window_pane.json b/src/generated/resources/assets/create/blockstates/bamboo_window_pane.json index 08a969744e..32a81161cf 100644 --- a/src/generated/resources/assets/create/blockstates/bamboo_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/bamboo_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/bamboo_window_pane_noside" + "model": "create:block/bamboo_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/bamboo_window_pane_noside_alt", + "model": "create:block/bamboo_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/bamboo_window_pane_side_alt", - "y": 90 + "model": "create:block/bamboo_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/bamboo_window_pane_noside", - "y": 270 + "model": "create:block/bamboo_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/bamboo_window_pane_side", + "model": "create:block/bamboo_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/bamboo_window_pane_noside_alt" + "model": "create:block/bamboo_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/birch_window_pane.json b/src/generated/resources/assets/create/blockstates/birch_window_pane.json index cda0ea1174..4016ecc0b1 100644 --- a/src/generated/resources/assets/create/blockstates/birch_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/birch_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/birch_window_pane_noside" + "model": "create:block/birch_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/birch_window_pane_noside_alt", + "model": "create:block/birch_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/birch_window_pane_side_alt", - "y": 90 + "model": "create:block/birch_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/birch_window_pane_noside", - "y": 270 + "model": "create:block/birch_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/birch_window_pane_side", + "model": "create:block/birch_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/birch_window_pane_noside_alt" + "model": "create:block/birch_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/black_toolbox.json b/src/generated/resources/assets/create/blockstates/black_toolbox.json index d6bea172cd..06ffc753aa 100644 --- a/src/generated/resources/assets/create/blockstates/black_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/black_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/black_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/black_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/black_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/black_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/black_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/black_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/black_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/black_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/black_valve_handle.json b/src/generated/resources/assets/create/blockstates/black_valve_handle.json index c6b29f0aae..e0f429ce90 100644 --- a/src/generated/resources/assets/create/blockstates/black_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/black_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/black_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/black_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/black_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/black_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/black_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/black_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/black_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/black_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/black_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/blue_toolbox.json b/src/generated/resources/assets/create/blockstates/blue_toolbox.json index 6ba5af6135..478c823f27 100644 --- a/src/generated/resources/assets/create/blockstates/blue_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/blue_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/blue_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/blue_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/blue_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/blue_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/blue_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/blue_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/blue_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/blue_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/blue_valve_handle.json index b5c7dc4983..427ba9845c 100644 --- a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/blue_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/blue_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/blue_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/blue_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/blue_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/blue_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/blue_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/blue_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/blue_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/blue_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/brass_door.json b/src/generated/resources/assets/create/blockstates/brass_door.json index e11c07debd..9cdae6eab1 100644 --- a/src/generated/resources/assets/create/blockstates/brass_door.json +++ b/src/generated/resources/assets/create/blockstates/brass_door.json @@ -1,244 +1,7 @@ { "variants": { - "facing=east,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=east,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=east,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=north,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=north,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=north,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_top" - }, - "facing=north,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_top" - }, - "facing=north,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=north,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=south,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom" - }, - "facing=south,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_top" - }, - "facing=south,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_top" - }, - "facing=west,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=west,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/brass_door/block_top", - "y": 90 - }, - "facing=west,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/brass_door/block_top", - "y": 90 + "": { + "model": "create:block/brass_door/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_ladder.json b/src/generated/resources/assets/create/blockstates/brass_ladder.json index b1ee4b8ecf..c462f3f721 100644 --- a/src/generated/resources/assets/create/blockstates/brass_ladder.json +++ b/src/generated/resources/assets/create/blockstates/brass_ladder.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/brass_ladder", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/brass_ladder", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/brass_ladder" }, - "facing=north,waterlogged=true": { - "model": "create:block/brass_ladder" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/brass_ladder", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/brass_ladder", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/brass_ladder", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/brass_ladder", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/brass_scaffolding.json b/src/generated/resources/assets/create/blockstates/brass_scaffolding.json index 422df16da0..0f5e2df127 100644 --- a/src/generated/resources/assets/create/blockstates/brass_scaffolding.json +++ b/src/generated/resources/assets/create/blockstates/brass_scaffolding.json @@ -1,9 +1,99 @@ { "variants": { - "bottom=false": { + "bottom=false,distance=0,waterlogged=false": { "model": "create:block/brass_scaffolding" }, - "bottom=true": { + "bottom=false,distance=0,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=1,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=1,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=2,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=2,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=3,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=3,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=4,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=4,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=5,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=5,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=6,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=6,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=7,waterlogged=false": { + "model": "create:block/brass_scaffolding" + }, + "bottom=false,distance=7,waterlogged=true": { + "model": "create:block/brass_scaffolding" + }, + "bottom=true,distance=0,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=0,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=true": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=false": { + "model": "create:block/brass_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=true": { "model": "create:block/brass_scaffolding_horizontal" } } diff --git a/src/generated/resources/assets/create/blockstates/brown_toolbox.json b/src/generated/resources/assets/create/blockstates/brown_toolbox.json index ce7a09e159..25473d8b68 100644 --- a/src/generated/resources/assets/create/blockstates/brown_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/brown_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/brown_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/brown_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/brown_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/brown_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/brown_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/brown_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/brown_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/brown_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json b/src/generated/resources/assets/create/blockstates/brown_valve_handle.json index 3d252fc3dc..9da17b0596 100644 --- a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/brown_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/brown_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/brown_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/brown_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/brown_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/brown_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/brown_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/brown_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/brown_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/brown_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/calcite_pillar.json b/src/generated/resources/assets/create/blockstates/calcite_pillar.json index 9ed07f54d3..729250d03d 100644 --- a/src/generated/resources/assets/create/blockstates/calcite_pillar.json +++ b/src/generated/resources/assets/create/blockstates/calcite_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/calcite_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/calcite_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/calcite_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/calcite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/calcite_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/cherry_window_pane.json b/src/generated/resources/assets/create/blockstates/cherry_window_pane.json index 4232dc3a56..b1ae5b9a12 100644 --- a/src/generated/resources/assets/create/blockstates/cherry_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/cherry_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/cherry_window_pane_noside" + "model": "create:block/cherry_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/cherry_window_pane_noside_alt", + "model": "create:block/cherry_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/cherry_window_pane_side_alt", - "y": 90 + "model": "create:block/cherry_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/cherry_window_pane_noside", - "y": 270 + "model": "create:block/cherry_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/cherry_window_pane_side", + "model": "create:block/cherry_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/cherry_window_pane_noside_alt" + "model": "create:block/cherry_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/cogwheel.json b/src/generated/resources/assets/create/blockstates/cogwheel.json index 213f205152..89228a7d6b 100644 --- a/src/generated/resources/assets/create/blockstates/cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/cogwheel.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/cogwheel", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,waterlogged=true": { + "model": "create:block/cogwheel", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=false": { + "model": "create:block/cogwheel" + }, + "axis=y,waterlogged=true": { "model": "create:block/cogwheel" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/cogwheel", + "x": 90, + "y": 180 + }, + "axis=z,waterlogged=true": { "model": "create:block/cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/controller_rail.json b/src/generated/resources/assets/create/blockstates/controller_rail.json index f861c1731f..8d2df8d372 100644 --- a/src/generated/resources/assets/create/blockstates/controller_rail.json +++ b/src/generated/resources/assets/create/blockstates/controller_rail.json @@ -1,92 +1,1442 @@ { "variants": { - "backwards=false,shape=ascending_east,waterlogged=false": { + "backwards=false,power=0,shape=ascending_east,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_south", "y": 270 }, - "backwards=false,shape=ascending_east,waterlogged=true": { + "backwards=false,power=0,shape=ascending_east,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_south", "y": 270 }, - "backwards=false,shape=ascending_north,waterlogged=false": { + "backwards=false,power=0,shape=ascending_north,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_north" }, - "backwards=false,shape=ascending_north,waterlogged=true": { + "backwards=false,power=0,shape=ascending_north,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_north" }, - "backwards=false,shape=ascending_south,waterlogged=false": { + "backwards=false,power=0,shape=ascending_south,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_south" }, - "backwards=false,shape=ascending_south,waterlogged=true": { + "backwards=false,power=0,shape=ascending_south,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_south" }, - "backwards=false,shape=ascending_west,waterlogged=false": { + "backwards=false,power=0,shape=ascending_west,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_north", "y": 270 }, - "backwards=false,shape=ascending_west,waterlogged=true": { + "backwards=false,power=0,shape=ascending_west,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_north", "y": 270 }, - "backwards=false,shape=east_west,waterlogged=false": { + "backwards=false,power=0,shape=east_west,waterlogged=false": { "model": "create:block/controller_rail/block_north_south", "y": 270 }, - "backwards=false,shape=east_west,waterlogged=true": { + "backwards=false,power=0,shape=east_west,waterlogged=true": { "model": "create:block/controller_rail/block_north_south", "y": 270 }, - "backwards=false,shape=north_south,waterlogged=false": { + "backwards=false,power=0,shape=north_south,waterlogged=false": { "model": "create:block/controller_rail/block_north_south" }, - "backwards=false,shape=north_south,waterlogged=true": { + "backwards=false,power=0,shape=north_south,waterlogged=true": { "model": "create:block/controller_rail/block_north_south" }, - "backwards=true,shape=ascending_east,waterlogged=false": { + "backwards=false,power=1,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=1,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=1,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=1,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=1,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=1,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=1,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=1,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=1,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=1,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=1,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=1,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=10,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=10,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=10,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=10,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=10,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=10,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=10,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=10,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=10,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=10,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=10,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=10,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=11,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=11,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=11,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=11,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=11,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=11,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=11,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=11,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=11,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=11,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=11,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=11,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=12,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=12,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=12,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=12,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=12,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=12,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=12,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=12,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=12,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=12,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=12,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=12,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=13,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=13,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=13,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=13,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=13,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=13,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=13,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=13,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=13,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=13,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=13,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=13,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=14,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=14,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=14,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=14,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=14,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=14,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=14,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=14,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=14,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=14,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=14,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=14,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=15,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=15,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=15,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=15,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=15,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=15,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=15,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=15,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=15,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=15,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=15,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=15,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=2,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=2,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=2,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=2,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=2,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=2,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=2,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=2,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=2,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=2,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=2,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=2,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=3,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=3,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=3,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=3,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=3,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=3,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=3,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=3,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=3,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=3,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=3,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=3,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=4,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=4,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=4,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=4,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=4,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=4,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=4,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=4,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=4,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=4,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=4,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=4,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=5,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=5,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=5,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=5,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=5,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=5,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=5,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=5,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=5,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=5,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=5,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=5,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=6,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=6,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=6,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=6,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=6,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=6,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=6,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=6,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=6,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=6,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=6,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=6,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=7,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=7,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=7,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=7,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=7,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=7,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=7,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=7,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=7,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=7,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=7,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=7,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=8,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=8,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=8,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=8,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=8,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=8,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=8,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=8,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=8,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=8,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=8,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=8,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=9,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=9,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 270 + }, + "backwards=false,power=9,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=9,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north" + }, + "backwards=false,power=9,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=9,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south" + }, + "backwards=false,power=9,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=9,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 270 + }, + "backwards=false,power=9,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=9,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 270 + }, + "backwards=false,power=9,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=false,power=9,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south" + }, + "backwards=true,power=0,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=0,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=0,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=0,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=0,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=0,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=0,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=0,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=0,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=0,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=0,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=0,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=1,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=1,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=1,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=1,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=1,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=1,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=1,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=1,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=10,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=10,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=10,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=10,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=10,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=10,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=10,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=10,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=11,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=11,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=11,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=11,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=11,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=11,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=11,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=11,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=12,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=12,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=12,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=12,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=12,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=12,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=12,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=12,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=13,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=13,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=13,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=13,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=13,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=13,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=13,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=13,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=14,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=14,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=14,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=14,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=14,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=14,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=14,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=14,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=15,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=15,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=15,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=15,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=15,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=15,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=15,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=15,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=2,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=2,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=2,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=2,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=2,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=2,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=2,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=2,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=3,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=3,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=3,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=3,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=3,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=3,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=3,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=3,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=4,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=4,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=4,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=4,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=4,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=4,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=4,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=4,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=5,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=5,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=5,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=5,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=5,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=5,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=5,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=5,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=6,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=6,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=6,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=6,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=6,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=6,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=6,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=6,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=7,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=7,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=7,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=7,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=7,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=7,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=7,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=7,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_east,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=8,shape=ascending_east,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 90 + }, + "backwards=true,power=8,shape=ascending_north,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_north,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_south,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_south,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_north", + "y": 180 + }, + "backwards=true,power=8,shape=ascending_west,waterlogged=false": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=8,shape=ascending_west,waterlogged=true": { + "model": "create:block/controller_rail/block_ascending_south", + "y": 90 + }, + "backwards=true,power=8,shape=east_west,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=8,shape=east_west,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 90 + }, + "backwards=true,power=8,shape=north_south,waterlogged=false": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=8,shape=north_south,waterlogged=true": { + "model": "create:block/controller_rail/block_north_south", + "y": 180 + }, + "backwards=true,power=9,shape=ascending_east,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_north", "y": 90 }, - "backwards=true,shape=ascending_east,waterlogged=true": { + "backwards=true,power=9,shape=ascending_east,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_north", "y": 90 }, - "backwards=true,shape=ascending_north,waterlogged=false": { + "backwards=true,power=9,shape=ascending_north,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_south", "y": 180 }, - "backwards=true,shape=ascending_north,waterlogged=true": { + "backwards=true,power=9,shape=ascending_north,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_south", "y": 180 }, - "backwards=true,shape=ascending_south,waterlogged=false": { + "backwards=true,power=9,shape=ascending_south,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_north", "y": 180 }, - "backwards=true,shape=ascending_south,waterlogged=true": { + "backwards=true,power=9,shape=ascending_south,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_north", "y": 180 }, - "backwards=true,shape=ascending_west,waterlogged=false": { + "backwards=true,power=9,shape=ascending_west,waterlogged=false": { "model": "create:block/controller_rail/block_ascending_south", "y": 90 }, - "backwards=true,shape=ascending_west,waterlogged=true": { + "backwards=true,power=9,shape=ascending_west,waterlogged=true": { "model": "create:block/controller_rail/block_ascending_south", "y": 90 }, - "backwards=true,shape=east_west,waterlogged=false": { + "backwards=true,power=9,shape=east_west,waterlogged=false": { "model": "create:block/controller_rail/block_north_south", "y": 90 }, - "backwards=true,shape=east_west,waterlogged=true": { + "backwards=true,power=9,shape=east_west,waterlogged=true": { "model": "create:block/controller_rail/block_north_south", "y": 90 }, - "backwards=true,shape=north_south,waterlogged=false": { + "backwards=true,power=9,shape=north_south,waterlogged=false": { "model": "create:block/controller_rail/block_north_south", "y": 180 }, - "backwards=true,shape=north_south,waterlogged=true": { + "backwards=true,power=9,shape=north_south,waterlogged=true": { "model": "create:block/controller_rail/block_north_south", "y": 180 } diff --git a/src/generated/resources/assets/create/blockstates/copper_backtank.json b/src/generated/resources/assets/create/blockstates/copper_backtank.json index 5038bfcec9..8ba5668074 100644 --- a/src/generated/resources/assets/create/blockstates/copper_backtank.json +++ b/src/generated/resources/assets/create/blockstates/copper_backtank.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/copper_backtank/block", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/copper_backtank/block", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/copper_backtank/block" }, - "facing=north,waterlogged=true": { - "model": "create:block/copper_backtank/block" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/copper_backtank/block", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/copper_backtank/block", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/copper_backtank/block", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/copper_backtank/block", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/copper_door.json b/src/generated/resources/assets/create/blockstates/copper_door.json index 26854d6f9e..76fbf7e150 100644 --- a/src/generated/resources/assets/create/blockstates/copper_door.json +++ b/src/generated/resources/assets/create/blockstates/copper_door.json @@ -1,244 +1,7 @@ { "variants": { - "facing=east,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=east,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=east,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=north,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=north,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=north,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_top" - }, - "facing=north,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_top" - }, - "facing=north,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=north,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=south,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom" - }, - "facing=south,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_top" - }, - "facing=south,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_top" - }, - "facing=west,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=west,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/copper_door/block_top", - "y": 90 - }, - "facing=west,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/copper_door/block_top", - "y": 90 + "": { + "model": "create:block/copper_door/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_ladder.json b/src/generated/resources/assets/create/blockstates/copper_ladder.json index f596b561f2..e14f5ee63b 100644 --- a/src/generated/resources/assets/create/blockstates/copper_ladder.json +++ b/src/generated/resources/assets/create/blockstates/copper_ladder.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/copper_ladder", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/copper_ladder", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/copper_ladder" }, - "facing=north,waterlogged=true": { - "model": "create:block/copper_ladder" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/copper_ladder", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/copper_ladder", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/copper_ladder", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/copper_ladder", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/copper_scaffolding.json b/src/generated/resources/assets/create/blockstates/copper_scaffolding.json index 32d6ffe911..5b6577f7e1 100644 --- a/src/generated/resources/assets/create/blockstates/copper_scaffolding.json +++ b/src/generated/resources/assets/create/blockstates/copper_scaffolding.json @@ -1,9 +1,99 @@ { "variants": { - "bottom=false": { + "bottom=false,distance=0,waterlogged=false": { "model": "create:block/copper_scaffolding" }, - "bottom=true": { + "bottom=false,distance=0,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=1,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=1,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=2,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=2,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=3,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=3,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=4,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=4,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=5,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=5,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=6,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=6,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=7,waterlogged=false": { + "model": "create:block/copper_scaffolding" + }, + "bottom=false,distance=7,waterlogged=true": { + "model": "create:block/copper_scaffolding" + }, + "bottom=true,distance=0,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=0,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=1,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=2,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=3,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=4,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=5,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=6,waterlogged=true": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=false": { + "model": "create:block/copper_scaffolding_horizontal" + }, + "bottom=true,distance=7,waterlogged=true": { "model": "create:block/copper_scaffolding_horizontal" } } diff --git a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json b/src/generated/resources/assets/create/blockstates/copper_valve_handle.json index 013c652017..e77c9dbd41 100644 --- a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/copper_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/copper_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/copper_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/copper_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/copper_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/copper_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/copper_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/copper_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/copper_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/copper_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/copycat_panel.json b/src/generated/resources/assets/create/blockstates/copycat_panel.json index 2c8f02f067..5aa88b30d6 100644 --- a/src/generated/resources/assets/create/blockstates/copycat_panel.json +++ b/src/generated/resources/assets/create/blockstates/copycat_panel.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "minecraft:block/air" + "model": "minecraft:air" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copycat_step.json b/src/generated/resources/assets/create/blockstates/copycat_step.json index 2c8f02f067..5aa88b30d6 100644 --- a/src/generated/resources/assets/create/blockstates/copycat_step.json +++ b/src/generated/resources/assets/create/blockstates/copycat_step.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "minecraft:block/air" + "model": "minecraft:air" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crimsite.json b/src/generated/resources/assets/create/blockstates/crimsite.json index 495e95c1f7..8f728ad84f 100644 --- a/src/generated/resources/assets/create/blockstates/crimsite.json +++ b/src/generated/resources/assets/create/blockstates/crimsite.json @@ -1,18 +1,7 @@ { "variants": { - "": [ - { - "model": "create:block/crimsite_natural_0" - }, - { - "model": "create:block/crimsite_natural_1" - }, - { - "model": "create:block/crimsite_natural_2" - }, - { - "model": "create:block/crimsite_natural_3" - } - ] + "": { + "model": "create:block/crimsite_natural_0" + } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crimsite_pillar.json b/src/generated/resources/assets/create/blockstates/crimsite_pillar.json index 3225840f05..1036af2a43 100644 --- a/src/generated/resources/assets/create/blockstates/crimsite_pillar.json +++ b/src/generated/resources/assets/create/blockstates/crimsite_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/crimsite_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/crimsite_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/crimsite_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/crimsite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/crimsite_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/crimson_window_pane.json b/src/generated/resources/assets/create/blockstates/crimson_window_pane.json index 6a8de27bff..1f8a90822e 100644 --- a/src/generated/resources/assets/create/blockstates/crimson_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/crimson_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/crimson_window_pane_noside" + "model": "create:block/crimson_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/crimson_window_pane_noside_alt", + "model": "create:block/crimson_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/crimson_window_pane_side_alt", - "y": 90 + "model": "create:block/crimson_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/crimson_window_pane_noside", - "y": 270 + "model": "create:block/crimson_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/crimson_window_pane_side", + "model": "create:block/crimson_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/crimson_window_pane_noside_alt" + "model": "create:block/crimson_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json b/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json index 2f859dc9e3..8855230d68 100644 --- a/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json +++ b/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json @@ -1,9 +1,39 @@ { "variants": { - "valid=false": { + "facing=down,valid=false": { "model": "minecraft:block/air" }, - "valid=true": { + "facing=down,valid=true": { + "model": "minecraft:block/air" + }, + "facing=east,valid=false": { + "model": "minecraft:block/air" + }, + "facing=east,valid=true": { + "model": "minecraft:block/air" + }, + "facing=north,valid=false": { + "model": "minecraft:block/air" + }, + "facing=north,valid=true": { + "model": "minecraft:block/air" + }, + "facing=south,valid=false": { + "model": "minecraft:block/air" + }, + "facing=south,valid=true": { + "model": "minecraft:block/air" + }, + "facing=up,valid=false": { + "model": "minecraft:block/air" + }, + "facing=up,valid=true": { + "model": "minecraft:block/air" + }, + "facing=west,valid=false": { + "model": "minecraft:block/air" + }, + "facing=west,valid=true": { "model": "minecraft:block/air" } } diff --git a/src/generated/resources/assets/create/blockstates/cut_andesite_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_andesite_brick_wall.json index d02e4ecf50..6594115e00 100644 --- a/src/generated/resources/assets/create/blockstates/cut_andesite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_andesite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_andesite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_andesite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_andesite_bricks_wall_side_tall", + "model": "create:block/cut_andesite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_andesite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_andesite_bricks_wall_side", + "model": "create:block/cut_andesite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_andesite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_andesite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_andesite_wall.json b/src/generated/resources/assets/create/blockstates/cut_andesite_wall.json index 7cbf044120..f7bd629520 100644 --- a/src/generated/resources/assets/create/blockstates/cut_andesite_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_andesite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_andesite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_andesite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_andesite_wall_side_tall", + "model": "create:block/cut_andesite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_andesite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_andesite_wall_side", + "model": "create:block/cut_andesite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_andesite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_andesite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_asurine_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_asurine_brick_wall.json index 74bdf65eb6..8583ba044d 100644 --- a/src/generated/resources/assets/create/blockstates/cut_asurine_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_asurine_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_asurine_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_asurine_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_asurine_bricks_wall_side_tall", + "model": "create:block/cut_asurine_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_asurine_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_asurine_bricks_wall_side", + "model": "create:block/cut_asurine_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_asurine_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_asurine_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_asurine_wall.json b/src/generated/resources/assets/create/blockstates/cut_asurine_wall.json index cdd8c0b4ee..d7f170191c 100644 --- a/src/generated/resources/assets/create/blockstates/cut_asurine_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_asurine_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_asurine_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_asurine_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_asurine_wall_side_tall", + "model": "create:block/cut_asurine_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_asurine_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_asurine_wall_side", + "model": "create:block/cut_asurine_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_asurine_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_asurine_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_calcite_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_calcite_brick_wall.json index df4e5a0a75..5f038d335f 100644 --- a/src/generated/resources/assets/create/blockstates/cut_calcite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_calcite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_calcite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_calcite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_calcite_bricks_wall_side_tall", + "model": "create:block/cut_calcite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_calcite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_calcite_bricks_wall_side", + "model": "create:block/cut_calcite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_calcite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_calcite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_calcite_wall.json b/src/generated/resources/assets/create/blockstates/cut_calcite_wall.json index 1b5f6dfc08..4d0d95722a 100644 --- a/src/generated/resources/assets/create/blockstates/cut_calcite_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_calcite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_calcite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_calcite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_calcite_wall_side_tall", + "model": "create:block/cut_calcite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_calcite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_calcite_wall_side", + "model": "create:block/cut_calcite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_calcite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_calcite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_crimsite_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_crimsite_brick_wall.json index cbd4b2c528..bd909304b1 100644 --- a/src/generated/resources/assets/create/blockstates/cut_crimsite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_crimsite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_crimsite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_crimsite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_crimsite_bricks_wall_side_tall", + "model": "create:block/cut_crimsite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_crimsite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_crimsite_bricks_wall_side", + "model": "create:block/cut_crimsite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_crimsite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_crimsite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_crimsite_wall.json b/src/generated/resources/assets/create/blockstates/cut_crimsite_wall.json index 80559a299c..87e20035c3 100644 --- a/src/generated/resources/assets/create/blockstates/cut_crimsite_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_crimsite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_crimsite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_crimsite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_crimsite_wall_side_tall", + "model": "create:block/cut_crimsite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_crimsite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_crimsite_wall_side", + "model": "create:block/cut_crimsite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_crimsite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_crimsite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_deepslate_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_deepslate_brick_wall.json index 140dde06d0..95188d9cdf 100644 --- a/src/generated/resources/assets/create/blockstates/cut_deepslate_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_deepslate_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_deepslate_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_deepslate_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_deepslate_bricks_wall_side_tall", + "model": "create:block/cut_deepslate_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_deepslate_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_deepslate_bricks_wall_side", + "model": "create:block/cut_deepslate_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_deepslate_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_deepslate_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_deepslate_wall.json b/src/generated/resources/assets/create/blockstates/cut_deepslate_wall.json index e7b106aa90..04acbdfb3d 100644 --- a/src/generated/resources/assets/create/blockstates/cut_deepslate_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_deepslate_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_deepslate_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_deepslate_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_deepslate_wall_side_tall", + "model": "create:block/cut_deepslate_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_deepslate_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_deepslate_wall_side", + "model": "create:block/cut_deepslate_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_deepslate_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_deepslate_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_diorite_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_diorite_brick_wall.json index 45664158e1..0befaf1f5f 100644 --- a/src/generated/resources/assets/create/blockstates/cut_diorite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_diorite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_diorite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_diorite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_diorite_bricks_wall_side_tall", + "model": "create:block/cut_diorite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_diorite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_diorite_bricks_wall_side", + "model": "create:block/cut_diorite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_diorite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_diorite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_diorite_wall.json b/src/generated/resources/assets/create/blockstates/cut_diorite_wall.json index d2e8b00322..a06a3d9532 100644 --- a/src/generated/resources/assets/create/blockstates/cut_diorite_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_diorite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_diorite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_diorite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_diorite_wall_side_tall", + "model": "create:block/cut_diorite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_diorite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_diorite_wall_side", + "model": "create:block/cut_diorite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_diorite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_diorite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_dripstone_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_dripstone_brick_wall.json index c8c0ed83cd..a91717fa5e 100644 --- a/src/generated/resources/assets/create/blockstates/cut_dripstone_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_dripstone_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_dripstone_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_dripstone_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_dripstone_bricks_wall_side_tall", + "model": "create:block/cut_dripstone_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_dripstone_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_dripstone_bricks_wall_side", + "model": "create:block/cut_dripstone_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_dripstone_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_dripstone_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_dripstone_wall.json b/src/generated/resources/assets/create/blockstates/cut_dripstone_wall.json index 255e4e8440..c4f3ba851c 100644 --- a/src/generated/resources/assets/create/blockstates/cut_dripstone_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_dripstone_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_dripstone_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_dripstone_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_dripstone_wall_side_tall", + "model": "create:block/cut_dripstone_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_dripstone_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_dripstone_wall_side", + "model": "create:block/cut_dripstone_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_dripstone_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_dripstone_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_granite_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_granite_brick_wall.json index 2230f63e9f..0a652511da 100644 --- a/src/generated/resources/assets/create/blockstates/cut_granite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_granite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_granite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_granite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_granite_bricks_wall_side_tall", + "model": "create:block/cut_granite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_granite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_granite_bricks_wall_side", + "model": "create:block/cut_granite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_granite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_granite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_granite_wall.json b/src/generated/resources/assets/create/blockstates/cut_granite_wall.json index 9612e875d8..7814c31e3f 100644 --- a/src/generated/resources/assets/create/blockstates/cut_granite_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_granite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_granite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_granite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_granite_wall_side_tall", + "model": "create:block/cut_granite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_granite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_granite_wall_side", + "model": "create:block/cut_granite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_granite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_granite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_limestone_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_limestone_brick_wall.json index 9c23e6ffd9..d9eb44f259 100644 --- a/src/generated/resources/assets/create/blockstates/cut_limestone_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_limestone_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_limestone_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_limestone_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_limestone_bricks_wall_side_tall", + "model": "create:block/cut_limestone_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_limestone_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_limestone_bricks_wall_side", + "model": "create:block/cut_limestone_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_limestone_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_limestone_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_limestone_wall.json b/src/generated/resources/assets/create/blockstates/cut_limestone_wall.json index 775cc16e77..0225a67dd5 100644 --- a/src/generated/resources/assets/create/blockstates/cut_limestone_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_limestone_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_limestone_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_limestone_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_limestone_wall_side_tall", + "model": "create:block/cut_limestone_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_limestone_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_limestone_wall_side", + "model": "create:block/cut_limestone_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_limestone_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_limestone_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_ochrum_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_ochrum_brick_wall.json index 023aef5036..8e6ae25e06 100644 --- a/src/generated/resources/assets/create/blockstates/cut_ochrum_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_ochrum_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_ochrum_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_ochrum_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_ochrum_bricks_wall_side_tall", + "model": "create:block/cut_ochrum_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_ochrum_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_ochrum_bricks_wall_side", + "model": "create:block/cut_ochrum_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_ochrum_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_ochrum_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_ochrum_wall.json b/src/generated/resources/assets/create/blockstates/cut_ochrum_wall.json index 56b05543e6..3733cde071 100644 --- a/src/generated/resources/assets/create/blockstates/cut_ochrum_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_ochrum_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_ochrum_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_ochrum_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_ochrum_wall_side_tall", + "model": "create:block/cut_ochrum_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_ochrum_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_ochrum_wall_side", + "model": "create:block/cut_ochrum_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_ochrum_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_ochrum_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_scorchia_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_scorchia_brick_wall.json index 6a0500203e..04b92a14b8 100644 --- a/src/generated/resources/assets/create/blockstates/cut_scorchia_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_scorchia_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_scorchia_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_scorchia_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_scorchia_bricks_wall_side_tall", + "model": "create:block/cut_scorchia_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_scorchia_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_scorchia_bricks_wall_side", + "model": "create:block/cut_scorchia_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_scorchia_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_scorchia_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_scorchia_wall.json b/src/generated/resources/assets/create/blockstates/cut_scorchia_wall.json index d378e9038b..ddd0818cde 100644 --- a/src/generated/resources/assets/create/blockstates/cut_scorchia_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_scorchia_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_scorchia_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_scorchia_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_scorchia_wall_side_tall", + "model": "create:block/cut_scorchia_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_scorchia_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_scorchia_wall_side", + "model": "create:block/cut_scorchia_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_scorchia_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_scorchia_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_scoria_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_scoria_brick_wall.json index 8b8fcefae2..0146caf144 100644 --- a/src/generated/resources/assets/create/blockstates/cut_scoria_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_scoria_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_scoria_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_scoria_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_scoria_bricks_wall_side_tall", + "model": "create:block/cut_scoria_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_scoria_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_scoria_bricks_wall_side", + "model": "create:block/cut_scoria_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_scoria_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_scoria_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_scoria_wall.json b/src/generated/resources/assets/create/blockstates/cut_scoria_wall.json index eab1e7e96a..340b76a2b7 100644 --- a/src/generated/resources/assets/create/blockstates/cut_scoria_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_scoria_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_scoria_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_scoria_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_scoria_wall_side_tall", + "model": "create:block/cut_scoria_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_scoria_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_scoria_wall_side", + "model": "create:block/cut_scoria_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_scoria_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_scoria_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_tuff_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_tuff_brick_wall.json index 9532cc0314..5dd93ad869 100644 --- a/src/generated/resources/assets/create/blockstates/cut_tuff_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_tuff_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_tuff_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_tuff_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_tuff_bricks_wall_side_tall", + "model": "create:block/cut_tuff_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_tuff_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_tuff_bricks_wall_side", + "model": "create:block/cut_tuff_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_tuff_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_tuff_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_tuff_wall.json b/src/generated/resources/assets/create/blockstates/cut_tuff_wall.json index 284d928a7c..91cc006ae8 100644 --- a/src/generated/resources/assets/create/blockstates/cut_tuff_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_tuff_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_tuff_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_tuff_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_tuff_wall_side_tall", + "model": "create:block/cut_tuff_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_tuff_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_tuff_wall_side", + "model": "create:block/cut_tuff_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_tuff_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_tuff_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_veridium_brick_wall.json b/src/generated/resources/assets/create/blockstates/cut_veridium_brick_wall.json index 7b6e4d25e9..15664b64b1 100644 --- a/src/generated/resources/assets/create/blockstates/cut_veridium_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_veridium_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_veridium_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_veridium_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_veridium_bricks_wall_side_tall", + "model": "create:block/cut_veridium_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_veridium_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_veridium_bricks_wall_side", + "model": "create:block/cut_veridium_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_veridium_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_veridium_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cut_veridium_wall.json b/src/generated/resources/assets/create/blockstates/cut_veridium_wall.json index ff6f014a8d..f63bdd6faa 100644 --- a/src/generated/resources/assets/create/blockstates/cut_veridium_wall.json +++ b/src/generated/resources/assets/create/blockstates/cut_veridium_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/cut_veridium_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/cut_veridium_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/cut_veridium_wall_side_tall", + "model": "create:block/cut_veridium_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/cut_veridium_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/cut_veridium_wall_side", + "model": "create:block/cut_veridium_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/cut_veridium_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/cut_veridium_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/cyan_toolbox.json b/src/generated/resources/assets/create/blockstates/cyan_toolbox.json index 8d38aaaed9..f940e7a191 100644 --- a/src/generated/resources/assets/create/blockstates/cyan_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/cyan_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/cyan_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/cyan_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/cyan_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/cyan_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/cyan_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/cyan_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/cyan_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/cyan_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json b/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json index cf65e9e6e7..a05f289cb8 100644 --- a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/cyan_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/cyan_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/cyan_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/cyan_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/cyan_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/cyan_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/cyan_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json b/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json index 29edef5691..f04202d836 100644 --- a/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/dark_oak_window_pane_noside" + "model": "create:block/dark_oak_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/dark_oak_window_pane_noside_alt", + "model": "create:block/dark_oak_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/dark_oak_window_pane_side_alt", - "y": 90 + "model": "create:block/dark_oak_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/dark_oak_window_pane_noside", - "y": 270 + "model": "create:block/dark_oak_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/dark_oak_window_pane_side", + "model": "create:block/dark_oak_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/dark_oak_window_pane_noside_alt" + "model": "create:block/dark_oak_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/deepslate_pillar.json b/src/generated/resources/assets/create/blockstates/deepslate_pillar.json index 9932151705..fd5115b2ff 100644 --- a/src/generated/resources/assets/create/blockstates/deepslate_pillar.json +++ b/src/generated/resources/assets/create/blockstates/deepslate_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/deepslate_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/deepslate_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/deepslate_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/deepslate_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/deepslate_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/diorite_pillar.json b/src/generated/resources/assets/create/blockstates/diorite_pillar.json index 53de387dc5..c87837c532 100644 --- a/src/generated/resources/assets/create/blockstates/diorite_pillar.json +++ b/src/generated/resources/assets/create/blockstates/diorite_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/diorite_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/diorite_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/diorite_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/diorite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/diorite_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/display_board.json b/src/generated/resources/assets/create/blockstates/display_board.json index d17ff0cf90..140e9dab3d 100644 --- a/src/generated/resources/assets/create/blockstates/display_board.json +++ b/src/generated/resources/assets/create/blockstates/display_board.json @@ -1,122 +1,17 @@ { "variants": { - "down=false,facing=east,up=false,waterlogged=false": { + "facing=east": { "model": "create:block/display_board/block", "y": 90 }, - "down=false,facing=east,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=false,facing=east,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=false,facing=east,up=true,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=false,facing=north,up=false,waterlogged=false": { - "model": "create:block/display_board/block" - }, - "down=false,facing=north,up=false,waterlogged=true": { - "model": "create:block/display_board/block" - }, - "down=false,facing=north,up=true,waterlogged=false": { - "model": "create:block/display_board/block" - }, - "down=false,facing=north,up=true,waterlogged=true": { + "facing=north": { "model": "create:block/display_board/block" }, - "down=false,facing=south,up=false,waterlogged=false": { + "facing=south": { "model": "create:block/display_board/block", "y": 180 }, - "down=false,facing=south,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=false,facing=south,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=false,facing=south,up=true,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=false,facing=west,up=false,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=false,facing=west,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=false,facing=west,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=false,facing=west,up=true,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=true,facing=east,up=false,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=true,facing=east,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=true,facing=east,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=true,facing=east,up=true,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 90 - }, - "down=true,facing=north,up=false,waterlogged=false": { - "model": "create:block/display_board/block" - }, - "down=true,facing=north,up=false,waterlogged=true": { - "model": "create:block/display_board/block" - }, - "down=true,facing=north,up=true,waterlogged=false": { - "model": "create:block/display_board/block" - }, - "down=true,facing=north,up=true,waterlogged=true": { - "model": "create:block/display_board/block" - }, - "down=true,facing=south,up=false,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=true,facing=south,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=true,facing=south,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=true,facing=south,up=true,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 180 - }, - "down=true,facing=west,up=false,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=true,facing=west,up=false,waterlogged=true": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=true,facing=west,up=true,waterlogged=false": { - "model": "create:block/display_board/block", - "y": 270 - }, - "down=true,facing=west,up=true,waterlogged=true": { + "facing=west": { "model": "create:block/display_board/block", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/dripstone_pillar.json b/src/generated/resources/assets/create/blockstates/dripstone_pillar.json index 157bcf5031..764808b3d6 100644 --- a/src/generated/resources/assets/create/blockstates/dripstone_pillar.json +++ b/src/generated/resources/assets/create/blockstates/dripstone_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/dripstone_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/dripstone_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/dripstone_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/dripstone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/dripstone_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json index 5c9c2b2e1a..04dd0f4672 100644 --- a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json @@ -3,7 +3,7 @@ { "apply": { "model": "create:block/encased_fluid_pipe/block_flat", - "x": -90 + "x": 270 }, "when": { "down": "false" @@ -56,7 +56,7 @@ { "apply": { "model": "create:block/encased_fluid_pipe/block_open", - "x": -90 + "x": 270 }, "when": { "down": "true" diff --git a/src/generated/resources/assets/create/blockstates/factory_gauge.json b/src/generated/resources/assets/create/blockstates/factory_gauge.json index d4f7371962..244cd84529 100644 --- a/src/generated/resources/assets/create/blockstates/factory_gauge.json +++ b/src/generated/resources/assets/create/blockstates/factory_gauge.json @@ -1,213 +1,54 @@ { "variants": { - "face=ceiling,facing=east,powered=false,waterlogged=false": { + "face=ceiling,facing=east": { "model": "create:block/factory_gauge/block", "x": 180, "y": 270 }, - "face=ceiling,facing=east,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=false,waterlogged=true": { + "face=ceiling,facing=north": { "model": "create:block/factory_gauge/block", "x": 180, "y": 180 }, - "face=ceiling,facing=north,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180 - }, - "face=ceiling,facing=south,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 180 - }, - "face=ceiling,facing=south,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180 - }, - "face=ceiling,facing=south,powered=true,waterlogged=true": { + "face=ceiling,facing=south": { "model": "create:block/factory_gauge/block", "x": 180 }, - "face=ceiling,facing=west,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true,waterlogged=true": { + "face=ceiling,facing=west": { "model": "create:block/factory_gauge/block", "x": 180, "y": 90 }, - "face=floor,facing=east,powered=false,waterlogged=false": { + "face=floor,facing=east": { "model": "create:block/factory_gauge/block", "y": 90 }, - "face=floor,facing=east,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "y": 90 - }, - "face=floor,facing=east,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "y": 90 - }, - "face=floor,facing=east,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "y": 90 - }, - "face=floor,facing=north,powered=false,waterlogged=false": { + "face=floor,facing=north": { "model": "create:block/factory_gauge/block" }, - "face=floor,facing=north,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block" - }, - "face=floor,facing=north,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block" - }, - "face=floor,facing=north,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block" - }, - "face=floor,facing=south,powered=false,waterlogged=false": { + "face=floor,facing=south": { "model": "create:block/factory_gauge/block", "y": 180 }, - "face=floor,facing=south,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "y": 180 - }, - "face=floor,facing=south,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "y": 180 - }, - "face=floor,facing=south,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "y": 180 - }, - "face=floor,facing=west,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "y": 270 - }, - "face=floor,facing=west,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "y": 270 - }, - "face=floor,facing=west,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "y": 270 - }, - "face=floor,facing=west,powered=true,waterlogged=true": { + "face=floor,facing=west": { "model": "create:block/factory_gauge/block", "y": 270 }, - "face=wall,facing=east,powered=false,waterlogged=false": { + "face=wall,facing=east": { "model": "create:block/factory_gauge/block", "x": 90, "y": 90 }, - "face=wall,facing=east,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 90 - }, - "face=wall,facing=north,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90 - }, - "face=wall,facing=north,powered=false,waterlogged=true": { + "face=wall,facing=north": { "model": "create:block/factory_gauge/block", "x": 90 }, - "face=wall,facing=north,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90 - }, - "face=wall,facing=north,powered=true,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 90 - }, - "face=wall,facing=south,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true,waterlogged=true": { + "face=wall,facing=south": { "model": "create:block/factory_gauge/block", "x": 90, "y": 180 }, - "face=wall,facing=west,powered=false,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=false,waterlogged=true": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true,waterlogged=false": { - "model": "create:block/factory_gauge/block", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true,waterlogged=true": { + "face=wall,facing=west": { "model": "create:block/factory_gauge/block", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/framed_glass_door.json b/src/generated/resources/assets/create/blockstates/framed_glass_door.json index 8c19e1e885..b54b65e7ff 100644 --- a/src/generated/resources/assets/create/blockstates/framed_glass_door.json +++ b/src/generated/resources/assets/create/blockstates/framed_glass_door.json @@ -1,244 +1,7 @@ { "variants": { - "facing=east,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=east,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=east,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=north,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=north,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=north,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=north,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=north,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=north,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=south,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom" - }, - "facing=south,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=south,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top" - }, - "facing=west,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=west,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 - }, - "facing=west,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/framed_glass_door/block_top", - "y": 90 + "": { + "model": "create:block/framed_glass_door/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/framed_glass_pane.json index 0152063733..cfcc920aac 100644 --- a/src/generated/resources/assets/create/blockstates/framed_glass_pane.json +++ b/src/generated/resources/assets/create/blockstates/framed_glass_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/framed_glass_pane_noside" + "model": "create:block/framed_glass_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/framed_glass_pane_noside_alt", + "model": "create:block/framed_glass_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/framed_glass_pane_side_alt", - "y": 90 + "model": "create:block/framed_glass_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/framed_glass_pane_noside", - "y": 270 + "model": "create:block/framed_glass_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/framed_glass_pane_side", + "model": "create:block/framed_glass_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/framed_glass_pane_noside_alt" + "model": "create:block/framed_glass_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/framed_glass_trapdoor.json b/src/generated/resources/assets/create/blockstates/framed_glass_trapdoor.json index 595d5f93fa..38d981f58e 100644 --- a/src/generated/resources/assets/create/blockstates/framed_glass_trapdoor.json +++ b/src/generated/resources/assets/create/blockstates/framed_glass_trapdoor.json @@ -1,66 +1,7 @@ { "variants": { - "facing=east,half=bottom,open=false": { - "model": "create:block/framed_glass_trapdoor/block_bottom", - "uvlock": true - }, - "facing=east,half=bottom,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 90 - }, - "facing=east,half=top,open=false": { - "model": "create:block/framed_glass_trapdoor/block_top", - "uvlock": true - }, - "facing=east,half=top,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 90 - }, - "facing=north,half=bottom,open=false": { - "model": "create:block/framed_glass_trapdoor/block_bottom", - "uvlock": true - }, - "facing=north,half=bottom,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open" - }, - "facing=north,half=top,open=false": { - "model": "create:block/framed_glass_trapdoor/block_top", - "uvlock": true - }, - "facing=north,half=top,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open" - }, - "facing=south,half=bottom,open=false": { - "model": "create:block/framed_glass_trapdoor/block_bottom", - "uvlock": true - }, - "facing=south,half=bottom,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 180 - }, - "facing=south,half=top,open=false": { - "model": "create:block/framed_glass_trapdoor/block_top", - "uvlock": true - }, - "facing=south,half=top,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 180 - }, - "facing=west,half=bottom,open=false": { - "model": "create:block/framed_glass_trapdoor/block_bottom", - "uvlock": true - }, - "facing=west,half=bottom,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 270 - }, - "facing=west,half=top,open=false": { - "model": "create:block/framed_glass_trapdoor/block_top", - "uvlock": true - }, - "facing=west,half=top,open=true": { - "model": "create:block/framed_glass_trapdoor/block_open", - "y": 270 + "": { + "model": "create:block/framed_glass_trapdoor/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json index db8231fe5a..1e6ae08dbf 100644 --- a/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json +++ b/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json @@ -1,26 +1,50 @@ { "variants": { - "alt=false,axis=x": { + "alt=false,axis=x,waterlogged=false": { "model": "create:block/fluid_pipe/window", "x": 90, "y": 90 }, - "alt=false,axis=y": { + "alt=false,axis=x,waterlogged=true": { + "model": "create:block/fluid_pipe/window", + "x": 90, + "y": 90 + }, + "alt=false,axis=y,waterlogged=false": { "model": "create:block/fluid_pipe/window" }, - "alt=false,axis=z": { + "alt=false,axis=y,waterlogged=true": { + "model": "create:block/fluid_pipe/window" + }, + "alt=false,axis=z,waterlogged=false": { + "model": "create:block/fluid_pipe/window", + "x": 90 + }, + "alt=false,axis=z,waterlogged=true": { "model": "create:block/fluid_pipe/window", "x": 90 }, - "alt=true,axis=x": { + "alt=true,axis=x,waterlogged=false": { "model": "create:block/fluid_pipe/window", "x": 90, "y": 90 }, - "alt=true,axis=y": { + "alt=true,axis=x,waterlogged=true": { + "model": "create:block/fluid_pipe/window", + "x": 90, + "y": 90 + }, + "alt=true,axis=y,waterlogged=false": { "model": "create:block/fluid_pipe/window" }, - "alt=true,axis=z": { + "alt=true,axis=y,waterlogged=true": { + "model": "create:block/fluid_pipe/window" + }, + "alt=true,axis=z,waterlogged=false": { + "model": "create:block/fluid_pipe/window", + "x": 90 + }, + "alt=true,axis=z,waterlogged=true": { "model": "create:block/fluid_pipe/window", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/granite_pillar.json b/src/generated/resources/assets/create/blockstates/granite_pillar.json index c64949cfe8..8c4aa0a2c7 100644 --- a/src/generated/resources/assets/create/blockstates/granite_pillar.json +++ b/src/generated/resources/assets/create/blockstates/granite_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/granite_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/granite_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/granite_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/granite_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/granite_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/granite_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/gray_toolbox.json b/src/generated/resources/assets/create/blockstates/gray_toolbox.json index e4f5cbceec..02d681c364 100644 --- a/src/generated/resources/assets/create/blockstates/gray_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/gray_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/gray_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/gray_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/gray_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/gray_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/gray_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/gray_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/gray_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/gray_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/gray_valve_handle.json index 5fe98fc8fa..8266c5845f 100644 --- a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/gray_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/gray_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/gray_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/gray_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/gray_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/gray_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/gray_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/gray_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/gray_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/gray_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/green_toolbox.json b/src/generated/resources/assets/create/blockstates/green_toolbox.json index 6dee9e452a..8f9ad8b785 100644 --- a/src/generated/resources/assets/create/blockstates/green_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/green_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/green_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/green_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/green_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/green_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/green_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/green_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/green_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/green_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/green_valve_handle.json b/src/generated/resources/assets/create/blockstates/green_valve_handle.json index 5b7fc64dd3..e4a4b4ddf1 100644 --- a/src/generated/resources/assets/create/blockstates/green_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/green_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/green_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/green_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/green_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/green_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/green_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/green_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/green_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/green_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/green_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json index 268ffea597..79592a68ee 100644 --- a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json +++ b/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside" + "model": "create:block/horizontal_framed_glass_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside_alt", + "model": "create:block/horizontal_framed_glass_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_side_alt", - "y": 90 + "model": "create:block/horizontal_framed_glass_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside", - "y": 270 + "model": "create:block/horizontal_framed_glass_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_side", + "model": "create:block/horizontal_framed_glass_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside_alt" + "model": "create:block/horizontal_framed_glass_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/industrial_iron_window_pane.json b/src/generated/resources/assets/create/blockstates/industrial_iron_window_pane.json index 4f32186a04..85e898e3d0 100644 --- a/src/generated/resources/assets/create/blockstates/industrial_iron_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/industrial_iron_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/industrial_iron_window_pane_noside" + "model": "create:block/industrial_iron_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/industrial_iron_window_pane_noside_alt", + "model": "create:block/industrial_iron_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/industrial_iron_window_pane_side_alt", - "y": 90 + "model": "create:block/industrial_iron_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/industrial_iron_window_pane_noside", - "y": 270 + "model": "create:block/industrial_iron_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/industrial_iron_window_pane_side", + "model": "create:block/industrial_iron_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/industrial_iron_window_pane_noside_alt" + "model": "create:block/industrial_iron_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/jungle_window_pane.json b/src/generated/resources/assets/create/blockstates/jungle_window_pane.json index 8e4c06f645..67540fc645 100644 --- a/src/generated/resources/assets/create/blockstates/jungle_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/jungle_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/jungle_window_pane_noside" + "model": "create:block/jungle_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/jungle_window_pane_noside_alt", + "model": "create:block/jungle_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/jungle_window_pane_side_alt", - "y": 90 + "model": "create:block/jungle_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/jungle_window_pane_noside", - "y": 270 + "model": "create:block/jungle_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/jungle_window_pane_side", + "model": "create:block/jungle_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/jungle_window_pane_noside_alt" + "model": "create:block/jungle_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/large_cogwheel.json b/src/generated/resources/assets/create/blockstates/large_cogwheel.json index 620157584e..7967ff5b6d 100644 --- a/src/generated/resources/assets/create/blockstates/large_cogwheel.json +++ b/src/generated/resources/assets/create/blockstates/large_cogwheel.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/large_cogwheel", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,waterlogged=true": { + "model": "create:block/large_cogwheel", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=false": { + "model": "create:block/large_cogwheel" + }, + "axis=y,waterlogged=true": { "model": "create:block/large_cogwheel" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/large_cogwheel", + "x": 90, + "y": 180 + }, + "axis=z,waterlogged=true": { "model": "create:block/large_cogwheel", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/lectern_controller.json b/src/generated/resources/assets/create/blockstates/lectern_controller.json index fda4883713..b6ec88be8a 100644 --- a/src/generated/resources/assets/create/blockstates/lectern_controller.json +++ b/src/generated/resources/assets/create/blockstates/lectern_controller.json @@ -1,62 +1,17 @@ { "variants": { - "facing=east,has_book=false,powered=false": { + "facing=east": { "model": "minecraft:block/lectern", "y": 90 }, - "facing=east,has_book=false,powered=true": { - "model": "minecraft:block/lectern", - "y": 90 - }, - "facing=east,has_book=true,powered=false": { - "model": "minecraft:block/lectern", - "y": 90 - }, - "facing=east,has_book=true,powered=true": { - "model": "minecraft:block/lectern", - "y": 90 - }, - "facing=north,has_book=false,powered=false": { + "facing=north": { "model": "minecraft:block/lectern" }, - "facing=north,has_book=false,powered=true": { - "model": "minecraft:block/lectern" - }, - "facing=north,has_book=true,powered=false": { - "model": "minecraft:block/lectern" - }, - "facing=north,has_book=true,powered=true": { - "model": "minecraft:block/lectern" - }, - "facing=south,has_book=false,powered=false": { + "facing=south": { "model": "minecraft:block/lectern", "y": 180 }, - "facing=south,has_book=false,powered=true": { - "model": "minecraft:block/lectern", - "y": 180 - }, - "facing=south,has_book=true,powered=false": { - "model": "minecraft:block/lectern", - "y": 180 - }, - "facing=south,has_book=true,powered=true": { - "model": "minecraft:block/lectern", - "y": 180 - }, - "facing=west,has_book=false,powered=false": { - "model": "minecraft:block/lectern", - "y": 270 - }, - "facing=west,has_book=false,powered=true": { - "model": "minecraft:block/lectern", - "y": 270 - }, - "facing=west,has_book=true,powered=false": { - "model": "minecraft:block/lectern", - "y": 270 - }, - "facing=west,has_book=true,powered=true": { + "facing=west": { "model": "minecraft:block/lectern", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/light_blue_toolbox.json b/src/generated/resources/assets/create/blockstates/light_blue_toolbox.json index 1ea0f71cbf..3d294e992b 100644 --- a/src/generated/resources/assets/create/blockstates/light_blue_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/light_blue_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/light_blue_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/light_blue_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/light_blue_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/light_blue_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/light_blue_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/light_blue_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/light_blue_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/light_blue_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json index 99b5d92735..cb430c071e 100644 --- a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/light_blue_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/light_blue_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/light_blue_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/light_blue_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/light_blue_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/light_blue_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/light_blue_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/light_gray_toolbox.json b/src/generated/resources/assets/create/blockstates/light_gray_toolbox.json index 41216e3004..0c2a2ec287 100644 --- a/src/generated/resources/assets/create/blockstates/light_gray_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/light_gray_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/light_gray_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/light_gray_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/light_gray_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/light_gray_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/light_gray_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/light_gray_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/light_gray_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/light_gray_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json index 168754019a..f60f10d39c 100644 --- a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/light_gray_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/light_gray_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/light_gray_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/light_gray_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/light_gray_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/light_gray_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/light_gray_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/lime_toolbox.json b/src/generated/resources/assets/create/blockstates/lime_toolbox.json index decf91433b..abd54f20ed 100644 --- a/src/generated/resources/assets/create/blockstates/lime_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/lime_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/lime_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/lime_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/lime_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/lime_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/lime_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/lime_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/lime_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/lime_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json b/src/generated/resources/assets/create/blockstates/lime_valve_handle.json index 2839dc407f..197a3b270d 100644 --- a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/lime_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/lime_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/lime_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/lime_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/lime_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/lime_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/lime_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/lime_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/lime_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/lime_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/limestone_pillar.json b/src/generated/resources/assets/create/blockstates/limestone_pillar.json index e18abc8ac4..125240f5ce 100644 --- a/src/generated/resources/assets/create/blockstates/limestone_pillar.json +++ b/src/generated/resources/assets/create/blockstates/limestone_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/limestone_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/limestone_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/limestone_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/limestone_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/limestone_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/magenta_toolbox.json b/src/generated/resources/assets/create/blockstates/magenta_toolbox.json index 01c2306c78..b21b2a2969 100644 --- a/src/generated/resources/assets/create/blockstates/magenta_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/magenta_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/magenta_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/magenta_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/magenta_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/magenta_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/magenta_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/magenta_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/magenta_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/magenta_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json b/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json index 0d64d77286..4242eff05e 100644 --- a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/magenta_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/magenta_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/magenta_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/magenta_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/magenta_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/magenta_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/magenta_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/mangrove_window_pane.json b/src/generated/resources/assets/create/blockstates/mangrove_window_pane.json index f459d6f8d8..5bb858488d 100644 --- a/src/generated/resources/assets/create/blockstates/mangrove_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/mangrove_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/mangrove_window_pane_noside" + "model": "create:block/mangrove_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/mangrove_window_pane_noside_alt", + "model": "create:block/mangrove_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/mangrove_window_pane_side_alt", - "y": 90 + "model": "create:block/mangrove_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/mangrove_window_pane_noside", - "y": 270 + "model": "create:block/mangrove_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/mangrove_window_pane_side", + "model": "create:block/mangrove_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/mangrove_window_pane_noside_alt" + "model": "create:block/mangrove_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json index bef0e9b32e..7d66ee2b49 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json @@ -1,53 +1,105 @@ { "variants": { - "facing=down,type=normal": { + "facing=down,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 180 }, - "facing=down,type=sticky": { + "facing=down,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 180 + }, + "facing=down,type=sticky,waterlogged=false": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 180 + }, + "facing=down,type=sticky,waterlogged=true": { "model": "create:block/mechanical_piston/sticky/head", "x": 180 }, - "facing=east,type=normal": { + "facing=east,type=normal,waterlogged=false": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 90 + }, + "facing=east,type=normal,waterlogged=true": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 90 }, - "facing=east,type=sticky": { + "facing=east,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 90 }, - "facing=north,type=normal": { + "facing=east,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 90 + }, + "facing=north,type=normal,waterlogged=false": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90 + }, + "facing=north,type=normal,waterlogged=true": { "model": "create:block/mechanical_piston/normal/head", "x": 90 }, - "facing=north,type=sticky": { + "facing=north,type=sticky,waterlogged=false": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90 + }, + "facing=north,type=sticky,waterlogged=true": { "model": "create:block/mechanical_piston/sticky/head", "x": 90 }, - "facing=south,type=normal": { + "facing=south,type=normal,waterlogged=false": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 180 }, - "facing=south,type=sticky": { + "facing=south,type=normal,waterlogged=true": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 180 + }, + "facing=south,type=sticky,waterlogged=false": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 180 + }, + "facing=south,type=sticky,waterlogged=true": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 180 }, - "facing=up,type=normal": { + "facing=up,type=normal,waterlogged=false": { + "model": "create:block/mechanical_piston/normal/head" + }, + "facing=up,type=normal,waterlogged=true": { "model": "create:block/mechanical_piston/normal/head" }, - "facing=up,type=sticky": { + "facing=up,type=sticky,waterlogged=false": { "model": "create:block/mechanical_piston/sticky/head" }, - "facing=west,type=normal": { + "facing=up,type=sticky,waterlogged=true": { + "model": "create:block/mechanical_piston/sticky/head" + }, + "facing=west,type=normal,waterlogged=false": { + "model": "create:block/mechanical_piston/normal/head", + "x": 90, + "y": 270 + }, + "facing=west,type=normal,waterlogged=true": { "model": "create:block/mechanical_piston/normal/head", "x": 90, "y": 270 }, - "facing=west,type=sticky": { + "facing=west,type=sticky,waterlogged=false": { + "model": "create:block/mechanical_piston/sticky/head", + "x": 90, + "y": 270 + }, + "facing=west,type=sticky,waterlogged=true": { "model": "create:block/mechanical_piston/sticky/head", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/mechanical_pump.json b/src/generated/resources/assets/create/blockstates/mechanical_pump.json index e75e38f7e6..140ca4c44a 100644 --- a/src/generated/resources/assets/create/blockstates/mechanical_pump.json +++ b/src/generated/resources/assets/create/blockstates/mechanical_pump.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 180 }, - "facing=east": { + "facing=down,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 180 + }, + "facing=east,waterlogged=false": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 90 + }, + "facing=east,waterlogged=true": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 90 }, - "facing=north": { + "facing=north,waterlogged=false": { + "model": "create:block/mechanical_pump/block", + "x": 90 + }, + "facing=north,waterlogged=true": { "model": "create:block/mechanical_pump/block", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 180 }, - "facing=up": { + "facing=south,waterlogged=true": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 180 + }, + "facing=up,waterlogged=false": { + "model": "create:block/mechanical_pump/block" + }, + "facing=up,waterlogged=true": { "model": "create:block/mechanical_pump/block" }, - "facing=west": { + "facing=west,waterlogged=false": { + "model": "create:block/mechanical_pump/block", + "x": 90, + "y": 270 + }, + "facing=west,waterlogged=true": { "model": "create:block/mechanical_pump/block", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/netherite_backtank.json b/src/generated/resources/assets/create/blockstates/netherite_backtank.json index 7adacbc27c..0f38eae9e9 100644 --- a/src/generated/resources/assets/create/blockstates/netherite_backtank.json +++ b/src/generated/resources/assets/create/blockstates/netherite_backtank.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/netherite_backtank/block", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/netherite_backtank/block", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/netherite_backtank/block" }, - "facing=north,waterlogged=true": { - "model": "create:block/netherite_backtank/block" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/netherite_backtank/block", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/netherite_backtank/block", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/netherite_backtank/block", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/netherite_backtank/block", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/oak_window_pane.json b/src/generated/resources/assets/create/blockstates/oak_window_pane.json index 11b6706c2b..946c1a7e76 100644 --- a/src/generated/resources/assets/create/blockstates/oak_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/oak_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/oak_window_pane_noside" + "model": "create:block/oak_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/oak_window_pane_noside_alt", + "model": "create:block/oak_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/oak_window_pane_side_alt", - "y": 90 + "model": "create:block/oak_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/oak_window_pane_noside", - "y": 270 + "model": "create:block/oak_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/oak_window_pane_side", + "model": "create:block/oak_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/oak_window_pane_noside_alt" + "model": "create:block/oak_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/ochrum.json b/src/generated/resources/assets/create/blockstates/ochrum.json index 024cf71fbd..190d376a20 100644 --- a/src/generated/resources/assets/create/blockstates/ochrum.json +++ b/src/generated/resources/assets/create/blockstates/ochrum.json @@ -1,18 +1,7 @@ { "variants": { - "": [ - { - "model": "create:block/ochrum_natural_0" - }, - { - "model": "create:block/ochrum_natural_1" - }, - { - "model": "create:block/ochrum_natural_2" - }, - { - "model": "create:block/ochrum_natural_3" - } - ] + "": { + "model": "create:block/ochrum_natural_0" + } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/ochrum_pillar.json b/src/generated/resources/assets/create/blockstates/ochrum_pillar.json index 62b6cb19a4..d8d75e02c1 100644 --- a/src/generated/resources/assets/create/blockstates/ochrum_pillar.json +++ b/src/generated/resources/assets/create/blockstates/ochrum_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/ochrum_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/ochrum_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/ochrum_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/ochrum_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/ochrum_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/orange_toolbox.json b/src/generated/resources/assets/create/blockstates/orange_toolbox.json index 26cd921efc..1ddd7ff9fb 100644 --- a/src/generated/resources/assets/create/blockstates/orange_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/orange_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/orange_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/orange_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/orange_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/orange_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/orange_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/orange_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/orange_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/orange_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json b/src/generated/resources/assets/create/blockstates/orange_valve_handle.json index 92d8f08caa..b0a9ceb87e 100644 --- a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/orange_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/orange_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/orange_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/orange_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/orange_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/orange_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/orange_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/orange_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/orange_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/orange_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json b/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json index b382a7d55a..0ee5261f07 100644 --- a/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/ornate_iron_window_pane_noside" + "model": "create:block/ornate_iron_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/ornate_iron_window_pane_noside_alt", + "model": "create:block/ornate_iron_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/ornate_iron_window_pane_side_alt", - "y": 90 + "model": "create:block/ornate_iron_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/ornate_iron_window_pane_noside", - "y": 270 + "model": "create:block/ornate_iron_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/ornate_iron_window_pane_side", + "model": "create:block/ornate_iron_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/ornate_iron_window_pane_noside_alt" + "model": "create:block/ornate_iron_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/pink_toolbox.json b/src/generated/resources/assets/create/blockstates/pink_toolbox.json index 1c0846e4df..47c6cd510d 100644 --- a/src/generated/resources/assets/create/blockstates/pink_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/pink_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/pink_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/pink_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/pink_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/pink_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/pink_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/pink_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/pink_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/pink_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json b/src/generated/resources/assets/create/blockstates/pink_valve_handle.json index 06b8ad9f80..31128bd5a7 100644 --- a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/pink_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/pink_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/pink_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/pink_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/pink_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/pink_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/pink_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/pink_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/pink_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/pink_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json index 1a0fabc2b6..5b3e688782 100644 --- a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json +++ b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json @@ -1,27 +1,53 @@ { "variants": { - "facing=down": { + "facing=down,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 180 }, - "facing=east": { + "facing=down,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 180 + }, + "facing=east,waterlogged=false": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 90 + }, + "facing=east,waterlogged=true": { "model": "create:block/piston_extension_pole", "x": 90, "y": 90 }, - "facing=north": { + "facing=north,waterlogged=false": { + "model": "create:block/piston_extension_pole", + "x": 90 + }, + "facing=north,waterlogged=true": { "model": "create:block/piston_extension_pole", "x": 90 }, - "facing=south": { + "facing=south,waterlogged=false": { "model": "create:block/piston_extension_pole", "x": 90, "y": 180 }, - "facing=up": { + "facing=south,waterlogged=true": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 180 + }, + "facing=up,waterlogged=false": { + "model": "create:block/piston_extension_pole" + }, + "facing=up,waterlogged=true": { "model": "create:block/piston_extension_pole" }, - "facing=west": { + "facing=west,waterlogged=false": { + "model": "create:block/piston_extension_pole", + "x": 90, + "y": 270 + }, + "facing=west,waterlogged=true": { "model": "create:block/piston_extension_pole", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/placard.json b/src/generated/resources/assets/create/blockstates/placard.json index a311335cce..60a0492f7e 100644 --- a/src/generated/resources/assets/create/blockstates/placard.json +++ b/src/generated/resources/assets/create/blockstates/placard.json @@ -1,213 +1,54 @@ { "variants": { - "face=ceiling,facing=east,powered=false,waterlogged=false": { + "face=ceiling,facing=east": { "model": "create:block/placard", "x": 180, "y": 270 }, - "face=ceiling,facing=east,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true,waterlogged=true": { - "model": "create:block/placard", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=false,waterlogged=true": { + "face=ceiling,facing=north": { "model": "create:block/placard", "x": 180, "y": 180 }, - "face=ceiling,facing=north,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=true,waterlogged=true": { - "model": "create:block/placard", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 180 - }, - "face=ceiling,facing=south,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 180 - }, - "face=ceiling,facing=south,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 180 - }, - "face=ceiling,facing=south,powered=true,waterlogged=true": { + "face=ceiling,facing=south": { "model": "create:block/placard", "x": 180 }, - "face=ceiling,facing=west,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true,waterlogged=true": { + "face=ceiling,facing=west": { "model": "create:block/placard", "x": 180, "y": 90 }, - "face=floor,facing=east,powered=false,waterlogged=false": { + "face=floor,facing=east": { "model": "create:block/placard", "y": 90 }, - "face=floor,facing=east,powered=false,waterlogged=true": { - "model": "create:block/placard", - "y": 90 - }, - "face=floor,facing=east,powered=true,waterlogged=false": { - "model": "create:block/placard", - "y": 90 - }, - "face=floor,facing=east,powered=true,waterlogged=true": { - "model": "create:block/placard", - "y": 90 - }, - "face=floor,facing=north,powered=false,waterlogged=false": { + "face=floor,facing=north": { "model": "create:block/placard" }, - "face=floor,facing=north,powered=false,waterlogged=true": { - "model": "create:block/placard" - }, - "face=floor,facing=north,powered=true,waterlogged=false": { - "model": "create:block/placard" - }, - "face=floor,facing=north,powered=true,waterlogged=true": { - "model": "create:block/placard" - }, - "face=floor,facing=south,powered=false,waterlogged=false": { + "face=floor,facing=south": { "model": "create:block/placard", "y": 180 }, - "face=floor,facing=south,powered=false,waterlogged=true": { - "model": "create:block/placard", - "y": 180 - }, - "face=floor,facing=south,powered=true,waterlogged=false": { - "model": "create:block/placard", - "y": 180 - }, - "face=floor,facing=south,powered=true,waterlogged=true": { - "model": "create:block/placard", - "y": 180 - }, - "face=floor,facing=west,powered=false,waterlogged=false": { - "model": "create:block/placard", - "y": 270 - }, - "face=floor,facing=west,powered=false,waterlogged=true": { - "model": "create:block/placard", - "y": 270 - }, - "face=floor,facing=west,powered=true,waterlogged=false": { - "model": "create:block/placard", - "y": 270 - }, - "face=floor,facing=west,powered=true,waterlogged=true": { + "face=floor,facing=west": { "model": "create:block/placard", "y": 270 }, - "face=wall,facing=east,powered=false,waterlogged=false": { + "face=wall,facing=east": { "model": "create:block/placard", "x": 90, "y": 90 }, - "face=wall,facing=east,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true,waterlogged=true": { - "model": "create:block/placard", - "x": 90, - "y": 90 - }, - "face=wall,facing=north,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 90 - }, - "face=wall,facing=north,powered=false,waterlogged=true": { + "face=wall,facing=north": { "model": "create:block/placard", "x": 90 }, - "face=wall,facing=north,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 90 - }, - "face=wall,facing=north,powered=true,waterlogged=true": { - "model": "create:block/placard", - "x": 90 - }, - "face=wall,facing=south,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true,waterlogged=true": { + "face=wall,facing=south": { "model": "create:block/placard", "x": 90, "y": 180 }, - "face=wall,facing=west,powered=false,waterlogged=false": { - "model": "create:block/placard", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=false,waterlogged=true": { - "model": "create:block/placard", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true,waterlogged=false": { - "model": "create:block/placard", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true,waterlogged=true": { + "face=wall,facing=west": { "model": "create:block/placard", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_andesite_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_andesite_wall.json index 1ad5d01673..1fa2eee5de 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_andesite_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_andesite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_andesite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_andesite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_andesite_wall_side_tall", + "model": "create:block/polished_cut_andesite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_andesite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_andesite_wall_side", + "model": "create:block/polished_cut_andesite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_andesite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_andesite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_asurine_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_asurine_wall.json index 6c444b4833..fc60027c27 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_asurine_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_asurine_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_asurine_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_asurine_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_asurine_wall_side_tall", + "model": "create:block/polished_cut_asurine_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_asurine_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_asurine_wall_side", + "model": "create:block/polished_cut_asurine_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_asurine_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_asurine_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_calcite_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_calcite_wall.json index b309559224..1275fe468e 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_calcite_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_calcite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_calcite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_calcite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_calcite_wall_side_tall", + "model": "create:block/polished_cut_calcite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_calcite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_calcite_wall_side", + "model": "create:block/polished_cut_calcite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_calcite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_calcite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_crimsite_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_crimsite_wall.json index 1ee0578e4e..a36996c93b 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_crimsite_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_crimsite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_crimsite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_crimsite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_crimsite_wall_side_tall", + "model": "create:block/polished_cut_crimsite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_crimsite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_crimsite_wall_side", + "model": "create:block/polished_cut_crimsite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_crimsite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_crimsite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_deepslate_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_deepslate_wall.json index 1dd16cebda..b983ba9dde 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_deepslate_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_deepslate_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_deepslate_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_deepslate_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_deepslate_wall_side_tall", + "model": "create:block/polished_cut_deepslate_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_deepslate_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_deepslate_wall_side", + "model": "create:block/polished_cut_deepslate_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_deepslate_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_deepslate_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_diorite_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_diorite_wall.json index 81fb715bd7..8936eaca85 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_diorite_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_diorite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_diorite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_diorite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_diorite_wall_side_tall", + "model": "create:block/polished_cut_diorite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_diorite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_diorite_wall_side", + "model": "create:block/polished_cut_diorite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_diorite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_diorite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_dripstone_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_dripstone_wall.json index 63b2955311..6b4a464339 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_dripstone_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_dripstone_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_dripstone_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_dripstone_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_dripstone_wall_side_tall", + "model": "create:block/polished_cut_dripstone_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_dripstone_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_dripstone_wall_side", + "model": "create:block/polished_cut_dripstone_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_dripstone_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_dripstone_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_granite_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_granite_wall.json index 73114fc837..7a3d6d379a 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_granite_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_granite_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_granite_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_granite_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_granite_wall_side_tall", + "model": "create:block/polished_cut_granite_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_granite_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_granite_wall_side", + "model": "create:block/polished_cut_granite_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_granite_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_granite_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_limestone_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_limestone_wall.json index 17a2b2203e..179608af91 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_limestone_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_limestone_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_limestone_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_limestone_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_limestone_wall_side_tall", + "model": "create:block/polished_cut_limestone_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_limestone_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_limestone_wall_side", + "model": "create:block/polished_cut_limestone_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_limestone_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_limestone_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_ochrum_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_ochrum_wall.json index 8e980e59bd..6c66849374 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_ochrum_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_ochrum_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_ochrum_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_ochrum_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_ochrum_wall_side_tall", + "model": "create:block/polished_cut_ochrum_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_ochrum_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_ochrum_wall_side", + "model": "create:block/polished_cut_ochrum_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_ochrum_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_ochrum_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_scorchia_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_scorchia_wall.json index d7b90b569e..31b21fa2ca 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_scorchia_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_scorchia_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_scorchia_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_scorchia_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_scorchia_wall_side_tall", + "model": "create:block/polished_cut_scorchia_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_scorchia_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_scorchia_wall_side", + "model": "create:block/polished_cut_scorchia_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_scorchia_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_scorchia_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_scoria_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_scoria_wall.json index 26392ad528..a3a41dc67d 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_scoria_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_scoria_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_scoria_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_scoria_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_scoria_wall_side_tall", + "model": "create:block/polished_cut_scoria_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_scoria_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_scoria_wall_side", + "model": "create:block/polished_cut_scoria_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_scoria_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_scoria_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_tuff_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_tuff_wall.json index 3ffb186566..8c0db45100 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_tuff_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_tuff_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_tuff_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_tuff_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_tuff_wall_side_tall", + "model": "create:block/polished_cut_tuff_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_tuff_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_tuff_wall_side", + "model": "create:block/polished_cut_tuff_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_tuff_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_tuff_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/polished_cut_veridium_wall.json b/src/generated/resources/assets/create/blockstates/polished_cut_veridium_wall.json index 6f08ea9b81..4ff99e9c6b 100644 --- a/src/generated/resources/assets/create/blockstates/polished_cut_veridium_wall.json +++ b/src/generated/resources/assets/create/blockstates/polished_cut_veridium_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/polished_cut_veridium_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/polished_cut_veridium_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/polished_cut_veridium_wall_side_tall", + "model": "create:block/polished_cut_veridium_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/polished_cut_veridium_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/polished_cut_veridium_wall_side", + "model": "create:block/polished_cut_veridium_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/polished_cut_veridium_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/polished_cut_veridium_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/powered_shaft.json b/src/generated/resources/assets/create/blockstates/powered_shaft.json index c95246c452..a43b3efafe 100644 --- a/src/generated/resources/assets/create/blockstates/powered_shaft.json +++ b/src/generated/resources/assets/create/blockstates/powered_shaft.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/powered_shaft", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,waterlogged=true": { + "model": "create:block/powered_shaft", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=false": { + "model": "create:block/powered_shaft" + }, + "axis=y,waterlogged=true": { "model": "create:block/powered_shaft" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/powered_shaft", + "x": 90, + "y": 180 + }, + "axis=z,waterlogged=true": { "model": "create:block/powered_shaft", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/purple_toolbox.json b/src/generated/resources/assets/create/blockstates/purple_toolbox.json index bb73bbee3e..458b0547c5 100644 --- a/src/generated/resources/assets/create/blockstates/purple_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/purple_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/purple_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/purple_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/purple_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/purple_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/purple_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/purple_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/purple_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/purple_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json b/src/generated/resources/assets/create/blockstates/purple_valve_handle.json index 8750a75259..fca51424a5 100644 --- a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/purple_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/purple_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/purple_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/purple_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/purple_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/purple_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/purple_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/purple_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/purple_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/purple_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/red_toolbox.json b/src/generated/resources/assets/create/blockstates/red_toolbox.json index d5a2b1a16b..96abbe8992 100644 --- a/src/generated/resources/assets/create/blockstates/red_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/red_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/red_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/red_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/red_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/red_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/red_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/red_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/red_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/red_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/red_valve_handle.json b/src/generated/resources/assets/create/blockstates/red_valve_handle.json index 8f57b30ed3..3ca0bf7dac 100644 --- a/src/generated/resources/assets/create/blockstates/red_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/red_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/red_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/red_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/red_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/red_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/red_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/red_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/red_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/red_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/red_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/schematic_table.json b/src/generated/resources/assets/create/blockstates/schematic_table.json index 63fa883538..0a46542ad7 100644 --- a/src/generated/resources/assets/create/blockstates/schematic_table.json +++ b/src/generated/resources/assets/create/blockstates/schematic_table.json @@ -1,18 +1,18 @@ { "variants": { "facing=east": { - "model": "create:block/schematic_table", + "model": "create:schematic_table", "y": 270 }, "facing=north": { - "model": "create:block/schematic_table", + "model": "create:schematic_table", "y": 180 }, "facing=south": { - "model": "create:block/schematic_table" + "model": "create:schematic_table" }, "facing=west": { - "model": "create:block/schematic_table", + "model": "create:schematic_table", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/scorchia_pillar.json b/src/generated/resources/assets/create/blockstates/scorchia_pillar.json index afef5796f6..173ce22698 100644 --- a/src/generated/resources/assets/create/blockstates/scorchia_pillar.json +++ b/src/generated/resources/assets/create/blockstates/scorchia_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/scorchia_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/scorchia_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/scorchia_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/scorchia_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/scorchia_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/scoria_pillar.json b/src/generated/resources/assets/create/blockstates/scoria_pillar.json index 6bc3ec63c6..fa1101ef0f 100644 --- a/src/generated/resources/assets/create/blockstates/scoria_pillar.json +++ b/src/generated/resources/assets/create/blockstates/scoria_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/scoria_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/scoria_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/scoria_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/scoria_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/scoria_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/shaft.json b/src/generated/resources/assets/create/blockstates/shaft.json index c4cc5b98b2..b8480e9ff1 100644 --- a/src/generated/resources/assets/create/blockstates/shaft.json +++ b/src/generated/resources/assets/create/blockstates/shaft.json @@ -1,14 +1,27 @@ { "variants": { - "axis=x": { + "axis=x,waterlogged=false": { "model": "create:block/shaft", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,waterlogged=true": { + "model": "create:block/shaft", + "x": 90, + "y": 90 + }, + "axis=y,waterlogged=false": { + "model": "create:block/shaft" + }, + "axis=y,waterlogged=true": { "model": "create:block/shaft" }, - "axis=z": { + "axis=z,waterlogged=false": { + "model": "create:block/shaft", + "x": 90, + "y": 180 + }, + "axis=z,waterlogged=true": { "model": "create:block/shaft", "x": 90, "y": 180 diff --git a/src/generated/resources/assets/create/blockstates/small_andesite_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_andesite_brick_wall.json index 41aac9caf0..41dd5f255a 100644 --- a/src/generated/resources/assets/create/blockstates/small_andesite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_andesite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_andesite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_andesite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_andesite_bricks_wall_side_tall", + "model": "create:block/small_andesite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_andesite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_andesite_bricks_wall_side", + "model": "create:block/small_andesite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_andesite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_andesite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_asurine_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_asurine_brick_wall.json index ab19f6e213..e99b712e47 100644 --- a/src/generated/resources/assets/create/blockstates/small_asurine_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_asurine_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_asurine_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_asurine_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_asurine_bricks_wall_side_tall", + "model": "create:block/small_asurine_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_asurine_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_asurine_bricks_wall_side", + "model": "create:block/small_asurine_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_asurine_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_asurine_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_calcite_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_calcite_brick_wall.json index d0d55e0928..00f94045dd 100644 --- a/src/generated/resources/assets/create/blockstates/small_calcite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_calcite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_calcite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_calcite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_calcite_bricks_wall_side_tall", + "model": "create:block/small_calcite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_calcite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_calcite_bricks_wall_side", + "model": "create:block/small_calcite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_calcite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_calcite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_crimsite_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_crimsite_brick_wall.json index 56b73f48b1..1f8531bbac 100644 --- a/src/generated/resources/assets/create/blockstates/small_crimsite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_crimsite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_crimsite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_crimsite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_crimsite_bricks_wall_side_tall", + "model": "create:block/small_crimsite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_crimsite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_crimsite_bricks_wall_side", + "model": "create:block/small_crimsite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_crimsite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_crimsite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_deepslate_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_deepslate_brick_wall.json index f72583262b..f96901dbb8 100644 --- a/src/generated/resources/assets/create/blockstates/small_deepslate_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_deepslate_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_deepslate_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_deepslate_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_deepslate_bricks_wall_side_tall", + "model": "create:block/small_deepslate_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_deepslate_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_deepslate_bricks_wall_side", + "model": "create:block/small_deepslate_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_deepslate_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_deepslate_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_diorite_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_diorite_brick_wall.json index 664dce10a1..e8e51eb7d4 100644 --- a/src/generated/resources/assets/create/blockstates/small_diorite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_diorite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_diorite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_diorite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_diorite_bricks_wall_side_tall", + "model": "create:block/small_diorite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_diorite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_diorite_bricks_wall_side", + "model": "create:block/small_diorite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_diorite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_diorite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_dripstone_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_dripstone_brick_wall.json index 91d5c2f12d..b75e9c8066 100644 --- a/src/generated/resources/assets/create/blockstates/small_dripstone_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_dripstone_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_dripstone_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_dripstone_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_dripstone_bricks_wall_side_tall", + "model": "create:block/small_dripstone_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_dripstone_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_dripstone_bricks_wall_side", + "model": "create:block/small_dripstone_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_dripstone_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_dripstone_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_granite_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_granite_brick_wall.json index 44fe531ec0..f6b123de93 100644 --- a/src/generated/resources/assets/create/blockstates/small_granite_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_granite_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_granite_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_granite_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_granite_bricks_wall_side_tall", + "model": "create:block/small_granite_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_granite_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_granite_bricks_wall_side", + "model": "create:block/small_granite_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_granite_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_granite_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_limestone_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_limestone_brick_wall.json index 24f4d6969d..018700aa35 100644 --- a/src/generated/resources/assets/create/blockstates/small_limestone_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_limestone_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_limestone_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_limestone_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_limestone_bricks_wall_side_tall", + "model": "create:block/small_limestone_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_limestone_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_limestone_bricks_wall_side", + "model": "create:block/small_limestone_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_limestone_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_limestone_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_ochrum_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_ochrum_brick_wall.json index 84d4a9fba4..5400702398 100644 --- a/src/generated/resources/assets/create/blockstates/small_ochrum_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_ochrum_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_ochrum_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_ochrum_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_ochrum_bricks_wall_side_tall", + "model": "create:block/small_ochrum_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_ochrum_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_ochrum_bricks_wall_side", + "model": "create:block/small_ochrum_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_ochrum_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_ochrum_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_scorchia_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_scorchia_brick_wall.json index 5470c6d3d4..f8828b183c 100644 --- a/src/generated/resources/assets/create/blockstates/small_scorchia_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_scorchia_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_scorchia_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_scorchia_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_scorchia_bricks_wall_side_tall", + "model": "create:block/small_scorchia_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_scorchia_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_scorchia_bricks_wall_side", + "model": "create:block/small_scorchia_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_scorchia_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_scorchia_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_scoria_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_scoria_brick_wall.json index 4eb023894d..1a94d5a114 100644 --- a/src/generated/resources/assets/create/blockstates/small_scoria_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_scoria_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_scoria_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_scoria_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_scoria_bricks_wall_side_tall", + "model": "create:block/small_scoria_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_scoria_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_scoria_bricks_wall_side", + "model": "create:block/small_scoria_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_scoria_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_scoria_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_tuff_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_tuff_brick_wall.json index 18dbd2369e..68953f9b55 100644 --- a/src/generated/resources/assets/create/blockstates/small_tuff_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_tuff_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_tuff_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_tuff_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_tuff_bricks_wall_side_tall", + "model": "create:block/small_tuff_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_tuff_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_tuff_bricks_wall_side", + "model": "create:block/small_tuff_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_tuff_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_tuff_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/small_veridium_brick_wall.json b/src/generated/resources/assets/create/blockstates/small_veridium_brick_wall.json index 7144038636..dfe4f0d974 100644 --- a/src/generated/resources/assets/create/blockstates/small_veridium_brick_wall.json +++ b/src/generated/resources/assets/create/blockstates/small_veridium_brick_wall.json @@ -8,6 +8,15 @@ "up": "true" } }, + { + "apply": { + "model": "create:block/small_veridium_bricks_wall_side", + "uvlock": true + }, + "when": { + "north": "low" + } + }, { "apply": { "model": "create:block/small_veridium_bricks_wall_side", @@ -20,21 +29,22 @@ }, { "apply": { - "model": "create:block/small_veridium_bricks_wall_side_tall", + "model": "create:block/small_veridium_bricks_wall_side", "uvlock": true, - "y": 90 + "y": 180 }, "when": { - "east": "tall" + "south": "low" } }, { "apply": { "model": "create:block/small_veridium_bricks_wall_side", - "uvlock": true + "uvlock": true, + "y": 270 }, "when": { - "north": "low" + "west": "low" } }, { @@ -48,12 +58,12 @@ }, { "apply": { - "model": "create:block/small_veridium_bricks_wall_side", + "model": "create:block/small_veridium_bricks_wall_side_tall", "uvlock": true, - "y": 180 + "y": 90 }, "when": { - "south": "low" + "east": "tall" } }, { @@ -66,16 +76,6 @@ "south": "tall" } }, - { - "apply": { - "model": "create:block/small_veridium_bricks_wall_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": "low" - } - }, { "apply": { "model": "create:block/small_veridium_bricks_wall_side_tall", diff --git a/src/generated/resources/assets/create/blockstates/spruce_window_pane.json b/src/generated/resources/assets/create/blockstates/spruce_window_pane.json index 23bda9afa9..01d9fe830f 100644 --- a/src/generated/resources/assets/create/blockstates/spruce_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/spruce_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/spruce_window_pane_noside" + "model": "create:block/spruce_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/spruce_window_pane_noside_alt", + "model": "create:block/spruce_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/spruce_window_pane_side_alt", - "y": 90 + "model": "create:block/spruce_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/spruce_window_pane_noside", - "y": 270 + "model": "create:block/spruce_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/spruce_window_pane_side", + "model": "create:block/spruce_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/spruce_window_pane_noside_alt" + "model": "create:block/spruce_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/steam_engine.json b/src/generated/resources/assets/create/blockstates/steam_engine.json index f9601f21ff..cb221ac524 100644 --- a/src/generated/resources/assets/create/blockstates/steam_engine.json +++ b/src/generated/resources/assets/create/blockstates/steam_engine.json @@ -1,107 +1,54 @@ { "variants": { - "face=ceiling,facing=east,waterlogged=false": { + "face=ceiling,facing=east": { "model": "create:block/steam_engine/block", "x": 180, "y": 270 }, - "face=ceiling,facing=east,waterlogged=true": { - "model": "create:block/steam_engine/block", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,waterlogged=false": { + "face=ceiling,facing=north": { "model": "create:block/steam_engine/block", "x": 180, "y": 180 }, - "face=ceiling,facing=north,waterlogged=true": { - "model": "create:block/steam_engine/block", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,waterlogged=false": { - "model": "create:block/steam_engine/block", - "x": 180 - }, - "face=ceiling,facing=south,waterlogged=true": { + "face=ceiling,facing=south": { "model": "create:block/steam_engine/block", "x": 180 }, - "face=ceiling,facing=west,waterlogged=false": { + "face=ceiling,facing=west": { "model": "create:block/steam_engine/block", "x": 180, "y": 90 }, - "face=ceiling,facing=west,waterlogged=true": { - "model": "create:block/steam_engine/block", - "x": 180, - "y": 90 - }, - "face=floor,facing=east,waterlogged=false": { - "model": "create:block/steam_engine/block", - "y": 90 - }, - "face=floor,facing=east,waterlogged=true": { + "face=floor,facing=east": { "model": "create:block/steam_engine/block", "y": 90 }, - "face=floor,facing=north,waterlogged=false": { + "face=floor,facing=north": { "model": "create:block/steam_engine/block" }, - "face=floor,facing=north,waterlogged=true": { - "model": "create:block/steam_engine/block" - }, - "face=floor,facing=south,waterlogged=false": { + "face=floor,facing=south": { "model": "create:block/steam_engine/block", "y": 180 }, - "face=floor,facing=south,waterlogged=true": { - "model": "create:block/steam_engine/block", - "y": 180 - }, - "face=floor,facing=west,waterlogged=false": { - "model": "create:block/steam_engine/block", - "y": 270 - }, - "face=floor,facing=west,waterlogged=true": { + "face=floor,facing=west": { "model": "create:block/steam_engine/block", "y": 270 }, - "face=wall,facing=east,waterlogged=false": { + "face=wall,facing=east": { "model": "create:block/steam_engine/block", "x": 90, "y": 90 }, - "face=wall,facing=east,waterlogged=true": { - "model": "create:block/steam_engine/block", - "x": 90, - "y": 90 - }, - "face=wall,facing=north,waterlogged=false": { - "model": "create:block/steam_engine/block", - "x": 90 - }, - "face=wall,facing=north,waterlogged=true": { + "face=wall,facing=north": { "model": "create:block/steam_engine/block", "x": 90 }, - "face=wall,facing=south,waterlogged=false": { - "model": "create:block/steam_engine/block", - "x": 90, - "y": 180 - }, - "face=wall,facing=south,waterlogged=true": { + "face=wall,facing=south": { "model": "create:block/steam_engine/block", "x": 90, "y": 180 }, - "face=wall,facing=west,waterlogged=false": { - "model": "create:block/steam_engine/block", - "x": 90, - "y": 270 - }, - "face=wall,facing=west,waterlogged=true": { + "face=wall,facing=west": { "model": "create:block/steam_engine/block", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json b/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json index c15bd25189..2ac3116b2c 100644 --- a/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json +++ b/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/tiled_glass_pane_noside" + "model": "create:block/tiled_glass_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/tiled_glass_pane_noside_alt", + "model": "create:block/tiled_glass_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/tiled_glass_pane_side_alt", - "y": 90 + "model": "create:block/tiled_glass_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/tiled_glass_pane_noside", - "y": 270 + "model": "create:block/tiled_glass_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/tiled_glass_pane_side", + "model": "create:block/tiled_glass_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/tiled_glass_pane_noside_alt" + "model": "create:block/tiled_glass_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/train_door.json b/src/generated/resources/assets/create/blockstates/train_door.json index 3f15e26028..88eb341f11 100644 --- a/src/generated/resources/assets/create/blockstates/train_door.json +++ b/src/generated/resources/assets/create/blockstates/train_door.json @@ -1,244 +1,7 @@ { "variants": { - "facing=east,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_bottom" - }, - "facing=east,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_bottom" - }, - "facing=east,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=east,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_top" - }, - "facing=east,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_top" - }, - "facing=east,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=east,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_bottom" - }, - "facing=north,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_bottom" - }, - "facing=north,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=north,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_top" - }, - "facing=north,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_top" - }, - "facing=north,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=north,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_bottom" - }, - "facing=south,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_bottom" - }, - "facing=south,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_top" - }, - "facing=south,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_top" - }, - "facing=west,half=lower,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=west,half=lower,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=left,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false,visible=false": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=false,visible=true": { - "model": "create:block/train_door/block_top", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true,visible=false": { - "model": "create:block/train_door/block_top", - "y": 90 - }, - "facing=west,half=upper,hinge=right,open=true,visible=true": { - "model": "create:block/train_door/block_top", - "y": 90 + "": { + "model": "create:block/train_door/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/train_trapdoor.json b/src/generated/resources/assets/create/blockstates/train_trapdoor.json index 4f618253ae..ce9c112b30 100644 --- a/src/generated/resources/assets/create/blockstates/train_trapdoor.json +++ b/src/generated/resources/assets/create/blockstates/train_trapdoor.json @@ -1,68 +1,7 @@ { "variants": { - "facing=east,half=bottom,open=false": { - "model": "create:block/train_trapdoor/block_bottom", - "y": 90 - }, - "facing=east,half=bottom,open=true": { - "model": "create:block/train_trapdoor/block_open", - "y": 90 - }, - "facing=east,half=top,open=false": { - "model": "create:block/train_trapdoor/block_top", - "y": 90 - }, - "facing=east,half=top,open=true": { - "model": "create:block/train_trapdoor/block_open", - "x": 180, - "y": 270 - }, - "facing=north,half=bottom,open=false": { - "model": "create:block/train_trapdoor/block_bottom" - }, - "facing=north,half=bottom,open=true": { - "model": "create:block/train_trapdoor/block_open" - }, - "facing=north,half=top,open=false": { - "model": "create:block/train_trapdoor/block_top" - }, - "facing=north,half=top,open=true": { - "model": "create:block/train_trapdoor/block_open", - "x": 180, - "y": 180 - }, - "facing=south,half=bottom,open=false": { - "model": "create:block/train_trapdoor/block_bottom", - "y": 180 - }, - "facing=south,half=bottom,open=true": { - "model": "create:block/train_trapdoor/block_open", - "y": 180 - }, - "facing=south,half=top,open=false": { - "model": "create:block/train_trapdoor/block_top", - "y": 180 - }, - "facing=south,half=top,open=true": { - "model": "create:block/train_trapdoor/block_open", - "x": 180 - }, - "facing=west,half=bottom,open=false": { - "model": "create:block/train_trapdoor/block_bottom", - "y": 270 - }, - "facing=west,half=bottom,open=true": { - "model": "create:block/train_trapdoor/block_open", - "y": 270 - }, - "facing=west,half=top,open=false": { - "model": "create:block/train_trapdoor/block_top", - "y": 270 - }, - "facing=west,half=top,open=true": { - "model": "create:block/train_trapdoor/block_open", - "x": 180, - "y": 90 + "": { + "model": "create:block/train_trapdoor/block" } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/tuff_pillar.json b/src/generated/resources/assets/create/blockstates/tuff_pillar.json index 5bc4082259..bdc010c2a8 100644 --- a/src/generated/resources/assets/create/blockstates/tuff_pillar.json +++ b/src/generated/resources/assets/create/blockstates/tuff_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/tuff_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/tuff_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/tuff_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/tuff_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/tuff_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/veridium.json b/src/generated/resources/assets/create/blockstates/veridium.json index 5e9b5c9811..c8181049b0 100644 --- a/src/generated/resources/assets/create/blockstates/veridium.json +++ b/src/generated/resources/assets/create/blockstates/veridium.json @@ -1,18 +1,7 @@ { "variants": { - "": [ - { - "model": "create:block/veridium_natural_0" - }, - { - "model": "create:block/veridium_natural_1" - }, - { - "model": "create:block/veridium_natural_2" - }, - { - "model": "create:block/veridium_natural_3" - } - ] + "": { + "model": "create:block/veridium_natural_0" + } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/veridium_pillar.json b/src/generated/resources/assets/create/blockstates/veridium_pillar.json index eb36138e96..76009f9348 100644 --- a/src/generated/resources/assets/create/blockstates/veridium_pillar.json +++ b/src/generated/resources/assets/create/blockstates/veridium_pillar.json @@ -1,14 +1,194 @@ { "variants": { - "axis=x": { + "axis=x,east=false,north=false,south=false,west=false": { "model": "create:block/veridium_pillar_horizontal", "x": 90, "y": 90 }, - "axis=y": { + "axis=x,east=false,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=false,north=true,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=x,east=true,north=true,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90, + "y": 90 + }, + "axis=y,east=false,north=false,south=false,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=true,south=false,west=false": { "model": "create:block/veridium_pillar" }, - "axis=z": { + "axis=y,east=false,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=false,north=true,south=true,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=false,south=false,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=true,south=false,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar" + }, + "axis=y,east=true,north=true,south=true,west=true": { + "model": "create:block/veridium_pillar" + }, + "axis=z,east=false,north=false,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=false,north=true,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=false,south=true,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=false,west=true": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=false": { + "model": "create:block/veridium_pillar_horizontal", + "x": 90 + }, + "axis=z,east=true,north=true,south=true,west=true": { "model": "create:block/veridium_pillar_horizontal", "x": 90 } diff --git a/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json index 9270e594e1..7e7e82afcb 100644 --- a/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json +++ b/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_noside" + "model": "create:block/vertical_framed_glass_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_noside_alt", + "model": "create:block/vertical_framed_glass_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_side_alt", - "y": 90 + "model": "create:block/vertical_framed_glass_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_noside", - "y": 270 + "model": "create:block/vertical_framed_glass_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_side", + "model": "create:block/vertical_framed_glass_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/vertical_framed_glass_pane_noside_alt" + "model": "create:block/vertical_framed_glass_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/warped_window_pane.json b/src/generated/resources/assets/create/blockstates/warped_window_pane.json index 9b9912b7b1..36dd429fdd 100644 --- a/src/generated/resources/assets/create/blockstates/warped_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/warped_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/warped_window_pane_noside" + "model": "create:block/warped_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/warped_window_pane_noside_alt", + "model": "create:block/warped_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/warped_window_pane_side_alt", - "y": 90 + "model": "create:block/warped_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/warped_window_pane_noside", - "y": 270 + "model": "create:block/warped_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/warped_window_pane_side", + "model": "create:block/warped_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/warped_window_pane_noside_alt" + "model": "create:block/warped_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/water_wheel_structure.json b/src/generated/resources/assets/create/blockstates/water_wheel_structure.json index 2c8f02f067..56c821ff23 100644 --- a/src/generated/resources/assets/create/blockstates/water_wheel_structure.json +++ b/src/generated/resources/assets/create/blockstates/water_wheel_structure.json @@ -1,6 +1,21 @@ { "variants": { - "": { + "facing=down": { + "model": "minecraft:block/air" + }, + "facing=east": { + "model": "minecraft:block/air" + }, + "facing=north": { + "model": "minecraft:block/air" + }, + "facing=south": { + "model": "minecraft:block/air" + }, + "facing=up": { + "model": "minecraft:block/air" + }, + "facing=west": { "model": "minecraft:block/air" } } diff --git a/src/generated/resources/assets/create/blockstates/weathered_iron_window.json b/src/generated/resources/assets/create/blockstates/weathered_iron_window.json index 95b1ba318a..07829c6b57 100644 --- a/src/generated/resources/assets/create/blockstates/weathered_iron_window.json +++ b/src/generated/resources/assets/create/blockstates/weathered_iron_window.json @@ -1,18 +1,7 @@ { "variants": { - "": [ - { - "model": "create:block/weathered_iron_window_1" - }, - { - "model": "create:block/weathered_iron_window_2" - }, - { - "model": "create:block/weathered_iron_window_3" - }, - { - "model": "create:block/weathered_iron_window_4" - } - ] + "": { + "model": "create:block/weathered_iron_window_1" + } } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_iron_window_pane.json b/src/generated/resources/assets/create/blockstates/weathered_iron_window_pane.json index 7fa9fb0536..e0e563070f 100644 --- a/src/generated/resources/assets/create/blockstates/weathered_iron_window_pane.json +++ b/src/generated/resources/assets/create/blockstates/weathered_iron_window_pane.json @@ -15,10 +15,11 @@ }, { "apply": { - "model": "create:block/weathered_iron_window_pane_noside" + "model": "create:block/weathered_iron_window_pane_side", + "y": 90 }, "when": { - "north": "false" + "east": "true" } }, { @@ -31,46 +32,45 @@ }, { "apply": { - "model": "create:block/weathered_iron_window_pane_noside_alt", + "model": "create:block/weathered_iron_window_pane_side_alt", "y": 90 }, "when": { - "south": "false" + "west": "true" } }, { "apply": { - "model": "create:block/weathered_iron_window_pane_side_alt", - "y": 90 + "model": "create:block/weathered_iron_window_pane_noside" }, "when": { - "west": "true" + "north": "false" } }, { "apply": { - "model": "create:block/weathered_iron_window_pane_noside", - "y": 270 + "model": "create:block/weathered_iron_window_pane_noside_alt" }, "when": { - "west": "false" + "east": "false" } }, { "apply": { - "model": "create:block/weathered_iron_window_pane_side", + "model": "create:block/weathered_iron_window_pane_noside_alt", "y": 90 }, "when": { - "east": "true" + "south": "false" } }, { "apply": { - "model": "create:block/weathered_iron_window_pane_noside_alt" + "model": "create:block/weathered_iron_window_pane_noside", + "y": 270 }, "when": { - "east": "false" + "west": "false" } } ] diff --git a/src/generated/resources/assets/create/blockstates/weighted_ejector.json b/src/generated/resources/assets/create/blockstates/weighted_ejector.json index bc13cc66d2..8ed3f1e400 100644 --- a/src/generated/resources/assets/create/blockstates/weighted_ejector.json +++ b/src/generated/resources/assets/create/blockstates/weighted_ejector.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/weighted_ejector/block", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/weighted_ejector/block", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/weighted_ejector/block" }, - "facing=north,waterlogged=true": { - "model": "create:block/weighted_ejector/block" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/weighted_ejector/block", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/weighted_ejector/block", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/weighted_ejector/block", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/weighted_ejector/block", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/white_toolbox.json b/src/generated/resources/assets/create/blockstates/white_toolbox.json index 2eda8e780b..6ca3d87c14 100644 --- a/src/generated/resources/assets/create/blockstates/white_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/white_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/white_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/white_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/white_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/white_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/white_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/white_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/white_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/white_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/white_valve_handle.json b/src/generated/resources/assets/create/blockstates/white_valve_handle.json index 046415a518..eaae8c8861 100644 --- a/src/generated/resources/assets/create/blockstates/white_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/white_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/white_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/white_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/white_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/white_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/white_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/white_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/white_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/white_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/white_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/blockstates/yellow_toolbox.json b/src/generated/resources/assets/create/blockstates/yellow_toolbox.json index 6df7350126..ce8e3ec2b0 100644 --- a/src/generated/resources/assets/create/blockstates/yellow_toolbox.json +++ b/src/generated/resources/assets/create/blockstates/yellow_toolbox.json @@ -1,32 +1,17 @@ { "variants": { - "facing=east,waterlogged=false": { + "facing=east": { "model": "create:block/yellow_toolbox", "y": 90 }, - "facing=east,waterlogged=true": { - "model": "create:block/yellow_toolbox", - "y": 90 - }, - "facing=north,waterlogged=false": { + "facing=north": { "model": "create:block/yellow_toolbox" }, - "facing=north,waterlogged=true": { - "model": "create:block/yellow_toolbox" - }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/yellow_toolbox", "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/yellow_toolbox", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/yellow_toolbox", - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/yellow_toolbox", "y": 270 } diff --git a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json b/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json index 80487dcc68..e606ab2d43 100644 --- a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json +++ b/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json @@ -1,53 +1,27 @@ { "variants": { - "facing=down,waterlogged=false": { + "facing=down": { "model": "create:block/yellow_valve_handle", "x": 180 }, - "facing=down,waterlogged=true": { - "model": "create:block/yellow_valve_handle", - "x": 180 - }, - "facing=east,waterlogged=false": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 90 - }, - "facing=east,waterlogged=true": { + "facing=east": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 90 }, - "facing=north,waterlogged=false": { - "model": "create:block/yellow_valve_handle", - "x": 90 - }, - "facing=north,waterlogged=true": { + "facing=north": { "model": "create:block/yellow_valve_handle", "x": 90 }, - "facing=south,waterlogged=false": { + "facing=south": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 180 }, - "facing=south,waterlogged=true": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 180 - }, - "facing=up,waterlogged=false": { - "model": "create:block/yellow_valve_handle" - }, - "facing=up,waterlogged=true": { + "facing=up": { "model": "create:block/yellow_valve_handle" }, - "facing=west,waterlogged=false": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 270 - }, - "facing=west,waterlogged=true": { + "facing=west": { "model": "create:block/yellow_valve_handle", "x": 90, "y": 270 diff --git a/src/generated/resources/assets/create/items/acacia_window.json b/src/generated/resources/assets/create/items/acacia_window.json new file mode 100644 index 0000000000..f3a350a1cf --- /dev/null +++ b/src/generated/resources/assets/create/items/acacia_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/acacia_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/acacia_window_pane.json b/src/generated/resources/assets/create/items/acacia_window_pane.json new file mode 100644 index 0000000000..14953bf269 --- /dev/null +++ b/src/generated/resources/assets/create/items/acacia_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/acacia_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/adjustable_chain_gearshift.json b/src/generated/resources/assets/create/items/adjustable_chain_gearshift.json new file mode 100644 index 0000000000..ed35c1846b --- /dev/null +++ b/src/generated/resources/assets/create/items/adjustable_chain_gearshift.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/adjustable_chain_gearshift" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/analog_lever.json b/src/generated/resources/assets/create/items/analog_lever.json new file mode 100644 index 0000000000..d06c525615 --- /dev/null +++ b/src/generated/resources/assets/create/items/analog_lever.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/analog_lever" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_alloy.json b/src/generated/resources/assets/create/items/andesite_alloy.json new file mode 100644 index 0000000000..8d1fcb8c86 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_alloy.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/andesite_alloy" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_alloy_block.json b/src/generated/resources/assets/create/items/andesite_alloy_block.json new file mode 100644 index 0000000000..cf5e9d5e79 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_alloy_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_alloy_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_bars.json b/src/generated/resources/assets/create/items/andesite_bars.json new file mode 100644 index 0000000000..88037f81c1 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_bars.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/andesite_bars" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_casing.json b/src/generated/resources/assets/create/items/andesite_casing.json new file mode 100644 index 0000000000..a80e3da7d4 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_door.json b/src/generated/resources/assets/create/items/andesite_door.json new file mode 100644 index 0000000000..a3b4d3554d --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/andesite_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_encased_cogwheel.json b/src/generated/resources/assets/create/items/andesite_encased_cogwheel.json new file mode 100644 index 0000000000..7827e3df92 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_encased_cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_encased_cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_encased_large_cogwheel.json b/src/generated/resources/assets/create/items/andesite_encased_large_cogwheel.json new file mode 100644 index 0000000000..db3c834f1f --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_encased_large_cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_encased_large_cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_encased_shaft.json b/src/generated/resources/assets/create/items/andesite_encased_shaft.json new file mode 100644 index 0000000000..d6f5051e25 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_encased_shaft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/andesite_encased_shaft" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_funnel.json b/src/generated/resources/assets/create/items/andesite_funnel.json new file mode 100644 index 0000000000..381a80bdbe --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_funnel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_ladder.json b/src/generated/resources/assets/create/items/andesite_ladder.json new file mode 100644 index 0000000000..bfa34c4ac0 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_ladder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/andesite_ladder" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_pillar.json b/src/generated/resources/assets/create/items/andesite_pillar.json new file mode 100644 index 0000000000..b23cfd319a --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_scaffolding.json b/src/generated/resources/assets/create/items/andesite_scaffolding.json new file mode 100644 index 0000000000..321e105b20 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_scaffolding.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_scaffolding" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_table_cloth.json b/src/generated/resources/assets/create/items/andesite_table_cloth.json new file mode 100644 index 0000000000..9e4b4d90b7 --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/andesite_tunnel.json b/src/generated/resources/assets/create/items/andesite_tunnel.json new file mode 100644 index 0000000000..27eed7e37e --- /dev/null +++ b/src/generated/resources/assets/create/items/andesite_tunnel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/andesite_tunnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/asurine.json b/src/generated/resources/assets/create/items/asurine.json new file mode 100644 index 0000000000..41b6e63ee3 --- /dev/null +++ b/src/generated/resources/assets/create/items/asurine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/asurine" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/asurine_pillar.json b/src/generated/resources/assets/create/items/asurine_pillar.json new file mode 100644 index 0000000000..6350df5e94 --- /dev/null +++ b/src/generated/resources/assets/create/items/asurine_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/asurine_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/attribute_filter.json b/src/generated/resources/assets/create/items/attribute_filter.json new file mode 100644 index 0000000000..c8bff22c02 --- /dev/null +++ b/src/generated/resources/assets/create/items/attribute_filter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/attribute_filter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/bamboo_window.json b/src/generated/resources/assets/create/items/bamboo_window.json new file mode 100644 index 0000000000..705dc286fe --- /dev/null +++ b/src/generated/resources/assets/create/items/bamboo_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/bamboo_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/bamboo_window_pane.json b/src/generated/resources/assets/create/items/bamboo_window_pane.json new file mode 100644 index 0000000000..1a9164c65e --- /dev/null +++ b/src/generated/resources/assets/create/items/bamboo_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/bamboo_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/bar_of_chocolate.json b/src/generated/resources/assets/create/items/bar_of_chocolate.json new file mode 100644 index 0000000000..9c2a582a61 --- /dev/null +++ b/src/generated/resources/assets/create/items/bar_of_chocolate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/bar_of_chocolate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/basin.json b/src/generated/resources/assets/create/items/basin.json new file mode 100644 index 0000000000..68f12e95d2 --- /dev/null +++ b/src/generated/resources/assets/create/items/basin.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/basin" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/belt_connector.json b/src/generated/resources/assets/create/items/belt_connector.json new file mode 100644 index 0000000000..ec8b3fd968 --- /dev/null +++ b/src/generated/resources/assets/create/items/belt_connector.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/belt_connector" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/birch_window.json b/src/generated/resources/assets/create/items/birch_window.json new file mode 100644 index 0000000000..b3bc8ff181 --- /dev/null +++ b/src/generated/resources/assets/create/items/birch_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/birch_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/birch_window_pane.json b/src/generated/resources/assets/create/items/birch_window_pane.json new file mode 100644 index 0000000000..1be6e964e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/birch_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/birch_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/black_postbox.json b/src/generated/resources/assets/create/items/black_postbox.json new file mode 100644 index 0000000000..46a3720345 --- /dev/null +++ b/src/generated/resources/assets/create/items/black_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/black_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/black_seat.json b/src/generated/resources/assets/create/items/black_seat.json new file mode 100644 index 0000000000..14bdd267e7 --- /dev/null +++ b/src/generated/resources/assets/create/items/black_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/black_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/black_table_cloth.json b/src/generated/resources/assets/create/items/black_table_cloth.json new file mode 100644 index 0000000000..9d238070d0 --- /dev/null +++ b/src/generated/resources/assets/create/items/black_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/black_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/black_toolbox.json b/src/generated/resources/assets/create/items/black_toolbox.json new file mode 100644 index 0000000000..1754967ee2 --- /dev/null +++ b/src/generated/resources/assets/create/items/black_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/black_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/black_valve_handle.json b/src/generated/resources/assets/create/items/black_valve_handle.json new file mode 100644 index 0000000000..2e3730783e --- /dev/null +++ b/src/generated/resources/assets/create/items/black_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/black_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blaze_burner.json b/src/generated/resources/assets/create/items/blaze_burner.json new file mode 100644 index 0000000000..957cbba1c5 --- /dev/null +++ b/src/generated/resources/assets/create/items/blaze_burner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/blaze_burner" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blaze_cake.json b/src/generated/resources/assets/create/items/blaze_cake.json new file mode 100644 index 0000000000..1b049c7f2a --- /dev/null +++ b/src/generated/resources/assets/create/items/blaze_cake.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/blaze_cake" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blaze_cake_base.json b/src/generated/resources/assets/create/items/blaze_cake_base.json new file mode 100644 index 0000000000..d329c99e8e --- /dev/null +++ b/src/generated/resources/assets/create/items/blaze_cake_base.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/blaze_cake_base" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blue_postbox.json b/src/generated/resources/assets/create/items/blue_postbox.json new file mode 100644 index 0000000000..dd91738b82 --- /dev/null +++ b/src/generated/resources/assets/create/items/blue_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/blue_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blue_seat.json b/src/generated/resources/assets/create/items/blue_seat.json new file mode 100644 index 0000000000..846f05625a --- /dev/null +++ b/src/generated/resources/assets/create/items/blue_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/blue_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blue_table_cloth.json b/src/generated/resources/assets/create/items/blue_table_cloth.json new file mode 100644 index 0000000000..75b8fa775c --- /dev/null +++ b/src/generated/resources/assets/create/items/blue_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/blue_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blue_toolbox.json b/src/generated/resources/assets/create/items/blue_toolbox.json new file mode 100644 index 0000000000..1bd65cb4dc --- /dev/null +++ b/src/generated/resources/assets/create/items/blue_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/blue_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/blue_valve_handle.json b/src/generated/resources/assets/create/items/blue_valve_handle.json new file mode 100644 index 0000000000..46772b40a4 --- /dev/null +++ b/src/generated/resources/assets/create/items/blue_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/blue_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/bound_cardboard_block.json b/src/generated/resources/assets/create/items/bound_cardboard_block.json new file mode 100644 index 0000000000..461673f571 --- /dev/null +++ b/src/generated/resources/assets/create/items/bound_cardboard_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/bound_cardboard_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_bars.json b/src/generated/resources/assets/create/items/brass_bars.json new file mode 100644 index 0000000000..b59b86916c --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_bars.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_bars" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_block.json b/src/generated/resources/assets/create/items/brass_block.json new file mode 100644 index 0000000000..9958627212 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_casing.json b/src/generated/resources/assets/create/items/brass_casing.json new file mode 100644 index 0000000000..46012a10bc --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_door.json b/src/generated/resources/assets/create/items/brass_door.json new file mode 100644 index 0000000000..94374fd7ef --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_encased_cogwheel.json b/src/generated/resources/assets/create/items/brass_encased_cogwheel.json new file mode 100644 index 0000000000..17ef172a95 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_encased_cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_encased_cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_encased_large_cogwheel.json b/src/generated/resources/assets/create/items/brass_encased_large_cogwheel.json new file mode 100644 index 0000000000..9380702204 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_encased_large_cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_encased_large_cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_encased_shaft.json b/src/generated/resources/assets/create/items/brass_encased_shaft.json new file mode 100644 index 0000000000..b5c0e54902 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_encased_shaft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_encased_shaft" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_funnel.json b/src/generated/resources/assets/create/items/brass_funnel.json new file mode 100644 index 0000000000..f8db99fb80 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_funnel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_funnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_hand.json b/src/generated/resources/assets/create/items/brass_hand.json new file mode 100644 index 0000000000..b6de935d84 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_hand.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_hand" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_ingot.json b/src/generated/resources/assets/create/items/brass_ingot.json new file mode 100644 index 0000000000..257c7fac75 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_ladder.json b/src/generated/resources/assets/create/items/brass_ladder.json new file mode 100644 index 0000000000..18c3d81d96 --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_ladder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_ladder" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_nugget.json b/src/generated/resources/assets/create/items/brass_nugget.json new file mode 100644 index 0000000000..c1f762879c --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_scaffolding.json b/src/generated/resources/assets/create/items/brass_scaffolding.json new file mode 100644 index 0000000000..dd3be972ea --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_scaffolding.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_scaffolding" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_sheet.json b/src/generated/resources/assets/create/items/brass_sheet.json new file mode 100644 index 0000000000..948fe3e0cf --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/brass_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_table_cloth.json b/src/generated/resources/assets/create/items/brass_table_cloth.json new file mode 100644 index 0000000000..fcbe2edc0e --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brass_tunnel.json b/src/generated/resources/assets/create/items/brass_tunnel.json new file mode 100644 index 0000000000..dde35a6b0c --- /dev/null +++ b/src/generated/resources/assets/create/items/brass_tunnel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brass_tunnel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brown_postbox.json b/src/generated/resources/assets/create/items/brown_postbox.json new file mode 100644 index 0000000000..92a92292ac --- /dev/null +++ b/src/generated/resources/assets/create/items/brown_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brown_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brown_seat.json b/src/generated/resources/assets/create/items/brown_seat.json new file mode 100644 index 0000000000..260df86ebc --- /dev/null +++ b/src/generated/resources/assets/create/items/brown_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brown_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brown_table_cloth.json b/src/generated/resources/assets/create/items/brown_table_cloth.json new file mode 100644 index 0000000000..2c8286f92e --- /dev/null +++ b/src/generated/resources/assets/create/items/brown_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brown_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brown_toolbox.json b/src/generated/resources/assets/create/items/brown_toolbox.json new file mode 100644 index 0000000000..22c266b7b2 --- /dev/null +++ b/src/generated/resources/assets/create/items/brown_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brown_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/brown_valve_handle.json b/src/generated/resources/assets/create/items/brown_valve_handle.json new file mode 100644 index 0000000000..79398be9c5 --- /dev/null +++ b/src/generated/resources/assets/create/items/brown_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/brown_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/builders_tea.json b/src/generated/resources/assets/create/items/builders_tea.json new file mode 100644 index 0000000000..59835d4b2e --- /dev/null +++ b/src/generated/resources/assets/create/items/builders_tea.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/builders_tea" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/calcite_pillar.json b/src/generated/resources/assets/create/items/calcite_pillar.json new file mode 100644 index 0000000000..ea0c8e6bde --- /dev/null +++ b/src/generated/resources/assets/create/items/calcite_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/calcite_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard.json b/src/generated/resources/assets/create/items/cardboard.json new file mode 100644 index 0000000000..bbdb347559 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_block.json b/src/generated/resources/assets/create/items/cardboard_block.json new file mode 100644 index 0000000000..b12869c657 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cardboard_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_boots.json b/src/generated/resources/assets/create/items/cardboard_boots.json new file mode 100644 index 0000000000..fa34735e73 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_boots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_chestplate.json b/src/generated/resources/assets/create/items/cardboard_chestplate.json new file mode 100644 index 0000000000..7380cc8c60 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_chestplate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_chestplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_helmet.json b/src/generated/resources/assets/create/items/cardboard_helmet.json new file mode 100644 index 0000000000..32fe7a171e --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_helmet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_leggings.json b/src/generated/resources/assets/create/items/cardboard_leggings.json new file mode 100644 index 0000000000..62002abde2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_leggings.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_leggings" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_package_10x12.json b/src/generated/resources/assets/create/items/cardboard_package_10x12.json new file mode 100644 index 0000000000..a3bbdf14e8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_package_10x12.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_package_10x12" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_package_10x8.json b/src/generated/resources/assets/create/items/cardboard_package_10x8.json new file mode 100644 index 0000000000..2656247b3e --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_package_10x8.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_package_10x8" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_package_12x10.json b/src/generated/resources/assets/create/items/cardboard_package_12x10.json new file mode 100644 index 0000000000..a222b64374 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_package_12x10.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_package_12x10" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_package_12x12.json b/src/generated/resources/assets/create/items/cardboard_package_12x12.json new file mode 100644 index 0000000000..ac98494515 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_package_12x12.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_package_12x12" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cardboard_sword.json b/src/generated/resources/assets/create/items/cardboard_sword.json new file mode 100644 index 0000000000..bed4634603 --- /dev/null +++ b/src/generated/resources/assets/create/items/cardboard_sword.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cardboard_sword" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cart_assembler.json b/src/generated/resources/assets/create/items/cart_assembler.json new file mode 100644 index 0000000000..3752886dea --- /dev/null +++ b/src/generated/resources/assets/create/items/cart_assembler.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cart_assembler" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chain_conveyor.json b/src/generated/resources/assets/create/items/chain_conveyor.json new file mode 100644 index 0000000000..cb5d54ce91 --- /dev/null +++ b/src/generated/resources/assets/create/items/chain_conveyor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chain_conveyor" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cherry_window.json b/src/generated/resources/assets/create/items/cherry_window.json new file mode 100644 index 0000000000..992a4c36db --- /dev/null +++ b/src/generated/resources/assets/create/items/cherry_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cherry_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cherry_window_pane.json b/src/generated/resources/assets/create/items/cherry_window_pane.json new file mode 100644 index 0000000000..11e0d14cf3 --- /dev/null +++ b/src/generated/resources/assets/create/items/cherry_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cherry_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chest_minecart_contraption.json b/src/generated/resources/assets/create/items/chest_minecart_contraption.json new file mode 100644 index 0000000000..4539eb6b7b --- /dev/null +++ b/src/generated/resources/assets/create/items/chest_minecart_contraption.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chest_minecart_contraption" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chocolate_bucket.json b/src/generated/resources/assets/create/items/chocolate_bucket.json new file mode 100644 index 0000000000..c24f253a95 --- /dev/null +++ b/src/generated/resources/assets/create/items/chocolate_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chocolate_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chocolate_glazed_berries.json b/src/generated/resources/assets/create/items/chocolate_glazed_berries.json new file mode 100644 index 0000000000..19ade87dc5 --- /dev/null +++ b/src/generated/resources/assets/create/items/chocolate_glazed_berries.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chocolate_glazed_berries" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chromatic_compound.json b/src/generated/resources/assets/create/items/chromatic_compound.json new file mode 100644 index 0000000000..ed7169afa8 --- /dev/null +++ b/src/generated/resources/assets/create/items/chromatic_compound.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chromatic_compound" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/chute.json b/src/generated/resources/assets/create/items/chute.json new file mode 100644 index 0000000000..c5468ed499 --- /dev/null +++ b/src/generated/resources/assets/create/items/chute.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/chute" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cinder_flour.json b/src/generated/resources/assets/create/items/cinder_flour.json new file mode 100644 index 0000000000..93f32ba87c --- /dev/null +++ b/src/generated/resources/assets/create/items/cinder_flour.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cinder_flour" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/clipboard.json b/src/generated/resources/assets/create/items/clipboard.json new file mode 100644 index 0000000000..5a6890d23e --- /dev/null +++ b/src/generated/resources/assets/create/items/clipboard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/clipboard" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/clockwork_bearing.json b/src/generated/resources/assets/create/items/clockwork_bearing.json new file mode 100644 index 0000000000..da78662c83 --- /dev/null +++ b/src/generated/resources/assets/create/items/clockwork_bearing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/clockwork_bearing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/clutch.json b/src/generated/resources/assets/create/items/clutch.json new file mode 100644 index 0000000000..facda914d9 --- /dev/null +++ b/src/generated/resources/assets/create/items/clutch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/clutch" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cogwheel.json b/src/generated/resources/assets/create/items/cogwheel.json new file mode 100644 index 0000000000..4c00913a62 --- /dev/null +++ b/src/generated/resources/assets/create/items/cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/content_observer.json b/src/generated/resources/assets/create/items/content_observer.json new file mode 100644 index 0000000000..5e1f7f383d --- /dev/null +++ b/src/generated/resources/assets/create/items/content_observer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/content_observer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/contraption_controls.json b/src/generated/resources/assets/create/items/contraption_controls.json new file mode 100644 index 0000000000..3bf635be34 --- /dev/null +++ b/src/generated/resources/assets/create/items/contraption_controls.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/contraption_controls" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/controller_rail.json b/src/generated/resources/assets/create/items/controller_rail.json new file mode 100644 index 0000000000..9483ad1727 --- /dev/null +++ b/src/generated/resources/assets/create/items/controller_rail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/controller_rail" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/controls.json b/src/generated/resources/assets/create/items/controls.json new file mode 100644 index 0000000000..de6e6f71e7 --- /dev/null +++ b/src/generated/resources/assets/create/items/controls.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/controls" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_backtank.json b/src/generated/resources/assets/create/items/copper_backtank.json new file mode 100644 index 0000000000..329080441a --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_backtank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_backtank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_backtank_placeable.json b/src/generated/resources/assets/create/items/copper_backtank_placeable.json new file mode 100644 index 0000000000..7dfc79e94f --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_backtank_placeable.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_backtank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_bars.json b/src/generated/resources/assets/create/items/copper_bars.json new file mode 100644 index 0000000000..dc9c594809 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_bars.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_bars" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_casing.json b/src/generated/resources/assets/create/items/copper_casing.json new file mode 100644 index 0000000000..fc195b76e9 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_diving_boots.json b/src/generated/resources/assets/create/items/copper_diving_boots.json new file mode 100644 index 0000000000..c65c9d4dc3 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_diving_boots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_diving_helmet.json b/src/generated/resources/assets/create/items/copper_diving_helmet.json new file mode 100644 index 0000000000..7937fc25f5 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_diving_helmet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_door.json b/src/generated/resources/assets/create/items/copper_door.json new file mode 100644 index 0000000000..6848cf3b7c --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_ladder.json b/src/generated/resources/assets/create/items/copper_ladder.json new file mode 100644 index 0000000000..17d01489d9 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_ladder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_ladder" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_nugget.json b/src/generated/resources/assets/create/items/copper_nugget.json new file mode 100644 index 0000000000..2f0d23f71b --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_scaffolding.json b/src/generated/resources/assets/create/items/copper_scaffolding.json new file mode 100644 index 0000000000..c4438b00c4 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_scaffolding.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_scaffolding" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_sheet.json b/src/generated/resources/assets/create/items/copper_sheet.json new file mode 100644 index 0000000000..86c132b406 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copper_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_shingle_slab.json b/src/generated/resources/assets/create/items/copper_shingle_slab.json new file mode 100644 index 0000000000..fb7a166d2a --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_shingle_stairs.json b/src/generated/resources/assets/create/items/copper_shingle_stairs.json new file mode 100644 index 0000000000..10bfb33f92 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_shingles.json b/src/generated/resources/assets/create/items/copper_shingles.json new file mode 100644 index 0000000000..4d9d38991c --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_table_cloth.json b/src/generated/resources/assets/create/items/copper_table_cloth.json new file mode 100644 index 0000000000..6fdab543bd --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_tile_slab.json b/src/generated/resources/assets/create/items/copper_tile_slab.json new file mode 100644 index 0000000000..e3d4cc7f6f --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_tile_stairs.json b/src/generated/resources/assets/create/items/copper_tile_stairs.json new file mode 100644 index 0000000000..4488e15c2d --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_tiles.json b/src/generated/resources/assets/create/items/copper_tiles.json new file mode 100644 index 0000000000..e4b786e013 --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copper_valve_handle.json b/src/generated/resources/assets/create/items/copper_valve_handle.json new file mode 100644 index 0000000000..4a0ebe166d --- /dev/null +++ b/src/generated/resources/assets/create/items/copper_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/copper_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copycat_panel.json b/src/generated/resources/assets/create/items/copycat_panel.json new file mode 100644 index 0000000000..1d340c2a67 --- /dev/null +++ b/src/generated/resources/assets/create/items/copycat_panel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copycat_panel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/copycat_step.json b/src/generated/resources/assets/create/items/copycat_step.json new file mode 100644 index 0000000000..887ead9086 --- /dev/null +++ b/src/generated/resources/assets/create/items/copycat_step.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/copycat_step" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crafter_slot_cover.json b/src/generated/resources/assets/create/items/crafter_slot_cover.json new file mode 100644 index 0000000000..eeb0f1e2a0 --- /dev/null +++ b/src/generated/resources/assets/create/items/crafter_slot_cover.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crafter_slot_cover" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crafting_blueprint.json b/src/generated/resources/assets/create/items/crafting_blueprint.json new file mode 100644 index 0000000000..88088cfd31 --- /dev/null +++ b/src/generated/resources/assets/create/items/crafting_blueprint.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crafting_blueprint" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/creative_blaze_cake.json b/src/generated/resources/assets/create/items/creative_blaze_cake.json new file mode 100644 index 0000000000..e8e39365f6 --- /dev/null +++ b/src/generated/resources/assets/create/items/creative_blaze_cake.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/creative_blaze_cake" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/creative_crate.json b/src/generated/resources/assets/create/items/creative_crate.json new file mode 100644 index 0000000000..5227f2c000 --- /dev/null +++ b/src/generated/resources/assets/create/items/creative_crate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/creative_crate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/creative_fluid_tank.json b/src/generated/resources/assets/create/items/creative_fluid_tank.json new file mode 100644 index 0000000000..02c7c6b0c8 --- /dev/null +++ b/src/generated/resources/assets/create/items/creative_fluid_tank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/creative_fluid_tank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/creative_motor.json b/src/generated/resources/assets/create/items/creative_motor.json new file mode 100644 index 0000000000..8e61cf2c70 --- /dev/null +++ b/src/generated/resources/assets/create/items/creative_motor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/creative_motor" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crimsite.json b/src/generated/resources/assets/create/items/crimsite.json new file mode 100644 index 0000000000..a3d8deb3a6 --- /dev/null +++ b/src/generated/resources/assets/create/items/crimsite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/crimsite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crimsite_pillar.json b/src/generated/resources/assets/create/items/crimsite_pillar.json new file mode 100644 index 0000000000..16c59a768b --- /dev/null +++ b/src/generated/resources/assets/create/items/crimsite_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/crimsite_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crimson_window.json b/src/generated/resources/assets/create/items/crimson_window.json new file mode 100644 index 0000000000..00f4a7b306 --- /dev/null +++ b/src/generated/resources/assets/create/items/crimson_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/crimson_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crimson_window_pane.json b/src/generated/resources/assets/create/items/crimson_window_pane.json new file mode 100644 index 0000000000..4ae2c00072 --- /dev/null +++ b/src/generated/resources/assets/create/items/crimson_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crimson_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_aluminum.json b/src/generated/resources/assets/create/items/crushed_raw_aluminum.json new file mode 100644 index 0000000000..d1b33f3e41 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_aluminum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_aluminum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_copper.json b/src/generated/resources/assets/create/items/crushed_raw_copper.json new file mode 100644 index 0000000000..2248ea0744 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_copper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_copper" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_gold.json b/src/generated/resources/assets/create/items/crushed_raw_gold.json new file mode 100644 index 0000000000..dec025b8d9 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_gold.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_gold" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_iron.json b/src/generated/resources/assets/create/items/crushed_raw_iron.json new file mode 100644 index 0000000000..48237d5ba4 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_iron.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_iron" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_lead.json b/src/generated/resources/assets/create/items/crushed_raw_lead.json new file mode 100644 index 0000000000..32aa6788bd --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_lead.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_lead" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_nickel.json b/src/generated/resources/assets/create/items/crushed_raw_nickel.json new file mode 100644 index 0000000000..df4e12a132 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_nickel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_nickel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_osmium.json b/src/generated/resources/assets/create/items/crushed_raw_osmium.json new file mode 100644 index 0000000000..3212230c80 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_osmium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_osmium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_platinum.json b/src/generated/resources/assets/create/items/crushed_raw_platinum.json new file mode 100644 index 0000000000..bfafdda35d --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_platinum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_platinum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_quicksilver.json b/src/generated/resources/assets/create/items/crushed_raw_quicksilver.json new file mode 100644 index 0000000000..41ff5d8eb3 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_quicksilver.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_quicksilver" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_silver.json b/src/generated/resources/assets/create/items/crushed_raw_silver.json new file mode 100644 index 0000000000..eb85637085 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_silver.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_silver" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_tin.json b/src/generated/resources/assets/create/items/crushed_raw_tin.json new file mode 100644 index 0000000000..2a44c86db5 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_tin.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_tin" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_uranium.json b/src/generated/resources/assets/create/items/crushed_raw_uranium.json new file mode 100644 index 0000000000..9783cdc6d9 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_uranium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_uranium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushed_raw_zinc.json b/src/generated/resources/assets/create/items/crushed_raw_zinc.json new file mode 100644 index 0000000000..703e1861b4 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushed_raw_zinc.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushed_raw_zinc" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/crushing_wheel.json b/src/generated/resources/assets/create/items/crushing_wheel.json new file mode 100644 index 0000000000..ea0c246c05 --- /dev/null +++ b/src/generated/resources/assets/create/items/crushing_wheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/crushing_wheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cuckoo_clock.json b/src/generated/resources/assets/create/items/cuckoo_clock.json new file mode 100644 index 0000000000..f761ae7e05 --- /dev/null +++ b/src/generated/resources/assets/create/items/cuckoo_clock.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/cuckoo_clock" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite.json b/src/generated/resources/assets/create/items/cut_andesite.json new file mode 100644 index 0000000000..48f2d62a45 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_brick_slab.json b/src/generated/resources/assets/create/items/cut_andesite_brick_slab.json new file mode 100644 index 0000000000..f81c6e86d8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_brick_stairs.json b/src/generated/resources/assets/create/items/cut_andesite_brick_stairs.json new file mode 100644 index 0000000000..50c8df37b8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_brick_wall.json b/src/generated/resources/assets/create/items/cut_andesite_brick_wall.json new file mode 100644 index 0000000000..2bdf4bf467 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_bricks.json b/src/generated/resources/assets/create/items/cut_andesite_bricks.json new file mode 100644 index 0000000000..4f489a1bcb --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_slab.json b/src/generated/resources/assets/create/items/cut_andesite_slab.json new file mode 100644 index 0000000000..95192f6de1 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_stairs.json b/src/generated/resources/assets/create/items/cut_andesite_stairs.json new file mode 100644 index 0000000000..cc131f51fb --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_andesite_wall.json b/src/generated/resources/assets/create/items/cut_andesite_wall.json new file mode 100644 index 0000000000..7c56acf960 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_andesite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_andesite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine.json b/src/generated/resources/assets/create/items/cut_asurine.json new file mode 100644 index 0000000000..b5e02e1018 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_brick_slab.json b/src/generated/resources/assets/create/items/cut_asurine_brick_slab.json new file mode 100644 index 0000000000..74a95a758c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_brick_stairs.json b/src/generated/resources/assets/create/items/cut_asurine_brick_stairs.json new file mode 100644 index 0000000000..514a5031f2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_brick_wall.json b/src/generated/resources/assets/create/items/cut_asurine_brick_wall.json new file mode 100644 index 0000000000..7f85ce20f0 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_bricks.json b/src/generated/resources/assets/create/items/cut_asurine_bricks.json new file mode 100644 index 0000000000..bba9300b1e --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_slab.json b/src/generated/resources/assets/create/items/cut_asurine_slab.json new file mode 100644 index 0000000000..e5bc462728 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_stairs.json b/src/generated/resources/assets/create/items/cut_asurine_stairs.json new file mode 100644 index 0000000000..0ab10119be --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_asurine_wall.json b/src/generated/resources/assets/create/items/cut_asurine_wall.json new file mode 100644 index 0000000000..7123ef77a2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_asurine_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_asurine_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite.json b/src/generated/resources/assets/create/items/cut_calcite.json new file mode 100644 index 0000000000..8582f3444b --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_brick_slab.json b/src/generated/resources/assets/create/items/cut_calcite_brick_slab.json new file mode 100644 index 0000000000..6f669b64ac --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_brick_stairs.json b/src/generated/resources/assets/create/items/cut_calcite_brick_stairs.json new file mode 100644 index 0000000000..80a1bc9944 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_brick_wall.json b/src/generated/resources/assets/create/items/cut_calcite_brick_wall.json new file mode 100644 index 0000000000..66a94ba1e2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_bricks.json b/src/generated/resources/assets/create/items/cut_calcite_bricks.json new file mode 100644 index 0000000000..86cbfc9840 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_slab.json b/src/generated/resources/assets/create/items/cut_calcite_slab.json new file mode 100644 index 0000000000..6114e9a2d1 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_stairs.json b/src/generated/resources/assets/create/items/cut_calcite_stairs.json new file mode 100644 index 0000000000..45179e75a9 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_calcite_wall.json b/src/generated/resources/assets/create/items/cut_calcite_wall.json new file mode 100644 index 0000000000..b482e3e050 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_calcite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_calcite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite.json b/src/generated/resources/assets/create/items/cut_crimsite.json new file mode 100644 index 0000000000..a17c09b784 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_brick_slab.json b/src/generated/resources/assets/create/items/cut_crimsite_brick_slab.json new file mode 100644 index 0000000000..5a277e22ca --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_brick_stairs.json b/src/generated/resources/assets/create/items/cut_crimsite_brick_stairs.json new file mode 100644 index 0000000000..44cf8b80b2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_brick_wall.json b/src/generated/resources/assets/create/items/cut_crimsite_brick_wall.json new file mode 100644 index 0000000000..2a8b697009 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_bricks.json b/src/generated/resources/assets/create/items/cut_crimsite_bricks.json new file mode 100644 index 0000000000..f7315e09db --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_slab.json b/src/generated/resources/assets/create/items/cut_crimsite_slab.json new file mode 100644 index 0000000000..b75d761226 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_stairs.json b/src/generated/resources/assets/create/items/cut_crimsite_stairs.json new file mode 100644 index 0000000000..656d57468e --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_crimsite_wall.json b/src/generated/resources/assets/create/items/cut_crimsite_wall.json new file mode 100644 index 0000000000..7f082f6788 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_crimsite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_crimsite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate.json b/src/generated/resources/assets/create/items/cut_deepslate.json new file mode 100644 index 0000000000..87a1b9454f --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_brick_slab.json b/src/generated/resources/assets/create/items/cut_deepslate_brick_slab.json new file mode 100644 index 0000000000..eda37a9aad --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_brick_stairs.json b/src/generated/resources/assets/create/items/cut_deepslate_brick_stairs.json new file mode 100644 index 0000000000..902c3f5315 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_brick_wall.json b/src/generated/resources/assets/create/items/cut_deepslate_brick_wall.json new file mode 100644 index 0000000000..dc61b88e6d --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_bricks.json b/src/generated/resources/assets/create/items/cut_deepslate_bricks.json new file mode 100644 index 0000000000..253909d68c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_slab.json b/src/generated/resources/assets/create/items/cut_deepslate_slab.json new file mode 100644 index 0000000000..62844d8450 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_stairs.json b/src/generated/resources/assets/create/items/cut_deepslate_stairs.json new file mode 100644 index 0000000000..5b7e7e7bee --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_deepslate_wall.json b/src/generated/resources/assets/create/items/cut_deepslate_wall.json new file mode 100644 index 0000000000..6a3005ed43 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_deepslate_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_deepslate_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite.json b/src/generated/resources/assets/create/items/cut_diorite.json new file mode 100644 index 0000000000..c2a258819f --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_brick_slab.json b/src/generated/resources/assets/create/items/cut_diorite_brick_slab.json new file mode 100644 index 0000000000..442a53d961 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_brick_stairs.json b/src/generated/resources/assets/create/items/cut_diorite_brick_stairs.json new file mode 100644 index 0000000000..a0fa5b22f5 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_brick_wall.json b/src/generated/resources/assets/create/items/cut_diorite_brick_wall.json new file mode 100644 index 0000000000..56949d8702 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_bricks.json b/src/generated/resources/assets/create/items/cut_diorite_bricks.json new file mode 100644 index 0000000000..d3b68a8b29 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_slab.json b/src/generated/resources/assets/create/items/cut_diorite_slab.json new file mode 100644 index 0000000000..54585b8062 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_stairs.json b/src/generated/resources/assets/create/items/cut_diorite_stairs.json new file mode 100644 index 0000000000..e527e945cc --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_diorite_wall.json b/src/generated/resources/assets/create/items/cut_diorite_wall.json new file mode 100644 index 0000000000..7d587279c5 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_diorite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_diorite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone.json b/src/generated/resources/assets/create/items/cut_dripstone.json new file mode 100644 index 0000000000..f164463088 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_brick_slab.json b/src/generated/resources/assets/create/items/cut_dripstone_brick_slab.json new file mode 100644 index 0000000000..75f1d291ef --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_brick_stairs.json b/src/generated/resources/assets/create/items/cut_dripstone_brick_stairs.json new file mode 100644 index 0000000000..87f11a7aae --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_brick_wall.json b/src/generated/resources/assets/create/items/cut_dripstone_brick_wall.json new file mode 100644 index 0000000000..7a76c52b5e --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_bricks.json b/src/generated/resources/assets/create/items/cut_dripstone_bricks.json new file mode 100644 index 0000000000..7597cce760 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_slab.json b/src/generated/resources/assets/create/items/cut_dripstone_slab.json new file mode 100644 index 0000000000..eaaa40f9bc --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_stairs.json b/src/generated/resources/assets/create/items/cut_dripstone_stairs.json new file mode 100644 index 0000000000..19b5f3ce69 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_dripstone_wall.json b/src/generated/resources/assets/create/items/cut_dripstone_wall.json new file mode 100644 index 0000000000..e7c5ada725 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_dripstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_dripstone_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite.json b/src/generated/resources/assets/create/items/cut_granite.json new file mode 100644 index 0000000000..f8a3dce19b --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_brick_slab.json b/src/generated/resources/assets/create/items/cut_granite_brick_slab.json new file mode 100644 index 0000000000..9e623a8ac3 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_brick_stairs.json b/src/generated/resources/assets/create/items/cut_granite_brick_stairs.json new file mode 100644 index 0000000000..c95bb88a95 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_brick_wall.json b/src/generated/resources/assets/create/items/cut_granite_brick_wall.json new file mode 100644 index 0000000000..f67fe7a2a6 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_bricks.json b/src/generated/resources/assets/create/items/cut_granite_bricks.json new file mode 100644 index 0000000000..609b0fee2a --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_slab.json b/src/generated/resources/assets/create/items/cut_granite_slab.json new file mode 100644 index 0000000000..ae29f976de --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_stairs.json b/src/generated/resources/assets/create/items/cut_granite_stairs.json new file mode 100644 index 0000000000..8f6e8bf0f8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_granite_wall.json b/src/generated/resources/assets/create/items/cut_granite_wall.json new file mode 100644 index 0000000000..350deb6f60 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_granite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_granite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone.json b/src/generated/resources/assets/create/items/cut_limestone.json new file mode 100644 index 0000000000..4237cdd9b6 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_brick_slab.json b/src/generated/resources/assets/create/items/cut_limestone_brick_slab.json new file mode 100644 index 0000000000..ff706d0289 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_brick_stairs.json b/src/generated/resources/assets/create/items/cut_limestone_brick_stairs.json new file mode 100644 index 0000000000..5fc8d43de8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_brick_wall.json b/src/generated/resources/assets/create/items/cut_limestone_brick_wall.json new file mode 100644 index 0000000000..9a1706f1eb --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_bricks.json b/src/generated/resources/assets/create/items/cut_limestone_bricks.json new file mode 100644 index 0000000000..a1142197a2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_slab.json b/src/generated/resources/assets/create/items/cut_limestone_slab.json new file mode 100644 index 0000000000..4779e6835c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_stairs.json b/src/generated/resources/assets/create/items/cut_limestone_stairs.json new file mode 100644 index 0000000000..87a0903ed1 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_limestone_wall.json b/src/generated/resources/assets/create/items/cut_limestone_wall.json new file mode 100644 index 0000000000..13270266aa --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_limestone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_limestone_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum.json b/src/generated/resources/assets/create/items/cut_ochrum.json new file mode 100644 index 0000000000..ac552f55b6 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_brick_slab.json b/src/generated/resources/assets/create/items/cut_ochrum_brick_slab.json new file mode 100644 index 0000000000..c4dae101af --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_brick_stairs.json b/src/generated/resources/assets/create/items/cut_ochrum_brick_stairs.json new file mode 100644 index 0000000000..e038977b9e --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_brick_wall.json b/src/generated/resources/assets/create/items/cut_ochrum_brick_wall.json new file mode 100644 index 0000000000..f1ab399e8c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_bricks.json b/src/generated/resources/assets/create/items/cut_ochrum_bricks.json new file mode 100644 index 0000000000..6c9509d126 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_slab.json b/src/generated/resources/assets/create/items/cut_ochrum_slab.json new file mode 100644 index 0000000000..3aaec9bce2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_stairs.json b/src/generated/resources/assets/create/items/cut_ochrum_stairs.json new file mode 100644 index 0000000000..d9c1bf27f5 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_ochrum_wall.json b/src/generated/resources/assets/create/items/cut_ochrum_wall.json new file mode 100644 index 0000000000..1dd6be273a --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_ochrum_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_ochrum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia.json b/src/generated/resources/assets/create/items/cut_scorchia.json new file mode 100644 index 0000000000..eb8c966c82 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_brick_slab.json b/src/generated/resources/assets/create/items/cut_scorchia_brick_slab.json new file mode 100644 index 0000000000..fc91f4f01d --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_brick_stairs.json b/src/generated/resources/assets/create/items/cut_scorchia_brick_stairs.json new file mode 100644 index 0000000000..2aa092d277 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_brick_wall.json b/src/generated/resources/assets/create/items/cut_scorchia_brick_wall.json new file mode 100644 index 0000000000..8dcfbdfa0c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_bricks.json b/src/generated/resources/assets/create/items/cut_scorchia_bricks.json new file mode 100644 index 0000000000..2a0dee2cad --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_slab.json b/src/generated/resources/assets/create/items/cut_scorchia_slab.json new file mode 100644 index 0000000000..181c6827c7 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_stairs.json b/src/generated/resources/assets/create/items/cut_scorchia_stairs.json new file mode 100644 index 0000000000..26e2a436ca --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scorchia_wall.json b/src/generated/resources/assets/create/items/cut_scorchia_wall.json new file mode 100644 index 0000000000..90f9f128c9 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scorchia_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scorchia_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria.json b/src/generated/resources/assets/create/items/cut_scoria.json new file mode 100644 index 0000000000..42609b192b --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_brick_slab.json b/src/generated/resources/assets/create/items/cut_scoria_brick_slab.json new file mode 100644 index 0000000000..88953e91d7 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_brick_stairs.json b/src/generated/resources/assets/create/items/cut_scoria_brick_stairs.json new file mode 100644 index 0000000000..364d4dbfb2 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_brick_wall.json b/src/generated/resources/assets/create/items/cut_scoria_brick_wall.json new file mode 100644 index 0000000000..7db28ca416 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_bricks.json b/src/generated/resources/assets/create/items/cut_scoria_bricks.json new file mode 100644 index 0000000000..8c4cf0c7f0 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_slab.json b/src/generated/resources/assets/create/items/cut_scoria_slab.json new file mode 100644 index 0000000000..151eb7a91a --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_stairs.json b/src/generated/resources/assets/create/items/cut_scoria_stairs.json new file mode 100644 index 0000000000..684bc1b9c4 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_scoria_wall.json b/src/generated/resources/assets/create/items/cut_scoria_wall.json new file mode 100644 index 0000000000..1d29d88af0 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_scoria_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_scoria_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff.json b/src/generated/resources/assets/create/items/cut_tuff.json new file mode 100644 index 0000000000..b8e04136b3 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_brick_slab.json b/src/generated/resources/assets/create/items/cut_tuff_brick_slab.json new file mode 100644 index 0000000000..33405e3eb8 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_brick_stairs.json b/src/generated/resources/assets/create/items/cut_tuff_brick_stairs.json new file mode 100644 index 0000000000..59494729b4 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_brick_wall.json b/src/generated/resources/assets/create/items/cut_tuff_brick_wall.json new file mode 100644 index 0000000000..0dcf6f2b8f --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_bricks.json b/src/generated/resources/assets/create/items/cut_tuff_bricks.json new file mode 100644 index 0000000000..fc2fe7ae26 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_slab.json b/src/generated/resources/assets/create/items/cut_tuff_slab.json new file mode 100644 index 0000000000..ea491b9580 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_stairs.json b/src/generated/resources/assets/create/items/cut_tuff_stairs.json new file mode 100644 index 0000000000..df27dc8ea1 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_tuff_wall.json b/src/generated/resources/assets/create/items/cut_tuff_wall.json new file mode 100644 index 0000000000..901e678f03 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_tuff_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_tuff_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium.json b/src/generated/resources/assets/create/items/cut_veridium.json new file mode 100644 index 0000000000..368854546c --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_brick_slab.json b/src/generated/resources/assets/create/items/cut_veridium_brick_slab.json new file mode 100644 index 0000000000..a44de5e78d --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_brick_stairs.json b/src/generated/resources/assets/create/items/cut_veridium_brick_stairs.json new file mode 100644 index 0000000000..edae448dba --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_brick_wall.json b/src/generated/resources/assets/create/items/cut_veridium_brick_wall.json new file mode 100644 index 0000000000..5d7a318e3a --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_bricks.json b/src/generated/resources/assets/create/items/cut_veridium_bricks.json new file mode 100644 index 0000000000..6b8bf86119 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_slab.json b/src/generated/resources/assets/create/items/cut_veridium_slab.json new file mode 100644 index 0000000000..6411c39106 --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_stairs.json b/src/generated/resources/assets/create/items/cut_veridium_stairs.json new file mode 100644 index 0000000000..9de932021e --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cut_veridium_wall.json b/src/generated/resources/assets/create/items/cut_veridium_wall.json new file mode 100644 index 0000000000..01bc8f33aa --- /dev/null +++ b/src/generated/resources/assets/create/items/cut_veridium_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cut_veridium_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cyan_postbox.json b/src/generated/resources/assets/create/items/cyan_postbox.json new file mode 100644 index 0000000000..1f8e20db0f --- /dev/null +++ b/src/generated/resources/assets/create/items/cyan_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cyan_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cyan_seat.json b/src/generated/resources/assets/create/items/cyan_seat.json new file mode 100644 index 0000000000..ea6666a462 --- /dev/null +++ b/src/generated/resources/assets/create/items/cyan_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cyan_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cyan_table_cloth.json b/src/generated/resources/assets/create/items/cyan_table_cloth.json new file mode 100644 index 0000000000..1a4ce7c997 --- /dev/null +++ b/src/generated/resources/assets/create/items/cyan_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cyan_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cyan_toolbox.json b/src/generated/resources/assets/create/items/cyan_toolbox.json new file mode 100644 index 0000000000..c48544ab42 --- /dev/null +++ b/src/generated/resources/assets/create/items/cyan_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cyan_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/cyan_valve_handle.json b/src/generated/resources/assets/create/items/cyan_valve_handle.json new file mode 100644 index 0000000000..514d9bff9e --- /dev/null +++ b/src/generated/resources/assets/create/items/cyan_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/cyan_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/dark_oak_window.json b/src/generated/resources/assets/create/items/dark_oak_window.json new file mode 100644 index 0000000000..48eac3b09c --- /dev/null +++ b/src/generated/resources/assets/create/items/dark_oak_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/dark_oak_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/dark_oak_window_pane.json b/src/generated/resources/assets/create/items/dark_oak_window_pane.json new file mode 100644 index 0000000000..d6ed619b22 --- /dev/null +++ b/src/generated/resources/assets/create/items/dark_oak_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/dark_oak_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/deepslate_pillar.json b/src/generated/resources/assets/create/items/deepslate_pillar.json new file mode 100644 index 0000000000..a4cb36e1b3 --- /dev/null +++ b/src/generated/resources/assets/create/items/deepslate_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/deepslate_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/deepslate_zinc_ore.json b/src/generated/resources/assets/create/items/deepslate_zinc_ore.json new file mode 100644 index 0000000000..cd7e266fa7 --- /dev/null +++ b/src/generated/resources/assets/create/items/deepslate_zinc_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/deepslate_zinc_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/deployer.json b/src/generated/resources/assets/create/items/deployer.json new file mode 100644 index 0000000000..e2d3f585d8 --- /dev/null +++ b/src/generated/resources/assets/create/items/deployer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/deployer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/depot.json b/src/generated/resources/assets/create/items/depot.json new file mode 100644 index 0000000000..c6e1aa4f15 --- /dev/null +++ b/src/generated/resources/assets/create/items/depot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/depot" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/desk_bell.json b/src/generated/resources/assets/create/items/desk_bell.json new file mode 100644 index 0000000000..5552281abc --- /dev/null +++ b/src/generated/resources/assets/create/items/desk_bell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/desk_bell" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/diorite_pillar.json b/src/generated/resources/assets/create/items/diorite_pillar.json new file mode 100644 index 0000000000..650ca7414e --- /dev/null +++ b/src/generated/resources/assets/create/items/diorite_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/diorite_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/display_board.json b/src/generated/resources/assets/create/items/display_board.json new file mode 100644 index 0000000000..bfd451dd29 --- /dev/null +++ b/src/generated/resources/assets/create/items/display_board.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/display_board" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/display_link.json b/src/generated/resources/assets/create/items/display_link.json new file mode 100644 index 0000000000..c44881b752 --- /dev/null +++ b/src/generated/resources/assets/create/items/display_link.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/display_link" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/dough.json b/src/generated/resources/assets/create/items/dough.json new file mode 100644 index 0000000000..fba1384a8b --- /dev/null +++ b/src/generated/resources/assets/create/items/dough.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/dough" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/dripstone_pillar.json b/src/generated/resources/assets/create/items/dripstone_pillar.json new file mode 100644 index 0000000000..f66c0b934a --- /dev/null +++ b/src/generated/resources/assets/create/items/dripstone_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/dripstone_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/electron_tube.json b/src/generated/resources/assets/create/items/electron_tube.json new file mode 100644 index 0000000000..b19b736832 --- /dev/null +++ b/src/generated/resources/assets/create/items/electron_tube.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/electron_tube" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/elevator_contact.json b/src/generated/resources/assets/create/items/elevator_contact.json new file mode 100644 index 0000000000..e5e10dcf1e --- /dev/null +++ b/src/generated/resources/assets/create/items/elevator_contact.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/elevator_contact" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/elevator_pulley.json b/src/generated/resources/assets/create/items/elevator_pulley.json new file mode 100644 index 0000000000..01aa6d0be6 --- /dev/null +++ b/src/generated/resources/assets/create/items/elevator_pulley.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/elevator_pulley" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/empty_blaze_burner.json b/src/generated/resources/assets/create/items/empty_blaze_burner.json new file mode 100644 index 0000000000..75ab1901ea --- /dev/null +++ b/src/generated/resources/assets/create/items/empty_blaze_burner.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/empty_blaze_burner" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/empty_schematic.json b/src/generated/resources/assets/create/items/empty_schematic.json new file mode 100644 index 0000000000..f4b6d8189c --- /dev/null +++ b/src/generated/resources/assets/create/items/empty_schematic.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/empty_schematic" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/encased_chain_drive.json b/src/generated/resources/assets/create/items/encased_chain_drive.json new file mode 100644 index 0000000000..fca33355c9 --- /dev/null +++ b/src/generated/resources/assets/create/items/encased_chain_drive.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/encased_chain_drive" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/encased_fan.json b/src/generated/resources/assets/create/items/encased_fan.json new file mode 100644 index 0000000000..d885309bb7 --- /dev/null +++ b/src/generated/resources/assets/create/items/encased_fan.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/encased_fan" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/experience_block.json b/src/generated/resources/assets/create/items/experience_block.json new file mode 100644 index 0000000000..a5351250de --- /dev/null +++ b/src/generated/resources/assets/create/items/experience_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/experience_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/experience_nugget.json b/src/generated/resources/assets/create/items/experience_nugget.json new file mode 100644 index 0000000000..fa922a1094 --- /dev/null +++ b/src/generated/resources/assets/create/items/experience_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/experience_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_shingle_slab.json b/src/generated/resources/assets/create/items/exposed_copper_shingle_slab.json new file mode 100644 index 0000000000..b19330193c --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/exposed_copper_shingle_stairs.json new file mode 100644 index 0000000000..72ff4892aa --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_shingles.json b/src/generated/resources/assets/create/items/exposed_copper_shingles.json new file mode 100644 index 0000000000..3990191cc8 --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_tile_slab.json b/src/generated/resources/assets/create/items/exposed_copper_tile_slab.json new file mode 100644 index 0000000000..b359bd2082 --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_tile_stairs.json b/src/generated/resources/assets/create/items/exposed_copper_tile_stairs.json new file mode 100644 index 0000000000..5675364413 --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/exposed_copper_tiles.json b/src/generated/resources/assets/create/items/exposed_copper_tiles.json new file mode 100644 index 0000000000..748e850e4b --- /dev/null +++ b/src/generated/resources/assets/create/items/exposed_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/exposed_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/extendo_grip.json b/src/generated/resources/assets/create/items/extendo_grip.json new file mode 100644 index 0000000000..3e009624e4 --- /dev/null +++ b/src/generated/resources/assets/create/items/extendo_grip.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/extendo_grip" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/factory_gauge.json b/src/generated/resources/assets/create/items/factory_gauge.json new file mode 100644 index 0000000000..233cbe5a7f --- /dev/null +++ b/src/generated/resources/assets/create/items/factory_gauge.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/factory_gauge" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/filter.json b/src/generated/resources/assets/create/items/filter.json new file mode 100644 index 0000000000..1d5a800a1b --- /dev/null +++ b/src/generated/resources/assets/create/items/filter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/filter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/fluid_pipe.json b/src/generated/resources/assets/create/items/fluid_pipe.json new file mode 100644 index 0000000000..774176ad40 --- /dev/null +++ b/src/generated/resources/assets/create/items/fluid_pipe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/fluid_pipe" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/fluid_tank.json b/src/generated/resources/assets/create/items/fluid_tank.json new file mode 100644 index 0000000000..572f02e821 --- /dev/null +++ b/src/generated/resources/assets/create/items/fluid_tank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/fluid_tank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/fluid_valve.json b/src/generated/resources/assets/create/items/fluid_valve.json new file mode 100644 index 0000000000..0a7f780871 --- /dev/null +++ b/src/generated/resources/assets/create/items/fluid_valve.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/fluid_valve" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/flywheel.json b/src/generated/resources/assets/create/items/flywheel.json new file mode 100644 index 0000000000..49f24002b1 --- /dev/null +++ b/src/generated/resources/assets/create/items/flywheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/flywheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/framed_glass.json b/src/generated/resources/assets/create/items/framed_glass.json new file mode 100644 index 0000000000..2f509a3d13 --- /dev/null +++ b/src/generated/resources/assets/create/items/framed_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/framed_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/framed_glass_door.json b/src/generated/resources/assets/create/items/framed_glass_door.json new file mode 100644 index 0000000000..cde58ad9ed --- /dev/null +++ b/src/generated/resources/assets/create/items/framed_glass_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/framed_glass_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/framed_glass_pane.json b/src/generated/resources/assets/create/items/framed_glass_pane.json new file mode 100644 index 0000000000..a8d22bc926 --- /dev/null +++ b/src/generated/resources/assets/create/items/framed_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/framed_glass_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/framed_glass_trapdoor.json b/src/generated/resources/assets/create/items/framed_glass_trapdoor.json new file mode 100644 index 0000000000..266462eaee --- /dev/null +++ b/src/generated/resources/assets/create/items/framed_glass_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/framed_glass_trapdoor/block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/furnace_minecart_contraption.json b/src/generated/resources/assets/create/items/furnace_minecart_contraption.json new file mode 100644 index 0000000000..eb160a07a9 --- /dev/null +++ b/src/generated/resources/assets/create/items/furnace_minecart_contraption.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/furnace_minecart_contraption" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gantry_carriage.json b/src/generated/resources/assets/create/items/gantry_carriage.json new file mode 100644 index 0000000000..253bb4d969 --- /dev/null +++ b/src/generated/resources/assets/create/items/gantry_carriage.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/gantry_carriage" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gantry_shaft.json b/src/generated/resources/assets/create/items/gantry_shaft.json new file mode 100644 index 0000000000..d24e327dbd --- /dev/null +++ b/src/generated/resources/assets/create/items/gantry_shaft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/gantry_shaft" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gearbox.json b/src/generated/resources/assets/create/items/gearbox.json new file mode 100644 index 0000000000..b5b01f8259 --- /dev/null +++ b/src/generated/resources/assets/create/items/gearbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/gearbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gearshift.json b/src/generated/resources/assets/create/items/gearshift.json new file mode 100644 index 0000000000..7919115123 --- /dev/null +++ b/src/generated/resources/assets/create/items/gearshift.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/gearshift" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/goggles.json b/src/generated/resources/assets/create/items/goggles.json new file mode 100644 index 0000000000..812fd63bbc --- /dev/null +++ b/src/generated/resources/assets/create/items/goggles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/goggles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/golden_sheet.json b/src/generated/resources/assets/create/items/golden_sheet.json new file mode 100644 index 0000000000..cc81d40e7f --- /dev/null +++ b/src/generated/resources/assets/create/items/golden_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/golden_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/granite_pillar.json b/src/generated/resources/assets/create/items/granite_pillar.json new file mode 100644 index 0000000000..362cecac70 --- /dev/null +++ b/src/generated/resources/assets/create/items/granite_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/granite_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gray_postbox.json b/src/generated/resources/assets/create/items/gray_postbox.json new file mode 100644 index 0000000000..0217f53d2b --- /dev/null +++ b/src/generated/resources/assets/create/items/gray_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/gray_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gray_seat.json b/src/generated/resources/assets/create/items/gray_seat.json new file mode 100644 index 0000000000..e10258866e --- /dev/null +++ b/src/generated/resources/assets/create/items/gray_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/gray_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gray_table_cloth.json b/src/generated/resources/assets/create/items/gray_table_cloth.json new file mode 100644 index 0000000000..5737dfc4d3 --- /dev/null +++ b/src/generated/resources/assets/create/items/gray_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/gray_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gray_toolbox.json b/src/generated/resources/assets/create/items/gray_toolbox.json new file mode 100644 index 0000000000..81be9d4630 --- /dev/null +++ b/src/generated/resources/assets/create/items/gray_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/gray_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/gray_valve_handle.json b/src/generated/resources/assets/create/items/gray_valve_handle.json new file mode 100644 index 0000000000..3824533900 --- /dev/null +++ b/src/generated/resources/assets/create/items/gray_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/gray_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/green_postbox.json b/src/generated/resources/assets/create/items/green_postbox.json new file mode 100644 index 0000000000..ce9231f8c7 --- /dev/null +++ b/src/generated/resources/assets/create/items/green_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/green_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/green_seat.json b/src/generated/resources/assets/create/items/green_seat.json new file mode 100644 index 0000000000..d886ad98cf --- /dev/null +++ b/src/generated/resources/assets/create/items/green_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/green_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/green_table_cloth.json b/src/generated/resources/assets/create/items/green_table_cloth.json new file mode 100644 index 0000000000..61d62b12f0 --- /dev/null +++ b/src/generated/resources/assets/create/items/green_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/green_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/green_toolbox.json b/src/generated/resources/assets/create/items/green_toolbox.json new file mode 100644 index 0000000000..90ba157aea --- /dev/null +++ b/src/generated/resources/assets/create/items/green_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/green_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/green_valve_handle.json b/src/generated/resources/assets/create/items/green_valve_handle.json new file mode 100644 index 0000000000..735b461873 --- /dev/null +++ b/src/generated/resources/assets/create/items/green_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/green_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/hand_crank.json b/src/generated/resources/assets/create/items/hand_crank.json new file mode 100644 index 0000000000..1663a2ebb2 --- /dev/null +++ b/src/generated/resources/assets/create/items/hand_crank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/hand_crank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/handheld_worldshaper.json b/src/generated/resources/assets/create/items/handheld_worldshaper.json new file mode 100644 index 0000000000..7d17cf73b1 --- /dev/null +++ b/src/generated/resources/assets/create/items/handheld_worldshaper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/handheld_worldshaper" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/haunted_bell.json b/src/generated/resources/assets/create/items/haunted_bell.json new file mode 100644 index 0000000000..94dd632ce7 --- /dev/null +++ b/src/generated/resources/assets/create/items/haunted_bell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/haunted_bell" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/honey_bucket.json b/src/generated/resources/assets/create/items/honey_bucket.json new file mode 100644 index 0000000000..6e3c2db62b --- /dev/null +++ b/src/generated/resources/assets/create/items/honey_bucket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/honey_bucket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/honeyed_apple.json b/src/generated/resources/assets/create/items/honeyed_apple.json new file mode 100644 index 0000000000..a8ea66c632 --- /dev/null +++ b/src/generated/resources/assets/create/items/honeyed_apple.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/honeyed_apple" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/horizontal_framed_glass.json b/src/generated/resources/assets/create/items/horizontal_framed_glass.json new file mode 100644 index 0000000000..8dfd17709b --- /dev/null +++ b/src/generated/resources/assets/create/items/horizontal_framed_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/horizontal_framed_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/horizontal_framed_glass_pane.json b/src/generated/resources/assets/create/items/horizontal_framed_glass_pane.json new file mode 100644 index 0000000000..5c234ef914 --- /dev/null +++ b/src/generated/resources/assets/create/items/horizontal_framed_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/horizontal_framed_glass_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/hose_pulley.json b/src/generated/resources/assets/create/items/hose_pulley.json new file mode 100644 index 0000000000..f876ee029c --- /dev/null +++ b/src/generated/resources/assets/create/items/hose_pulley.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/hose_pulley" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/incomplete_precision_mechanism.json b/src/generated/resources/assets/create/items/incomplete_precision_mechanism.json new file mode 100644 index 0000000000..8ab8e838be --- /dev/null +++ b/src/generated/resources/assets/create/items/incomplete_precision_mechanism.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/incomplete_precision_mechanism" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/incomplete_track.json b/src/generated/resources/assets/create/items/incomplete_track.json new file mode 100644 index 0000000000..e160fb85ba --- /dev/null +++ b/src/generated/resources/assets/create/items/incomplete_track.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/incomplete_track" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/industrial_iron_block.json b/src/generated/resources/assets/create/items/industrial_iron_block.json new file mode 100644 index 0000000000..89b2762bc5 --- /dev/null +++ b/src/generated/resources/assets/create/items/industrial_iron_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/industrial_iron_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/industrial_iron_window.json b/src/generated/resources/assets/create/items/industrial_iron_window.json new file mode 100644 index 0000000000..6ed0af0778 --- /dev/null +++ b/src/generated/resources/assets/create/items/industrial_iron_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/industrial_iron_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/industrial_iron_window_pane.json b/src/generated/resources/assets/create/items/industrial_iron_window_pane.json new file mode 100644 index 0000000000..8fc9fad379 --- /dev/null +++ b/src/generated/resources/assets/create/items/industrial_iron_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/industrial_iron_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/iron_sheet.json b/src/generated/resources/assets/create/items/iron_sheet.json new file mode 100644 index 0000000000..ed40de9022 --- /dev/null +++ b/src/generated/resources/assets/create/items/iron_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/iron_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/item_drain.json b/src/generated/resources/assets/create/items/item_drain.json new file mode 100644 index 0000000000..9b641de1bb --- /dev/null +++ b/src/generated/resources/assets/create/items/item_drain.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/item_drain" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/item_hatch.json b/src/generated/resources/assets/create/items/item_hatch.json new file mode 100644 index 0000000000..5be321bb51 --- /dev/null +++ b/src/generated/resources/assets/create/items/item_hatch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/item_hatch" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/item_vault.json b/src/generated/resources/assets/create/items/item_vault.json new file mode 100644 index 0000000000..74e010ec3f --- /dev/null +++ b/src/generated/resources/assets/create/items/item_vault.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/item_vault" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/jungle_window.json b/src/generated/resources/assets/create/items/jungle_window.json new file mode 100644 index 0000000000..adad0afae7 --- /dev/null +++ b/src/generated/resources/assets/create/items/jungle_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/jungle_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/jungle_window_pane.json b/src/generated/resources/assets/create/items/jungle_window_pane.json new file mode 100644 index 0000000000..1d745b4fe4 --- /dev/null +++ b/src/generated/resources/assets/create/items/jungle_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/jungle_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/large_cogwheel.json b/src/generated/resources/assets/create/items/large_cogwheel.json new file mode 100644 index 0000000000..4f8239455b --- /dev/null +++ b/src/generated/resources/assets/create/items/large_cogwheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/large_cogwheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/large_water_wheel.json b/src/generated/resources/assets/create/items/large_water_wheel.json new file mode 100644 index 0000000000..0b1c961469 --- /dev/null +++ b/src/generated/resources/assets/create/items/large_water_wheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/large_water_wheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_andesite.json b/src/generated/resources/assets/create/items/layered_andesite.json new file mode 100644 index 0000000000..be7c4436c1 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_andesite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_asurine.json b/src/generated/resources/assets/create/items/layered_asurine.json new file mode 100644 index 0000000000..78d8b79039 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_asurine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_asurine" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_calcite.json b/src/generated/resources/assets/create/items/layered_calcite.json new file mode 100644 index 0000000000..a6fa997012 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_calcite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_calcite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_crimsite.json b/src/generated/resources/assets/create/items/layered_crimsite.json new file mode 100644 index 0000000000..9ae19fd4b7 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_crimsite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_crimsite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_deepslate.json b/src/generated/resources/assets/create/items/layered_deepslate.json new file mode 100644 index 0000000000..6e973c5249 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_deepslate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_diorite.json b/src/generated/resources/assets/create/items/layered_diorite.json new file mode 100644 index 0000000000..28031021cc --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_diorite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_diorite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_dripstone.json b/src/generated/resources/assets/create/items/layered_dripstone.json new file mode 100644 index 0000000000..19161942f9 --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_dripstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_dripstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_granite.json b/src/generated/resources/assets/create/items/layered_granite.json new file mode 100644 index 0000000000..0696bd995e --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_granite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_granite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_limestone.json b/src/generated/resources/assets/create/items/layered_limestone.json new file mode 100644 index 0000000000..da000da1ba --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_limestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_limestone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_ochrum.json b/src/generated/resources/assets/create/items/layered_ochrum.json new file mode 100644 index 0000000000..4e0342e07e --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_ochrum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_ochrum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_scorchia.json b/src/generated/resources/assets/create/items/layered_scorchia.json new file mode 100644 index 0000000000..efafaa60db --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_scorchia.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_scorchia" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_scoria.json b/src/generated/resources/assets/create/items/layered_scoria.json new file mode 100644 index 0000000000..4464406e6b --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_scoria.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_scoria" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_tuff.json b/src/generated/resources/assets/create/items/layered_tuff.json new file mode 100644 index 0000000000..25c7f62c3e --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_tuff" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/layered_veridium.json b/src/generated/resources/assets/create/items/layered_veridium.json new file mode 100644 index 0000000000..9c5f73d19e --- /dev/null +++ b/src/generated/resources/assets/create/items/layered_veridium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/layered_veridium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_blue_postbox.json b/src/generated/resources/assets/create/items/light_blue_postbox.json new file mode 100644 index 0000000000..df8207ec18 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_blue_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_blue_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_blue_seat.json b/src/generated/resources/assets/create/items/light_blue_seat.json new file mode 100644 index 0000000000..543b018f52 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_blue_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_blue_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_blue_table_cloth.json b/src/generated/resources/assets/create/items/light_blue_table_cloth.json new file mode 100644 index 0000000000..0583c0e7e9 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_blue_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_blue_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_blue_toolbox.json b/src/generated/resources/assets/create/items/light_blue_toolbox.json new file mode 100644 index 0000000000..8526369ae9 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_blue_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_blue_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_blue_valve_handle.json b/src/generated/resources/assets/create/items/light_blue_valve_handle.json new file mode 100644 index 0000000000..65dd737b77 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_blue_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_blue_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_gray_postbox.json b/src/generated/resources/assets/create/items/light_gray_postbox.json new file mode 100644 index 0000000000..3a8cf921b1 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_gray_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_gray_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_gray_seat.json b/src/generated/resources/assets/create/items/light_gray_seat.json new file mode 100644 index 0000000000..3221b9f825 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_gray_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_gray_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_gray_table_cloth.json b/src/generated/resources/assets/create/items/light_gray_table_cloth.json new file mode 100644 index 0000000000..9dc3debbc1 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_gray_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_gray_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_gray_toolbox.json b/src/generated/resources/assets/create/items/light_gray_toolbox.json new file mode 100644 index 0000000000..b5d168f343 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_gray_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_gray_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/light_gray_valve_handle.json b/src/generated/resources/assets/create/items/light_gray_valve_handle.json new file mode 100644 index 0000000000..c957f54bd1 --- /dev/null +++ b/src/generated/resources/assets/create/items/light_gray_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/light_gray_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/lime_postbox.json b/src/generated/resources/assets/create/items/lime_postbox.json new file mode 100644 index 0000000000..771bec612f --- /dev/null +++ b/src/generated/resources/assets/create/items/lime_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/lime_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/lime_seat.json b/src/generated/resources/assets/create/items/lime_seat.json new file mode 100644 index 0000000000..8890b25810 --- /dev/null +++ b/src/generated/resources/assets/create/items/lime_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/lime_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/lime_table_cloth.json b/src/generated/resources/assets/create/items/lime_table_cloth.json new file mode 100644 index 0000000000..19f300b2a9 --- /dev/null +++ b/src/generated/resources/assets/create/items/lime_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/lime_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/lime_toolbox.json b/src/generated/resources/assets/create/items/lime_toolbox.json new file mode 100644 index 0000000000..34f0b7d26d --- /dev/null +++ b/src/generated/resources/assets/create/items/lime_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/lime_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/lime_valve_handle.json b/src/generated/resources/assets/create/items/lime_valve_handle.json new file mode 100644 index 0000000000..614204cf3e --- /dev/null +++ b/src/generated/resources/assets/create/items/lime_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/lime_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/limestone.json b/src/generated/resources/assets/create/items/limestone.json new file mode 100644 index 0000000000..0a5eb3cc48 --- /dev/null +++ b/src/generated/resources/assets/create/items/limestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/limestone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/limestone_pillar.json b/src/generated/resources/assets/create/items/limestone_pillar.json new file mode 100644 index 0000000000..9b97a60398 --- /dev/null +++ b/src/generated/resources/assets/create/items/limestone_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/limestone_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/linear_chassis.json b/src/generated/resources/assets/create/items/linear_chassis.json new file mode 100644 index 0000000000..0e025e1682 --- /dev/null +++ b/src/generated/resources/assets/create/items/linear_chassis.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/linear_chassis" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/linked_controller.json b/src/generated/resources/assets/create/items/linked_controller.json new file mode 100644 index 0000000000..f5de7c420a --- /dev/null +++ b/src/generated/resources/assets/create/items/linked_controller.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/linked_controller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/magenta_postbox.json b/src/generated/resources/assets/create/items/magenta_postbox.json new file mode 100644 index 0000000000..3a10e4d90e --- /dev/null +++ b/src/generated/resources/assets/create/items/magenta_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/magenta_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/magenta_seat.json b/src/generated/resources/assets/create/items/magenta_seat.json new file mode 100644 index 0000000000..62219e1207 --- /dev/null +++ b/src/generated/resources/assets/create/items/magenta_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/magenta_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/magenta_table_cloth.json b/src/generated/resources/assets/create/items/magenta_table_cloth.json new file mode 100644 index 0000000000..683f0084cf --- /dev/null +++ b/src/generated/resources/assets/create/items/magenta_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/magenta_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/magenta_toolbox.json b/src/generated/resources/assets/create/items/magenta_toolbox.json new file mode 100644 index 0000000000..ac07635d75 --- /dev/null +++ b/src/generated/resources/assets/create/items/magenta_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/magenta_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/magenta_valve_handle.json b/src/generated/resources/assets/create/items/magenta_valve_handle.json new file mode 100644 index 0000000000..ddbfd0a217 --- /dev/null +++ b/src/generated/resources/assets/create/items/magenta_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/magenta_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mangrove_window.json b/src/generated/resources/assets/create/items/mangrove_window.json new file mode 100644 index 0000000000..ce69278500 --- /dev/null +++ b/src/generated/resources/assets/create/items/mangrove_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/mangrove_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mangrove_window_pane.json b/src/generated/resources/assets/create/items/mangrove_window_pane.json new file mode 100644 index 0000000000..5cab3f8d19 --- /dev/null +++ b/src/generated/resources/assets/create/items/mangrove_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mangrove_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_arm.json b/src/generated/resources/assets/create/items/mechanical_arm.json new file mode 100644 index 0000000000..2d9844a161 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_arm.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_arm" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_bearing.json b/src/generated/resources/assets/create/items/mechanical_bearing.json new file mode 100644 index 0000000000..093fad5d34 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_bearing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/mechanical_bearing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_crafter.json b/src/generated/resources/assets/create/items/mechanical_crafter.json new file mode 100644 index 0000000000..0d0329883f --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_crafter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_crafter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_drill.json b/src/generated/resources/assets/create/items/mechanical_drill.json new file mode 100644 index 0000000000..9eafed78e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_drill.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_drill" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_harvester.json b/src/generated/resources/assets/create/items/mechanical_harvester.json new file mode 100644 index 0000000000..1eab88e9ce --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_harvester.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_harvester" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_mixer.json b/src/generated/resources/assets/create/items/mechanical_mixer.json new file mode 100644 index 0000000000..c52a483f58 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_mixer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_mixer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_piston.json b/src/generated/resources/assets/create/items/mechanical_piston.json new file mode 100644 index 0000000000..3a30b91c49 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_piston.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_piston" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_plough.json b/src/generated/resources/assets/create/items/mechanical_plough.json new file mode 100644 index 0000000000..cb72c5b43b --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_plough.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/mechanical_plough" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_press.json b/src/generated/resources/assets/create/items/mechanical_press.json new file mode 100644 index 0000000000..9d2105e9cd --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_press.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_press" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_pump.json b/src/generated/resources/assets/create/items/mechanical_pump.json new file mode 100644 index 0000000000..0ac6aa53a0 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_pump.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_pump" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_roller.json b/src/generated/resources/assets/create/items/mechanical_roller.json new file mode 100644 index 0000000000..01c2088bc2 --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_roller.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_roller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mechanical_saw.json b/src/generated/resources/assets/create/items/mechanical_saw.json new file mode 100644 index 0000000000..612982020f --- /dev/null +++ b/src/generated/resources/assets/create/items/mechanical_saw.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mechanical_saw" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/metal_bracket.json b/src/generated/resources/assets/create/items/metal_bracket.json new file mode 100644 index 0000000000..2bf87db1fa --- /dev/null +++ b/src/generated/resources/assets/create/items/metal_bracket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/metal_bracket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/metal_girder.json b/src/generated/resources/assets/create/items/metal_girder.json new file mode 100644 index 0000000000..753b6cb088 --- /dev/null +++ b/src/generated/resources/assets/create/items/metal_girder.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/metal_girder" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/millstone.json b/src/generated/resources/assets/create/items/millstone.json new file mode 100644 index 0000000000..d80fa04e1f --- /dev/null +++ b/src/generated/resources/assets/create/items/millstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/millstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/minecart_contraption.json b/src/generated/resources/assets/create/items/minecart_contraption.json new file mode 100644 index 0000000000..f12d9a6c45 --- /dev/null +++ b/src/generated/resources/assets/create/items/minecart_contraption.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/minecart_contraption" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/minecart_coupling.json b/src/generated/resources/assets/create/items/minecart_coupling.json new file mode 100644 index 0000000000..1f5d05b268 --- /dev/null +++ b/src/generated/resources/assets/create/items/minecart_coupling.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/minecart_coupling" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/mysterious_cuckoo_clock.json b/src/generated/resources/assets/create/items/mysterious_cuckoo_clock.json new file mode 100644 index 0000000000..fa8aba9cb7 --- /dev/null +++ b/src/generated/resources/assets/create/items/mysterious_cuckoo_clock.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/mysterious_cuckoo_clock" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/netherite_backtank.json b/src/generated/resources/assets/create/items/netherite_backtank.json new file mode 100644 index 0000000000..2b68168d48 --- /dev/null +++ b/src/generated/resources/assets/create/items/netherite_backtank.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/netherite_backtank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/netherite_backtank_placeable.json b/src/generated/resources/assets/create/items/netherite_backtank_placeable.json new file mode 100644 index 0000000000..dc5437e146 --- /dev/null +++ b/src/generated/resources/assets/create/items/netherite_backtank_placeable.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/netherite_backtank" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/netherite_diving_boots.json b/src/generated/resources/assets/create/items/netherite_diving_boots.json new file mode 100644 index 0000000000..a562b6cf4b --- /dev/null +++ b/src/generated/resources/assets/create/items/netherite_diving_boots.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/netherite_diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/netherite_diving_helmet.json b/src/generated/resources/assets/create/items/netherite_diving_helmet.json new file mode 100644 index 0000000000..137ddea057 --- /dev/null +++ b/src/generated/resources/assets/create/items/netherite_diving_helmet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/netherite_diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/nixie_tube.json b/src/generated/resources/assets/create/items/nixie_tube.json new file mode 100644 index 0000000000..ee40ca0d1b --- /dev/null +++ b/src/generated/resources/assets/create/items/nixie_tube.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/nixie_tube" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/nozzle.json b/src/generated/resources/assets/create/items/nozzle.json new file mode 100644 index 0000000000..a2d395fa8e --- /dev/null +++ b/src/generated/resources/assets/create/items/nozzle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/nozzle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oak_window.json b/src/generated/resources/assets/create/items/oak_window.json new file mode 100644 index 0000000000..6366afe9e9 --- /dev/null +++ b/src/generated/resources/assets/create/items/oak_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oak_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oak_window_pane.json b/src/generated/resources/assets/create/items/oak_window_pane.json new file mode 100644 index 0000000000..83cf7c9200 --- /dev/null +++ b/src/generated/resources/assets/create/items/oak_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/oak_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/ochrum.json b/src/generated/resources/assets/create/items/ochrum.json new file mode 100644 index 0000000000..b3640d10c1 --- /dev/null +++ b/src/generated/resources/assets/create/items/ochrum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/ochrum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/ochrum_pillar.json b/src/generated/resources/assets/create/items/ochrum_pillar.json new file mode 100644 index 0000000000..0492f01dca --- /dev/null +++ b/src/generated/resources/assets/create/items/ochrum_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/ochrum_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/orange_postbox.json b/src/generated/resources/assets/create/items/orange_postbox.json new file mode 100644 index 0000000000..940be52f89 --- /dev/null +++ b/src/generated/resources/assets/create/items/orange_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/orange_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/orange_seat.json b/src/generated/resources/assets/create/items/orange_seat.json new file mode 100644 index 0000000000..cdcb6d3a84 --- /dev/null +++ b/src/generated/resources/assets/create/items/orange_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/orange_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/orange_table_cloth.json b/src/generated/resources/assets/create/items/orange_table_cloth.json new file mode 100644 index 0000000000..b0f754e970 --- /dev/null +++ b/src/generated/resources/assets/create/items/orange_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/orange_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/orange_toolbox.json b/src/generated/resources/assets/create/items/orange_toolbox.json new file mode 100644 index 0000000000..a75cf6847a --- /dev/null +++ b/src/generated/resources/assets/create/items/orange_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/orange_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/orange_valve_handle.json b/src/generated/resources/assets/create/items/orange_valve_handle.json new file mode 100644 index 0000000000..f28430e589 --- /dev/null +++ b/src/generated/resources/assets/create/items/orange_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/orange_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/ornate_iron_window.json b/src/generated/resources/assets/create/items/ornate_iron_window.json new file mode 100644 index 0000000000..c55235c8c8 --- /dev/null +++ b/src/generated/resources/assets/create/items/ornate_iron_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/ornate_iron_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/ornate_iron_window_pane.json b/src/generated/resources/assets/create/items/ornate_iron_window_pane.json new file mode 100644 index 0000000000..bec3c45960 --- /dev/null +++ b/src/generated/resources/assets/create/items/ornate_iron_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/ornate_iron_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_shingle_slab.json b/src/generated/resources/assets/create/items/oxidized_copper_shingle_slab.json new file mode 100644 index 0000000000..be44cf5d2c --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/oxidized_copper_shingle_stairs.json new file mode 100644 index 0000000000..a2d3811316 --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_shingles.json b/src/generated/resources/assets/create/items/oxidized_copper_shingles.json new file mode 100644 index 0000000000..b742b40945 --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_tile_slab.json b/src/generated/resources/assets/create/items/oxidized_copper_tile_slab.json new file mode 100644 index 0000000000..159dfde4ad --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_tile_stairs.json b/src/generated/resources/assets/create/items/oxidized_copper_tile_stairs.json new file mode 100644 index 0000000000..c9355537cc --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/oxidized_copper_tiles.json b/src/generated/resources/assets/create/items/oxidized_copper_tiles.json new file mode 100644 index 0000000000..2f0f58823f --- /dev/null +++ b/src/generated/resources/assets/create/items/oxidized_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/oxidized_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/package_filter.json b/src/generated/resources/assets/create/items/package_filter.json new file mode 100644 index 0000000000..17f38bac82 --- /dev/null +++ b/src/generated/resources/assets/create/items/package_filter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/package_filter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/package_frogport.json b/src/generated/resources/assets/create/items/package_frogport.json new file mode 100644 index 0000000000..ffbb02f584 --- /dev/null +++ b/src/generated/resources/assets/create/items/package_frogport.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/package_frogport" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/packager.json b/src/generated/resources/assets/create/items/packager.json new file mode 100644 index 0000000000..a00f61cfe8 --- /dev/null +++ b/src/generated/resources/assets/create/items/packager.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/packager" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/peculiar_bell.json b/src/generated/resources/assets/create/items/peculiar_bell.json new file mode 100644 index 0000000000..c0ae5c31e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/peculiar_bell.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/peculiar_bell" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pink_postbox.json b/src/generated/resources/assets/create/items/pink_postbox.json new file mode 100644 index 0000000000..9878703889 --- /dev/null +++ b/src/generated/resources/assets/create/items/pink_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pink_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pink_seat.json b/src/generated/resources/assets/create/items/pink_seat.json new file mode 100644 index 0000000000..6865d05f47 --- /dev/null +++ b/src/generated/resources/assets/create/items/pink_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pink_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pink_table_cloth.json b/src/generated/resources/assets/create/items/pink_table_cloth.json new file mode 100644 index 0000000000..01a431c6e8 --- /dev/null +++ b/src/generated/resources/assets/create/items/pink_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pink_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pink_toolbox.json b/src/generated/resources/assets/create/items/pink_toolbox.json new file mode 100644 index 0000000000..60b5d472d9 --- /dev/null +++ b/src/generated/resources/assets/create/items/pink_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pink_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pink_valve_handle.json b/src/generated/resources/assets/create/items/pink_valve_handle.json new file mode 100644 index 0000000000..ae12122bcd --- /dev/null +++ b/src/generated/resources/assets/create/items/pink_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pink_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/piston_extension_pole.json b/src/generated/resources/assets/create/items/piston_extension_pole.json new file mode 100644 index 0000000000..e8405dc578 --- /dev/null +++ b/src/generated/resources/assets/create/items/piston_extension_pole.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/piston_extension_pole" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/placard.json b/src/generated/resources/assets/create/items/placard.json new file mode 100644 index 0000000000..08ec12648f --- /dev/null +++ b/src/generated/resources/assets/create/items/placard.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/placard" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_andesite.json b/src/generated/resources/assets/create/items/polished_cut_andesite.json new file mode 100644 index 0000000000..0534a427ad --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_andesite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_andesite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_andesite_slab.json b/src/generated/resources/assets/create/items/polished_cut_andesite_slab.json new file mode 100644 index 0000000000..b62be407e6 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_andesite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_andesite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_andesite_stairs.json b/src/generated/resources/assets/create/items/polished_cut_andesite_stairs.json new file mode 100644 index 0000000000..6da113959e --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_andesite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_andesite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_andesite_wall.json b/src/generated/resources/assets/create/items/polished_cut_andesite_wall.json new file mode 100644 index 0000000000..33d41ffd8e --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_andesite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_andesite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_asurine.json b/src/generated/resources/assets/create/items/polished_cut_asurine.json new file mode 100644 index 0000000000..c3314e1adc --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_asurine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_asurine" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_asurine_slab.json b/src/generated/resources/assets/create/items/polished_cut_asurine_slab.json new file mode 100644 index 0000000000..1d349baf6f --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_asurine_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_asurine_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_asurine_stairs.json b/src/generated/resources/assets/create/items/polished_cut_asurine_stairs.json new file mode 100644 index 0000000000..6e43b9986e --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_asurine_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_asurine_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_asurine_wall.json b/src/generated/resources/assets/create/items/polished_cut_asurine_wall.json new file mode 100644 index 0000000000..4e10d0bcf4 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_asurine_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_asurine_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_calcite.json b/src/generated/resources/assets/create/items/polished_cut_calcite.json new file mode 100644 index 0000000000..03d3ae4de0 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_calcite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_calcite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_calcite_slab.json b/src/generated/resources/assets/create/items/polished_cut_calcite_slab.json new file mode 100644 index 0000000000..127805102c --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_calcite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_calcite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_calcite_stairs.json b/src/generated/resources/assets/create/items/polished_cut_calcite_stairs.json new file mode 100644 index 0000000000..e49e47c14b --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_calcite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_calcite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_calcite_wall.json b/src/generated/resources/assets/create/items/polished_cut_calcite_wall.json new file mode 100644 index 0000000000..864ef2ed35 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_calcite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_calcite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_crimsite.json b/src/generated/resources/assets/create/items/polished_cut_crimsite.json new file mode 100644 index 0000000000..99917484c4 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_crimsite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_crimsite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_crimsite_slab.json b/src/generated/resources/assets/create/items/polished_cut_crimsite_slab.json new file mode 100644 index 0000000000..9d51d44bc9 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_crimsite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_crimsite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_crimsite_stairs.json b/src/generated/resources/assets/create/items/polished_cut_crimsite_stairs.json new file mode 100644 index 0000000000..5c4662308b --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_crimsite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_crimsite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_crimsite_wall.json b/src/generated/resources/assets/create/items/polished_cut_crimsite_wall.json new file mode 100644 index 0000000000..e97ba25a9a --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_crimsite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_crimsite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_deepslate.json b/src/generated/resources/assets/create/items/polished_cut_deepslate.json new file mode 100644 index 0000000000..8d40deaca1 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_deepslate.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_deepslate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_deepslate_slab.json b/src/generated/resources/assets/create/items/polished_cut_deepslate_slab.json new file mode 100644 index 0000000000..36f431308d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_deepslate_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_deepslate_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_deepslate_stairs.json b/src/generated/resources/assets/create/items/polished_cut_deepslate_stairs.json new file mode 100644 index 0000000000..8e5575ba39 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_deepslate_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_deepslate_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_deepslate_wall.json b/src/generated/resources/assets/create/items/polished_cut_deepslate_wall.json new file mode 100644 index 0000000000..589be2b17a --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_deepslate_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_deepslate_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_diorite.json b/src/generated/resources/assets/create/items/polished_cut_diorite.json new file mode 100644 index 0000000000..35fa2f75a0 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_diorite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_diorite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_diorite_slab.json b/src/generated/resources/assets/create/items/polished_cut_diorite_slab.json new file mode 100644 index 0000000000..3aa9cd9023 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_diorite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_diorite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_diorite_stairs.json b/src/generated/resources/assets/create/items/polished_cut_diorite_stairs.json new file mode 100644 index 0000000000..bc0650beef --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_diorite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_diorite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_diorite_wall.json b/src/generated/resources/assets/create/items/polished_cut_diorite_wall.json new file mode 100644 index 0000000000..ac90c3f82a --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_diorite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_diorite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_dripstone.json b/src/generated/resources/assets/create/items/polished_cut_dripstone.json new file mode 100644 index 0000000000..519cad4ca8 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_dripstone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_dripstone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_dripstone_slab.json b/src/generated/resources/assets/create/items/polished_cut_dripstone_slab.json new file mode 100644 index 0000000000..d0bf560e41 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_dripstone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_dripstone_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_dripstone_stairs.json b/src/generated/resources/assets/create/items/polished_cut_dripstone_stairs.json new file mode 100644 index 0000000000..eaa6a9f58d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_dripstone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_dripstone_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_dripstone_wall.json b/src/generated/resources/assets/create/items/polished_cut_dripstone_wall.json new file mode 100644 index 0000000000..cb4be94e33 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_dripstone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_dripstone_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_granite.json b/src/generated/resources/assets/create/items/polished_cut_granite.json new file mode 100644 index 0000000000..3db8af79cd --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_granite.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_granite" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_granite_slab.json b/src/generated/resources/assets/create/items/polished_cut_granite_slab.json new file mode 100644 index 0000000000..762c7e1d8a --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_granite_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_granite_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_granite_stairs.json b/src/generated/resources/assets/create/items/polished_cut_granite_stairs.json new file mode 100644 index 0000000000..42f710c9a7 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_granite_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_granite_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_granite_wall.json b/src/generated/resources/assets/create/items/polished_cut_granite_wall.json new file mode 100644 index 0000000000..f577dfb55f --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_granite_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_granite_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_limestone.json b/src/generated/resources/assets/create/items/polished_cut_limestone.json new file mode 100644 index 0000000000..91f0e07804 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_limestone.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_limestone" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_limestone_slab.json b/src/generated/resources/assets/create/items/polished_cut_limestone_slab.json new file mode 100644 index 0000000000..48be81cc9d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_limestone_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_limestone_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_limestone_stairs.json b/src/generated/resources/assets/create/items/polished_cut_limestone_stairs.json new file mode 100644 index 0000000000..454f211ffc --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_limestone_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_limestone_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_limestone_wall.json b/src/generated/resources/assets/create/items/polished_cut_limestone_wall.json new file mode 100644 index 0000000000..8b2fe5106f --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_limestone_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_limestone_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_ochrum.json b/src/generated/resources/assets/create/items/polished_cut_ochrum.json new file mode 100644 index 0000000000..da76442e0d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_ochrum.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_ochrum" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_ochrum_slab.json b/src/generated/resources/assets/create/items/polished_cut_ochrum_slab.json new file mode 100644 index 0000000000..400d72c65c --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_ochrum_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_ochrum_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_ochrum_stairs.json b/src/generated/resources/assets/create/items/polished_cut_ochrum_stairs.json new file mode 100644 index 0000000000..2bdfd9b80d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_ochrum_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_ochrum_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_ochrum_wall.json b/src/generated/resources/assets/create/items/polished_cut_ochrum_wall.json new file mode 100644 index 0000000000..84ae26a3b6 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_ochrum_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_ochrum_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scorchia.json b/src/generated/resources/assets/create/items/polished_cut_scorchia.json new file mode 100644 index 0000000000..8186a19d5b --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scorchia.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scorchia" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scorchia_slab.json b/src/generated/resources/assets/create/items/polished_cut_scorchia_slab.json new file mode 100644 index 0000000000..660649c219 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scorchia_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scorchia_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scorchia_stairs.json b/src/generated/resources/assets/create/items/polished_cut_scorchia_stairs.json new file mode 100644 index 0000000000..b6200052c3 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scorchia_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scorchia_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scorchia_wall.json b/src/generated/resources/assets/create/items/polished_cut_scorchia_wall.json new file mode 100644 index 0000000000..7598fd6cc9 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scorchia_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scorchia_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scoria.json b/src/generated/resources/assets/create/items/polished_cut_scoria.json new file mode 100644 index 0000000000..e530c36f7e --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scoria.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scoria" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scoria_slab.json b/src/generated/resources/assets/create/items/polished_cut_scoria_slab.json new file mode 100644 index 0000000000..79c59ea2b3 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scoria_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scoria_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scoria_stairs.json b/src/generated/resources/assets/create/items/polished_cut_scoria_stairs.json new file mode 100644 index 0000000000..b53171d99f --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scoria_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scoria_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_scoria_wall.json b/src/generated/resources/assets/create/items/polished_cut_scoria_wall.json new file mode 100644 index 0000000000..9e371cc4c4 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_scoria_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_scoria_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_tuff.json b/src/generated/resources/assets/create/items/polished_cut_tuff.json new file mode 100644 index 0000000000..b2e6268c14 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_tuff.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_tuff" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_tuff_slab.json b/src/generated/resources/assets/create/items/polished_cut_tuff_slab.json new file mode 100644 index 0000000000..2e54d470f9 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_tuff_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_tuff_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_tuff_stairs.json b/src/generated/resources/assets/create/items/polished_cut_tuff_stairs.json new file mode 100644 index 0000000000..a4d1328f1d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_tuff_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_tuff_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_tuff_wall.json b/src/generated/resources/assets/create/items/polished_cut_tuff_wall.json new file mode 100644 index 0000000000..a26cbe996d --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_tuff_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_tuff_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_veridium.json b/src/generated/resources/assets/create/items/polished_cut_veridium.json new file mode 100644 index 0000000000..56b70a4cae --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_veridium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_veridium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_veridium_slab.json b/src/generated/resources/assets/create/items/polished_cut_veridium_slab.json new file mode 100644 index 0000000000..d096f9aefa --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_veridium_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_veridium_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_veridium_stairs.json b/src/generated/resources/assets/create/items/polished_cut_veridium_stairs.json new file mode 100644 index 0000000000..35245347a2 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_veridium_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_veridium_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_cut_veridium_wall.json b/src/generated/resources/assets/create/items/polished_cut_veridium_wall.json new file mode 100644 index 0000000000..6db982f019 --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_cut_veridium_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/polished_cut_veridium_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/polished_rose_quartz.json b/src/generated/resources/assets/create/items/polished_rose_quartz.json new file mode 100644 index 0000000000..0d11d588ed --- /dev/null +++ b/src/generated/resources/assets/create/items/polished_rose_quartz.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/polished_rose_quartz" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/portable_fluid_interface.json b/src/generated/resources/assets/create/items/portable_fluid_interface.json new file mode 100644 index 0000000000..41591d380c --- /dev/null +++ b/src/generated/resources/assets/create/items/portable_fluid_interface.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/portable_fluid_interface" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/portable_storage_interface.json b/src/generated/resources/assets/create/items/portable_storage_interface.json new file mode 100644 index 0000000000..ee312167b0 --- /dev/null +++ b/src/generated/resources/assets/create/items/portable_storage_interface.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/portable_storage_interface" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/potato_cannon.json b/src/generated/resources/assets/create/items/potato_cannon.json new file mode 100644 index 0000000000..c37cd1d9c7 --- /dev/null +++ b/src/generated/resources/assets/create/items/potato_cannon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/potato_cannon" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/powdered_obsidian.json b/src/generated/resources/assets/create/items/powdered_obsidian.json new file mode 100644 index 0000000000..3cb0bb3128 --- /dev/null +++ b/src/generated/resources/assets/create/items/powdered_obsidian.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/powdered_obsidian" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/powered_latch.json b/src/generated/resources/assets/create/items/powered_latch.json new file mode 100644 index 0000000000..6a40e43f73 --- /dev/null +++ b/src/generated/resources/assets/create/items/powered_latch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/powered_latch" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/powered_toggle_latch.json b/src/generated/resources/assets/create/items/powered_toggle_latch.json new file mode 100644 index 0000000000..6618ab83f8 --- /dev/null +++ b/src/generated/resources/assets/create/items/powered_toggle_latch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/powered_toggle_latch" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/precision_mechanism.json b/src/generated/resources/assets/create/items/precision_mechanism.json new file mode 100644 index 0000000000..26c88092c3 --- /dev/null +++ b/src/generated/resources/assets/create/items/precision_mechanism.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/precision_mechanism" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/propeller.json b/src/generated/resources/assets/create/items/propeller.json new file mode 100644 index 0000000000..e915ed815e --- /dev/null +++ b/src/generated/resources/assets/create/items/propeller.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/propeller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pulp.json b/src/generated/resources/assets/create/items/pulp.json new file mode 100644 index 0000000000..c9fa872291 --- /dev/null +++ b/src/generated/resources/assets/create/items/pulp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/pulp" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pulse_extender.json b/src/generated/resources/assets/create/items/pulse_extender.json new file mode 100644 index 0000000000..d97ed5b18a --- /dev/null +++ b/src/generated/resources/assets/create/items/pulse_extender.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pulse_extender" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pulse_repeater.json b/src/generated/resources/assets/create/items/pulse_repeater.json new file mode 100644 index 0000000000..07d29ecde1 --- /dev/null +++ b/src/generated/resources/assets/create/items/pulse_repeater.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pulse_repeater" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/pulse_timer.json b/src/generated/resources/assets/create/items/pulse_timer.json new file mode 100644 index 0000000000..234d8b40fc --- /dev/null +++ b/src/generated/resources/assets/create/items/pulse_timer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/pulse_timer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/purple_postbox.json b/src/generated/resources/assets/create/items/purple_postbox.json new file mode 100644 index 0000000000..1911dd38a0 --- /dev/null +++ b/src/generated/resources/assets/create/items/purple_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/purple_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/purple_seat.json b/src/generated/resources/assets/create/items/purple_seat.json new file mode 100644 index 0000000000..4f8dd2eeec --- /dev/null +++ b/src/generated/resources/assets/create/items/purple_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/purple_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/purple_table_cloth.json b/src/generated/resources/assets/create/items/purple_table_cloth.json new file mode 100644 index 0000000000..b9dbd1b287 --- /dev/null +++ b/src/generated/resources/assets/create/items/purple_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/purple_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/purple_toolbox.json b/src/generated/resources/assets/create/items/purple_toolbox.json new file mode 100644 index 0000000000..39be67110c --- /dev/null +++ b/src/generated/resources/assets/create/items/purple_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/purple_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/purple_valve_handle.json b/src/generated/resources/assets/create/items/purple_valve_handle.json new file mode 100644 index 0000000000..9f102c0dc3 --- /dev/null +++ b/src/generated/resources/assets/create/items/purple_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/purple_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/radial_chassis.json b/src/generated/resources/assets/create/items/radial_chassis.json new file mode 100644 index 0000000000..fc17a0f6e1 --- /dev/null +++ b/src/generated/resources/assets/create/items/radial_chassis.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/radial_chassis" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/railway_casing.json b/src/generated/resources/assets/create/items/railway_casing.json new file mode 100644 index 0000000000..1e53236bb2 --- /dev/null +++ b/src/generated/resources/assets/create/items/railway_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/railway_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_creeper_package.json b/src/generated/resources/assets/create/items/rare_creeper_package.json new file mode 100644 index 0000000000..99e7c0c863 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_creeper_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_creeper_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_darcy_package.json b/src/generated/resources/assets/create/items/rare_darcy_package.json new file mode 100644 index 0000000000..5c1fecef0a --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_darcy_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_darcy_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_evan_package.json b/src/generated/resources/assets/create/items/rare_evan_package.json new file mode 100644 index 0000000000..f1897bfa72 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_evan_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_evan_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_jinx_package.json b/src/generated/resources/assets/create/items/rare_jinx_package.json new file mode 100644 index 0000000000..e903fdd5a9 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_jinx_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_jinx_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_kryppers_package.json b/src/generated/resources/assets/create/items/rare_kryppers_package.json new file mode 100644 index 0000000000..803dc7e70f --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_kryppers_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_kryppers_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_simi_package.json b/src/generated/resources/assets/create/items/rare_simi_package.json new file mode 100644 index 0000000000..06544bda86 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_simi_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_simi_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_starlotte_package.json b/src/generated/resources/assets/create/items/rare_starlotte_package.json new file mode 100644 index 0000000000..236db8282c --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_starlotte_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_starlotte_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_thunder_package.json b/src/generated/resources/assets/create/items/rare_thunder_package.json new file mode 100644 index 0000000000..3d64d60558 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_thunder_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_thunder_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_up_package.json b/src/generated/resources/assets/create/items/rare_up_package.json new file mode 100644 index 0000000000..52828919e3 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_up_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_up_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rare_vector_package.json b/src/generated/resources/assets/create/items/rare_vector_package.json new file mode 100644 index 0000000000..52a5791757 --- /dev/null +++ b/src/generated/resources/assets/create/items/rare_vector_package.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rare_vector_package" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/raw_zinc.json b/src/generated/resources/assets/create/items/raw_zinc.json new file mode 100644 index 0000000000..e2c60abb55 --- /dev/null +++ b/src/generated/resources/assets/create/items/raw_zinc.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/raw_zinc" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/raw_zinc_block.json b/src/generated/resources/assets/create/items/raw_zinc_block.json new file mode 100644 index 0000000000..c4e09452e4 --- /dev/null +++ b/src/generated/resources/assets/create/items/raw_zinc_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/raw_zinc_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_postbox.json b/src/generated/resources/assets/create/items/red_postbox.json new file mode 100644 index 0000000000..6645243de8 --- /dev/null +++ b/src/generated/resources/assets/create/items/red_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/red_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_sand_paper.json b/src/generated/resources/assets/create/items/red_sand_paper.json new file mode 100644 index 0000000000..5197297c3e --- /dev/null +++ b/src/generated/resources/assets/create/items/red_sand_paper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/red_sand_paper" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_seat.json b/src/generated/resources/assets/create/items/red_seat.json new file mode 100644 index 0000000000..6479cd19ee --- /dev/null +++ b/src/generated/resources/assets/create/items/red_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/red_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_table_cloth.json b/src/generated/resources/assets/create/items/red_table_cloth.json new file mode 100644 index 0000000000..5d8411c96c --- /dev/null +++ b/src/generated/resources/assets/create/items/red_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/red_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_toolbox.json b/src/generated/resources/assets/create/items/red_toolbox.json new file mode 100644 index 0000000000..87f506effe --- /dev/null +++ b/src/generated/resources/assets/create/items/red_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/red_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/red_valve_handle.json b/src/generated/resources/assets/create/items/red_valve_handle.json new file mode 100644 index 0000000000..803ad61213 --- /dev/null +++ b/src/generated/resources/assets/create/items/red_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/red_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/redstone_contact.json b/src/generated/resources/assets/create/items/redstone_contact.json new file mode 100644 index 0000000000..bec61c47b6 --- /dev/null +++ b/src/generated/resources/assets/create/items/redstone_contact.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/redstone_contact" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/redstone_link.json b/src/generated/resources/assets/create/items/redstone_link.json new file mode 100644 index 0000000000..ca86ba5b80 --- /dev/null +++ b/src/generated/resources/assets/create/items/redstone_link.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/redstone_link" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/redstone_requester.json b/src/generated/resources/assets/create/items/redstone_requester.json new file mode 100644 index 0000000000..8e4fd9fa6e --- /dev/null +++ b/src/generated/resources/assets/create/items/redstone_requester.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/redstone_requester" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/refined_radiance.json b/src/generated/resources/assets/create/items/refined_radiance.json new file mode 100644 index 0000000000..e499772511 --- /dev/null +++ b/src/generated/resources/assets/create/items/refined_radiance.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/refined_radiance" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/refined_radiance_casing.json b/src/generated/resources/assets/create/items/refined_radiance_casing.json new file mode 100644 index 0000000000..044daeeca1 --- /dev/null +++ b/src/generated/resources/assets/create/items/refined_radiance_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/refined_radiance_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/repackager.json b/src/generated/resources/assets/create/items/repackager.json new file mode 100644 index 0000000000..94869977f8 --- /dev/null +++ b/src/generated/resources/assets/create/items/repackager.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/repackager" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rope_pulley.json b/src/generated/resources/assets/create/items/rope_pulley.json new file mode 100644 index 0000000000..41610cc92a --- /dev/null +++ b/src/generated/resources/assets/create/items/rope_pulley.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rope_pulley" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rose_quartz.json b/src/generated/resources/assets/create/items/rose_quartz.json new file mode 100644 index 0000000000..03a8f9d94b --- /dev/null +++ b/src/generated/resources/assets/create/items/rose_quartz.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rose_quartz" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rose_quartz_block.json b/src/generated/resources/assets/create/items/rose_quartz_block.json new file mode 100644 index 0000000000..222fc6db41 --- /dev/null +++ b/src/generated/resources/assets/create/items/rose_quartz_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/rose_quartz_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rose_quartz_lamp.json b/src/generated/resources/assets/create/items/rose_quartz_lamp.json new file mode 100644 index 0000000000..586965b557 --- /dev/null +++ b/src/generated/resources/assets/create/items/rose_quartz_lamp.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/rose_quartz_lamp" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rose_quartz_tiles.json b/src/generated/resources/assets/create/items/rose_quartz_tiles.json new file mode 100644 index 0000000000..89ba2d8330 --- /dev/null +++ b/src/generated/resources/assets/create/items/rose_quartz_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/rose_quartz_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/rotation_speed_controller.json b/src/generated/resources/assets/create/items/rotation_speed_controller.json new file mode 100644 index 0000000000..6e3151053e --- /dev/null +++ b/src/generated/resources/assets/create/items/rotation_speed_controller.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/rotation_speed_controller" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sail_frame.json b/src/generated/resources/assets/create/items/sail_frame.json new file mode 100644 index 0000000000..183e68c5e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/sail_frame.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/sail_frame" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sand_paper.json b/src/generated/resources/assets/create/items/sand_paper.json new file mode 100644 index 0000000000..0a8e7e882b --- /dev/null +++ b/src/generated/resources/assets/create/items/sand_paper.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sand_paper" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/schedule.json b/src/generated/resources/assets/create/items/schedule.json new file mode 100644 index 0000000000..f0fbdf4b53 --- /dev/null +++ b/src/generated/resources/assets/create/items/schedule.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/schedule" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/schematic.json b/src/generated/resources/assets/create/items/schematic.json new file mode 100644 index 0000000000..451d7b7fed --- /dev/null +++ b/src/generated/resources/assets/create/items/schematic.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/schematic" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/schematic_and_quill.json b/src/generated/resources/assets/create/items/schematic_and_quill.json new file mode 100644 index 0000000000..ffdfac0894 --- /dev/null +++ b/src/generated/resources/assets/create/items/schematic_and_quill.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/schematic_and_quill" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/schematic_table.json b/src/generated/resources/assets/create/items/schematic_table.json new file mode 100644 index 0000000000..af628ad606 --- /dev/null +++ b/src/generated/resources/assets/create/items/schematic_table.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/schematic_table" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/schematicannon.json b/src/generated/resources/assets/create/items/schematicannon.json new file mode 100644 index 0000000000..88f277ec3a --- /dev/null +++ b/src/generated/resources/assets/create/items/schematicannon.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/schematicannon" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/scorchia.json b/src/generated/resources/assets/create/items/scorchia.json new file mode 100644 index 0000000000..fc028a091a --- /dev/null +++ b/src/generated/resources/assets/create/items/scorchia.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/scorchia" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/scorchia_pillar.json b/src/generated/resources/assets/create/items/scorchia_pillar.json new file mode 100644 index 0000000000..4c477861d3 --- /dev/null +++ b/src/generated/resources/assets/create/items/scorchia_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/scorchia_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/scoria.json b/src/generated/resources/assets/create/items/scoria.json new file mode 100644 index 0000000000..55a87a9d85 --- /dev/null +++ b/src/generated/resources/assets/create/items/scoria.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/scoria" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/scoria_pillar.json b/src/generated/resources/assets/create/items/scoria_pillar.json new file mode 100644 index 0000000000..acf7838d32 --- /dev/null +++ b/src/generated/resources/assets/create/items/scoria_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/scoria_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/secondary_linear_chassis.json b/src/generated/resources/assets/create/items/secondary_linear_chassis.json new file mode 100644 index 0000000000..a5c71a4538 --- /dev/null +++ b/src/generated/resources/assets/create/items/secondary_linear_chassis.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/secondary_linear_chassis" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sequenced_gearshift.json b/src/generated/resources/assets/create/items/sequenced_gearshift.json new file mode 100644 index 0000000000..b9805287be --- /dev/null +++ b/src/generated/resources/assets/create/items/sequenced_gearshift.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sequenced_gearshift" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/shadow_steel.json b/src/generated/resources/assets/create/items/shadow_steel.json new file mode 100644 index 0000000000..9973af854d --- /dev/null +++ b/src/generated/resources/assets/create/items/shadow_steel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/shadow_steel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/shadow_steel_casing.json b/src/generated/resources/assets/create/items/shadow_steel_casing.json new file mode 100644 index 0000000000..344f218508 --- /dev/null +++ b/src/generated/resources/assets/create/items/shadow_steel_casing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/shadow_steel_casing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/shaft.json b/src/generated/resources/assets/create/items/shaft.json new file mode 100644 index 0000000000..9c87d4803c --- /dev/null +++ b/src/generated/resources/assets/create/items/shaft.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/shaft" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/shopping_list.json b/src/generated/resources/assets/create/items/shopping_list.json new file mode 100644 index 0000000000..4f91c0a4e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/shopping_list.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/shopping_list" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_andesite_brick_slab.json b/src/generated/resources/assets/create/items/small_andesite_brick_slab.json new file mode 100644 index 0000000000..a79d81764d --- /dev/null +++ b/src/generated/resources/assets/create/items/small_andesite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_andesite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_andesite_brick_stairs.json b/src/generated/resources/assets/create/items/small_andesite_brick_stairs.json new file mode 100644 index 0000000000..acb626da89 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_andesite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_andesite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_andesite_brick_wall.json b/src/generated/resources/assets/create/items/small_andesite_brick_wall.json new file mode 100644 index 0000000000..b250ee9a6c --- /dev/null +++ b/src/generated/resources/assets/create/items/small_andesite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_andesite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_andesite_bricks.json b/src/generated/resources/assets/create/items/small_andesite_bricks.json new file mode 100644 index 0000000000..b5a0a185a3 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_andesite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_andesite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_asurine_brick_slab.json b/src/generated/resources/assets/create/items/small_asurine_brick_slab.json new file mode 100644 index 0000000000..80119fee2a --- /dev/null +++ b/src/generated/resources/assets/create/items/small_asurine_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_asurine_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_asurine_brick_stairs.json b/src/generated/resources/assets/create/items/small_asurine_brick_stairs.json new file mode 100644 index 0000000000..a3c1fb6323 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_asurine_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_asurine_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_asurine_brick_wall.json b/src/generated/resources/assets/create/items/small_asurine_brick_wall.json new file mode 100644 index 0000000000..077d49023b --- /dev/null +++ b/src/generated/resources/assets/create/items/small_asurine_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_asurine_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_asurine_bricks.json b/src/generated/resources/assets/create/items/small_asurine_bricks.json new file mode 100644 index 0000000000..ff946bed6d --- /dev/null +++ b/src/generated/resources/assets/create/items/small_asurine_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_asurine_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_calcite_brick_slab.json b/src/generated/resources/assets/create/items/small_calcite_brick_slab.json new file mode 100644 index 0000000000..5fddb05975 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_calcite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_calcite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_calcite_brick_stairs.json b/src/generated/resources/assets/create/items/small_calcite_brick_stairs.json new file mode 100644 index 0000000000..2e076f9e31 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_calcite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_calcite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_calcite_brick_wall.json b/src/generated/resources/assets/create/items/small_calcite_brick_wall.json new file mode 100644 index 0000000000..0f2714595f --- /dev/null +++ b/src/generated/resources/assets/create/items/small_calcite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_calcite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_calcite_bricks.json b/src/generated/resources/assets/create/items/small_calcite_bricks.json new file mode 100644 index 0000000000..dd9ed1bf4f --- /dev/null +++ b/src/generated/resources/assets/create/items/small_calcite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_calcite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_crimsite_brick_slab.json b/src/generated/resources/assets/create/items/small_crimsite_brick_slab.json new file mode 100644 index 0000000000..ef9ac85ed4 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_crimsite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_crimsite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_crimsite_brick_stairs.json b/src/generated/resources/assets/create/items/small_crimsite_brick_stairs.json new file mode 100644 index 0000000000..3db48d3c14 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_crimsite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_crimsite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_crimsite_brick_wall.json b/src/generated/resources/assets/create/items/small_crimsite_brick_wall.json new file mode 100644 index 0000000000..d4631ff02c --- /dev/null +++ b/src/generated/resources/assets/create/items/small_crimsite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_crimsite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_crimsite_bricks.json b/src/generated/resources/assets/create/items/small_crimsite_bricks.json new file mode 100644 index 0000000000..e61aef2171 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_crimsite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_crimsite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_deepslate_brick_slab.json b/src/generated/resources/assets/create/items/small_deepslate_brick_slab.json new file mode 100644 index 0000000000..9a84a02382 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_deepslate_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_deepslate_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_deepslate_brick_stairs.json b/src/generated/resources/assets/create/items/small_deepslate_brick_stairs.json new file mode 100644 index 0000000000..6d330d031f --- /dev/null +++ b/src/generated/resources/assets/create/items/small_deepslate_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_deepslate_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_deepslate_brick_wall.json b/src/generated/resources/assets/create/items/small_deepslate_brick_wall.json new file mode 100644 index 0000000000..5453678cd4 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_deepslate_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_deepslate_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_deepslate_bricks.json b/src/generated/resources/assets/create/items/small_deepslate_bricks.json new file mode 100644 index 0000000000..2cdc0dd73a --- /dev/null +++ b/src/generated/resources/assets/create/items/small_deepslate_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_deepslate_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_diorite_brick_slab.json b/src/generated/resources/assets/create/items/small_diorite_brick_slab.json new file mode 100644 index 0000000000..7231d11da6 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_diorite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_diorite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_diorite_brick_stairs.json b/src/generated/resources/assets/create/items/small_diorite_brick_stairs.json new file mode 100644 index 0000000000..8794f62fa1 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_diorite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_diorite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_diorite_brick_wall.json b/src/generated/resources/assets/create/items/small_diorite_brick_wall.json new file mode 100644 index 0000000000..d4524d4f03 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_diorite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_diorite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_diorite_bricks.json b/src/generated/resources/assets/create/items/small_diorite_bricks.json new file mode 100644 index 0000000000..9d947d67a3 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_diorite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_diorite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_dripstone_brick_slab.json b/src/generated/resources/assets/create/items/small_dripstone_brick_slab.json new file mode 100644 index 0000000000..7080de3ab8 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_dripstone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_dripstone_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_dripstone_brick_stairs.json b/src/generated/resources/assets/create/items/small_dripstone_brick_stairs.json new file mode 100644 index 0000000000..2404625d4d --- /dev/null +++ b/src/generated/resources/assets/create/items/small_dripstone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_dripstone_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_dripstone_brick_wall.json b/src/generated/resources/assets/create/items/small_dripstone_brick_wall.json new file mode 100644 index 0000000000..cd14ee2925 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_dripstone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_dripstone_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_dripstone_bricks.json b/src/generated/resources/assets/create/items/small_dripstone_bricks.json new file mode 100644 index 0000000000..8855aa60bc --- /dev/null +++ b/src/generated/resources/assets/create/items/small_dripstone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_dripstone_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_granite_brick_slab.json b/src/generated/resources/assets/create/items/small_granite_brick_slab.json new file mode 100644 index 0000000000..59f1fd52a3 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_granite_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_granite_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_granite_brick_stairs.json b/src/generated/resources/assets/create/items/small_granite_brick_stairs.json new file mode 100644 index 0000000000..0a897bf8d4 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_granite_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_granite_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_granite_brick_wall.json b/src/generated/resources/assets/create/items/small_granite_brick_wall.json new file mode 100644 index 0000000000..609acfd0ce --- /dev/null +++ b/src/generated/resources/assets/create/items/small_granite_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_granite_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_granite_bricks.json b/src/generated/resources/assets/create/items/small_granite_bricks.json new file mode 100644 index 0000000000..c5bd9d47ad --- /dev/null +++ b/src/generated/resources/assets/create/items/small_granite_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_granite_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_limestone_brick_slab.json b/src/generated/resources/assets/create/items/small_limestone_brick_slab.json new file mode 100644 index 0000000000..763b02f982 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_limestone_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_limestone_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_limestone_brick_stairs.json b/src/generated/resources/assets/create/items/small_limestone_brick_stairs.json new file mode 100644 index 0000000000..7b95e1ea36 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_limestone_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_limestone_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_limestone_brick_wall.json b/src/generated/resources/assets/create/items/small_limestone_brick_wall.json new file mode 100644 index 0000000000..348dafa6c5 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_limestone_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_limestone_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_limestone_bricks.json b/src/generated/resources/assets/create/items/small_limestone_bricks.json new file mode 100644 index 0000000000..b01fc3cca0 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_limestone_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_limestone_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_ochrum_brick_slab.json b/src/generated/resources/assets/create/items/small_ochrum_brick_slab.json new file mode 100644 index 0000000000..4cec1102fa --- /dev/null +++ b/src/generated/resources/assets/create/items/small_ochrum_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_ochrum_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_ochrum_brick_stairs.json b/src/generated/resources/assets/create/items/small_ochrum_brick_stairs.json new file mode 100644 index 0000000000..79291de4f9 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_ochrum_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_ochrum_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_ochrum_brick_wall.json b/src/generated/resources/assets/create/items/small_ochrum_brick_wall.json new file mode 100644 index 0000000000..6e3c17b384 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_ochrum_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_ochrum_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_ochrum_bricks.json b/src/generated/resources/assets/create/items/small_ochrum_bricks.json new file mode 100644 index 0000000000..6dbcc4181a --- /dev/null +++ b/src/generated/resources/assets/create/items/small_ochrum_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_ochrum_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_rose_quartz_tiles.json b/src/generated/resources/assets/create/items/small_rose_quartz_tiles.json new file mode 100644 index 0000000000..22ad3b7c71 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_rose_quartz_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_rose_quartz_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scorchia_brick_slab.json b/src/generated/resources/assets/create/items/small_scorchia_brick_slab.json new file mode 100644 index 0000000000..114992c746 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scorchia_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scorchia_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scorchia_brick_stairs.json b/src/generated/resources/assets/create/items/small_scorchia_brick_stairs.json new file mode 100644 index 0000000000..a2e7b96e5f --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scorchia_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scorchia_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scorchia_brick_wall.json b/src/generated/resources/assets/create/items/small_scorchia_brick_wall.json new file mode 100644 index 0000000000..c172e74930 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scorchia_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scorchia_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scorchia_bricks.json b/src/generated/resources/assets/create/items/small_scorchia_bricks.json new file mode 100644 index 0000000000..299b466cef --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scorchia_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scorchia_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scoria_brick_slab.json b/src/generated/resources/assets/create/items/small_scoria_brick_slab.json new file mode 100644 index 0000000000..35f2278f0e --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scoria_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scoria_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scoria_brick_stairs.json b/src/generated/resources/assets/create/items/small_scoria_brick_stairs.json new file mode 100644 index 0000000000..ee1e82ed77 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scoria_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scoria_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scoria_brick_wall.json b/src/generated/resources/assets/create/items/small_scoria_brick_wall.json new file mode 100644 index 0000000000..636f177ed5 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scoria_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scoria_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_scoria_bricks.json b/src/generated/resources/assets/create/items/small_scoria_bricks.json new file mode 100644 index 0000000000..93fde8417e --- /dev/null +++ b/src/generated/resources/assets/create/items/small_scoria_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_scoria_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_tuff_brick_slab.json b/src/generated/resources/assets/create/items/small_tuff_brick_slab.json new file mode 100644 index 0000000000..d0f28d2aa9 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_tuff_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_tuff_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_tuff_brick_stairs.json b/src/generated/resources/assets/create/items/small_tuff_brick_stairs.json new file mode 100644 index 0000000000..2248b58a28 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_tuff_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_tuff_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_tuff_brick_wall.json b/src/generated/resources/assets/create/items/small_tuff_brick_wall.json new file mode 100644 index 0000000000..4840e79c17 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_tuff_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_tuff_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_tuff_bricks.json b/src/generated/resources/assets/create/items/small_tuff_bricks.json new file mode 100644 index 0000000000..3d0b7b1c89 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_tuff_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_tuff_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_veridium_brick_slab.json b/src/generated/resources/assets/create/items/small_veridium_brick_slab.json new file mode 100644 index 0000000000..c5357273e3 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_veridium_brick_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_veridium_brick_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_veridium_brick_stairs.json b/src/generated/resources/assets/create/items/small_veridium_brick_stairs.json new file mode 100644 index 0000000000..05cb2c8b3c --- /dev/null +++ b/src/generated/resources/assets/create/items/small_veridium_brick_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_veridium_brick_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_veridium_brick_wall.json b/src/generated/resources/assets/create/items/small_veridium_brick_wall.json new file mode 100644 index 0000000000..641be34c97 --- /dev/null +++ b/src/generated/resources/assets/create/items/small_veridium_brick_wall.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_veridium_brick_wall" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/small_veridium_bricks.json b/src/generated/resources/assets/create/items/small_veridium_bricks.json new file mode 100644 index 0000000000..b269ac427d --- /dev/null +++ b/src/generated/resources/assets/create/items/small_veridium_bricks.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/small_veridium_bricks" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/smart_chute.json b/src/generated/resources/assets/create/items/smart_chute.json new file mode 100644 index 0000000000..e0163df263 --- /dev/null +++ b/src/generated/resources/assets/create/items/smart_chute.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/smart_chute" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/smart_fluid_pipe.json b/src/generated/resources/assets/create/items/smart_fluid_pipe.json new file mode 100644 index 0000000000..afe8b14def --- /dev/null +++ b/src/generated/resources/assets/create/items/smart_fluid_pipe.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/smart_fluid_pipe" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/speedometer.json b/src/generated/resources/assets/create/items/speedometer.json new file mode 100644 index 0000000000..8137a48f59 --- /dev/null +++ b/src/generated/resources/assets/create/items/speedometer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/speedometer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/spout.json b/src/generated/resources/assets/create/items/spout.json new file mode 100644 index 0000000000..97a86554a6 --- /dev/null +++ b/src/generated/resources/assets/create/items/spout.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/spout" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/spruce_window.json b/src/generated/resources/assets/create/items/spruce_window.json new file mode 100644 index 0000000000..0c42cf0dab --- /dev/null +++ b/src/generated/resources/assets/create/items/spruce_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/spruce_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/spruce_window_pane.json b/src/generated/resources/assets/create/items/spruce_window_pane.json new file mode 100644 index 0000000000..97f682b7a9 --- /dev/null +++ b/src/generated/resources/assets/create/items/spruce_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/spruce_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/steam_engine.json b/src/generated/resources/assets/create/items/steam_engine.json new file mode 100644 index 0000000000..14c1bf75c9 --- /dev/null +++ b/src/generated/resources/assets/create/items/steam_engine.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/steam_engine" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/steam_whistle.json b/src/generated/resources/assets/create/items/steam_whistle.json new file mode 100644 index 0000000000..1d24543be8 --- /dev/null +++ b/src/generated/resources/assets/create/items/steam_whistle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/steam_whistle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sticker.json b/src/generated/resources/assets/create/items/sticker.json new file mode 100644 index 0000000000..e242e6c26f --- /dev/null +++ b/src/generated/resources/assets/create/items/sticker.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sticker" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sticky_mechanical_piston.json b/src/generated/resources/assets/create/items/sticky_mechanical_piston.json new file mode 100644 index 0000000000..68d088c5cd --- /dev/null +++ b/src/generated/resources/assets/create/items/sticky_mechanical_piston.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sticky_mechanical_piston" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/stock_link.json b/src/generated/resources/assets/create/items/stock_link.json new file mode 100644 index 0000000000..cae98723aa --- /dev/null +++ b/src/generated/resources/assets/create/items/stock_link.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/stock_link" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/stock_ticker.json b/src/generated/resources/assets/create/items/stock_ticker.json new file mode 100644 index 0000000000..0ef9cf8557 --- /dev/null +++ b/src/generated/resources/assets/create/items/stock_ticker.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/stock_ticker" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/stockpile_switch.json b/src/generated/resources/assets/create/items/stockpile_switch.json new file mode 100644 index 0000000000..3a1aadf1d2 --- /dev/null +++ b/src/generated/resources/assets/create/items/stockpile_switch.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/stockpile_switch" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/stressometer.json b/src/generated/resources/assets/create/items/stressometer.json new file mode 100644 index 0000000000..094a57a61c --- /dev/null +++ b/src/generated/resources/assets/create/items/stressometer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/stressometer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sturdy_sheet.json b/src/generated/resources/assets/create/items/sturdy_sheet.json new file mode 100644 index 0000000000..89745be3f0 --- /dev/null +++ b/src/generated/resources/assets/create/items/sturdy_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sturdy_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/super_glue.json b/src/generated/resources/assets/create/items/super_glue.json new file mode 100644 index 0000000000..d1544b219b --- /dev/null +++ b/src/generated/resources/assets/create/items/super_glue.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/super_glue" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/sweet_roll.json b/src/generated/resources/assets/create/items/sweet_roll.json new file mode 100644 index 0000000000..0a4055c66c --- /dev/null +++ b/src/generated/resources/assets/create/items/sweet_roll.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/sweet_roll" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/tiled_glass.json b/src/generated/resources/assets/create/items/tiled_glass.json new file mode 100644 index 0000000000..58f02f8712 --- /dev/null +++ b/src/generated/resources/assets/create/items/tiled_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/tiled_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/tiled_glass_pane.json b/src/generated/resources/assets/create/items/tiled_glass_pane.json new file mode 100644 index 0000000000..79221f69ef --- /dev/null +++ b/src/generated/resources/assets/create/items/tiled_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/tiled_glass_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/track.json b/src/generated/resources/assets/create/items/track.json new file mode 100644 index 0000000000..a5f266e180 --- /dev/null +++ b/src/generated/resources/assets/create/items/track.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/track" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/track_observer.json b/src/generated/resources/assets/create/items/track_observer.json new file mode 100644 index 0000000000..e120c3c475 --- /dev/null +++ b/src/generated/resources/assets/create/items/track_observer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/track_observer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/track_signal.json b/src/generated/resources/assets/create/items/track_signal.json new file mode 100644 index 0000000000..573e51c329 --- /dev/null +++ b/src/generated/resources/assets/create/items/track_signal.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/track_signal" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/track_station.json b/src/generated/resources/assets/create/items/track_station.json new file mode 100644 index 0000000000..9e0de7cf3e --- /dev/null +++ b/src/generated/resources/assets/create/items/track_station.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/track_station" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/train_door.json b/src/generated/resources/assets/create/items/train_door.json new file mode 100644 index 0000000000..285a7891a4 --- /dev/null +++ b/src/generated/resources/assets/create/items/train_door.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/train_door" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/train_trapdoor.json b/src/generated/resources/assets/create/items/train_trapdoor.json new file mode 100644 index 0000000000..c515185673 --- /dev/null +++ b/src/generated/resources/assets/create/items/train_trapdoor.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/train_trapdoor/block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/transmitter.json b/src/generated/resources/assets/create/items/transmitter.json new file mode 100644 index 0000000000..95250481c3 --- /dev/null +++ b/src/generated/resources/assets/create/items/transmitter.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/transmitter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/tree_fertilizer.json b/src/generated/resources/assets/create/items/tree_fertilizer.json new file mode 100644 index 0000000000..616e02fcd0 --- /dev/null +++ b/src/generated/resources/assets/create/items/tree_fertilizer.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/tree_fertilizer" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/tuff_pillar.json b/src/generated/resources/assets/create/items/tuff_pillar.json new file mode 100644 index 0000000000..76a7fd2198 --- /dev/null +++ b/src/generated/resources/assets/create/items/tuff_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/tuff_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/turntable.json b/src/generated/resources/assets/create/items/turntable.json new file mode 100644 index 0000000000..8fb721b6c9 --- /dev/null +++ b/src/generated/resources/assets/create/items/turntable.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/turntable" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/unprocessed_obsidian_sheet.json b/src/generated/resources/assets/create/items/unprocessed_obsidian_sheet.json new file mode 100644 index 0000000000..2cfe3bc2c4 --- /dev/null +++ b/src/generated/resources/assets/create/items/unprocessed_obsidian_sheet.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/unprocessed_obsidian_sheet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/veridium.json b/src/generated/resources/assets/create/items/veridium.json new file mode 100644 index 0000000000..165168f2cc --- /dev/null +++ b/src/generated/resources/assets/create/items/veridium.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/veridium" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/veridium_pillar.json b/src/generated/resources/assets/create/items/veridium_pillar.json new file mode 100644 index 0000000000..35feb8677a --- /dev/null +++ b/src/generated/resources/assets/create/items/veridium_pillar.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/veridium_pillar" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/vertical_framed_glass.json b/src/generated/resources/assets/create/items/vertical_framed_glass.json new file mode 100644 index 0000000000..0f4e175002 --- /dev/null +++ b/src/generated/resources/assets/create/items/vertical_framed_glass.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/vertical_framed_glass" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/vertical_framed_glass_pane.json b/src/generated/resources/assets/create/items/vertical_framed_glass_pane.json new file mode 100644 index 0000000000..c6f6443b3c --- /dev/null +++ b/src/generated/resources/assets/create/items/vertical_framed_glass_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/vertical_framed_glass_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/vertical_gearbox.json b/src/generated/resources/assets/create/items/vertical_gearbox.json new file mode 100644 index 0000000000..d6ae4691e0 --- /dev/null +++ b/src/generated/resources/assets/create/items/vertical_gearbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/vertical_gearbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/wand_of_symmetry.json b/src/generated/resources/assets/create/items/wand_of_symmetry.json new file mode 100644 index 0000000000..018d321b4d --- /dev/null +++ b/src/generated/resources/assets/create/items/wand_of_symmetry.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/wand_of_symmetry" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/warped_window.json b/src/generated/resources/assets/create/items/warped_window.json new file mode 100644 index 0000000000..ad8b5bd5d5 --- /dev/null +++ b/src/generated/resources/assets/create/items/warped_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/warped_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/warped_window_pane.json b/src/generated/resources/assets/create/items/warped_window_pane.json new file mode 100644 index 0000000000..86b87478c2 --- /dev/null +++ b/src/generated/resources/assets/create/items/warped_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/warped_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/water_wheel.json b/src/generated/resources/assets/create/items/water_wheel.json new file mode 100644 index 0000000000..150856fdeb --- /dev/null +++ b/src/generated/resources/assets/create/items/water_wheel.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/water_wheel" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_shingle_slab.json b/src/generated/resources/assets/create/items/waxed_copper_shingle_slab.json new file mode 100644 index 0000000000..717bc94785 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/waxed_copper_shingle_stairs.json new file mode 100644 index 0000000000..537dfa80a7 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_shingles.json b/src/generated/resources/assets/create/items/waxed_copper_shingles.json new file mode 100644 index 0000000000..a6d2e99927 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_tile_slab.json b/src/generated/resources/assets/create/items/waxed_copper_tile_slab.json new file mode 100644 index 0000000000..991d6734a1 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_tile_stairs.json b/src/generated/resources/assets/create/items/waxed_copper_tile_stairs.json new file mode 100644 index 0000000000..9663c3a522 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_copper_tiles.json b/src/generated/resources/assets/create/items/waxed_copper_tiles.json new file mode 100644 index 0000000000..c6f6cdbfe0 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_slab.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_slab.json new file mode 100644 index 0000000000..33af6a30f5 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_stairs.json new file mode 100644 index 0000000000..66070862f7 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_shingles.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingles.json new file mode 100644 index 0000000000..a635a159aa --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_slab.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_slab.json new file mode 100644 index 0000000000..2c28069da2 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_stairs.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_stairs.json new file mode 100644 index 0000000000..998a8ec2b5 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_exposed_copper_tiles.json b/src/generated/resources/assets/create/items/waxed_exposed_copper_tiles.json new file mode 100644 index 0000000000..d2da6fb45b --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_exposed_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_exposed_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_slab.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_slab.json new file mode 100644 index 0000000000..284c01bf23 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_stairs.json new file mode 100644 index 0000000000..0b9e8fc235 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingles.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingles.json new file mode 100644 index 0000000000..269c9fe93e --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_slab.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_slab.json new file mode 100644 index 0000000000..821f6891e7 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_stairs.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_stairs.json new file mode 100644 index 0000000000..e7f4f7a459 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_oxidized_copper_tiles.json b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tiles.json new file mode 100644 index 0000000000..10368e85da --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_oxidized_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_oxidized_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_slab.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_slab.json new file mode 100644 index 0000000000..774bbdfcfc --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_stairs.json new file mode 100644 index 0000000000..11929c50f5 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_shingles.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingles.json new file mode 100644 index 0000000000..614c745d41 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_slab.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_slab.json new file mode 100644 index 0000000000..37ad77212b --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_stairs.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_stairs.json new file mode 100644 index 0000000000..5221f960e5 --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/waxed_weathered_copper_tiles.json b/src/generated/resources/assets/create/items/waxed_weathered_copper_tiles.json new file mode 100644 index 0000000000..edfa74e04e --- /dev/null +++ b/src/generated/resources/assets/create/items/waxed_weathered_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/waxed_weathered_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_shingle_slab.json b/src/generated/resources/assets/create/items/weathered_copper_shingle_slab.json new file mode 100644 index 0000000000..35de2968d0 --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_shingle_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_shingle_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_shingle_stairs.json b/src/generated/resources/assets/create/items/weathered_copper_shingle_stairs.json new file mode 100644 index 0000000000..4c2649a444 --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_shingle_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_shingle_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_shingles.json b/src/generated/resources/assets/create/items/weathered_copper_shingles.json new file mode 100644 index 0000000000..106e3c10bd --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_shingles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_shingles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_tile_slab.json b/src/generated/resources/assets/create/items/weathered_copper_tile_slab.json new file mode 100644 index 0000000000..edb6089b1c --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_tile_slab.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_tile_slab" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_tile_stairs.json b/src/generated/resources/assets/create/items/weathered_copper_tile_stairs.json new file mode 100644 index 0000000000..7d3a2620cc --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_tile_stairs.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_tile_stairs" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_copper_tiles.json b/src/generated/resources/assets/create/items/weathered_copper_tiles.json new file mode 100644 index 0000000000..838ea54992 --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_copper_tiles.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_copper_tiles" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_iron_block.json b/src/generated/resources/assets/create/items/weathered_iron_block.json new file mode 100644 index 0000000000..ea6617fcb1 --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_iron_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_iron_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_iron_window.json b/src/generated/resources/assets/create/items/weathered_iron_window.json new file mode 100644 index 0000000000..30708aa0ba --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_iron_window.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/weathered_iron_window" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weathered_iron_window_pane.json b/src/generated/resources/assets/create/items/weathered_iron_window_pane.json new file mode 100644 index 0000000000..ca7f5594e8 --- /dev/null +++ b/src/generated/resources/assets/create/items/weathered_iron_window_pane.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/weathered_iron_window_pane" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/weighted_ejector.json b/src/generated/resources/assets/create/items/weighted_ejector.json new file mode 100644 index 0000000000..9e3344ff03 --- /dev/null +++ b/src/generated/resources/assets/create/items/weighted_ejector.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/weighted_ejector" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/wheat_flour.json b/src/generated/resources/assets/create/items/wheat_flour.json new file mode 100644 index 0000000000..0754a06bd6 --- /dev/null +++ b/src/generated/resources/assets/create/items/wheat_flour.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/wheat_flour" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/whisk.json b/src/generated/resources/assets/create/items/whisk.json new file mode 100644 index 0000000000..4b7eef3d1c --- /dev/null +++ b/src/generated/resources/assets/create/items/whisk.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/whisk" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_postbox.json b/src/generated/resources/assets/create/items/white_postbox.json new file mode 100644 index 0000000000..6df0fa5a7d --- /dev/null +++ b/src/generated/resources/assets/create/items/white_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_sail.json b/src/generated/resources/assets/create/items/white_sail.json new file mode 100644 index 0000000000..b88f20a2ea --- /dev/null +++ b/src/generated/resources/assets/create/items/white_sail.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_sail" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_seat.json b/src/generated/resources/assets/create/items/white_seat.json new file mode 100644 index 0000000000..7393e7ad33 --- /dev/null +++ b/src/generated/resources/assets/create/items/white_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_table_cloth.json b/src/generated/resources/assets/create/items/white_table_cloth.json new file mode 100644 index 0000000000..e6d9b61c76 --- /dev/null +++ b/src/generated/resources/assets/create/items/white_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_toolbox.json b/src/generated/resources/assets/create/items/white_toolbox.json new file mode 100644 index 0000000000..0f3f65976c --- /dev/null +++ b/src/generated/resources/assets/create/items/white_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/white_valve_handle.json b/src/generated/resources/assets/create/items/white_valve_handle.json new file mode 100644 index 0000000000..34da8bfb4b --- /dev/null +++ b/src/generated/resources/assets/create/items/white_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/white_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/windmill_bearing.json b/src/generated/resources/assets/create/items/windmill_bearing.json new file mode 100644 index 0000000000..6cd9b05099 --- /dev/null +++ b/src/generated/resources/assets/create/items/windmill_bearing.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/windmill_bearing" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/wooden_bracket.json b/src/generated/resources/assets/create/items/wooden_bracket.json new file mode 100644 index 0000000000..b53db53712 --- /dev/null +++ b/src/generated/resources/assets/create/items/wooden_bracket.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/wooden_bracket" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/wrench.json b/src/generated/resources/assets/create/items/wrench.json new file mode 100644 index 0000000000..f10ca14aee --- /dev/null +++ b/src/generated/resources/assets/create/items/wrench.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/wrench" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/yellow_postbox.json b/src/generated/resources/assets/create/items/yellow_postbox.json new file mode 100644 index 0000000000..9908675d40 --- /dev/null +++ b/src/generated/resources/assets/create/items/yellow_postbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/yellow_postbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/yellow_seat.json b/src/generated/resources/assets/create/items/yellow_seat.json new file mode 100644 index 0000000000..94821c2199 --- /dev/null +++ b/src/generated/resources/assets/create/items/yellow_seat.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/yellow_seat" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/yellow_table_cloth.json b/src/generated/resources/assets/create/items/yellow_table_cloth.json new file mode 100644 index 0000000000..504d508b9e --- /dev/null +++ b/src/generated/resources/assets/create/items/yellow_table_cloth.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/yellow_table_cloth" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/yellow_toolbox.json b/src/generated/resources/assets/create/items/yellow_toolbox.json new file mode 100644 index 0000000000..1fe5753f99 --- /dev/null +++ b/src/generated/resources/assets/create/items/yellow_toolbox.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/yellow_toolbox" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/yellow_valve_handle.json b/src/generated/resources/assets/create/items/yellow_valve_handle.json new file mode 100644 index 0000000000..f713c0addb --- /dev/null +++ b/src/generated/resources/assets/create/items/yellow_valve_handle.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/yellow_valve_handle" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/zinc_block.json b/src/generated/resources/assets/create/items/zinc_block.json new file mode 100644 index 0000000000..ed94bbb767 --- /dev/null +++ b/src/generated/resources/assets/create/items/zinc_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/zinc_ingot.json b/src/generated/resources/assets/create/items/zinc_ingot.json new file mode 100644 index 0000000000..a2ee2267e1 --- /dev/null +++ b/src/generated/resources/assets/create/items/zinc_ingot.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/zinc_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/zinc_nugget.json b/src/generated/resources/assets/create/items/zinc_nugget.json new file mode 100644 index 0000000000..320e7fd48c --- /dev/null +++ b/src/generated/resources/assets/create/items/zinc_nugget.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:item/zinc_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/items/zinc_ore.json b/src/generated/resources/assets/create/items/zinc_ore.json new file mode 100644 index 0000000000..2f4359364e --- /dev/null +++ b/src/generated/resources/assets/create/items/zinc_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "create:block/zinc_ore" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 2596b21522..9c057f5c49 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -14,7 +14,7 @@ "advancement.create.belt": "ǝʌıɹᗡ dןǝʞ", "advancement.create.belt.desc": "ʇןǝᗺ ןɐɔıuɐɥɔǝW ɐ ɥʇıʍ sʇɟɐɥS oʍʇ ʇɔǝuuoƆ", "advancement.create.belt_funnel_kiss": "sdɐןℲ ǝɥʇ puɐ sʇoɹɹɐԀ ǝɥ⟘", - "advancement.create.belt_funnel_kiss.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nssıʞ sןǝuunℲ pǝʇunoɯ-ʇןǝᗺ oʍʇ ǝʞɐW", + "advancement.create.belt_funnel_kiss.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nssıʞ sןǝuunℲ pǝʇunoɯ-ʇןǝᗺ oʍʇ ǝʞɐW", "advancement.create.brass": "sʎoןןⱯ ןɐǝᴚ", "advancement.create.brass.desc": "ɹǝxıW ןɐɔıuɐɥɔǝW pǝʇɐǝɥ-ǝzɐןᗺ ɹnoʎ uı sʇobuI ɔuıZ puɐ ɹǝddoƆ buıʎoןןɐ ʎq sʇobuI ssɐɹᗺ ǝʇɐǝɹƆ", "advancement.create.brass_casing": "ǝbⱯ ssɐɹᗺ ǝɥ⟘", @@ -26,11 +26,11 @@ "advancement.create.cardboard_armor": "ɥʇןɐǝʇS ןןnℲ", "advancement.create.cardboard_armor.desc": "ɹoɯɹⱯ pɹɐoqpɹɐƆ ןןnɟ uı punoɹɐ ʞɐǝuS", "advancement.create.cardboard_armor_trim": "sʇɟɐɹƆ puɐ sʇɹⱯ", - "advancement.create.cardboard_armor_trim.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nsɯıɹʇ ɹoɯɹɐ ɥʇıʍ ʇuǝɯdınbǝ pɹɐoqpɹɐɔ ɹnoʎ ǝʇɐɹoɔǝᗡ", + "advancement.create.cardboard_armor_trim.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nsɯıɹʇ ɹoɯɹɐ ɥʇıʍ ʇuǝɯdınbǝ pɹɐoqpɹɐɔ ɹnoʎ ǝʇɐɹoɔǝᗡ", "advancement.create.cart_pickup": "sɯɹⱯ buoɹʇS", "advancement.create.cart_pickup.desc": "sʞɔoןq pǝɥɔɐʇʇɐ 00ᄅ ʇsɐǝן ʇɐ ɥʇıʍ uoıʇdɐɹʇuoƆ ʇɹɐɔǝuıW ɐ dn ʞɔıԀ", "advancement.create.chained_drain": "ןןoᴚ ɐ uO", - "advancement.create.chained_drain.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nsuıɐɹᗡ ɯǝʇI ɟo ʍoɹ ɐ ssoɹɔɐ ǝʌoɯ ɯǝʇı uɐ ɥɔʇɐM", + "advancement.create.chained_drain.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nsuıɐɹᗡ ɯǝʇI ɟo ʍoɹ ɐ ssoɹɔɐ ǝʌoɯ ɯǝʇı uɐ ɥɔʇɐM", "advancement.create.chocolate_bucket": "uoıʇɐuıbɐɯI ɟo pןɹoM Ɐ", "advancement.create.chocolate_bucket.desc": "ǝʇɐןoɔoɥɔ uǝʇןoɯ ɟo ʇǝʞɔnq ɐ uıɐʇqO", "advancement.create.chute": "sɔıʇsıboꞀ ןɐɔıʇɹǝΛ", @@ -48,9 +48,9 @@ "advancement.create.copper_casing": "ǝbⱯ ɹǝddoƆ ǝɥ⟘", "advancement.create.copper_casing.desc": "sǝuıɥɔɐɯ ɹnoʎ ɹoɟ buısɐɔ ɟooɹdɹǝʇɐʍ ɐ buıʇɐǝɹɔ 'pooʍ pǝddıɹʇs oʇ sʇobuI ɹǝddoƆ ʎןddⱯ", "advancement.create.crafter_lazy_000": "sǝɹnsɐǝW ǝʇɐɹǝdsǝᗡ", - "advancement.create.crafter_lazy_000.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nǝɹnʇɔnɹʇsɐɹɟuı ɹǝdoɹd uo ǝʇɐuıʇsɐɹɔoɹd oʇ ɹǝʇɟɐɹƆ ןɐɔıuɐɥɔǝW ɐ uʍop ʍoןs ʎןןɐɔıʇsɐɹᗡ", + "advancement.create.crafter_lazy_000.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nǝɹnʇɔnɹʇsɐɹɟuı ɹǝdoɹd uo ǝʇɐuıʇsɐɹɔoɹd oʇ ɹǝʇɟɐɹƆ ןɐɔıuɐɥɔǝW ɐ uʍop ʍoןs ʎןןɐɔıʇsɐɹᗡ", "advancement.create.cross_streams": "¡sɯɐǝɹʇS ǝɥʇ ssoɹƆ ʇ,uoᗡ", - "advancement.create.cross_streams.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nʞɹoʍʇǝu ǝdıd ɹnoʎ uı ʇǝǝɯ spınןɟ oʍʇ ɥɔʇɐM", + "advancement.create.cross_streams.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nʞɹoʍʇǝu ǝdıd ɹnoʎ uı ʇǝǝɯ spınןɟ oʍʇ ɥɔʇɐM", "advancement.create.crusher_maxed_0000": "ʇI buıɥsnɹƆ", "advancement.create.crusher_maxed_0000.desc": "pǝǝds ɯnɯıxɐɯ ʇɐ sןǝǝɥM buıɥsnɹƆ ɟo ɹıɐd ɐ ǝʇɐɹǝdO", "advancement.create.crushing_wheel": "uoıʇɔnɹʇsǝᗡ ɟo sןǝǝɥM", @@ -76,13 +76,13 @@ "advancement.create.extendo_grip": "¡buıoıoıoᗺ", "advancement.create.extendo_grip.desc": "dıɹ⅁ opuǝʇxƎ uɐ ɟo pןoɥ ʇǝ⅁", "advancement.create.extendo_grip_dual": "ʇuǝʇxƎ ןןnℲ o⟘", - "advancement.create.extendo_grip_dual.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nɥɔɐǝɹ uɐɯnɥɹǝdns ɹoɟ sdıɹ⅁ opuǝʇxƎ pןǝıʍ-ןɐnᗡ", + "advancement.create.extendo_grip_dual.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nɥɔɐǝɹ uɐɯnɥɹǝdns ɹoɟ sdıɹ⅁ opuǝʇxƎ pןǝıʍ-ןɐnᗡ", "advancement.create.factory_gauge": "sɔıʇsıboꞀ ɥbıH", "advancement.create.factory_gauge.desc": "sǝbnɐ⅁ ʎɹoʇɔɐℲ buısn ʇsǝnbǝɹ ǝbɐʞɔɐd ɔıʇɐɯoʇnɐ uɐ ɹǝbbıɹ⟘", "advancement.create.fan_processing": "ǝןɔıʇɹɐԀ ʎq buıssǝɔoɹԀ", "advancement.create.fan_processing.desc": "sןɐıɹǝʇɐɯ ssǝɔoɹd oʇ uɐℲ pǝsɐɔuƎ uɐ ǝs∩", "advancement.create.fist_bump": "¡oɹᗺ 'ʇI punoԀ", - "advancement.create.fist_bump.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\ndɯnq-ʇsıɟ sɹǝʎoןdǝᗡ oʍʇ ǝʞɐW", + "advancement.create.fist_bump.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\ndɯnq-ʇsıɟ sɹǝʎoןdǝᗡ oʍʇ ǝʞɐW", "advancement.create.foods": "ʇǝıᗡ pǝɔuɐןɐᗺ", "advancement.create.foods.desc": "ʇnodS ǝɯɐs ǝɥʇ ɯoɹɟ ןןɐ ןןoᴚ ʇǝǝʍS ɐ puɐ 'ǝןddⱯ pǝʎǝuoH ɐ 'sǝıɹɹǝᗺ pǝzɐן⅁ ǝʇɐןoɔoɥƆ ǝʇɐǝɹƆ", "advancement.create.frogport": "sɹǝddoɥ ʎɹbunH", @@ -92,7 +92,7 @@ "advancement.create.glass_pipe": "ʎɹǝʌoɔsıᗡ ʍoןℲ", "advancement.create.glass_pipe.desc": "pınןɟ ɐ suıɐʇuoɔ ʇɐɥʇ ǝdıd ɐ uo ɥɔuǝɹM ɹnoʎ ǝs∩", "advancement.create.hand_crank_000": "uoıssǝS ʇnoʞɹoM", - "advancement.create.hand_crank_000.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\npǝʇsnɐɥxǝ ʎןןnɟ ןıʇun ʞuɐɹƆ puɐH ɐ ǝs∩", + "advancement.create.hand_crank_000.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\npǝʇsnɐɥxǝ ʎןןnɟ ןıʇun ʞuɐɹƆ puɐH ɐ ǝs∩", "advancement.create.haunted_bell": "ǝsuǝS ʍopɐɥS", "advancement.create.haunted_bell.desc": "ןןǝᗺ pǝʇunɐH ɐ ןןo⟘", "advancement.create.honey_drain": "buıdǝǝʞ-ǝǝᗺ snoɯouoʇnⱯ", @@ -102,7 +102,7 @@ "advancement.create.hose_pulley_lava": "ǝןʇuɐW ǝɥʇ buıddɐ⟘", "advancement.create.hose_pulley_lava.desc": "ǝʇıuıɟuı pǝɹǝpısuoɔ ǝq oʇ ɥbnouǝ ǝbɹɐן ɐʌɐן ɟo ʎpoq ɐ ɯoɹɟ dɯnԀ", "advancement.create.lava_wheel_00000": "ןǝǝɥM ɐɯbɐW", - "advancement.create.lava_wheel_00000.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\npǝʞɹoʍ ǝʌɐɥ ʇ,upןnoɥs sıɥ⟘", + "advancement.create.lava_wheel_00000.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\npǝʞɹoʍ ǝʌɐɥ ʇ,upןnoɥs sıɥ⟘", "advancement.create.linked_controller": "uoıʇɐʌıʇɔⱯ ǝʇoɯǝᴚ", "advancement.create.linked_controller.desc": "ɹǝןןoɹʇuoƆ pǝʞuıꞀ ɐ buısn ʞuıꞀ ǝuoʇspǝᴚ ɐ ǝʇɐʌıʇɔⱯ", "advancement.create.long_train": "sɹnoʌɐǝpuƎ snoıʇıqɯⱯ", @@ -122,13 +122,13 @@ "advancement.create.millstone": "puıɹ⅁ ǝɥʇ ǝɔɐɹqɯƎ", "advancement.create.millstone.desc": "sןɐıɹǝʇɐɯ ǝsıɹǝʌןnd oʇ ǝuoʇsןןıW ɐ ǝs∩", "advancement.create.musical_arm": "oɔıuɐɥɔǝW ſᗡ", - "advancement.create.musical_arm.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nxoqǝʞnſ ɹnoʎ ǝʇɐɹǝdo ɯɹⱯ ןɐɔıuɐɥɔǝW ɐ ɥɔʇɐM", + "advancement.create.musical_arm.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nxoqǝʞnſ ɹnoʎ ǝʇɐɹǝdo ɯɹⱯ ןɐɔıuɐɥɔǝW ɐ ɥɔʇɐM", "advancement.create.package_chute_throw": "ʇǝu ʇnq buıɥʇoN", - "advancement.create.package_chute_throw.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nǝʇnɥɔ ɯǝʇı uɐ uı ʍoɹɥʇ ǝbɐʞɔɐd pɹɐoqpɹɐɔ ɹnoʎ puɐꞀ", + "advancement.create.package_chute_throw.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nǝʇnɥɔ ɯǝʇı uɐ uı ʍoɹɥʇ ǝbɐʞɔɐd pɹɐoqpɹɐɔ ɹnoʎ puɐꞀ", "advancement.create.packager": "uoıʇɔnpoɹԀ ʇsoԀ", "advancement.create.packager.desc": "ɹǝbɐʞɔɐԀ ǝɥʇ buısn ʎɹoʇuǝʌuı uɐ ɯoɹɟ sɯǝʇı ǝbɐʞɔɐԀ", "advancement.create.pipe_organ": "uɐbɹO ǝdıԀ ǝɥ⟘", - "advancement.create.pipe_organ.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nʞuɐ⟘ pınןℲ ǝןbuıs ɐ oʇ sǝןʇsıɥM ɯɐǝʇS pǝɥɔʇıd ʎןǝnbıun ᄅƖ ɥɔɐʇʇⱯ", + "advancement.create.pipe_organ.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nʞuɐ⟘ pınןℲ ǝןbuıs ɐ oʇ sǝןʇsıɥM ɯɐǝʇS pǝɥɔʇıd ʎןǝnbıun ᄅƖ ɥɔɐʇʇⱯ", "advancement.create.portable_storage_interface": "ǝbuɐɥɔxƎ ʎq-ǝʌıɹᗡ", "advancement.create.portable_storage_interface.desc": "uoıʇdɐɹʇuoƆ ɐ oʇuı sɯǝʇı ʇɹǝsuı ɹo ǝʞɐʇ oʇ ǝɔɐɟɹǝʇuI ǝbɐɹoʇS ǝןqɐʇɹoԀ ɐ ǝs∩", "advancement.create.potato_cannon": "¡dɯooʍℲ", @@ -140,7 +140,7 @@ "advancement.create.pulley_maxed": "ǝɹǝɥʍoN oʇ ǝdoᴚ", "advancement.create.pulley_maxed.desc": "dǝǝp sʞɔoןq 00ᄅ ɹǝʌo ʎǝןןnԀ ǝdoᴚ ɐ puǝʇxƎ", "advancement.create.red_signal": "ɹǝʌıɹᗡ ʇɹǝdxƎ", - "advancement.create.red_signal.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nןɐubıS uıɐɹ⟘ pǝɹ ɐ unᴚ", + "advancement.create.red_signal.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nןɐubıS uıɐɹ⟘ pǝɹ ɐ unᴚ", "advancement.create.root": "ǝʇɐǝɹƆ oʇ ǝɯoɔןǝM", "advancement.create.root.desc": "suoıʇdɐɹʇuoƆ ǝᗺ ǝɹǝH", "advancement.create.rose_quartz": "pǝbɹɐɥɔɹǝdnS", @@ -166,7 +166,7 @@ "advancement.create.stressometer": "spɹǝN ɹoɟ ssǝɹʇS", "advancement.create.stressometer.desc": "ɹǝʇǝɯossǝɹʇS ɐ puɐ sǝןbbo⅁ s,ɹǝǝuıbuƎ ɟo dןǝɥ ǝɥʇ ɥʇıʍ ʇnopɐǝɹ ʇɔɐxǝ uɐ ʇǝ⅁", "advancement.create.stressometer_maxed": "pǝssǝɹʇS ʎןʇɔǝɟɹǝԀ", - "advancement.create.stressometer_maxed.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nɹǝʇǝɯossǝɹʇS ɐ ɯoɹɟ ʇnopɐǝɹ %00Ɩ ɐ ʇǝ⅁", + "advancement.create.stressometer_maxed.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nɹǝʇǝɯossǝɹʇS ɐ ɯoɹɟ ʇnopɐǝɹ %00Ɩ ɐ ʇǝ⅁", "advancement.create.sturdy_sheet": "sʞɔoᴚ ʇsǝıpɹnʇS ǝɥ⟘", "advancement.create.sturdy_sheet.desc": "uɐıpısqO pǝɹǝpʍoԀ buıuıɟǝɹ ʎq ʇǝǝɥS ʎpɹnʇS ɐ ǝןqɯǝssⱯ", "advancement.create.super_glue": "ʇɔǝuuoƆ ɟo ɐǝɹⱯ", @@ -184,13 +184,13 @@ "advancement.create.train_casing_00": "ǝbⱯ ǝʌıʇoɯoɔoꞀ ǝɥ⟘", "advancement.create.train_casing_00.desc": "sʇuǝuodɯoɔ ʎɐʍןıɐɹ ɹoɟ buısɐɔ ɐ ǝʇɐǝɹɔ oʇ sʇǝǝɥS ʎpɹnʇS ǝs∩", "advancement.create.train_crash": "ǝɔıʌɹǝS ǝןqıɹɹǝ⟘", - "advancement.create.train_crash.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nɹǝbuǝssɐd ɐ sɐ ɥsɐɹɔ uıɐɹ⟘ ɐ ssǝuʇıM", + "advancement.create.train_crash.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nɹǝbuǝssɐd ɐ sɐ ɥsɐɹɔ uıɐɹ⟘ ɐ ssǝuʇıM", "advancement.create.train_crash_backwards": "ʇodS puıןᗺ", - "advancement.create.train_crash_backwards.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nspɹɐʍʞɔɐq buıʌıɹp ǝןıɥʍ uıɐɹ⟘ ɹǝɥʇouɐ oʇuı ɥsɐɹƆ", + "advancement.create.train_crash_backwards.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nspɹɐʍʞɔɐq buıʌıɹp ǝןıɥʍ uıɐɹ⟘ ɹǝɥʇouɐ oʇuı ɥsɐɹƆ", "advancement.create.train_portal": "ɹǝʇnɯɯoƆ ןɐuoısuǝɯıᗡ", "advancement.create.train_portal.desc": "ןɐʇɹod ɐ ɥbnoɹɥʇ uıɐɹ⟘ ɐ ǝpıᴚ", "advancement.create.train_roadkill": "ןןıʞ pɐoᴚ", - "advancement.create.train_roadkill.desc": ")ʇuǝɯǝɔuɐʌpⱯ uǝppıH(ㄥ§\nuıɐɹ⟘ ɹnoʎ ɥʇıʍ ʎɯǝuǝ uɐ ɹǝʌo unᴚ", + "advancement.create.train_roadkill.desc": "(ʇuǝɯǝɔuɐʌpⱯ uǝppıH)ㄥ§\nuıɐɹ⟘ ɹnoʎ ɥʇıʍ ʎɯǝuǝ uɐ ɹǝʌo unᴚ", "advancement.create.train_whistle": "¡ooɥƆ ooɥƆ", "advancement.create.train_whistle.desc": "buıʌıɹp ǝןıɥʍ ʇı ǝʇɐʌıʇɔɐ puɐ uıɐɹ⟘ ɹnoʎ oʇ ǝןʇsıɥM ɯɐǝʇS ɐ ǝןqɯǝssⱯ", "advancement.create.water_supply": "ɹoʇɔǝןןoƆ ǝןppnԀ", @@ -275,7 +275,7 @@ "block.create.chute": "ǝʇnɥƆ", "block.create.clipboard": "pɹɐoqdıןƆ", "block.create.clipboard.tooltip.behaviour1": "˙ǝɔɐɟɹns ɐ uo ʇı ‾ǝɔɐןd‾ oʇ ‾ʞɔıןƆ-ʞɐǝuS‾ ˙‾ǝɔɐɟɹǝʇuI‾ ǝɥʇ suǝdO", - "block.create.clipboard.tooltip.behaviour2": "˙ǝɹǝɥʍǝsןǝ ‾)ʞɔıןƆ-Ꞁ( pǝıןddɐ‾ puɐ ‾)ʞɔıןƆ-ᴚ( pǝıdoɔ‾ ǝq uɐɔ 'sɹǝʇןıɟ sɐ ɥɔns '‾sbuıʇʇǝs‾ ,sʞɔoןq ǝɯoS", + "block.create.clipboard.tooltip.behaviour2": "˙ǝɹǝɥʍǝsןǝ ‾(ʞɔıןƆ-Ꞁ) pǝıןddɐ‾ puɐ ‾(ʞɔıןƆ-ᴚ) pǝıdoɔ‾ ǝq uɐɔ 'sɹǝʇןıɟ sɐ ɥɔns '‾sbuıʇʇǝs‾ ,sʞɔoןq ǝɯoS", "block.create.clipboard.tooltip.condition1": "pǝʞɔıןƆ-ᴚ uǝɥM", "block.create.clipboard.tooltip.condition2": "sʞɔoןᗺ uo pǝs∩ uǝɥM", "block.create.clipboard.tooltip.summary": "˙ןɐuoıssǝɟoɹd ǝɹoɯ ʞooן noʎ sǝʞɐɯ puɐ ‾sǝʇou ɹnoʎ sdǝǝʞ‾", @@ -957,11 +957,11 @@ "create.command.debuginfo.sending": "˙˙˙uoıʇɐɯɹoɟuı bnqǝp buıʇɔǝןןoƆ", "create.command.killTPSCommand": "sdʇןןıʞ", "create.command.killTPSCommand.argument.tickTime": "ǝɯı⟘ʞɔıʇ", - "create.command.killTPSCommand.status.slowed_by.0": "o: sɯ %s ʎq pǝʍoןs ʎןʇuǝɹɹnɔ sı ʞɔıʇ ɹǝʌɹǝS :]ǝʇɐǝɹƆ[", - "create.command.killTPSCommand.status.slowed_by.1": "):> ʍou sɯ %s ʎq pǝʍoןs sı ʞɔıʇ ɹǝʌɹǝS :]ǝʇɐǝɹƆ[", - "create.command.killTPSCommand.status.slowed_by.2": "ᗡ: pǝǝds ɹɐןnbǝɹ oʇ ʞɔɐq sı ʞɔıʇ ɹǝʌɹǝS :]ǝʇɐǝɹƆ[", - "create.command.killTPSCommand.status.usage.0": "pǝǝds ɹɐןnbǝɹ oʇ ʞɔıʇ ɹǝʌɹǝs ʞɔɐq buıɹq oʇ doʇs sdʇןןıʞ/ ǝsn :]ǝʇɐǝɹƆ[", - "create.command.killTPSCommand.status.usage.1": "ʞɔıʇ ɹǝʌɹǝs ǝɥʇ uʍop ʍoןs ʎןןɐıɔıɟıʇɹɐ oʇ >ǝɯı⟘ʞɔıʇ< ʇɹɐʇs sdʇןןıʞ/ ǝsn :]ǝʇɐǝɹƆ[", + "create.command.killTPSCommand.status.slowed_by.0": "o: sɯ %1$s ʎq pǝʍoןs ʎןʇuǝɹɹnɔ sı ʞɔıʇ ɹǝʌɹǝS :[ǝʇɐǝɹƆ]", + "create.command.killTPSCommand.status.slowed_by.1": "(:< ʍou sɯ %1$s ʎq pǝʍoןs sı ʞɔıʇ ɹǝʌɹǝS :[ǝʇɐǝɹƆ]", + "create.command.killTPSCommand.status.slowed_by.2": "ᗡ: pǝǝds ɹɐןnbǝɹ oʇ ʞɔɐq sı ʞɔıʇ ɹǝʌɹǝS :[ǝʇɐǝɹƆ]", + "create.command.killTPSCommand.status.usage.0": "pǝǝds ɹɐןnbǝɹ oʇ ʞɔıʇ ɹǝʌɹǝs ʞɔɐq buıɹq oʇ doʇs sdʇןןıʞ\\ ǝsn :[ǝʇɐǝɹƆ]", + "create.command.killTPSCommand.status.usage.1": "ʞɔıʇ ɹǝʌɹǝs ǝɥʇ uʍop ʍoןs ʎןןɐıɔıɟıʇɹɐ oʇ <ǝɯı⟘ʞɔıʇ> ʇɹɐʇs sdʇןןıʞ\\ ǝsn :[ǝʇɐǝɹƆ]", "create.contraption.controls.actor_toggle.off": "ɟɟO", "create.contraption.controls.actor_toggle.on": "uO", "create.contraption.controls.all_actor_toggle": "%1$s :sɹoʇɔⱯ ןןⱯ", @@ -1055,7 +1055,7 @@ "create.display_source.item_throughput.interval.hour": "ɹnoH ɹǝd", "create.display_source.item_throughput.interval.minute": "ǝʇnuıW ɹǝd", "create.display_source.item_throughput.interval.second": "puoɔǝS ɹǝd", - "create.display_source.kinetic_speed": ")WԀᴚ( pǝǝdS uoıʇɐʇoᴚ", + "create.display_source.kinetic_speed": "(WԀᴚ) pǝǝdS uoıʇɐʇoᴚ", "create.display_source.kinetic_speed.absolute": "uoıʇɔǝɹıᗡ ǝɹoubI", "create.display_source.kinetic_speed.directional": "uoıʇɔǝɹıᗡ ǝpnןɔuI", "create.display_source.kinetic_stress": "ssǝɹʇS ʞɹoʍʇǝN", @@ -1113,13 +1113,13 @@ "create.factory_panel.connection_aborted": "pǝʇɹoqɐ uoıʇɔǝuuoɔ ʇnduI", "create.factory_panel.cycled_arrow_path": "%1$s ǝpoɯ buıɥʇɐd ʍoɹɹɐ pǝןɔʎƆ", "create.factory_panel.hold_to_set_amount": "ʇunoɯɐ ʇǝbɹɐʇ ɹoɟ pןoɥ puɐ ʞɔıןƆ", - "create.factory_panel.in_progress": ")ssǝɹboɹԀ uI(", + "create.factory_panel.in_progress": "(ssǝɹboɹԀ uI)", "create.factory_panel.input_in_restock_mode": "ǝpoɯ ʞɔoʇsǝɹ uı ǝq ʇouuɐɔ ǝbnɐb ʇnduI", "create.factory_panel.link_connected": "%1$s oʇ pǝʇɔǝuuoɔ ǝbnɐ⅁", "create.factory_panel.new_factory_task": "ʞsɐʇ ʎɹoʇɔɐɟ ʍǝN", "create.factory_panel.no_item": "ʇsɹıɟ ɯǝʇı uɐ ǝʌɐɥ ʇsnɯ ǝbnɐb ʇnduI", "create.factory_panel.panels_connected": "%2$s ǝʇɐǝɹɔ oʇ %1$s buısn ʍoN", - "create.factory_panel.redstone_paused": ")pǝsnɐԀ ǝuoʇspǝᴚ(", + "create.factory_panel.redstone_paused": "(pǝsnɐԀ ǝuoʇspǝᴚ)", "create.factory_panel.relocated": "uoıʇısod ʍǝu oʇ pǝʌoɯ ǝbnɐ⅁", "create.factory_panel.relocation_aborted": "pǝʇɹoqɐ uoıʇɐɔoןǝɹ ǝbnɐ⅁", "create.factory_panel.same_orientation": "uoıʇɐʇuǝıɹo ǝɯɐs ǝɥʇ ǝʌɐɥ ʇsnɯ sʞɔoןᗺ", @@ -1167,11 +1167,11 @@ "create.gui.address_box.clipboard_tip_1": "uo ,#, ɥʇıʍ buıʇɹɐʇs sǝıɹʇuƎ", "create.gui.address_box.clipboard_tip_2": "ןןıʍ spɹɐoqdıןɔ ʎqɹɐǝu ɹo pןǝɥ", "create.gui.address_box.clipboard_tip_3": "˙ʇnduı sıɥʇ ǝʇǝןdɯoɔ-oʇnɐ dןǝɥ", - "create.gui.address_box.clipboard_tip_4": ")ʎɹoʇɔɐɟ# 'ǝbɐɹoʇs# ˙b˙ǝ(", + "create.gui.address_box.clipboard_tip_4": "(ʎɹoʇɔɐɟ# 'ǝbɐɹoʇs# ˙b˙ǝ)", "create.gui.adjustable_crate.storageSpace": "ǝɔɐdS ǝbɐɹoʇS", "create.gui.adjustable_crate.title": "ǝʇɐɹƆ ǝןqɐʇsnظpⱯ", "create.gui.assembly.exception": ":ǝןqɯǝssɐ oʇ ǝןqɐun sɐʍ uoıʇdɐɹʇuoƆ sıɥ⟘", - "create.gui.assembly.exception.chunkNotLoaded": "ʞunɥɔ pǝpɐoן ɐ uı ʇou sɐʍ ]%3$s'%2$s'%1$s[ ʇɐ ʞɔoןᗺ ǝɥ⟘", + "create.gui.assembly.exception.chunkNotLoaded": "ʞunɥɔ pǝpɐoן ɐ uı ʇou sɐʍ [%3$s'%2$s'%1$s] ʇɐ ʞɔoןᗺ ǝɥ⟘", "create.gui.assembly.exception.column_conflict": "sʇɔɐʇuoɔ ɟo uɯnןoɔ sıɥʇ buıʇǝbɹɐʇ ʎpɐǝɹןɐ sı ɹoʇɐʌǝןƎ ɹǝɥʇouⱯ", "create.gui.assembly.exception.noPistonPoles": "sǝןoԀ uoısuǝʇxǝ ǝɯos buıssıɯ sı uoʇsıԀ ǝɥ⟘", "create.gui.assembly.exception.no_contacts": "ǝɹnʇɔnɹʇs ǝɥʇ oʇ pǝɥɔɐʇʇɐ ‾ʇɔɐʇuoƆ‾ ‾ǝuoʇspǝᴚ‾ ןɐʇuozıɹoɥ ɐ ǝɹınbǝɹ sɹoʇɐʌǝןƎ", @@ -1179,28 +1179,28 @@ "create.gui.assembly.exception.structureTooLarge": "%1$s :sı ɯnɯıxɐɯ pǝɹnbıɟuoɔ ǝɥ⟘\n˙uoıʇdɐɹʇuoɔ ǝɥʇ uı pǝpnןɔuı sʞɔoןᗺ ʎuɐɯ ooʇ ǝɹɐ ǝɹǝɥ⟘", "create.gui.assembly.exception.tooManyPistonPoles": "%1$s :sı ɯnɯıxɐɯ pǝɹnbıɟuoɔ ǝɥ⟘\n˙uoʇsıԀ sıɥʇ oʇ pǝɥɔɐʇʇɐ sǝןoԀ uoısuǝʇxǝ ʎuɐɯ ooʇ ǝɹɐ ǝɹǝɥ⟘", "create.gui.assembly.exception.too_many_contacts": "sɹoʇɐʌǝןƎ oʇ ‾ʇɔɐʇuoƆ‾ ‾ǝuoʇspǝᴚ‾ ǝuo uɐɥʇ ǝɹoɯ ɥɔɐʇʇɐ ʇouuɐƆ", - "create.gui.assembly.exception.unmovableBlock": "]%3$s'%2$s'%1$s[ ʇɐ )%4$s( ʞɔoןᗺ ǝןqɐʌoɯu∩", + "create.gui.assembly.exception.unmovableBlock": "[%3$s'%2$s'%1$s] ʇɐ (%4$s) ʞɔoןᗺ ǝןqɐʌoɯu∩", "create.gui.attached_computer.controlled": "ɹǝʇndɯoɔ ɐ ʎq pǝןןoɹʇuoɔ buıǝq sı ǝɔıʌǝp sıɥ⟘", "create.gui.attached_computer.hint": "sɯǝpoɯ puɐ sɹǝʇndɯoɔ ןןɐ ʇɔǝuuoɔsıp 'ʎןןɐnuɐɯ ǝɔıʌǝp ǝsn o⟘", "create.gui.attribute_filter.add_attribute": "ʇsıꞀ oʇ ǝʇnqıɹʇʇɐ ppⱯ", "create.gui.attribute_filter.add_inverted_attribute": "ʇsıꞀ oʇ ǝʇnqıɹʇʇɐ ǝʇısoddo ppⱯ", "create.gui.attribute_filter.add_reference_item": "ɯǝʇI ǝɔuǝɹǝɟǝᴚ ppⱯ", - "create.gui.attribute_filter.allow_list_conjunctive": ")ןןⱯ( ʇsıꞀ-ʍoןןⱯ", + "create.gui.attribute_filter.allow_list_conjunctive": "(ןןⱯ) ʇsıꞀ-ʍoןןⱯ", "create.gui.attribute_filter.allow_list_conjunctive.description": "˙sǝʇnqıɹʇʇɐ pǝʇɔǝןǝs ǝɥʇ ɟo ꞀꞀⱯ ǝʌɐɥ ʎǝɥʇ ɟı ʎןuo ssɐd sɯǝʇI", - "create.gui.attribute_filter.allow_list_disjunctive": ")ʎuⱯ( ʇsıꞀ-ʍoןןⱯ", + "create.gui.attribute_filter.allow_list_disjunctive": "(ʎuⱯ) ʇsıꞀ-ʍoןןⱯ", "create.gui.attribute_filter.allow_list_disjunctive.description": "˙sǝʇnqıɹʇʇɐ pǝʇɔǝןǝs ǝɥʇ ɟo ʎuɐ ǝʌɐɥ ʎǝɥʇ ɟı ssɐd sɯǝʇI", "create.gui.attribute_filter.deny_list": "ʇsıꞀ-ʎuǝᗡ", "create.gui.attribute_filter.deny_list.description": "˙sǝʇnqıɹʇʇɐ pǝʇɔǝןǝs ǝɥʇ ɟo ʎuɐ ǝʌɐɥ ⟘ON op ʎǝɥʇ ɟı ssɐd sɯǝʇI", "create.gui.attribute_filter.no_selected_attributes": "pǝʇɔǝןǝs sǝʇnqıɹʇʇɐ oN", "create.gui.attribute_filter.selected_attributes": ":sǝʇnqıɹʇʇɐ pǝʇɔǝןǝS", "create.gui.clipboard.erase_checked": "sɯǝʇı pǝʞɔǝɥɔ ǝsɐɹƎ", - "create.gui.config.overlay1": "): ıH", + "create.gui.config.overlay1": "(: ıH", "create.gui.config.overlay2": "ʎɐןɹǝʌo ǝןdɯɐs ɐ sı sıɥ⟘", "create.gui.config.overlay3": "ǝsnoɯ ɹnoʎ ɥʇıʍ bɐɹp ɹo ʞɔıןƆ", "create.gui.config.overlay4": "ʍǝıʌǝɹd sıɥʇ ǝʌoɯ oʇ", "create.gui.config.overlay5": "uǝǝɹɔs sıɥʇ ʇıxǝ oʇ ƆSƎ ssǝɹԀ", "create.gui.config.overlay6": "uoıʇısod ʍǝu ǝɥʇ ǝʌɐs puɐ", - "create.gui.config.overlay7": "ʇǝsǝɹ ʎɐןɹǝʌo ǝʇɐǝɹɔ/ unᴚ", + "create.gui.config.overlay7": "ʇǝsǝɹ ʎɐןɹǝʌo ǝʇɐǝɹɔ\\ unᴚ", "create.gui.config.overlay8": "uoıʇısod ʇןnɐɟǝp ǝɥʇ oʇ ʇǝsǝɹ oʇ", "create.gui.contraptions.network_overstressed": "˙‾ʇɔɐdɯı‾ ‾ssǝɹʇs‾ ɥbıɥ ɐ ɥʇıʍ sʇuǝuodɯoɔ ǝɥʇ ‾uʍop‾ ‾ʍoןs‾ ɹo sǝɔɹnos ǝɹoɯ ppⱯ ˙‾pǝssǝɹʇsɹǝʌo‾ sı uoıʇdɐɹʇuoɔ sıɥʇ ʇɐɥʇ sɹɐǝddɐ ʇI", "create.gui.contraptions.not_fast_enough": "˙‾pǝǝds‾ ‾ɥbnouǝ‾ ɥʇıʍ buıʇɐʇoɹ ‾ʇou‾ sı %1$s sıɥʇ ʇɐɥʇ sɹɐǝddɐ ʇI", @@ -1209,7 +1209,7 @@ "create.gui.factory_panel.connect_input": "uoıʇɔǝuuoɔ ʍǝu ppⱯ", "create.gui.factory_panel.crafting_input": "sʇuǝıpǝɹbuI pǝbɐʞɔɐԀ", "create.gui.factory_panel.crafting_input_tip": "pǝʇɔǝuuoɔ oʇuı ǝbɐʞɔɐdu∩", - "create.gui.factory_panel.crafting_input_tip_1": ")ƐxƐ( sɹǝʇɟɐɹɔ ןɐɔıuɐɥɔǝɯ", + "create.gui.factory_panel.crafting_input_tip_1": "(ƐxƐ) sɹǝʇɟɐɹɔ ןɐɔıuɐɥɔǝɯ", "create.gui.factory_panel.empty_panel": "ןǝuɐd ʎʇdɯƎ", "create.gui.factory_panel.expected_output": "%1$s buıʇɔǝdxƎ", "create.gui.factory_panel.expected_output_tip": "buıuɹnʇǝɹ ʇndʇno ɟo ʇunoɯɐ ǝɥ⟘", @@ -1338,7 +1338,7 @@ "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "ǝןbuⱯ", "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "ǝןbuɐ ʎq uɹn⟘", "create.gui.sequenced_gearshift.instruction.turn_distance": "uoʇsıԀ", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ʎɹʇuɐ⅁/ʎǝןןnԀ/uoʇsıԀ ǝʌoɯ oʇ uɹn⟘", + "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ʎɹʇuɐ⅁\\ʎǝןןnԀ\\uoʇsıԀ ǝʌoɯ oʇ uɹn⟘", "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "ǝɔuɐʇsıᗡ", "create.gui.sequenced_gearshift.speed": "uoıʇɔǝɹıᗡ 'pǝǝdS", "create.gui.sequenced_gearshift.speed.back": "pǝsɹǝʌǝᴚ 'pǝǝds ʇnduI", @@ -1387,7 +1387,7 @@ "create.gui.stock_ticker.category_filter_tip_1": "pǝpnןɔuı ǝɹɐ sɯǝʇı ɥɔıɥʍ ʎɟıɔǝds oʇ", "create.gui.stock_ticker.category_name": "ǝɯɐN ʎɹobǝʇɐƆ", "create.gui.stock_ticker.delete_category": "ʎɹobǝʇɐƆ ǝʇǝןǝᗡ", - "create.gui.stock_ticker.empty_category_name_placeholder": ")ʎʇdɯƎ(", + "create.gui.stock_ticker.empty_category_name_placeholder": "(ʎʇdɯƎ)", "create.gui.stock_ticker.new_category": "ʎɹobǝʇɐƆ ʍǝN", "create.gui.stock_ticker.shift_moves_bottom": "ɯoʇʇoq oʇ sǝʌoɯ ʇɟıɥS", "create.gui.stock_ticker.shift_moves_top": "doʇ oʇ sǝʌoɯ ʇɟıɥS", @@ -1432,12 +1432,12 @@ "create.gui.threshold_switch.power_off_when": "˙˙˙uǝɥʍ ɟɟo ɹǝʍoԀ", "create.gui.threshold_switch.power_on_when": "˙˙˙uǝɥʍ uo ɹǝʍoԀ", "create.gui.threshold_switch.pulley_y_level": "ʎ%1$s", - "create.gui.threshold_switch.range": ")%2$s oʇ %1$s(", - "create.gui.threshold_switch.range_max": ")%1$s ˙xɐɯ(", + "create.gui.threshold_switch.range": "(%2$s oʇ %1$s)", + "create.gui.threshold_switch.range_max": "(%1$s ˙xɐɯ)", "create.gui.threshold_switch.title": "ɥɔʇıʍS pןoɥsǝɹɥ⟘", "create.gui.threshold_switch.upper_threshold": ":ǝʌoqɐ ɹo ʇɐ˙˙˙", - "create.gui.toolmenu.cycle": "ǝןɔʎƆ oʇ ]ꞀꞀOᴚƆS[", - "create.gui.toolmenu.focusKey": "snɔoℲ oʇ ]%1$s[ pןoH", + "create.gui.toolmenu.cycle": "ǝןɔʎƆ oʇ [ꞀꞀOᴚƆS]", + "create.gui.toolmenu.focusKey": "snɔoℲ oʇ [%1$s] pןoH", "create.gui.value_settings.hold_to_edit": "ʇıpǝ oʇ pןoɥ puɐ ʞɔıןƆ", "create.gui.value_settings.release_to_confirm": "ɯɹıɟuoƆ oʇ %1$s ǝsɐǝןǝᴚ", "create.hint.blocked_frogport": "¿ןןnɟ ǝq ʇı pןnoƆ ‾˙ʍoןǝq‾ ‾ʎɹoʇuǝʌuı‾ ǝɥʇ oʇ pǝɹɹǝɟsuɐɹʇ ǝq ʇou pןnoɔ ‾ʇɹodboɹℲ‾ sıɥʇ ʎq ʇɥbnɐɔ ‾ǝbɐʞɔɐԀ‾ Ɐ", @@ -1574,11 +1574,11 @@ "create.materialChecklist.blocksNotLoaded": "˙pǝpɐoן buıǝq ʇou sʞunɥɔ ʇuɐʌǝןǝɹ oʇ ǝnp ǝʇɐɹnɔɔɐuı ǝq ʎɐɯ ʇsıꞀ ןɐıɹǝʇɐW\n\n* ɹǝɯıɐןɔsıᗡ *", "create.mechanical_arm.deposit_to": "%1$s oʇ sɯǝʇı ʇısodǝᗡ", "create.mechanical_arm.extract_from": "%1$s ɯoɹɟ sɯǝʇı ǝʞɐ⟘", - "create.mechanical_arm.points_outside_range": "˙suoıʇɐʇıɯıן ǝbuɐɹ oʇ ǝnp pǝʌoɯǝɹ )s(ʇuıod uoıʇɔɐɹǝʇuı pǝʇɔǝןǝs %1$s", + "create.mechanical_arm.points_outside_range": "˙suoıʇɐʇıɯıן ǝbuɐɹ oʇ ǝnp pǝʌoɯǝɹ (s)ʇuıod uoıʇɔɐɹǝʇuı pǝʇɔǝןǝs %1$s", "create.mechanical_arm.selection_mode.forced_round_robin": "uıqoᴚ punoᴚ pǝɔɹoℲ", "create.mechanical_arm.selection_mode.prefer_first": "ʇǝbɹɐ⟘ ʇsɹıℲ ɹǝɟǝɹԀ", "create.mechanical_arm.selection_mode.round_robin": "uıqoᴚ punoᴚ", - "create.mechanical_arm.summary": "˙)s(ʇndʇno %2$s puɐ )s(ʇnduı %1$s sɐɥ ɯɹⱯ ןɐɔıuɐɥɔǝW", + "create.mechanical_arm.summary": "˙(s)ʇndʇno %2$s puɐ (s)ʇnduı %1$s sɐɥ ɯɹⱯ ןɐɔıuɐɥɔǝW", "create.menu.configure": "˙˙˙ǝɹnbıɟuoƆ", "create.menu.only_ingame": "nuǝW ǝsnɐԀ ǝɥʇ uı ǝןqɐןıɐʌⱯ", "create.menu.ponder_index": "xǝpuI ɹǝpuoԀ", @@ -1725,7 +1725,7 @@ "create.ponder.chute_upward.header": "sǝʇnɥƆ ɐıʌ pɹɐʍdn sɯǝʇI buıʇɹodsuɐɹ⟘", "create.ponder.chute_upward.text_1": "pɹɐʍdn sɯǝʇı ǝʌoɯ uɐɔ ǝʇnɥƆ ɐ 'ɯoʇʇoq ɹo doʇ ǝɥʇ ʇɐ suɐℲ pǝsɐɔuƎ buıs∩", "create.ponder.chute_upward.text_2": "uoıʇɔǝɹıp ʇuǝɯǝʌoɯ ǝɥʇ ʇnoqɐ uoıʇɐɯɹoɟuı sןɐǝʌǝɹ sǝןbbo⅁ ,sɹǝǝuıbuƎ ɥʇıʍ sǝʇnɥɔ buıʇɔǝdsuI", - "create.ponder.chute_upward.text_3": "sǝpıs ǝɥʇ ɯoɹɟ uǝʞɐʇ/pǝʇɹǝsuı ǝq oʇ ǝʌɐɥ ןןıʍ sɯǝʇı 'puǝ ,pǝʞɔoןq, ǝɥʇ uO", + "create.ponder.chute_upward.text_3": "sǝpıs ǝɥʇ ɯoɹɟ uǝʞɐʇ\\pǝʇɹǝsuı ǝq oʇ ǝʌɐɥ ןןıʍ sɯǝʇı 'puǝ ,pǝʞɔoןq, ǝɥʇ uO", "create.ponder.clockwork_bearing.header": "sbuıɹɐǝᗺ ʞɹoʍʞɔoןƆ buısn sǝɹnʇɔnɹʇS buıʇɐɯıuⱯ", "create.ponder.clockwork_bearing.text_1": "ɯǝɥʇ ɟo ʇuoɹɟ uı sʞɔoןq oʇ ɥɔɐʇʇɐ sbuıɹɐǝᗺ ʞɹoʍʞɔoןƆ", "create.ponder.clockwork_bearing.text_2": "ʎɐp ǝɥʇ ɟo ɹnoɥ ǝɥʇ oʇ buıpɹoɔɔɐ pǝʇɐʇoɹ ǝq ןןıʍ ǝɹnʇɔnɹʇs ǝɥʇ 'ǝɔɹoℲ ןɐuoıʇɐʇoᴚ buıʌıǝɔǝɹ uod∩", @@ -1954,7 +1954,7 @@ "create.ponder.funnel_direction.text_2": "˙ʎɹoʇuǝʌuı ǝɥʇ oʇuı sɯǝʇı sʇnd ʇı 'buıʞɐǝus ǝןıɥʍ pǝɔɐןԀ", "create.ponder.funnel_direction.text_3": "˙ʇuǝɯǝɔɐןd ɹǝʇɟɐ pǝddıןɟ ǝq uɐɔ ןǝuunɟ ǝɥʇ 'ɥɔuǝɹʍ ɐ buıs∩", "create.ponder.funnel_direction.text_4": "˙suoıʇɐʇuǝıɹo ʇsoɯ ɹoɟ ʎןddɐ ןןıʍ sǝןnɹ ǝɯɐS", - "create.ponder.funnel_direction.text_5": "˙uoıʇɔǝɹıp ʇuǝɯǝʌoɯ sʇı uo buıpuǝdǝp ʇɹǝsuı/ʇɔɐɹʇxǝ ןןıʍ sʇןǝq uo sןǝuunℲ", + "create.ponder.funnel_direction.text_5": "˙uoıʇɔǝɹıp ʇuǝɯǝʌoɯ sʇı uo buıpuǝdǝp ʇɹǝsuı\\ʇɔɐɹʇxǝ ןןıʍ sʇןǝq uo sןǝuunℲ", "create.ponder.funnel_intro.header": "sןǝuunɟ buıs∩", "create.ponder.funnel_intro.text_1": "˙sǝıɹoʇuǝʌuı oʇ puɐ ɯoɹɟ sɯǝʇı buıɹɹǝɟsuɐɹʇ ɹoɟ ןɐǝpı ǝɹɐ sןǝuunℲ", "create.ponder.funnel_redstone.header": "ןoɹʇuoɔ ǝuoʇspǝᴚ", @@ -2003,8 +2003,8 @@ "create.ponder.hose_pulley.text_7": "ʇndɥbnoɹɥʇ ,sʞɹoʍʇǝu pınןɟ ǝɥʇ uo ʎןǝɹıʇuǝ spuǝdǝp ʎǝןןnd ǝɥʇ ɟo pǝǝds uıɐɹᗡ puɐ ןןıℲ", "create.ponder.hose_pulley_infinite.header": "pınןℲ ɟo sǝıpoq ǝbɹɐן buıuıɐɹᗡ puɐ buıןןıℲ ʎןǝʌıssɐԀ", "create.ponder.hose_pulley_infinite.text_1": "˙˙˙uɐǝɔo ɥbnouǝ ǝbɹɐן ɐ oʇuı ʎǝןןnԀ ǝsoH ǝɥʇ buıʎoןdǝp uǝɥM", - "create.ponder.hose_pulley_infinite.text_2": "ǝɔɹnos ǝɥʇ buıʇɔǝɟɟɐ ʇnoɥʇıʍ spınןɟ ǝsodsıp/ǝpıʌoɹd ןןıʍ ʇI", - "create.ponder.hose_pulley_infinite.text_3": "sʎǝןןnd ɥɔns oʇ/ɯoɹɟ spınןɟ ǝʞɐʇ ʎןssǝןʇıɯıן uɐɔ sʞɹoʍʇǝu ǝdıԀ", + "create.ponder.hose_pulley_infinite.text_2": "ǝɔɹnos ǝɥʇ buıʇɔǝɟɟɐ ʇnoɥʇıʍ spınןɟ ǝsodsıp\\ǝpıʌoɹd ןןıʍ ʇI", + "create.ponder.hose_pulley_infinite.text_3": "sʎǝןןnd ɥɔns oʇ\\ɯoɹɟ spınןɟ ǝʞɐʇ ʎןssǝןʇıɯıן uɐɔ sʞɹoʍʇǝu ǝdıԀ", "create.ponder.hose_pulley_level.header": "sʎǝןןnԀ ǝsoH ɟo ןǝʌǝן uıɐɹᗡ puɐ ןןıℲ", "create.ponder.hose_pulley_level.text_1": "ǝʇɐɹǝdo ʇouuɐɔ ʎǝןןnԀ ǝsoH ǝɥʇ 'pǝʇɔɐɹʇǝɹ ʎןןnɟ ǝןıɥM", "create.ponder.hose_pulley_level.text_2": "ɯoʇʇoq oʇ doʇ ɯoɹɟ sunɹ buıuıɐɹᗡ", @@ -2051,7 +2051,7 @@ "create.ponder.mechanical_arm.header": "sɯɹⱯ ןɐɔıuɐɥɔǝW dn buıʇʇǝS", "create.ponder.mechanical_arm.text_1": "pǝɔɐןd ǝɹɐ ʎǝɥʇ ǝɹoɟǝq sʇndʇno puɐ -uı ɹıǝɥʇ pǝubıssɐ ǝq oʇ ǝʌɐɥ sɯɹⱯ ןɐɔıuɐɥɔǝW", "create.ponder.mechanical_arm.text_2": "sʇǝbɹɐ⟘ sɐ ɯǝɥʇ ubıssɐ oʇ ɯɹⱯ ǝɥʇ buıpןoɥ ǝןıɥʍ sǝıɹoʇuǝʌuı ʞɔıןƆ-ʇɥbıᴚ", - "create.ponder.mechanical_arm.text_3": ")ʍoןןǝʎ( ʇndʇnO puɐ )ǝnןᗺ( ʇnduI uǝǝʍʇǝq ǝןbboʇ oʇ uıɐbɐ ʞɔıןƆ-ʇɥbıᴚ", + "create.ponder.mechanical_arm.text_3": "(ʍoןןǝʎ) ʇndʇnO puɐ (ǝnןᗺ) ʇnduI uǝǝʍʇǝq ǝןbboʇ oʇ uıɐbɐ ʞɔıןƆ-ʇɥbıᴚ", "create.ponder.mechanical_arm.text_4": "uoıʇɔǝןǝS ɹıǝɥʇ ǝʌoɯǝɹ oʇ sʇuǝuodɯoɔ ʞɔıןƆ-ʇɟǝꞀ", "create.ponder.mechanical_arm.text_5": "ʎןsnoıʌǝɹd pǝʇɔǝןǝs sʞɔoןq ǝɥʇ ʇǝbɹɐʇ ןןıʍ ɯɹⱯ ןɐɔıuɐɥɔǝW ǝɥʇ 'pǝɔɐןd ǝɔuO", "create.ponder.mechanical_arm.text_6": "ǝbuɐɹ ɹıǝɥʇ uıɥʇıʍ sʇndʇno puɐ -uı ɟo ʇunoɯɐ ʎuɐ ǝʌɐɥ uɐɔ ʎǝɥ⟘", @@ -2654,7 +2654,7 @@ "create.ponder.windmill_source.text_7": "uıɐbɐ ǝɹnʇɔnɹʇS ǝɥʇ ʇıpǝ puɐ doʇs oʇ ǝɯıʇʎuɐ buıɹɐǝᗺ ǝɥʇ ʞɔıןɔ-ʇɥbıᴚ", "create.ponder.windmill_structure.header": "suoıʇdɐɹʇuoƆ ןןıɯpuıM", "create.ponder.windmill_structure.text_1": "˙sʞɔoןᗺ ǝʞıן-ןıɐs 8 ʇsɐǝן ʇɐ suıɐʇuoɔ ʇı sɐ buoן sɐ 'ןןıɯpuıM pıןɐʌ ɐ sɐ ʇunoɔ uɐɔ ǝɹnʇɔnɹʇS ʎuⱯ", - "create.portal_track.blocked": ")%3$s'%2$s'%1$s( pǝʞɔoןq uoıʇɐɔoן ʇǝbɹɐ⟘", + "create.portal_track.blocked": "(%3$s'%2$s'%1$s) pǝʞɔoןq uoıʇɐɔoן ʇǝbɹɐ⟘", "create.portal_track.failed": ":ʞɔɐɹʇ ןɐʇɹod ǝɔɐןd ʇouuɐƆ", "create.portal_track.missing": "ʇǝʎ pǝʇɐɹǝuǝb ʇou ןɐʇɹod ʇǝbɹɐ⟘", "create.potato_cannon.ammo.attack_damage": "ǝbɐɯɐᗡ ʞɔɐʇʇⱯ %1$s", @@ -2665,7 +2665,7 @@ "create.recipe.assembly.junk": "ǝbɐʌןɐs ɯopuɐᴚ", "create.recipe.assembly.next": "%1$s :ʇxǝN", "create.recipe.assembly.pressing": "ssǝɹԀ uı ssǝɔoɹԀ", - "create.recipe.assembly.progress": "%2$s/%1$s :ssǝɹboɹԀ", + "create.recipe.assembly.progress": "%2$s\\%1$s :ssǝɹboɹԀ", "create.recipe.assembly.repeat": "sǝɯı⟘ %1$s ǝɔuǝnbǝS ʇɐǝdǝᴚ", "create.recipe.assembly.spout_filling_fluid": "%1$s ʇnodS", "create.recipe.assembly.step": ":%1$s dǝʇS", @@ -2723,7 +2723,7 @@ "create.schedule.condition.player_count.or_above": "ǝʌoqɐ ɹO", "create.schedule.condition.player_count.players": "sɹǝʎɐןԀ", "create.schedule.condition.player_count.seated": "pǝʇɐǝs %1$s", - "create.schedule.condition.player_count.status": "%2$s/%1$s :sɹǝbuǝssɐԀ", + "create.schedule.condition.player_count.status": "%2$s\\%1$s :sɹǝbuǝssɐԀ", "create.schedule.condition.player_count.summary": "ɹǝʎɐןԀ %1$s", "create.schedule.condition.player_count.summary_plural": "sɹǝʎɐןԀ %1$s", "create.schedule.condition.powered": "pǝɹǝʍoԀ uoıʇɐʇS", @@ -2749,7 +2749,7 @@ "create.schedule.condition.threshold.place_item_2": "pǝsn ǝq uɐɔ sɹǝʇןıℲ", "create.schedule.condition.threshold.place_item_3": "ʎuɐ ɥɔʇɐɯ oʇ ʎʇdɯǝ ǝʌɐǝꞀ", "create.schedule.condition.threshold.stacks": "sʞɔɐʇS", - "create.schedule.condition.threshold.status": "%3$s %2$s/%1$s :obɹɐƆ", + "create.schedule.condition.threshold.status": "%3$s %2$s\\%1$s :obɹɐƆ", "create.schedule.condition.threshold.train_holds": "%1$s spןoɥ uıɐɹ⟘", "create.schedule.condition.threshold.x_units_of_item": "%3$s ɟo %2$s %1$s", "create.schedule.condition.time_of_day": "ʎɐᗡ ɟo ǝɯı⟘", @@ -2769,7 +2769,7 @@ "create.schedule.condition.time_of_day.status": " ʇɐ sʇɹɐdǝᗡ", "create.schedule.condition.unloaded": "pǝpɐoןu∩ ʞunɥƆ", "create.schedule.condition.unloaded.status": "pɐoןun ʞunɥɔ ɹoɟ buıʇıɐM", - "create.schedule.condition_type": ":ɹǝʇɟɐ/ɟı ǝnuıʇuoƆ", + "create.schedule.condition_type": ":ɹǝʇɟɐ\\ɟı ǝnuıʇuoƆ", "create.schedule.continued": "pǝɯnsǝɹ ǝןnpǝɥɔS", "create.schedule.instruction.address_filter_edit_box": "ssǝɹppⱯ sıɥʇ ɥʇıʍ sǝbɐʞɔɐԀ ǝʌǝıɹʇǝᴚ", "create.schedule.instruction.address_filter_edit_box_1": "pɹɐɔpןıʍ ʇxǝʇ ɐ sɐ * ǝs∩", @@ -2810,7 +2810,7 @@ "create.schedule.reset": "ssǝɹboɹԀ ʇǝsǝᴚ", "create.schedule.skip": "doʇS ʇuǝɹɹnɔ dıʞS", "create.schematic.error": "sboꞀ ǝɯɐ⅁ ʞɔǝɥƆ - pɐoꞀ oʇ pǝןıɐɟ ɔıʇɐɯǝɥɔS", - "create.schematic.invalid": "pɐǝʇsuı ǝןqɐ⟘ ɔıʇɐɯǝɥɔS ǝɥʇ ǝs∩ - ɯǝʇI pıןɐʌuI ]¡[", + "create.schematic.invalid": "pɐǝʇsuı ǝןqɐ⟘ ɔıʇɐɯǝɥɔS ǝɥʇ ǝs∩ - ɯǝʇI pıןɐʌuI [¡]", "create.schematic.mirror": "ɹoɹɹıW", "create.schematic.mirror.frontBack": "ʞɔɐᗺ-ʇuoɹℲ", "create.schematic.mirror.leftRight": "ʇɥbıᴚ-ʇɟǝꞀ", @@ -2824,31 +2824,31 @@ "create.schematic.tool.deploy": "uoıʇısoԀ", "create.schematic.tool.deploy.description.0": "˙uoıʇɐɔoן ɐ oʇ ǝɹnʇɔnɹʇs ǝɥʇ sǝʌoW", "create.schematic.tool.deploy.description.1": "˙ǝɔɐןd oʇ punoɹb ǝɥʇ uo ʞɔıןƆ-ʇɥbıᴚ", - "create.schematic.tool.deploy.description.2": "˙ǝɔuɐʇsıp pǝxıɟ ɐ ʇɐ ʇɔǝןǝs oʇ ]ןɹʇƆ[ pןoH", - "create.schematic.tool.deploy.description.3": "˙ǝɔuɐʇsıp ǝɥʇ ǝbuɐɥɔ oʇ ןןoɹɔS-]ןɹʇƆ[", + "create.schematic.tool.deploy.description.2": "˙ǝɔuɐʇsıp pǝxıɟ ɐ ʇɐ ʇɔǝןǝs oʇ [ןɹʇƆ] pןoH", + "create.schematic.tool.deploy.description.3": "˙ǝɔuɐʇsıp ǝɥʇ ǝbuɐɥɔ oʇ ןןoɹɔS-[ןɹʇƆ]", "create.schematic.tool.flip": "ɹoɹɹıW", "create.schematic.tool.flip.description.0": "˙ʇɔǝןǝs noʎ ǝɔɐɟ ǝɥʇ buoןɐ ɔıʇɐɯǝɥɔS ǝɥʇ sdıןℲ", - "create.schematic.tool.flip.description.1": "˙ʇı dıןɟ oʇ ןןoɹɔS-]Ꞁᴚ⟘Ɔ[ puɐ ɔıʇɐɯǝɥɔS ǝɥʇ ʇɐ ʇuıoԀ", + "create.schematic.tool.flip.description.1": "˙ʇı dıןɟ oʇ ןןoɹɔS-[Ꞁᴚ⟘Ɔ] puɐ ɔıʇɐɯǝɥɔS ǝɥʇ ʇɐ ʇuıoԀ", "create.schematic.tool.flip.description.2": "", "create.schematic.tool.flip.description.3": "", "create.schematic.tool.move": "ZX ǝʌoW", "create.schematic.tool.move.description.0": "˙ʎןןɐʇuozıɹoH ɔıʇɐɯǝɥɔS ǝɥʇ sʇɟıɥS", - "create.schematic.tool.move.description.1": "˙ʇı ɥsnd oʇ ןןoɹɔS-]Ꞁᴚ⟘Ɔ[ puɐ ɔıʇɐɯǝɥɔS ǝɥʇ ʇɐ ʇuıoԀ", + "create.schematic.tool.move.description.1": "˙ʇı ɥsnd oʇ ןןoɹɔS-[Ꞁᴚ⟘Ɔ] puɐ ɔıʇɐɯǝɥɔS ǝɥʇ ʇɐ ʇuıoԀ", "create.schematic.tool.move.description.2": "", "create.schematic.tool.move.description.3": "", "create.schematic.tool.move_y": "ʎ ǝʌoW", "create.schematic.tool.move_y.description.0": "˙ʎןןɐɔıʇɹǝΛ ɔıʇɐɯǝɥɔS ǝɥʇ sʇɟıɥS", - "create.schematic.tool.move_y.description.1": "˙uʍop/dn ʇı ǝʌoɯ oʇ ןןoɹɔS-]Ꞁᴚ⟘Ɔ[", + "create.schematic.tool.move_y.description.1": "˙uʍop\\dn ʇı ǝʌoɯ oʇ ןןoɹɔS-[Ꞁᴚ⟘Ɔ]", "create.schematic.tool.move_y.description.2": "", "create.schematic.tool.move_y.description.3": "", "create.schematic.tool.print": "ʇuıɹԀ", "create.schematic.tool.print.description.0": "˙pןɹoʍ ǝɥʇ uı ǝɹnʇɔnɹʇs ǝɥʇ sǝɔɐןd ʎןʇuɐʇsuI", - "create.schematic.tool.print.description.1": "˙uoıʇɐɔoן ʇuǝɹɹnɔ ǝɥʇ ʇɐ ʇuǝɯǝɔɐןd ɯɹıɟuoɔ oʇ ]ʞɔıןƆ-ʇɥbıᴚ[", + "create.schematic.tool.print.description.1": "˙uoıʇɐɔoן ʇuǝɹɹnɔ ǝɥʇ ʇɐ ʇuǝɯǝɔɐןd ɯɹıɟuoɔ oʇ [ʞɔıןƆ-ʇɥbıᴚ]", "create.schematic.tool.print.description.2": "˙ʎןuo ǝpoW ǝʌıʇɐǝɹƆ ɹoɟ sı ןooʇ sıɥ⟘", "create.schematic.tool.print.description.3": "", "create.schematic.tool.rotate": "ǝʇɐʇoᴚ", "create.schematic.tool.rotate.description.0": "˙ɹǝʇuǝɔ sʇı punoɹɐ ɔıʇɐɯǝɥɔS ǝɥʇ sǝʇɐʇoᴚ", - "create.schematic.tool.rotate.description.1": "˙sǝǝɹbǝᗡ 06 ʎq ǝʇɐʇoɹ oʇ ןןoɹɔS-]Ꞁᴚ⟘Ɔ[", + "create.schematic.tool.rotate.description.1": "˙sǝǝɹbǝᗡ 06 ʎq ǝʇɐʇoɹ oʇ ןןoɹɔS-[Ꞁᴚ⟘Ɔ]", "create.schematic.tool.rotate.description.2": "", "create.schematic.tool.rotate.description.3": "", "create.schematicAndQuill.abort": "˙uoıʇɔǝןǝs pǝʌoɯǝᴚ", @@ -2858,7 +2858,7 @@ "create.schematicAndQuill.fallbackName": "ɔıʇɐɯǝɥɔS ʎW", "create.schematicAndQuill.firstPos": "˙ʇǝs uoıʇısod ʇsɹıℲ", "create.schematicAndQuill.instant_failed": "sןıɐʇǝp ɹoɟ sboן ʞɔǝɥɔ 'pǝןıɐɟ pɐoןdn-ʇuɐʇsuı ɔıʇɐɯǝɥɔS", - "create.schematicAndQuill.noTarget": "˙sʞɔoןq ɹıⱯ ʇɔǝןǝs oʇ ]ןɹʇƆ[ pןoH", + "create.schematicAndQuill.noTarget": "˙sʞɔoןq ɹıⱯ ʇɔǝןǝs oʇ [ןɹʇƆ] pןoH", "create.schematicAndQuill.saved": "%1$s sɐ pǝʌɐS", "create.schematicAndQuill.secondPos": "˙ʇǝs uoıʇısod puoɔǝS", "create.schematicAndQuill.title": ":ǝɯɐN ɔıʇɐɯǝɥɔS", @@ -3011,9 +3011,9 @@ "create.toolbox.detach": "ɯǝʇı dǝǝʞ puɐ buıʞɔɐɹʇ doʇS", "create.toolbox.outOfRange": "ǝbuɐᴚ uı ʇou ɯǝʇı pןǝɥ ɟo xoqןoo⟘", "create.toolbox.unequip": "%1$s :dınbǝu∩", - "create.tooltip.analogStrength": "ϛƖ/%1$s :ɥʇbuǝɹʇS boןɐuⱯ", + "create.tooltip.analogStrength": "ϛƖ\\%1$s :ɥʇbuǝɹʇS boןɐuⱯ", "create.tooltip.brass_tunnel.contains": ":buıʇnqıɹʇsıp ʎןʇuǝɹɹnƆ", - "create.tooltip.brass_tunnel.contains_entry": "%2$sx %1$s >", + "create.tooltip.brass_tunnel.contains_entry": "%2$sx %1$s <", "create.tooltip.brass_tunnel.retrieve": "ǝʌǝıɹʇǝɹ oʇ ʞɔıןƆ-ʇɥbıᴚ", "create.tooltip.capacityProvided": ":ʎʇıɔɐdɐƆ ssǝɹʇS ɔıʇǝuıʞ", "create.tooltip.capacityProvided.high": "ǝbɹɐꞀ", @@ -3033,8 +3033,8 @@ "create.tooltip.deployer.punching": "ʞɔɐʇʇⱯ :ǝpoW", "create.tooltip.deployer.using": "ǝs∩ :ǝpoW", "create.tooltip.generationSpeed": "%2$s %1$s ʇɐ sǝʇɐɹǝuǝ⅁", - "create.tooltip.holdForControls": "sןoɹʇuoƆ ɹoɟ ]%1$s[ pןoH", - "create.tooltip.holdForDescription": "ʎɹɐɯɯnS ɹoɟ ]%1$s[ pןoH", + "create.tooltip.holdForControls": "sןoɹʇuoƆ ɹoɟ [%1$s] pןoH", + "create.tooltip.holdForDescription": "ʎɹɐɯɯnS ɹoɟ [%1$s] pןoH", "create.tooltip.keyCtrl": "ןɹʇƆ", "create.tooltip.keyShift": "ʇɟıɥS", "create.tooltip.speedRequirement": ":ʇuǝɯǝɹınbǝᴚ pǝǝdS", @@ -3068,8 +3068,8 @@ "create.track.turn_start": "uɹn⟘ ɐ ɯoɹɟ uoıʇɔǝuuoɔ ʇɹɐʇs ʇouuɐƆ", "create.track.valid_connection": "✔ ʇɔǝuuoƆ uɐƆ", "create.track_signal.cannot_change_mode": "ןɐubıS sıɥʇ ɟo ǝpoɯ ɥɔʇıʍs oʇ ǝןqɐu∩", - "create.track_signal.mode_change.cross_signal": "ǝןqɐsɹǝʌɐɹʇ ʎןןnɟ uoıʇɔǝs ɟı ǝbɐssɐd ʍoןןⱯ >-", - "create.track_signal.mode_change.entry_signal": "pǝıdnɔɔoun uoıʇɔǝs ɟı ǝbɐssɐd ʍoןןⱯ >-", + "create.track_signal.mode_change.cross_signal": "ǝןqɐsɹǝʌɐɹʇ ʎןןnɟ uoıʇɔǝs ɟı ǝbɐssɐd ʍoןןⱯ <-", + "create.track_signal.mode_change.entry_signal": "pǝıdnɔɔoun uoıʇɔǝs ɟı ǝbɐssɐd ʍoןןⱯ <-", "create.track_signal.mode_controlled_by_computer": "ɹǝʇndɯoɔ ʎq pǝןןoɹʇuoɔ sı ǝpoɯ ןɐubıS", "create.track_target.clear": "uoıʇɔǝןǝs ʞɔɐɹʇ pǝɹɐǝןƆ", "create.track_target.invalid": "ǝɹǝɥ ʞɔɐɹʇ sıɥʇ ʇǝbɹɐʇ ʇouuɐƆ", @@ -3088,10 +3088,10 @@ "create.train.relocate.success": "ןnɟssǝɔɔns uoıʇɐɔoןǝᴚ", "create.train.relocate.too_far": "ʎɐʍɐ ɹɐɟ sıɥʇ uıɐɹ⟘ ǝʇɐɔoןǝɹ ʇouuɐƆ", "create.train.relocate.valid": "ɯɹıɟuoƆ oʇ ʞɔıןƆ 'ǝɹǝɥ oʇ ǝʇɐɔoןǝɹ uɐƆ", - "create.train.status": "%1$s :uıɐɹ⟘ ʇnoqɐ uoıʇɐɯɹoɟuI >ı<", + "create.train.status": "%1$s :uıɐɹ⟘ ʇnoqɐ uoıʇɐɯɹoɟuI <ı>", "create.train.status.back_on_track": "ʞɔɐɹ⟘ uo ʞɔɐq sı uıɐɹ⟘", "create.train.status.collision": "uıɐɹ⟘ ɹǝɥʇo ɥʇıʍ uoısıןןoƆ", - "create.train.status.collision.where": "]%2$s[ ɹɐǝu %1$s uI", + "create.train.status.collision.where": "[%2$s] ɹɐǝu %1$s uI", "create.train.status.coupling_stress": "sbuıןdnoƆ uo ssǝɹʇS oʇ ǝnp doʇs pǝɔɹoℲ", "create.train.status.double_portal": "ɹǝɥʇouɐ buıʌɐǝן ʇsןıɥʍ ןɐʇɹod ɐ ɹǝʇuǝ ʇouuɐɔ ǝbɐıɹɹɐƆ Ɐ", "create.train.status.end_of_track": "ʞɔɐɹ⟘ sʇı ɟo puǝ ǝɥʇ pǝɥɔɐǝɹ sɐɥ ǝbɐıɹɹɐƆ Ɐ", @@ -3109,7 +3109,7 @@ "create.train_assembly.bogeys_too_close": "ɹǝɥʇo ɥɔɐǝ oʇ ǝsoןɔ ooʇ ǝɹɐ %2$s puɐ %1$s sʎǝboᗺ", "create.train_assembly.frontmost_bogey_at_station": "ɹǝʞɹɐW uoıʇɐʇS ʇɐ ǝq ʇsnɯ ʎǝboᗺ ʇsoɯʇuoɹℲ", "create.train_assembly.no_bogeys": "punoℲ sʎǝboᗺ oN", - "create.train_assembly.no_controls": ")¿ǝnן⅁ ɹǝdnS buıssıɯ noʎ ǝɹⱯ( ʞɔoןq sןoɹʇuoƆ uıɐɹ⟘ buıɔɐɟ-pɹɐʍɹoɟ ǝuo ʇsɐǝן ʇɐ ɥɔɐʇʇⱯ", + "create.train_assembly.no_controls": "(¿ǝnן⅁ ɹǝdnS buıssıɯ noʎ ǝɹⱯ) ʞɔoןq sןoɹʇuoƆ uıɐɹ⟘ buıɔɐɟ-pɹɐʍɹoɟ ǝuo ʇsɐǝן ʇɐ ɥɔɐʇʇⱯ", "create.train_assembly.not_connected_in_order": "ɹǝpɹo uı pǝʇɔǝuuoɔ ʇou ǝɹɐ sʎǝboᗺ", "create.train_assembly.nothing_attached": "%1$s ʎǝboᗺ oʇ pǝɥɔɐʇʇɐ ǝɹnʇɔnɹʇs oN", "create.train_assembly.requires_casing": "sʞɔɐɹʇ uo sʎǝboq ǝʇɐǝɹɔ oʇ buısɐƆ uıɐɹ⟘ ǝs∩", @@ -3117,18 +3117,18 @@ "create.train_assembly.single_bogey_carriage": "uʍo sʇı uo ǝbɐıɹɹɐɔ ɐ ʇɹoddns ʇouuɐɔ ǝdʎʇ ʎǝboᗺ sıɥ⟘", "create.train_assembly.too_many_bogeys": "%1$s :pǝɥɔɐʇʇɐ sʎǝboᗺ ʎuɐɯ oo⟘", "create.train_map.cannot_traverse_section": "ǝsɹǝʌɐɹʇ ʎןןnɟ ʇouuɐƆ ", - "create.train_map.conductor_missing": "buıssıW ɹoʇɔnpuoƆ >¡< ", - "create.train_map.derailed": "pǝןıɐɹǝᗡ >¡< ", + "create.train_map.conductor_missing": "buıssıW ɹoʇɔnpuoƆ <¡> ", + "create.train_map.derailed": "pǝןıɐɹǝᗡ <¡> ", "create.train_map.for_other_train": "%1$s ɹoɟ ", "create.train_map.fuel_boosted": "✔ pǝʇsooq ןǝnℲ ", - "create.train_map.navigation_failed": "pǝןıɐℲ uoıʇɐbıʌɐN >¡< ", - "create.train_map.player_controlled": "ɹǝʎɐןԀ ʎq pǝןןoɹʇuoƆ >- ", + "create.train_map.navigation_failed": "pǝןıɐℲ uoıʇɐbıʌɐN <¡> ", + "create.train_map.player_controlled": "ɹǝʎɐןԀ ʎq pǝןןoɹʇuoƆ <- ", "create.train_map.redstone_powered": "pǝɹǝʍoԀ ǝuoʇspǝᴚ ", - "create.train_map.schedule_interrupted": "pǝʇdnɹɹǝʇuI ǝןnpǝɥɔS >¡< ", + "create.train_map.schedule_interrupted": "pǝʇdnɹɹǝʇuI ǝןnpǝɥɔS <¡> ", "create.train_map.section_reserved": "pǝʌɹǝsǝɹ uoıʇɔǝS ", "create.train_map.toggle": "ʎɐןɹǝʌo ʞɹoʍʇǝu uıɐɹ⟘", - "create.train_map.train_at_station": "%1$s |> ", - "create.train_map.train_moving_to_station": ")ɯ%2$s( %1$s >> ", + "create.train_map.train_at_station": "%1$s |< ", + "create.train_map.train_moving_to_station": "(ɯ%2$s) %1$s << ", "create.train_map.train_owned_by": "%1$s ʎq", "create.train_map.waiting_at_signal": "ןɐubıS ʇɐ buıʇıɐM ", "create.tunnel.selection_mode.forced_round_robin": "uıqoᴚ punoᴚ pǝɔɹoℲ", @@ -3138,11 +3138,11 @@ "create.tunnel.selection_mode.round_robin": "uıqoᴚ punoᴚ", "create.tunnel.selection_mode.split": "ʇıןdS", "create.tunnel.selection_mode.synchronize": "sʇnduI ǝzıuoɹɥɔuʎS", - "create.weighted_ejector.no_target": ")pǝʇɔǝןǝS sɐʍ ʇǝbɹɐ⟘ oN( ʞɔoןq ʇuǝɔɐظpⱯ oʇ buıʇɔǝظƎ", + "create.weighted_ejector.no_target": "(pǝʇɔǝןǝS sɐʍ ʇǝbɹɐ⟘ oN) ʞɔoןq ʇuǝɔɐظpⱯ oʇ buıʇɔǝظƎ", "create.weighted_ejector.stack_size": "ǝzıS ʞɔɐʇS pǝʇɔǝظƎ", - "create.weighted_ejector.target_not_valid": ")pıןɐΛ ʇou sɐʍ ʇǝbɹɐ⟘( ʞɔoןq ʇuǝɔɐظpⱯ oʇ buıʇɔǝظƎ", + "create.weighted_ejector.target_not_valid": "(pıןɐΛ ʇou sɐʍ ʇǝbɹɐ⟘) ʞɔoןq ʇuǝɔɐظpⱯ oʇ buıʇɔǝظƎ", "create.weighted_ejector.target_set": "pǝʇɔǝןǝS ʇǝbɹɐ⟘", - "create.weighted_ejector.targeting": "]%3$s'%2$s'%1$s[ oʇ buıʇɔǝظƎ", + "create.weighted_ejector.targeting": "[%3$s'%2$s'%1$s] oʇ buıʇɔǝظƎ", "death.attack.create.crush": "sןǝǝɥM buıɥsnɹƆ ʎq pǝssǝɔoɹd sɐʍ %1$s", "death.attack.create.crush.player": "%2$s ʎq sןǝǝɥM buıɥsnɹƆ oʇuı uʍoɹɥʇ sɐʍ %1$s", "death.attack.create.cuckoo_surprise": "ʞɔoןɔ ooʞɔnɔ pǝɹǝdɯɐʇ ʎq dn uʍoןq sɐʍ %1$s", @@ -3201,6 +3201,7 @@ "item.create.cardboard_chestplate": "ǝʇɐןdʇsǝɥƆ pɹɐoqpɹɐƆ", "item.create.cardboard_helmet": "ʇǝɯןǝH pɹɐoqpɹɐƆ", "item.create.cardboard_leggings": "sbuıbbǝꞀ pɹɐoqpɹɐƆ", + "item.create.cardboard_package_12x12": "ǝbɐʞɔɐԀ pɹɐoqpɹɐƆ", "item.create.cardboard_sword": "pɹoʍS pɹɐoqpɹɐƆ", "item.create.cardboard_sword.tooltip.summary": "˙ǝɔıoɥɔ ɟo uodɐǝʍ ןnɟɹǝʍod ʇǝʎ '‾ssǝןɯɹɐɥ‾ ‾ʎןʇsoɯ‾ Ɐ ˙ʞuoᗺ", "item.create.chest_minecart_contraption": "uoıʇdɐɹʇuoƆ ʇɹɐɔǝuıW ʇsǝɥƆ", @@ -3291,7 +3292,7 @@ "item.create.linked_controller.tooltip.behaviour1": "˙ǝʌıʇɔɐ sʇı ǝןıɥʍ ɹǝʌo uǝʞɐʇ ǝɹɐ ‾sןoɹʇuoɔ‾ ‾ʇuǝɯǝʌoW‾ ˙ɹǝןןoɹʇuoɔ ǝɥʇ ‾sǝןbbo⟘‾", "item.create.linked_controller.tooltip.behaviour2": "˙‾ǝɔɐɟɹǝʇuI uoıʇɐɹnbıɟuoƆ‾ ןɐnuɐɯ ǝɥʇ suǝdO", "item.create.linked_controller.tooltip.behaviour3": "˙‾ʎɔuǝnbǝɹℲ ,sʞuıꞀ‾ ǝɥʇ oʇ ʇı puıq oʇ ‾sןoɹʇuoɔ xıs‾ ǝɥʇ ɟo ǝuo ssǝɹd '‾ǝpoW puıᗺ‾ sǝןqɐuƎ", - "item.create.linked_controller.tooltip.behaviour4": ")ʇı ǝʌǝıɹʇǝɹ oʇ buıʞɐǝuS ǝןıɥʍ ʞɔıןƆ-ᴚ( ˙uoıʇɐʌıʇɔɐ ʎsɐǝ ɹoɟ uɹǝʇɔǝꞀ ǝɥʇ oʇuı ɹǝןןoɹʇuoƆ ǝɥʇ sǝɔɐןԀ", + "item.create.linked_controller.tooltip.behaviour4": "(ʇı ǝʌǝıɹʇǝɹ oʇ buıʞɐǝuS ǝןıɥʍ ʞɔıןƆ-ᴚ) ˙uoıʇɐʌıʇɔɐ ʎsɐǝ ɹoɟ uɹǝʇɔǝꞀ ǝɥʇ oʇuı ɹǝןןoɹʇuoƆ ǝɥʇ sǝɔɐןԀ", "item.create.linked_controller.tooltip.condition1": "ʞɔıןƆ-ᴚ", "item.create.linked_controller.tooltip.condition2": "buıʞɐǝuS ǝןıɥʍ ʞɔıןƆ-ᴚ", "item.create.linked_controller.tooltip.condition3": "ɹǝʌıǝɔǝᴚ ʞuıꞀ ǝuoʇspǝᴚ uo ʞɔıןƆ-ᴚ", @@ -3313,9 +3314,8 @@ "item.create.netherite_diving_boots.tooltip.summary": "˙ɐʌɐꞀ ɟo ǝpɐɯ suɐǝɔO buıpnןɔuı 'ɹooןɟ uɐǝɔO ǝɥʇ ɟo ןɐsɹǝʌɐɹʇ ɹǝʇʇǝq ɹoɟ buıʍoןןɐ '‾sʇooq‾ ‾ʎʌɐǝɥ‾ ɟo ɹıɐd Ɐ", "item.create.netherite_diving_helmet": "ʇǝɯןǝH buıʌıᗡ ǝʇıɹǝɥʇǝN", "item.create.netherite_diving_helmet.tooltip.behaviour1": "ɐʌɐꞀ uı ‾uoısıʌ pǝʌoɹdɯı‾ sʇuɐɹb osןⱯ ˙ʞuɐʇʞɔɐᗺ ǝɥʇ ɯoɹɟ ‾ǝɹnssǝɹԀ ɹıⱯ‾ buıuıɐɹp ʎןʍoןs '‾ɐʌɐꞀ‾ puɐ ‾ǝɹıℲ‾ oʇ ʎʇıunɯɯı sǝpıʌoɹԀ", - "item.create.netherite_diving_helmet.tooltip.condition1": ")ʇǝs ןןnℲ( uɹoM uǝɥM", + "item.create.netherite_diving_helmet.tooltip.condition1": "(ʇǝs ןןnℲ) uɹoM uǝɥM", "item.create.netherite_diving_helmet.tooltip.summary": "˙ooʇ '‾ǝʇıɹǝɥʇǝN‾ uı pǝɹǝʌoɔ ǝq oʇ ǝʌɐɥ ‾ʇǝǝℲ puɐ sbǝꞀ‾ 'ǝʌıʇɔǝɟɟǝ ǝq o⟘ ˙‾ʇɐǝɥ ǝɯǝɹʇxǝ‾ ɯoɹɟ noʎ ʇɔǝʇoɹd uɐɔ sıɥʇ '‾ʞuɐʇʞɔɐᗺ ǝʇıɹǝɥʇǝN‾ ɐ ɥʇıʍ ɹǝɥʇǝbo⟘", - "item.create.package": "ǝbɐʞɔɐԀ pɹɐoqpɹɐƆ", "item.create.package_filter": "ɹǝʇןıℲ ǝbɐʞɔɐԀ", "item.create.package_filter.tooltip.behaviour1": "˙‾ǝɔɐɟɹǝʇuı uoıʇɐɹnbıɟuoɔ‾ ǝɥʇ suǝdO", "item.create.package_filter.tooltip.condition1": "pǝʞɔıןƆ-ᴚ uǝɥM", @@ -3331,7 +3331,7 @@ "item.create.precision_mechanism": "ɯsıuɐɥɔǝW uoısıɔǝɹԀ", "item.create.propeller": "ɹǝןןǝdoɹԀ", "item.create.pulp": "dןnԀ", - "item.create.rare_package": "ǝbɐʞɔɐԀ ǝɹɐᴚ", + "item.create.rare_creeper_package": "ǝbɐʞɔɐԀ ǝɹɐᴚ", "item.create.raw_zinc": "ɔuıZ ʍɐᴚ", "item.create.red_sand_paper": "ɹǝdɐԀ puɐS pǝᴚ", "item.create.refined_radiance": "ǝɔuɐıpɐᴚ pǝuıɟǝᴚ", @@ -3383,6 +3383,7 @@ "item.create.zinc_nugget": "ʇǝbbnN ɔuıZ", "itemGroup.create.base": "ǝʇɐǝɹƆ", "itemGroup.create.palettes": "sʞɔoןᗺ buıpןınᗺ s,ǝʇɐǝɹƆ", + "key.category.create.main": "ǝʇɐǝɹƆ", "tag.block.c.ores.aluminum": "sǝɹO ɯnuıɯnןⱯ", "tag.block.c.ores.copper": "sǝɹO ɹǝddoƆ", "tag.block.c.ores.gold": "sǝɹO pןo⅁", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 930893da30..19a283982d 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -3201,6 +3201,7 @@ "item.create.cardboard_chestplate": "Cardboard Chestplate", "item.create.cardboard_helmet": "Cardboard Helmet", "item.create.cardboard_leggings": "Cardboard Leggings", + "item.create.cardboard_package_12x12": "Cardboard Package", "item.create.cardboard_sword": "Cardboard Sword", "item.create.cardboard_sword.tooltip.summary": "Bonk. A _mostly_ _harmless_, yet powerful weapon of choice.", "item.create.chest_minecart_contraption": "Chest Minecart Contraption", @@ -3315,7 +3316,6 @@ "item.create.netherite_diving_helmet.tooltip.behaviour1": "Provides immunity to _Fire_ and _Lava_, slowly draining _Air Pressure_ from the Backtank. Also grants _improved vision_ in Lava", "item.create.netherite_diving_helmet.tooltip.condition1": "When Worn (Full set)", "item.create.netherite_diving_helmet.tooltip.summary": "Together with a _Netherite Backtank_, this can protect you from _extreme heat_. To be effective, _Legs and Feet_ have to be covered in _Netherite_, too.", - "item.create.package": "Cardboard Package", "item.create.package_filter": "Package Filter", "item.create.package_filter.tooltip.behaviour1": "Opens the _configuration interface_.", "item.create.package_filter.tooltip.condition1": "When R-Clicked", @@ -3331,7 +3331,7 @@ "item.create.precision_mechanism": "Precision Mechanism", "item.create.propeller": "Propeller", "item.create.pulp": "Pulp", - "item.create.rare_package": "Rare Package", + "item.create.rare_creeper_package": "Rare Package", "item.create.raw_zinc": "Raw Zinc", "item.create.red_sand_paper": "Red Sand Paper", "item.create.refined_radiance": "Refined Radiance", @@ -3383,6 +3383,7 @@ "item.create.zinc_nugget": "Zinc Nugget", "itemGroup.create.base": "Create", "itemGroup.create.palettes": "Create's Building Blocks", + "key.category.create.main": "Create", "tag.block.c.ores.aluminum": "Aluminum Ores", "tag.block.c.ores.copper": "Copper Ores", "tag.block.c.ores.gold": "Gold Ores", diff --git a/src/generated/resources/assets/create/models/block/chocolate.json b/src/generated/resources/assets/create/models/block/chocolate.json deleted file mode 100644 index 1baf010f28..0000000000 --- a/src/generated/resources/assets/create/models/block/chocolate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "create:fluid/chocolate_still" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/d_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/d_x.json index 0740bdbb9d..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/d_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/d_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 0.0, - 0.0, - 4.0, - 4.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 4.0, - 0.0, - 0.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/d_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/d_y.json index 09574c723c..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/d_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/d_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 4.0, - 0.0, - 0.0, - 4.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 0.0, - 0.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/d_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/d_z.json index 3913f2d664..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/d_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/d_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 0.0, - 0.0, - 4.0, - 4.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 4.0, - 0.0, - 0.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/l_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/l_x.json index 2438f2bfbc..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/l_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/l_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 4.0, - 0.0, - 8.0, - 4.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 8.0, - 0.0, - 4.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/l_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/l_y.json index 4f885df831..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/l_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/l_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 8.0, - 0.0, - 4.0, - 4.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 4.0, - 0.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/l_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/l_z.json index a75e34d903..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/l_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/l_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 4.0, - 0.0, - 8.0, - 4.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 8.0, - 0.0, - 4.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json index 7bee451c7a..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 12.0, - 0.0, - 16.0, - 4.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 16.0, - 0.0, - 12.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json index a1774db5e0..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 16.0, - 0.0, - 12.0, - 4.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 16.0, - 4.0, - 12.0, - 0.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json index 970d4c2d87..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 12.0, - 0.0, - 16.0, - 4.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 16.0, - 0.0, - 12.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json index c915f66957..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 8.0, - 12.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 8.0, - 8.0, - 4.0, - 12.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json index a1a3756d53..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 8.0, - 8.0, - 4.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 8.0, - 12.0, - 4.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json index 8169a60aee..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 8.0, - 12.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 8.0, - 8.0, - 4.0, - 12.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json index e428a89370..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 16.0, - 8.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 16.0, - 4.0, - 12.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json index fea02f78c0..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 16.0, - 4.0, - 12.0, - 8.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 16.0, - 8.0, - 12.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json index cae93a1fac..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 16.0, - 8.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 16.0, - 4.0, - 12.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/r_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/r_x.json index 10dfcc08e2..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/r_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/r_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 0.0, - 4.0, - 4.0, - 8.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 0.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/r_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/r_y.json index d07994de36..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/r_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/r_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 0.0, - 8.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/r_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/r_z.json index 0546dd43d8..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/r_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/r_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 0.0, - 4.0, - 4.0, - 8.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 0.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json index 2c0d8a8d98..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 8.0, - 0.0, - 12.0, - 4.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 12.0, - 0.0, - 8.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json index 70f16e1c80..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 12.0, - 0.0, - 8.0, - 4.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 8.0, - 0.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json index 14eb914b5e..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 8.0, - 0.0, - 12.0, - 4.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 12.0, - 0.0, - 8.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json index c21c0d703b..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 12.0, - 8.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 8.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json index 1a139f05db..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 8.0, - 8.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 12.0, - 8.0, - 8.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json index 7f39f06249..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 12.0, - 8.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 12.0, - 4.0, - 8.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/u_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/u_x.json index a0feae596f..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/u_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/u_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 8.0, - 8.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 4.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/u_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/u_y.json index 86ca601d0c..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/u_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/u_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 4.0, - 8.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 8.0, - 8.0, - 4.0, - 4.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/u_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/u_z.json index d54e359896..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/u_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/u_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 4.0, - 4.0, - 8.0, - 8.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 8.0, - 4.0, - 4.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json index 2b82063d05..b93611606a 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_x", - "elements": [ - { - "faces": { - "east": { - "texture": "#0", - "uv": [ - 0.0, - 8.0, - 4.0, - 12.0 - ] - }, - "west": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 12.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_x" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json index 585264cf18..8c131fd622 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_y", - "elements": [ - { - "faces": { - "down": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 4.0, - 12.0, - 0.0, - 8.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_y" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json index 726ae2b4d9..2426a14f7f 100644 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json +++ b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json @@ -1,37 +1,3 @@ { - "parent": "create:block/fluid_pipe/core_z", - "elements": [ - { - "faces": { - "north": { - "texture": "#0", - "uv": [ - 0.0, - 8.0, - 4.0, - 12.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 12.0 - ] - } - }, - "from": [ - 4, - 4, - 4 - ], - "to": [ - 12, - 12, - 12 - ] - } - ] + "parent": "create:block/fluid_pipe/core_z" } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/honey.json b/src/generated/resources/assets/create/models/block/honey.json deleted file mode 100644 index 079948a71b..0000000000 --- a/src/generated/resources/assets/create/models/block/honey.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "create:fluid/honey_still" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/acacia_window.json b/src/generated/resources/assets/create/models/item/acacia_window.json deleted file mode 100644 index 29cdbde2d8..0000000000 --- a/src/generated/resources/assets/create/models/item/acacia_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/acacia_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_alloy_block.json b/src/generated/resources/assets/create/models/item/andesite_alloy_block.json deleted file mode 100644 index 177e920a35..0000000000 --- a/src/generated/resources/assets/create/models/item/andesite_alloy_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_alloy_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_casing.json b/src/generated/resources/assets/create/models/item/andesite_casing.json deleted file mode 100644 index b2defbd5fe..0000000000 --- a/src/generated/resources/assets/create/models/item/andesite_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_pillar.json b/src/generated/resources/assets/create/models/item/andesite_pillar.json deleted file mode 100644 index cc83e3129f..0000000000 --- a/src/generated/resources/assets/create/models/item/andesite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/asurine_pillar.json b/src/generated/resources/assets/create/models/item/asurine_pillar.json deleted file mode 100644 index ec3e71f37c..0000000000 --- a/src/generated/resources/assets/create/models/item/asurine_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/asurine_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/bamboo_window.json b/src/generated/resources/assets/create/models/item/bamboo_window.json deleted file mode 100644 index 4d7ca412ea..0000000000 --- a/src/generated/resources/assets/create/models/item/bamboo_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/bamboo_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/birch_window.json b/src/generated/resources/assets/create/models/item/birch_window.json deleted file mode 100644 index b8198fe6b1..0000000000 --- a/src/generated/resources/assets/create/models/item/birch_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/birch_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/black_seat.json b/src/generated/resources/assets/create/models/item/black_seat.json deleted file mode 100644 index 740ab204c9..0000000000 --- a/src/generated/resources/assets/create/models/item/black_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/black_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/black_valve_handle.json b/src/generated/resources/assets/create/models/item/black_valve_handle.json deleted file mode 100644 index 7407f374e2..0000000000 --- a/src/generated/resources/assets/create/models/item/black_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/black_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blue_seat.json b/src/generated/resources/assets/create/models/item/blue_seat.json deleted file mode 100644 index 421c18440a..0000000000 --- a/src/generated/resources/assets/create/models/item/blue_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blue_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blue_valve_handle.json b/src/generated/resources/assets/create/models/item/blue_valve_handle.json deleted file mode 100644 index 945f59227e..0000000000 --- a/src/generated/resources/assets/create/models/item/blue_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blue_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/bound_cardboard_block.json b/src/generated/resources/assets/create/models/item/bound_cardboard_block.json deleted file mode 100644 index 9eadc7114d..0000000000 --- a/src/generated/resources/assets/create/models/item/bound_cardboard_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/bound_cardboard_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_block.json b/src/generated/resources/assets/create/models/item/brass_block.json deleted file mode 100644 index 51b99542e6..0000000000 --- a/src/generated/resources/assets/create/models/item/brass_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brass_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_casing.json b/src/generated/resources/assets/create/models/item/brass_casing.json deleted file mode 100644 index c020a84818..0000000000 --- a/src/generated/resources/assets/create/models/item/brass_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brass_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brown_seat.json b/src/generated/resources/assets/create/models/item/brown_seat.json deleted file mode 100644 index fae33e56db..0000000000 --- a/src/generated/resources/assets/create/models/item/brown_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brown_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brown_valve_handle.json b/src/generated/resources/assets/create/models/item/brown_valve_handle.json deleted file mode 100644 index ae74f78c14..0000000000 --- a/src/generated/resources/assets/create/models/item/brown_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brown_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/calcite_pillar.json b/src/generated/resources/assets/create/models/item/calcite_pillar.json deleted file mode 100644 index 02b881569b..0000000000 --- a/src/generated/resources/assets/create/models/item/calcite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/calcite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_block.json b/src/generated/resources/assets/create/models/item/cardboard_block.json deleted file mode 100644 index c39463f355..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cardboard_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots.json b/src/generated/resources/assets/create/models/item/cardboard_boots.json index c78fc3d330..d7bd75e088 100644 --- a/src/generated/resources/assets/create/models/item/cardboard_boots.json +++ b/src/generated/resources/assets/create/models/item/cardboard_boots.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "create:item/cardboard_boots_quartz_trim", - "predicate": { - "minecraft:trim_type": 0.1 - } - }, - { - "model": "create:item/cardboard_boots_iron_trim", - "predicate": { - "minecraft:trim_type": 0.2 - } - }, - { - "model": "create:item/cardboard_boots_netherite_trim", - "predicate": { - "minecraft:trim_type": 0.3 - } - }, - { - "model": "create:item/cardboard_boots_redstone_trim", - "predicate": { - "minecraft:trim_type": 0.4 - } - }, - { - "model": "create:item/cardboard_boots_copper_trim", - "predicate": { - "minecraft:trim_type": 0.5 - } - }, - { - "model": "create:item/cardboard_boots_gold_trim", - "predicate": { - "minecraft:trim_type": 0.6 - } - }, - { - "model": "create:item/cardboard_boots_emerald_trim", - "predicate": { - "minecraft:trim_type": 0.7 - } - }, - { - "model": "create:item/cardboard_boots_diamond_trim", - "predicate": { - "minecraft:trim_type": 0.8 - } - }, - { - "model": "create:item/cardboard_boots_lapis_trim", - "predicate": { - "minecraft:trim_type": 0.9 - } - }, - { - "model": "create:item/cardboard_boots_amethyst_trim", - "predicate": { - "minecraft:trim_type": 1.0 - } - } - ], "textures": { "layer0": "create:item/cardboard_boots" } diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_amethyst_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_amethyst_trim.json deleted file mode 100644 index b590a2b7a4..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_amethyst_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_amethyst" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_copper_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_copper_trim.json deleted file mode 100644 index bfb821ba91..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_copper_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_diamond_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_diamond_trim.json deleted file mode 100644 index fc4e82cdc5..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_diamond_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_diamond" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_emerald_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_emerald_trim.json deleted file mode 100644 index ba0cd0bb21..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_emerald_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_emerald" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_gold_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_gold_trim.json deleted file mode 100644 index e21893bc33..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_gold_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_iron_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_iron_trim.json deleted file mode 100644 index 8505baf4f4..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_iron_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_lapis_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_lapis_trim.json deleted file mode 100644 index 3ad30ed6b5..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_lapis_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_lapis" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_netherite_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_netherite_trim.json deleted file mode 100644 index 78b12a9b3e..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_netherite_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_netherite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_quartz_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_quartz_trim.json deleted file mode 100644 index 6635e107bc..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_quartz_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_boots_redstone_trim.json b/src/generated/resources/assets/create/models/item/cardboard_boots_redstone_trim.json deleted file mode 100644 index e3d8c5647a..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_boots_redstone_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_boots", - "layer1": "create:trims/items/card_boots_trim_redstone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate.json index 28b4eb2b42..910c1f284c 100644 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate.json +++ b/src/generated/resources/assets/create/models/item/cardboard_chestplate.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "create:item/cardboard_chestplate_quartz_trim", - "predicate": { - "minecraft:trim_type": 0.1 - } - }, - { - "model": "create:item/cardboard_chestplate_iron_trim", - "predicate": { - "minecraft:trim_type": 0.2 - } - }, - { - "model": "create:item/cardboard_chestplate_netherite_trim", - "predicate": { - "minecraft:trim_type": 0.3 - } - }, - { - "model": "create:item/cardboard_chestplate_redstone_trim", - "predicate": { - "minecraft:trim_type": 0.4 - } - }, - { - "model": "create:item/cardboard_chestplate_copper_trim", - "predicate": { - "minecraft:trim_type": 0.5 - } - }, - { - "model": "create:item/cardboard_chestplate_gold_trim", - "predicate": { - "minecraft:trim_type": 0.6 - } - }, - { - "model": "create:item/cardboard_chestplate_emerald_trim", - "predicate": { - "minecraft:trim_type": 0.7 - } - }, - { - "model": "create:item/cardboard_chestplate_diamond_trim", - "predicate": { - "minecraft:trim_type": 0.8 - } - }, - { - "model": "create:item/cardboard_chestplate_lapis_trim", - "predicate": { - "minecraft:trim_type": 0.9 - } - }, - { - "model": "create:item/cardboard_chestplate_amethyst_trim", - "predicate": { - "minecraft:trim_type": 1.0 - } - } - ], "textures": { "layer0": "create:item/cardboard_chestplate" } diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_amethyst_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_amethyst_trim.json deleted file mode 100644 index d1d97f5d0c..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_amethyst_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_amethyst" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_copper_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_copper_trim.json deleted file mode 100644 index 7e188fb1be..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_copper_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_diamond_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_diamond_trim.json deleted file mode 100644 index 05dd595373..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_diamond_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_diamond" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_emerald_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_emerald_trim.json deleted file mode 100644 index e9ec729e1f..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_emerald_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_emerald" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_gold_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_gold_trim.json deleted file mode 100644 index 9cb2d00739..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_gold_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_iron_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_iron_trim.json deleted file mode 100644 index 2e758a347e..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_iron_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_lapis_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_lapis_trim.json deleted file mode 100644 index a37a71bcbf..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_lapis_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_lapis" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_netherite_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_netherite_trim.json deleted file mode 100644 index e3d749d65a..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_netherite_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_netherite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_quartz_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_quartz_trim.json deleted file mode 100644 index abee637046..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_quartz_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_chestplate_redstone_trim.json b/src/generated/resources/assets/create/models/item/cardboard_chestplate_redstone_trim.json deleted file mode 100644 index a163ed20d8..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_chestplate_redstone_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_chestplate", - "layer1": "create:trims/items/card_chestplate_trim_redstone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet.json b/src/generated/resources/assets/create/models/item/cardboard_helmet.json index 4746d0b9fa..434b84e5ea 100644 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet.json +++ b/src/generated/resources/assets/create/models/item/cardboard_helmet.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "create:item/cardboard_helmet_quartz_trim", - "predicate": { - "minecraft:trim_type": 0.1 - } - }, - { - "model": "create:item/cardboard_helmet_iron_trim", - "predicate": { - "minecraft:trim_type": 0.2 - } - }, - { - "model": "create:item/cardboard_helmet_netherite_trim", - "predicate": { - "minecraft:trim_type": 0.3 - } - }, - { - "model": "create:item/cardboard_helmet_redstone_trim", - "predicate": { - "minecraft:trim_type": 0.4 - } - }, - { - "model": "create:item/cardboard_helmet_copper_trim", - "predicate": { - "minecraft:trim_type": 0.5 - } - }, - { - "model": "create:item/cardboard_helmet_gold_trim", - "predicate": { - "minecraft:trim_type": 0.6 - } - }, - { - "model": "create:item/cardboard_helmet_emerald_trim", - "predicate": { - "minecraft:trim_type": 0.7 - } - }, - { - "model": "create:item/cardboard_helmet_diamond_trim", - "predicate": { - "minecraft:trim_type": 0.8 - } - }, - { - "model": "create:item/cardboard_helmet_lapis_trim", - "predicate": { - "minecraft:trim_type": 0.9 - } - }, - { - "model": "create:item/cardboard_helmet_amethyst_trim", - "predicate": { - "minecraft:trim_type": 1.0 - } - } - ], "textures": { "layer0": "create:item/cardboard_helmet" } diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_amethyst_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_amethyst_trim.json deleted file mode 100644 index d9cb46f71c..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_amethyst_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_amethyst" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_copper_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_copper_trim.json deleted file mode 100644 index abdd6b152f..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_copper_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_diamond_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_diamond_trim.json deleted file mode 100644 index 6e97348860..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_diamond_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_diamond" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_emerald_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_emerald_trim.json deleted file mode 100644 index 98f1995b39..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_emerald_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_emerald" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_gold_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_gold_trim.json deleted file mode 100644 index 8ee0eca400..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_gold_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_iron_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_iron_trim.json deleted file mode 100644 index 730ddda90b..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_iron_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_lapis_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_lapis_trim.json deleted file mode 100644 index 0699f700b4..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_lapis_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_lapis" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_netherite_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_netherite_trim.json deleted file mode 100644 index b05b40a619..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_netherite_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_netherite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_quartz_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_quartz_trim.json deleted file mode 100644 index e1ded50c27..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_quartz_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_helmet_redstone_trim.json b/src/generated/resources/assets/create/models/item/cardboard_helmet_redstone_trim.json deleted file mode 100644 index ecbb8aa49e..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_helmet_redstone_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_helmet", - "layer1": "create:trims/items/card_helmet_trim_redstone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings.json b/src/generated/resources/assets/create/models/item/cardboard_leggings.json index 014b01ea75..ac0b435a81 100644 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings.json +++ b/src/generated/resources/assets/create/models/item/cardboard_leggings.json @@ -1,67 +1,5 @@ { "parent": "minecraft:item/generated", - "overrides": [ - { - "model": "create:item/cardboard_leggings_quartz_trim", - "predicate": { - "minecraft:trim_type": 0.1 - } - }, - { - "model": "create:item/cardboard_leggings_iron_trim", - "predicate": { - "minecraft:trim_type": 0.2 - } - }, - { - "model": "create:item/cardboard_leggings_netherite_trim", - "predicate": { - "minecraft:trim_type": 0.3 - } - }, - { - "model": "create:item/cardboard_leggings_redstone_trim", - "predicate": { - "minecraft:trim_type": 0.4 - } - }, - { - "model": "create:item/cardboard_leggings_copper_trim", - "predicate": { - "minecraft:trim_type": 0.5 - } - }, - { - "model": "create:item/cardboard_leggings_gold_trim", - "predicate": { - "minecraft:trim_type": 0.6 - } - }, - { - "model": "create:item/cardboard_leggings_emerald_trim", - "predicate": { - "minecraft:trim_type": 0.7 - } - }, - { - "model": "create:item/cardboard_leggings_diamond_trim", - "predicate": { - "minecraft:trim_type": 0.8 - } - }, - { - "model": "create:item/cardboard_leggings_lapis_trim", - "predicate": { - "minecraft:trim_type": 0.9 - } - }, - { - "model": "create:item/cardboard_leggings_amethyst_trim", - "predicate": { - "minecraft:trim_type": 1.0 - } - } - ], "textures": { "layer0": "create:item/cardboard_leggings" } diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_amethyst_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_amethyst_trim.json deleted file mode 100644 index c5652cbcc2..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_amethyst_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_amethyst" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_copper_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_copper_trim.json deleted file mode 100644 index 95771e62dc..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_copper_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_diamond_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_diamond_trim.json deleted file mode 100644 index 706e7a6693..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_diamond_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_diamond" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_emerald_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_emerald_trim.json deleted file mode 100644 index 97f74ca197..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_emerald_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_emerald" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_gold_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_gold_trim.json deleted file mode 100644 index 5d2291c6b9..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_gold_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_gold" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_iron_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_iron_trim.json deleted file mode 100644 index f0c2be4338..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_iron_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_iron" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_lapis_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_lapis_trim.json deleted file mode 100644 index 2466245a51..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_lapis_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_lapis" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_netherite_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_netherite_trim.json deleted file mode 100644 index 70b05181c7..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_netherite_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_netherite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_quartz_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_quartz_trim.json deleted file mode 100644 index fe41a39804..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_quartz_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cardboard_leggings_redstone_trim.json b/src/generated/resources/assets/create/models/item/cardboard_leggings_redstone_trim.json deleted file mode 100644 index 1cdd7647e1..0000000000 --- a/src/generated/resources/assets/create/models/item/cardboard_leggings_redstone_trim.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cardboard_leggings", - "layer1": "create:trims/items/card_leggings_trim_redstone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cherry_window.json b/src/generated/resources/assets/create/models/item/cherry_window.json deleted file mode 100644 index 02a0066dc5..0000000000 --- a/src/generated/resources/assets/create/models/item/cherry_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cherry_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cogwheel.json b/src/generated/resources/assets/create/models/item/cogwheel.json deleted file mode 100644 index 16377e46ce..0000000000 --- a/src/generated/resources/assets/create/models/item/cogwheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cogwheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_casing.json b/src/generated/resources/assets/create/models/item/copper_casing.json deleted file mode 100644 index 5d0413ea10..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/copper_shingle_slab.json deleted file mode 100644 index 817bb2dfe6..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/copper_shingle_stairs.json deleted file mode 100644 index d352d7f6fe..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_shingles.json b/src/generated/resources/assets/create/models/item/copper_shingles.json deleted file mode 100644 index 42429b6a27..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_tile_slab.json b/src/generated/resources/assets/create/models/item/copper_tile_slab.json deleted file mode 100644 index e23f1774db..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/copper_tile_stairs.json deleted file mode 100644 index ec063defd8..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_tiles.json b/src/generated/resources/assets/create/models/item/copper_tiles.json deleted file mode 100644 index 4a3e98b497..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_valve_handle.json b/src/generated/resources/assets/create/models/item/copper_valve_handle.json deleted file mode 100644 index 45f592b30a..0000000000 --- a/src/generated/resources/assets/create/models/item/copper_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crimsite_pillar.json b/src/generated/resources/assets/create/models/item/crimsite_pillar.json deleted file mode 100644 index 8888d4b706..0000000000 --- a/src/generated/resources/assets/create/models/item/crimsite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crimsite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crimson_window.json b/src/generated/resources/assets/create/models/item/crimson_window.json deleted file mode 100644 index cf612f7c0e..0000000000 --- a/src/generated/resources/assets/create/models/item/crimson_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crimson_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite.json b/src/generated/resources/assets/create/models/item/cut_andesite.json deleted file mode 100644 index 7c15712b25..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_andesite_brick_slab.json deleted file mode 100644 index a79abb3c29..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_andesite_brick_stairs.json deleted file mode 100644 index bb376c5872..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite_bricks.json b/src/generated/resources/assets/create/models/item/cut_andesite_bricks.json deleted file mode 100644 index 38553f08fb..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite_slab.json b/src/generated/resources/assets/create/models/item/cut_andesite_slab.json deleted file mode 100644 index 893297597b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_andesite_stairs.json b/src/generated/resources/assets/create/models/item/cut_andesite_stairs.json deleted file mode 100644 index e0f2eb3943..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_andesite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_andesite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine.json b/src/generated/resources/assets/create/models/item/cut_asurine.json deleted file mode 100644 index c49d030b93..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_asurine_brick_slab.json deleted file mode 100644 index b69ac70034..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_asurine_brick_stairs.json deleted file mode 100644 index 0facb39bb6..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine_bricks.json b/src/generated/resources/assets/create/models/item/cut_asurine_bricks.json deleted file mode 100644 index 8cbf93705d..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine_slab.json b/src/generated/resources/assets/create/models/item/cut_asurine_slab.json deleted file mode 100644 index 65701cf83a..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_asurine_stairs.json b/src/generated/resources/assets/create/models/item/cut_asurine_stairs.json deleted file mode 100644 index 043263e223..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_asurine_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_asurine_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite.json b/src/generated/resources/assets/create/models/item/cut_calcite.json deleted file mode 100644 index 41602e082b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_calcite_brick_slab.json deleted file mode 100644 index 97c9b0fb53..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_calcite_brick_stairs.json deleted file mode 100644 index 4e7e9bfcc6..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite_bricks.json b/src/generated/resources/assets/create/models/item/cut_calcite_bricks.json deleted file mode 100644 index 1c5e21eeea..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite_slab.json b/src/generated/resources/assets/create/models/item/cut_calcite_slab.json deleted file mode 100644 index 677ff42e90..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_calcite_stairs.json b/src/generated/resources/assets/create/models/item/cut_calcite_stairs.json deleted file mode 100644 index 2bda42e7e9..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_calcite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_calcite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite.json b/src/generated/resources/assets/create/models/item/cut_crimsite.json deleted file mode 100644 index 149bd1fce4..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_crimsite_brick_slab.json deleted file mode 100644 index 19dbfa4555..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_crimsite_brick_stairs.json deleted file mode 100644 index 3269b473fa..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite_bricks.json b/src/generated/resources/assets/create/models/item/cut_crimsite_bricks.json deleted file mode 100644 index e231b554ed..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite_slab.json b/src/generated/resources/assets/create/models/item/cut_crimsite_slab.json deleted file mode 100644 index 6a541e4144..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_crimsite_stairs.json b/src/generated/resources/assets/create/models/item/cut_crimsite_stairs.json deleted file mode 100644 index 7b8cdd53f4..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_crimsite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_crimsite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate.json b/src/generated/resources/assets/create/models/item/cut_deepslate.json deleted file mode 100644 index 0a4cdf281f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_deepslate_brick_slab.json deleted file mode 100644 index 03a7346cde..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_deepslate_brick_stairs.json deleted file mode 100644 index feba13e1b4..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate_bricks.json b/src/generated/resources/assets/create/models/item/cut_deepslate_bricks.json deleted file mode 100644 index 66b0750d42..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate_slab.json b/src/generated/resources/assets/create/models/item/cut_deepslate_slab.json deleted file mode 100644 index 33341f0be8..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_deepslate_stairs.json b/src/generated/resources/assets/create/models/item/cut_deepslate_stairs.json deleted file mode 100644 index 0abc44c52f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_deepslate_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_deepslate_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite.json b/src/generated/resources/assets/create/models/item/cut_diorite.json deleted file mode 100644 index df50aac6c1..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_diorite_brick_slab.json deleted file mode 100644 index 086f5954e0..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_diorite_brick_stairs.json deleted file mode 100644 index a2ed9e2a0f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite_bricks.json b/src/generated/resources/assets/create/models/item/cut_diorite_bricks.json deleted file mode 100644 index 8ecd1df3e2..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite_slab.json b/src/generated/resources/assets/create/models/item/cut_diorite_slab.json deleted file mode 100644 index e92388416b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_diorite_stairs.json b/src/generated/resources/assets/create/models/item/cut_diorite_stairs.json deleted file mode 100644 index aa67d00591..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_diorite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_diorite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone.json b/src/generated/resources/assets/create/models/item/cut_dripstone.json deleted file mode 100644 index de406d4c4d..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_dripstone_brick_slab.json deleted file mode 100644 index d444b1bfb2..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_dripstone_brick_stairs.json deleted file mode 100644 index 30e2a02bb7..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone_bricks.json b/src/generated/resources/assets/create/models/item/cut_dripstone_bricks.json deleted file mode 100644 index b63df34d60..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone_slab.json b/src/generated/resources/assets/create/models/item/cut_dripstone_slab.json deleted file mode 100644 index 21981a0512..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_dripstone_stairs.json b/src/generated/resources/assets/create/models/item/cut_dripstone_stairs.json deleted file mode 100644 index 1fc07389b9..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_dripstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_dripstone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite.json b/src/generated/resources/assets/create/models/item/cut_granite.json deleted file mode 100644 index 2e7c2ce10b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_granite_brick_slab.json deleted file mode 100644 index bc11aa5d9c..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_granite_brick_stairs.json deleted file mode 100644 index 30b89ed86f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite_bricks.json b/src/generated/resources/assets/create/models/item/cut_granite_bricks.json deleted file mode 100644 index 777a7ea151..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite_slab.json b/src/generated/resources/assets/create/models/item/cut_granite_slab.json deleted file mode 100644 index a166513fd6..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_granite_stairs.json b/src/generated/resources/assets/create/models/item/cut_granite_stairs.json deleted file mode 100644 index 2371d2afc1..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_granite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_granite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone.json b/src/generated/resources/assets/create/models/item/cut_limestone.json deleted file mode 100644 index adeece0b95..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_limestone_brick_slab.json deleted file mode 100644 index 1389007fb9..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_limestone_brick_stairs.json deleted file mode 100644 index 99f6d52c51..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone_bricks.json b/src/generated/resources/assets/create/models/item/cut_limestone_bricks.json deleted file mode 100644 index c62667b6dd..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone_slab.json b/src/generated/resources/assets/create/models/item/cut_limestone_slab.json deleted file mode 100644 index d3fe79f4b4..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_limestone_stairs.json b/src/generated/resources/assets/create/models/item/cut_limestone_stairs.json deleted file mode 100644 index 3de4914330..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum.json b/src/generated/resources/assets/create/models/item/cut_ochrum.json deleted file mode 100644 index 14e61c64a9..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_ochrum_brick_slab.json deleted file mode 100644 index 3170cdfd8d..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_ochrum_brick_stairs.json deleted file mode 100644 index d75446d2b0..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum_bricks.json b/src/generated/resources/assets/create/models/item/cut_ochrum_bricks.json deleted file mode 100644 index b416dda969..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum_slab.json b/src/generated/resources/assets/create/models/item/cut_ochrum_slab.json deleted file mode 100644 index 3e3e49b85b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_ochrum_stairs.json b/src/generated/resources/assets/create/models/item/cut_ochrum_stairs.json deleted file mode 100644 index da7c172060..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_ochrum_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_ochrum_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia.json b/src/generated/resources/assets/create/models/item/cut_scorchia.json deleted file mode 100644 index 14a08ac4d0..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_scorchia_brick_slab.json deleted file mode 100644 index 2f24280bb7..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_scorchia_brick_stairs.json deleted file mode 100644 index 6b278711ec..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia_bricks.json b/src/generated/resources/assets/create/models/item/cut_scorchia_bricks.json deleted file mode 100644 index ab822ffe1e..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia_slab.json b/src/generated/resources/assets/create/models/item/cut_scorchia_slab.json deleted file mode 100644 index 07e9593cf7..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scorchia_stairs.json b/src/generated/resources/assets/create/models/item/cut_scorchia_stairs.json deleted file mode 100644 index 4085736e76..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scorchia_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scorchia_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria.json b/src/generated/resources/assets/create/models/item/cut_scoria.json deleted file mode 100644 index 3acd718607..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_scoria_brick_slab.json deleted file mode 100644 index d90672bf92..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_scoria_brick_stairs.json deleted file mode 100644 index 2c5192d5d6..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria_bricks.json b/src/generated/resources/assets/create/models/item/cut_scoria_bricks.json deleted file mode 100644 index 759f979ff1..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria_slab.json b/src/generated/resources/assets/create/models/item/cut_scoria_slab.json deleted file mode 100644 index 126c4c34ce..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_scoria_stairs.json b/src/generated/resources/assets/create/models/item/cut_scoria_stairs.json deleted file mode 100644 index 610a90b82d..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff.json b/src/generated/resources/assets/create/models/item/cut_tuff.json deleted file mode 100644 index b3f25bb179..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_tuff_brick_slab.json deleted file mode 100644 index 89e68a410b..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_tuff_brick_stairs.json deleted file mode 100644 index ba289e9a21..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff_bricks.json b/src/generated/resources/assets/create/models/item/cut_tuff_bricks.json deleted file mode 100644 index 12273e314f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff_slab.json b/src/generated/resources/assets/create/models/item/cut_tuff_slab.json deleted file mode 100644 index 9eb4b2e05a..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_tuff_stairs.json b/src/generated/resources/assets/create/models/item/cut_tuff_stairs.json deleted file mode 100644 index 1c9c53afa0..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_tuff_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_tuff_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium.json b/src/generated/resources/assets/create/models/item/cut_veridium.json deleted file mode 100644 index 929b11ab0f..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium_brick_slab.json b/src/generated/resources/assets/create/models/item/cut_veridium_brick_slab.json deleted file mode 100644 index a8f8cf3c2a..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium_brick_stairs.json b/src/generated/resources/assets/create/models/item/cut_veridium_brick_stairs.json deleted file mode 100644 index 54d4ad0de3..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium_bricks.json b/src/generated/resources/assets/create/models/item/cut_veridium_bricks.json deleted file mode 100644 index cb75c0d947..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium_slab.json b/src/generated/resources/assets/create/models/item/cut_veridium_slab.json deleted file mode 100644 index 9d78132677..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cut_veridium_stairs.json b/src/generated/resources/assets/create/models/item/cut_veridium_stairs.json deleted file mode 100644 index 0272a0c011..0000000000 --- a/src/generated/resources/assets/create/models/item/cut_veridium_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cut_veridium_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cyan_seat.json b/src/generated/resources/assets/create/models/item/cyan_seat.json deleted file mode 100644 index 0ffbe72d0c..0000000000 --- a/src/generated/resources/assets/create/models/item/cyan_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cyan_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cyan_valve_handle.json b/src/generated/resources/assets/create/models/item/cyan_valve_handle.json deleted file mode 100644 index 90274434f9..0000000000 --- a/src/generated/resources/assets/create/models/item/cyan_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cyan_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_oak_window.json b/src/generated/resources/assets/create/models/item/dark_oak_window.json deleted file mode 100644 index 2af27cc13c..0000000000 --- a/src/generated/resources/assets/create/models/item/dark_oak_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_oak_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/deepslate_pillar.json b/src/generated/resources/assets/create/models/item/deepslate_pillar.json deleted file mode 100644 index 8d1662ed21..0000000000 --- a/src/generated/resources/assets/create/models/item/deepslate_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/deepslate_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/deepslate_zinc_ore.json b/src/generated/resources/assets/create/models/item/deepslate_zinc_ore.json deleted file mode 100644 index e846ec4937..0000000000 --- a/src/generated/resources/assets/create/models/item/deepslate_zinc_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/deepslate_zinc_ore" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_pillar.json b/src/generated/resources/assets/create/models/item/diorite_pillar.json deleted file mode 100644 index 61a9870964..0000000000 --- a/src/generated/resources/assets/create/models/item/diorite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dripstone_pillar.json b/src/generated/resources/assets/create/models/item/dripstone_pillar.json deleted file mode 100644 index 45703ba5c8..0000000000 --- a/src/generated/resources/assets/create/models/item/dripstone_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dripstone_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/experience_block.json b/src/generated/resources/assets/create/models/item/experience_block.json deleted file mode 100644 index 450f5d371c..0000000000 --- a/src/generated/resources/assets/create/models/item/experience_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/experience_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/exposed_copper_shingle_slab.json deleted file mode 100644 index f11bada6e9..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/exposed_copper_shingle_stairs.json deleted file mode 100644 index a4632dfa3a..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_shingles.json b/src/generated/resources/assets/create/models/item/exposed_copper_shingles.json deleted file mode 100644 index d83263427c..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/exposed_copper_tile_slab.json deleted file mode 100644 index f22d343769..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/exposed_copper_tile_stairs.json deleted file mode 100644 index 24ae9ad930..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/exposed_copper_tiles.json b/src/generated/resources/assets/create/models/item/exposed_copper_tiles.json deleted file mode 100644 index 409c2a9756..0000000000 --- a/src/generated/resources/assets/create/models/item/exposed_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/exposed_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/framed_glass_trapdoor.json b/src/generated/resources/assets/create/models/item/framed_glass_trapdoor.json deleted file mode 100644 index e45538e4b1..0000000000 --- a/src/generated/resources/assets/create/models/item/framed_glass_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/framed_glass_trapdoor" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_pillar.json b/src/generated/resources/assets/create/models/item/granite_pillar.json deleted file mode 100644 index 3dc5822618..0000000000 --- a/src/generated/resources/assets/create/models/item/granite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gray_seat.json b/src/generated/resources/assets/create/models/item/gray_seat.json deleted file mode 100644 index 46eba51d3f..0000000000 --- a/src/generated/resources/assets/create/models/item/gray_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gray_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gray_valve_handle.json b/src/generated/resources/assets/create/models/item/gray_valve_handle.json deleted file mode 100644 index 8b9d7dc235..0000000000 --- a/src/generated/resources/assets/create/models/item/gray_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gray_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/green_seat.json b/src/generated/resources/assets/create/models/item/green_seat.json deleted file mode 100644 index 0bd47c5e63..0000000000 --- a/src/generated/resources/assets/create/models/item/green_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/green_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/green_valve_handle.json b/src/generated/resources/assets/create/models/item/green_valve_handle.json deleted file mode 100644 index 87f376e1d7..0000000000 --- a/src/generated/resources/assets/create/models/item/green_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/green_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/industrial_iron_block.json b/src/generated/resources/assets/create/models/item/industrial_iron_block.json deleted file mode 100644 index 5938f808ec..0000000000 --- a/src/generated/resources/assets/create/models/item/industrial_iron_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/industrial_iron_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/industrial_iron_window.json b/src/generated/resources/assets/create/models/item/industrial_iron_window.json deleted file mode 100644 index 3387bcdffc..0000000000 --- a/src/generated/resources/assets/create/models/item/industrial_iron_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/industrial_iron_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/item_drain.json b/src/generated/resources/assets/create/models/item/item_drain.json deleted file mode 100644 index 9490da25f8..0000000000 --- a/src/generated/resources/assets/create/models/item/item_drain.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/item_drain" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/item_vault.json b/src/generated/resources/assets/create/models/item/item_vault.json deleted file mode 100644 index 8209692734..0000000000 --- a/src/generated/resources/assets/create/models/item/item_vault.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/item_vault" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/jungle_window.json b/src/generated/resources/assets/create/models/item/jungle_window.json deleted file mode 100644 index 8f7e813a8d..0000000000 --- a/src/generated/resources/assets/create/models/item/jungle_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/jungle_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/large_cogwheel.json b/src/generated/resources/assets/create/models/item/large_cogwheel.json deleted file mode 100644 index 1d97dd7b92..0000000000 --- a/src/generated/resources/assets/create/models/item/large_cogwheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/large_cogwheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_andesite.json b/src/generated/resources/assets/create/models/item/layered_andesite.json deleted file mode 100644 index 1694af8ea8..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_asurine.json b/src/generated/resources/assets/create/models/item/layered_asurine.json deleted file mode 100644 index 02d8bd25e3..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_asurine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_asurine" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_calcite.json b/src/generated/resources/assets/create/models/item/layered_calcite.json deleted file mode 100644 index 47784df2a3..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_calcite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_calcite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_crimsite.json b/src/generated/resources/assets/create/models/item/layered_crimsite.json deleted file mode 100644 index 571fb7c691..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_crimsite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_crimsite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_deepslate.json b/src/generated/resources/assets/create/models/item/layered_deepslate.json deleted file mode 100644 index 2df062e7f8..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_deepslate" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_diorite.json b/src/generated/resources/assets/create/models/item/layered_diorite.json deleted file mode 100644 index e68fc491ff..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_dripstone.json b/src/generated/resources/assets/create/models/item/layered_dripstone.json deleted file mode 100644 index b9872806fd..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_dripstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_dripstone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_granite.json b/src/generated/resources/assets/create/models/item/layered_granite.json deleted file mode 100644 index d50dd21062..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_limestone.json b/src/generated/resources/assets/create/models/item/layered_limestone.json deleted file mode 100644 index e27f51da8b..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_ochrum.json b/src/generated/resources/assets/create/models/item/layered_ochrum.json deleted file mode 100644 index 5c2ff4e450..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_ochrum.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_ochrum" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_scorchia.json b/src/generated/resources/assets/create/models/item/layered_scorchia.json deleted file mode 100644 index c189fc99f5..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_scorchia.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_scorchia" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_scoria.json b/src/generated/resources/assets/create/models/item/layered_scoria.json deleted file mode 100644 index 845b7c6945..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_tuff.json b/src/generated/resources/assets/create/models/item/layered_tuff.json deleted file mode 100644 index 8462d74e8d..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_tuff" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_veridium.json b/src/generated/resources/assets/create/models/item/layered_veridium.json deleted file mode 100644 index 3b9f7b5ed5..0000000000 --- a/src/generated/resources/assets/create/models/item/layered_veridium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_veridium" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_blue_seat.json b/src/generated/resources/assets/create/models/item/light_blue_seat.json deleted file mode 100644 index be049f6d12..0000000000 --- a/src/generated/resources/assets/create/models/item/light_blue_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_blue_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json b/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json deleted file mode 100644 index b9a68f0542..0000000000 --- a/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_blue_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_gray_seat.json b/src/generated/resources/assets/create/models/item/light_gray_seat.json deleted file mode 100644 index 6552e78f76..0000000000 --- a/src/generated/resources/assets/create/models/item/light_gray_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_gray_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json b/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json deleted file mode 100644 index 1b3bd3a5d2..0000000000 --- a/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_gray_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/lime_seat.json b/src/generated/resources/assets/create/models/item/lime_seat.json deleted file mode 100644 index 68264f55d1..0000000000 --- a/src/generated/resources/assets/create/models/item/lime_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/lime_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/lime_valve_handle.json b/src/generated/resources/assets/create/models/item/lime_valve_handle.json deleted file mode 100644 index 98d457c682..0000000000 --- a/src/generated/resources/assets/create/models/item/lime_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/lime_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_pillar.json b/src/generated/resources/assets/create/models/item/limestone_pillar.json deleted file mode 100644 index ed8117d7e7..0000000000 --- a/src/generated/resources/assets/create/models/item/limestone_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/linear_chassis.json b/src/generated/resources/assets/create/models/item/linear_chassis.json deleted file mode 100644 index 9c4cc447d4..0000000000 --- a/src/generated/resources/assets/create/models/item/linear_chassis.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/linear_chassis" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/magenta_seat.json b/src/generated/resources/assets/create/models/item/magenta_seat.json deleted file mode 100644 index ac661a20a0..0000000000 --- a/src/generated/resources/assets/create/models/item/magenta_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/magenta_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/magenta_valve_handle.json b/src/generated/resources/assets/create/models/item/magenta_valve_handle.json deleted file mode 100644 index 14b0c57d09..0000000000 --- a/src/generated/resources/assets/create/models/item/magenta_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/magenta_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mangrove_window.json b/src/generated/resources/assets/create/models/item/mangrove_window.json deleted file mode 100644 index 5780c9a18b..0000000000 --- a/src/generated/resources/assets/create/models/item/mangrove_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mangrove_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_plough.json b/src/generated/resources/assets/create/models/item/mechanical_plough.json deleted file mode 100644 index 4b2ab31f2c..0000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_plough.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_plough" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oak_window.json b/src/generated/resources/assets/create/models/item/oak_window.json deleted file mode 100644 index df92205b69..0000000000 --- a/src/generated/resources/assets/create/models/item/oak_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oak_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/ochrum_pillar.json b/src/generated/resources/assets/create/models/item/ochrum_pillar.json deleted file mode 100644 index a6aa75fafe..0000000000 --- a/src/generated/resources/assets/create/models/item/ochrum_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/ochrum_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/orange_seat.json b/src/generated/resources/assets/create/models/item/orange_seat.json deleted file mode 100644 index e64ba3711f..0000000000 --- a/src/generated/resources/assets/create/models/item/orange_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/orange_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/orange_valve_handle.json b/src/generated/resources/assets/create/models/item/orange_valve_handle.json deleted file mode 100644 index e8d275537a..0000000000 --- a/src/generated/resources/assets/create/models/item/orange_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/orange_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/ornate_iron_window.json b/src/generated/resources/assets/create/models/item/ornate_iron_window.json deleted file mode 100644 index 634eb708f5..0000000000 --- a/src/generated/resources/assets/create/models/item/ornate_iron_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/ornate_iron_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_slab.json deleted file mode 100644 index 027e4e701b..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_stairs.json deleted file mode 100644 index 09c328ac50..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_shingles.json b/src/generated/resources/assets/create/models/item/oxidized_copper_shingles.json deleted file mode 100644 index da79d4f99f..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/oxidized_copper_tile_slab.json deleted file mode 100644 index 89d75c2949..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/oxidized_copper_tile_stairs.json deleted file mode 100644 index 5f4a3cc8cf..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oxidized_copper_tiles.json b/src/generated/resources/assets/create/models/item/oxidized_copper_tiles.json deleted file mode 100644 index f747e12fda..0000000000 --- a/src/generated/resources/assets/create/models/item/oxidized_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pink_seat.json b/src/generated/resources/assets/create/models/item/pink_seat.json deleted file mode 100644 index 808bca5d06..0000000000 --- a/src/generated/resources/assets/create/models/item/pink_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/pink_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pink_valve_handle.json b/src/generated/resources/assets/create/models/item/pink_valve_handle.json deleted file mode 100644 index 2b7db5fa01..0000000000 --- a/src/generated/resources/assets/create/models/item/pink_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/pink_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/piston_extension_pole.json b/src/generated/resources/assets/create/models/item/piston_extension_pole.json deleted file mode 100644 index c90cb5736e..0000000000 --- a/src/generated/resources/assets/create/models/item/piston_extension_pole.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/piston_extension_pole" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/placard.json b/src/generated/resources/assets/create/models/item/placard.json deleted file mode 100644 index 68a6473390..0000000000 --- a/src/generated/resources/assets/create/models/item/placard.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/placard" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_andesite.json b/src/generated/resources/assets/create/models/item/polished_cut_andesite.json deleted file mode 100644 index 92ca7e69e1..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_andesite_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_andesite_slab.json deleted file mode 100644 index 2cddd1b34b..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_andesite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_andesite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_andesite_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_andesite_stairs.json deleted file mode 100644 index a5fd3a6eb5..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_andesite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_andesite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_asurine.json b/src/generated/resources/assets/create/models/item/polished_cut_asurine.json deleted file mode 100644 index 82d089e8e0..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_asurine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_asurine" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_asurine_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_asurine_slab.json deleted file mode 100644 index 449fdffd0e..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_asurine_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_asurine_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_asurine_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_asurine_stairs.json deleted file mode 100644 index cdc30ca16f..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_asurine_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_asurine_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_calcite.json b/src/generated/resources/assets/create/models/item/polished_cut_calcite.json deleted file mode 100644 index 435db5b77d..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_calcite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_calcite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_calcite_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_calcite_slab.json deleted file mode 100644 index 61a8316397..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_calcite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_calcite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_calcite_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_calcite_stairs.json deleted file mode 100644 index 1ccaf76065..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_calcite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_calcite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_crimsite.json b/src/generated/resources/assets/create/models/item/polished_cut_crimsite.json deleted file mode 100644 index ed679b590a..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_crimsite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_crimsite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_crimsite_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_crimsite_slab.json deleted file mode 100644 index bc16a4f4cf..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_crimsite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_crimsite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_crimsite_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_crimsite_stairs.json deleted file mode 100644 index 8240728c77..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_crimsite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_crimsite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_deepslate.json b/src/generated/resources/assets/create/models/item/polished_cut_deepslate.json deleted file mode 100644 index 75f53d1c4e..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_deepslate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_deepslate" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_deepslate_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_deepslate_slab.json deleted file mode 100644 index dcc31791b8..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_deepslate_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_deepslate_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_deepslate_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_deepslate_stairs.json deleted file mode 100644 index 44eef480cb..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_deepslate_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_deepslate_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_diorite.json b/src/generated/resources/assets/create/models/item/polished_cut_diorite.json deleted file mode 100644 index 32eed32428..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_diorite_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_diorite_slab.json deleted file mode 100644 index e1ab1d6838..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_diorite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_diorite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_diorite_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_diorite_stairs.json deleted file mode 100644 index 7e9aefa190..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_diorite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_diorite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_dripstone.json b/src/generated/resources/assets/create/models/item/polished_cut_dripstone.json deleted file mode 100644 index c7a5db64cc..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_dripstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_dripstone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_dripstone_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_dripstone_slab.json deleted file mode 100644 index ea3344f91c..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_dripstone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_dripstone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_dripstone_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_dripstone_stairs.json deleted file mode 100644 index 31b597924d..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_dripstone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_dripstone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_granite.json b/src/generated/resources/assets/create/models/item/polished_cut_granite.json deleted file mode 100644 index 066dcc7cca..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_granite_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_granite_slab.json deleted file mode 100644 index a80af088f7..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_granite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_granite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_granite_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_granite_stairs.json deleted file mode 100644 index ec641996cc..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_granite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_granite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_limestone.json b/src/generated/resources/assets/create/models/item/polished_cut_limestone.json deleted file mode 100644 index 5f5518f88d..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_limestone_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_limestone_slab.json deleted file mode 100644 index 772aaaaf15..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_limestone_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_limestone_stairs.json deleted file mode 100644 index c82797f8c1..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_ochrum.json b/src/generated/resources/assets/create/models/item/polished_cut_ochrum.json deleted file mode 100644 index fc65d00890..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_ochrum.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_ochrum" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_ochrum_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_ochrum_slab.json deleted file mode 100644 index d7697b5a51..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_ochrum_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_ochrum_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_ochrum_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_ochrum_stairs.json deleted file mode 100644 index c87e72c6a0..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_ochrum_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_ochrum_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scorchia.json b/src/generated/resources/assets/create/models/item/polished_cut_scorchia.json deleted file mode 100644 index 30eac3784a..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scorchia.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scorchia" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scorchia_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_scorchia_slab.json deleted file mode 100644 index f7a4f77f7c..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scorchia_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scorchia_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scorchia_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_scorchia_stairs.json deleted file mode 100644 index d4d563fbee..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scorchia_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scorchia_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scoria.json b/src/generated/resources/assets/create/models/item/polished_cut_scoria.json deleted file mode 100644 index 8581244382..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scoria_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_scoria_slab.json deleted file mode 100644 index 80a46aa419..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_scoria_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_scoria_stairs.json deleted file mode 100644 index 7e00ff4b0e..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_tuff.json b/src/generated/resources/assets/create/models/item/polished_cut_tuff.json deleted file mode 100644 index cf74860001..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_tuff.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_tuff" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_tuff_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_tuff_slab.json deleted file mode 100644 index e9628d539d..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_tuff_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_tuff_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_tuff_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_tuff_stairs.json deleted file mode 100644 index 2bad7e0bc2..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_tuff_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_tuff_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_veridium.json b/src/generated/resources/assets/create/models/item/polished_cut_veridium.json deleted file mode 100644 index 5103f48ea3..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_veridium.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_veridium" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_veridium_slab.json b/src/generated/resources/assets/create/models/item/polished_cut_veridium_slab.json deleted file mode 100644 index 1dad0e547d..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_veridium_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_veridium_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_cut_veridium_stairs.json b/src/generated/resources/assets/create/models/item/polished_cut_veridium_stairs.json deleted file mode 100644 index edfdbf62cb..0000000000 --- a/src/generated/resources/assets/create/models/item/polished_cut_veridium_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_cut_veridium_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/powered_latch.json b/src/generated/resources/assets/create/models/item/powered_latch.json deleted file mode 100644 index dffbc022c8..0000000000 --- a/src/generated/resources/assets/create/models/item/powered_latch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/powered_latch" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pulse_extender.json b/src/generated/resources/assets/create/models/item/pulse_extender.json index 2e79ed83f6..4cd77dc528 100644 --- a/src/generated/resources/assets/create/models/item/pulse_extender.json +++ b/src/generated/resources/assets/create/models/item/pulse_extender.json @@ -1,6 +1,6 @@ { "parent": "create:block/diodes/pulse_extender", "textures": { - "top": "create:block/diodes/pulse_extender/item" + "top": "block/diodes/pulse_extender/item" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pulse_repeater.json b/src/generated/resources/assets/create/models/item/pulse_repeater.json index d5f32c00af..57323792f0 100644 --- a/src/generated/resources/assets/create/models/item/pulse_repeater.json +++ b/src/generated/resources/assets/create/models/item/pulse_repeater.json @@ -1,6 +1,6 @@ { "parent": "create:block/diodes/pulse_repeater", "textures": { - "top": "create:block/diodes/pulse_repeater/item" + "top": "block/diodes/pulse_repeater/item" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pulse_timer.json b/src/generated/resources/assets/create/models/item/pulse_timer.json index ddecb0a494..37b7028ba7 100644 --- a/src/generated/resources/assets/create/models/item/pulse_timer.json +++ b/src/generated/resources/assets/create/models/item/pulse_timer.json @@ -1,6 +1,6 @@ { "parent": "create:block/diodes/pulse_timer", "textures": { - "top": "create:block/diodes/pulse_timer/item" + "top": "block/diodes/pulse_timer/item" } } \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/purple_seat.json b/src/generated/resources/assets/create/models/item/purple_seat.json deleted file mode 100644 index 21d6d00b90..0000000000 --- a/src/generated/resources/assets/create/models/item/purple_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/purple_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/purple_valve_handle.json b/src/generated/resources/assets/create/models/item/purple_valve_handle.json deleted file mode 100644 index 89f8cddd1c..0000000000 --- a/src/generated/resources/assets/create/models/item/purple_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/purple_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/railway_casing.json b/src/generated/resources/assets/create/models/item/railway_casing.json deleted file mode 100644 index 9ec26cfabd..0000000000 --- a/src/generated/resources/assets/create/models/item/railway_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/railway_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/raw_zinc_block.json b/src/generated/resources/assets/create/models/item/raw_zinc_block.json deleted file mode 100644 index 5ecad909e9..0000000000 --- a/src/generated/resources/assets/create/models/item/raw_zinc_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/raw_zinc_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/red_seat.json b/src/generated/resources/assets/create/models/item/red_seat.json deleted file mode 100644 index bb30dc0fbd..0000000000 --- a/src/generated/resources/assets/create/models/item/red_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/red_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/red_valve_handle.json b/src/generated/resources/assets/create/models/item/red_valve_handle.json deleted file mode 100644 index 1bbed33314..0000000000 --- a/src/generated/resources/assets/create/models/item/red_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/red_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/refined_radiance_casing.json b/src/generated/resources/assets/create/models/item/refined_radiance_casing.json deleted file mode 100644 index 46393f46b3..0000000000 --- a/src/generated/resources/assets/create/models/item/refined_radiance_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/refined_radiance_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rose_quartz_block.json b/src/generated/resources/assets/create/models/item/rose_quartz_block.json deleted file mode 100644 index 04df51f187..0000000000 --- a/src/generated/resources/assets/create/models/item/rose_quartz_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/rose_quartz_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rose_quartz_lamp.json b/src/generated/resources/assets/create/models/item/rose_quartz_lamp.json deleted file mode 100644 index cbdadd1f0e..0000000000 --- a/src/generated/resources/assets/create/models/item/rose_quartz_lamp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/rose_quartz_lamp" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rose_quartz_tiles.json b/src/generated/resources/assets/create/models/item/rose_quartz_tiles.json deleted file mode 100644 index 284a2334df..0000000000 --- a/src/generated/resources/assets/create/models/item/rose_quartz_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/rose_quartz_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sail_frame.json b/src/generated/resources/assets/create/models/item/sail_frame.json deleted file mode 100644 index dc7fe7265b..0000000000 --- a/src/generated/resources/assets/create/models/item/sail_frame.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/sail_frame" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/schematic_table.json b/src/generated/resources/assets/create/models/item/schematic_table.json deleted file mode 100644 index c447b868d3..0000000000 --- a/src/generated/resources/assets/create/models/item/schematic_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/schematic_table" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scorchia_pillar.json b/src/generated/resources/assets/create/models/item/scorchia_pillar.json deleted file mode 100644 index 61906910bd..0000000000 --- a/src/generated/resources/assets/create/models/item/scorchia_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scorchia_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_pillar.json b/src/generated/resources/assets/create/models/item/scoria_pillar.json deleted file mode 100644 index 33f4ca6905..0000000000 --- a/src/generated/resources/assets/create/models/item/scoria_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json b/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json deleted file mode 100644 index f0bd6990ee..0000000000 --- a/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/secondary_linear_chassis" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/shadow_steel_casing.json b/src/generated/resources/assets/create/models/item/shadow_steel_casing.json deleted file mode 100644 index 3d0f22343c..0000000000 --- a/src/generated/resources/assets/create/models/item/shadow_steel_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/shadow_steel_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/shaft.json b/src/generated/resources/assets/create/models/item/shaft.json deleted file mode 100644 index ba560cdde8..0000000000 --- a/src/generated/resources/assets/create/models/item/shaft.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/shaft" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_andesite_brick_slab.json b/src/generated/resources/assets/create/models/item/small_andesite_brick_slab.json deleted file mode 100644 index d7885b9c1e..0000000000 --- a/src/generated/resources/assets/create/models/item/small_andesite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_andesite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_andesite_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_andesite_brick_stairs.json deleted file mode 100644 index c3de5d35e5..0000000000 --- a/src/generated/resources/assets/create/models/item/small_andesite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_andesite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_andesite_bricks.json b/src/generated/resources/assets/create/models/item/small_andesite_bricks.json deleted file mode 100644 index 64ca5a1a84..0000000000 --- a/src/generated/resources/assets/create/models/item/small_andesite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_andesite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_asurine_brick_slab.json b/src/generated/resources/assets/create/models/item/small_asurine_brick_slab.json deleted file mode 100644 index 98e969539e..0000000000 --- a/src/generated/resources/assets/create/models/item/small_asurine_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_asurine_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_asurine_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_asurine_brick_stairs.json deleted file mode 100644 index 6c1fdedb00..0000000000 --- a/src/generated/resources/assets/create/models/item/small_asurine_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_asurine_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_asurine_bricks.json b/src/generated/resources/assets/create/models/item/small_asurine_bricks.json deleted file mode 100644 index c521a54e8c..0000000000 --- a/src/generated/resources/assets/create/models/item/small_asurine_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_asurine_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_calcite_brick_slab.json b/src/generated/resources/assets/create/models/item/small_calcite_brick_slab.json deleted file mode 100644 index 66be02c6b3..0000000000 --- a/src/generated/resources/assets/create/models/item/small_calcite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_calcite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_calcite_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_calcite_brick_stairs.json deleted file mode 100644 index 9f24092792..0000000000 --- a/src/generated/resources/assets/create/models/item/small_calcite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_calcite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_calcite_bricks.json b/src/generated/resources/assets/create/models/item/small_calcite_bricks.json deleted file mode 100644 index 95d21dd97e..0000000000 --- a/src/generated/resources/assets/create/models/item/small_calcite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_calcite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_crimsite_brick_slab.json b/src/generated/resources/assets/create/models/item/small_crimsite_brick_slab.json deleted file mode 100644 index caf2f67a0f..0000000000 --- a/src/generated/resources/assets/create/models/item/small_crimsite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_crimsite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_crimsite_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_crimsite_brick_stairs.json deleted file mode 100644 index 4dd2b1a4cc..0000000000 --- a/src/generated/resources/assets/create/models/item/small_crimsite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_crimsite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_crimsite_bricks.json b/src/generated/resources/assets/create/models/item/small_crimsite_bricks.json deleted file mode 100644 index b849aeb788..0000000000 --- a/src/generated/resources/assets/create/models/item/small_crimsite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_crimsite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_deepslate_brick_slab.json b/src/generated/resources/assets/create/models/item/small_deepslate_brick_slab.json deleted file mode 100644 index 73dc314eeb..0000000000 --- a/src/generated/resources/assets/create/models/item/small_deepslate_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_deepslate_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_deepslate_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_deepslate_brick_stairs.json deleted file mode 100644 index 8f139e3bfc..0000000000 --- a/src/generated/resources/assets/create/models/item/small_deepslate_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_deepslate_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_deepslate_bricks.json b/src/generated/resources/assets/create/models/item/small_deepslate_bricks.json deleted file mode 100644 index feaa39c3d3..0000000000 --- a/src/generated/resources/assets/create/models/item/small_deepslate_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_deepslate_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_diorite_brick_slab.json b/src/generated/resources/assets/create/models/item/small_diorite_brick_slab.json deleted file mode 100644 index 5f0d8a183a..0000000000 --- a/src/generated/resources/assets/create/models/item/small_diorite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_diorite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_diorite_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_diorite_brick_stairs.json deleted file mode 100644 index 89597d09a7..0000000000 --- a/src/generated/resources/assets/create/models/item/small_diorite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_diorite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_diorite_bricks.json b/src/generated/resources/assets/create/models/item/small_diorite_bricks.json deleted file mode 100644 index d22e3613e1..0000000000 --- a/src/generated/resources/assets/create/models/item/small_diorite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_diorite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_dripstone_brick_slab.json b/src/generated/resources/assets/create/models/item/small_dripstone_brick_slab.json deleted file mode 100644 index b7616860db..0000000000 --- a/src/generated/resources/assets/create/models/item/small_dripstone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_dripstone_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_dripstone_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_dripstone_brick_stairs.json deleted file mode 100644 index 90e5bbed6c..0000000000 --- a/src/generated/resources/assets/create/models/item/small_dripstone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_dripstone_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_dripstone_bricks.json b/src/generated/resources/assets/create/models/item/small_dripstone_bricks.json deleted file mode 100644 index fe2643ea96..0000000000 --- a/src/generated/resources/assets/create/models/item/small_dripstone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_dripstone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_granite_brick_slab.json b/src/generated/resources/assets/create/models/item/small_granite_brick_slab.json deleted file mode 100644 index 8ec2d0bd75..0000000000 --- a/src/generated/resources/assets/create/models/item/small_granite_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_granite_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_granite_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_granite_brick_stairs.json deleted file mode 100644 index ea9704b1e9..0000000000 --- a/src/generated/resources/assets/create/models/item/small_granite_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_granite_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_granite_bricks.json b/src/generated/resources/assets/create/models/item/small_granite_bricks.json deleted file mode 100644 index 3c16b27560..0000000000 --- a/src/generated/resources/assets/create/models/item/small_granite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_granite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_limestone_brick_slab.json b/src/generated/resources/assets/create/models/item/small_limestone_brick_slab.json deleted file mode 100644 index 98a8a7a9ff..0000000000 --- a/src/generated/resources/assets/create/models/item/small_limestone_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_limestone_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_limestone_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_limestone_brick_stairs.json deleted file mode 100644 index 78039909b6..0000000000 --- a/src/generated/resources/assets/create/models/item/small_limestone_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_limestone_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_limestone_bricks.json b/src/generated/resources/assets/create/models/item/small_limestone_bricks.json deleted file mode 100644 index 6fad9abdc4..0000000000 --- a/src/generated/resources/assets/create/models/item/small_limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_ochrum_brick_slab.json b/src/generated/resources/assets/create/models/item/small_ochrum_brick_slab.json deleted file mode 100644 index f236b87dbe..0000000000 --- a/src/generated/resources/assets/create/models/item/small_ochrum_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_ochrum_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_ochrum_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_ochrum_brick_stairs.json deleted file mode 100644 index 5413da8fa8..0000000000 --- a/src/generated/resources/assets/create/models/item/small_ochrum_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_ochrum_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_ochrum_bricks.json b/src/generated/resources/assets/create/models/item/small_ochrum_bricks.json deleted file mode 100644 index 1758974693..0000000000 --- a/src/generated/resources/assets/create/models/item/small_ochrum_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_ochrum_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_rose_quartz_tiles.json b/src/generated/resources/assets/create/models/item/small_rose_quartz_tiles.json deleted file mode 100644 index 7c6113367e..0000000000 --- a/src/generated/resources/assets/create/models/item/small_rose_quartz_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_rose_quartz_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scorchia_brick_slab.json b/src/generated/resources/assets/create/models/item/small_scorchia_brick_slab.json deleted file mode 100644 index a1e496d2ab..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scorchia_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scorchia_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scorchia_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_scorchia_brick_stairs.json deleted file mode 100644 index b2f7dd0c08..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scorchia_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scorchia_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scorchia_bricks.json b/src/generated/resources/assets/create/models/item/small_scorchia_bricks.json deleted file mode 100644 index 8526a53c73..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scorchia_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scorchia_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scoria_brick_slab.json b/src/generated/resources/assets/create/models/item/small_scoria_brick_slab.json deleted file mode 100644 index 7d0f0dc6c5..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scoria_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scoria_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scoria_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_scoria_brick_stairs.json deleted file mode 100644 index 4d0b464604..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scoria_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scoria_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_scoria_bricks.json b/src/generated/resources/assets/create/models/item/small_scoria_bricks.json deleted file mode 100644 index 3f5452c08a..0000000000 --- a/src/generated/resources/assets/create/models/item/small_scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_tuff_brick_slab.json b/src/generated/resources/assets/create/models/item/small_tuff_brick_slab.json deleted file mode 100644 index 408543b956..0000000000 --- a/src/generated/resources/assets/create/models/item/small_tuff_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_tuff_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_tuff_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_tuff_brick_stairs.json deleted file mode 100644 index 09d0a723cb..0000000000 --- a/src/generated/resources/assets/create/models/item/small_tuff_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_tuff_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_tuff_bricks.json b/src/generated/resources/assets/create/models/item/small_tuff_bricks.json deleted file mode 100644 index 7670c1468e..0000000000 --- a/src/generated/resources/assets/create/models/item/small_tuff_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_tuff_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_veridium_brick_slab.json b/src/generated/resources/assets/create/models/item/small_veridium_brick_slab.json deleted file mode 100644 index 27b170179d..0000000000 --- a/src/generated/resources/assets/create/models/item/small_veridium_brick_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_veridium_brick_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_veridium_brick_stairs.json b/src/generated/resources/assets/create/models/item/small_veridium_brick_stairs.json deleted file mode 100644 index 6c2d02e44a..0000000000 --- a/src/generated/resources/assets/create/models/item/small_veridium_brick_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_veridium_brick_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/small_veridium_bricks.json b/src/generated/resources/assets/create/models/item/small_veridium_bricks.json deleted file mode 100644 index 1537b82ec7..0000000000 --- a/src/generated/resources/assets/create/models/item/small_veridium_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/small_veridium_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/spruce_window.json b/src/generated/resources/assets/create/models/item/spruce_window.json deleted file mode 100644 index cef713400c..0000000000 --- a/src/generated/resources/assets/create/models/item/spruce_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/spruce_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/stock_ticker.json b/src/generated/resources/assets/create/models/item/stock_ticker.json deleted file mode 100644 index 923a047f25..0000000000 --- a/src/generated/resources/assets/create/models/item/stock_ticker.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/stock_ticker" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/tiled_glass.json b/src/generated/resources/assets/create/models/item/tiled_glass.json deleted file mode 100644 index dc525e67c1..0000000000 --- a/src/generated/resources/assets/create/models/item/tiled_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/tiled_glass" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/train_trapdoor.json b/src/generated/resources/assets/create/models/item/train_trapdoor.json deleted file mode 100644 index fd08d657ab..0000000000 --- a/src/generated/resources/assets/create/models/item/train_trapdoor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/train_trapdoor" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/tuff_pillar.json b/src/generated/resources/assets/create/models/item/tuff_pillar.json deleted file mode 100644 index b45060c01b..0000000000 --- a/src/generated/resources/assets/create/models/item/tuff_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/tuff_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/turntable.json b/src/generated/resources/assets/create/models/item/turntable.json deleted file mode 100644 index 5784408a15..0000000000 --- a/src/generated/resources/assets/create/models/item/turntable.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/turntable" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/veridium_pillar.json b/src/generated/resources/assets/create/models/item/veridium_pillar.json deleted file mode 100644 index d34da330ab..0000000000 --- a/src/generated/resources/assets/create/models/item/veridium_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/veridium_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/warped_window.json b/src/generated/resources/assets/create/models/item/warped_window.json deleted file mode 100644 index df090d31fa..0000000000 --- a/src/generated/resources/assets/create/models/item/warped_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/warped_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/waxed_copper_shingle_slab.json deleted file mode 100644 index 9779dd0a63..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/waxed_copper_shingle_stairs.json deleted file mode 100644 index 9a37357d3b..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_shingles.json b/src/generated/resources/assets/create/models/item/waxed_copper_shingles.json deleted file mode 100644 index adbfce1949..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/waxed_copper_tile_slab.json deleted file mode 100644 index 7e5f7551aa..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/waxed_copper_tile_stairs.json deleted file mode 100644 index 27755d91be..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_copper_tiles.json b/src/generated/resources/assets/create/models/item/waxed_copper_tiles.json deleted file mode 100644 index 0545f944f9..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_slab.json deleted file mode 100644 index 53e01ffdbf..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_stairs.json deleted file mode 100644 index 9e5e9ae64c..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingles.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingles.json deleted file mode 100644 index 8a06b27522..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_slab.json deleted file mode 100644 index 5765330f59..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_stairs.json deleted file mode 100644 index b9282635e9..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tiles.json b/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tiles.json deleted file mode 100644 index ea4de68ee7..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_exposed_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_exposed_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_slab.json deleted file mode 100644 index b6d4aa52af..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_stairs.json deleted file mode 100644 index 88cfd19aa9..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingles.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingles.json deleted file mode 100644 index e5805a04b8..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_slab.json deleted file mode 100644 index aa33506eb0..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_stairs.json deleted file mode 100644 index eb0965c887..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tiles.json b/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tiles.json deleted file mode 100644 index 82f8934519..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_oxidized_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_oxidized_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_slab.json deleted file mode 100644 index cac65fc24f..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_stairs.json deleted file mode 100644 index 067cf032e2..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingles.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingles.json deleted file mode 100644 index 1793a56a69..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_slab.json deleted file mode 100644 index 6d00f9cb1f..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_stairs.json deleted file mode 100644 index c9af9d84b8..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tiles.json b/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tiles.json deleted file mode 100644 index 4c451f4d5b..0000000000 --- a/src/generated/resources/assets/create/models/item/waxed_weathered_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/waxed_weathered_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_shingle_slab.json b/src/generated/resources/assets/create/models/item/weathered_copper_shingle_slab.json deleted file mode 100644 index 9690d2fb76..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_shingle_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_shingle_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_shingle_stairs.json b/src/generated/resources/assets/create/models/item/weathered_copper_shingle_stairs.json deleted file mode 100644 index 6ff33b21c7..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_shingle_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_shingle_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_shingles.json b/src/generated/resources/assets/create/models/item/weathered_copper_shingles.json deleted file mode 100644 index b1dff7bded..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_shingles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_tile_slab.json b/src/generated/resources/assets/create/models/item/weathered_copper_tile_slab.json deleted file mode 100644 index b9d5b48922..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_tile_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_tile_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_tile_stairs.json b/src/generated/resources/assets/create/models/item/weathered_copper_tile_stairs.json deleted file mode 100644 index f46bb7a0d1..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_tile_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_tile_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_copper_tiles.json b/src/generated/resources/assets/create/models/item/weathered_copper_tiles.json deleted file mode 100644 index a38563b6a0..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_copper_tiles" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_iron_block.json b/src/generated/resources/assets/create/models/item/weathered_iron_block.json deleted file mode 100644 index beab17e2e1..0000000000 --- a/src/generated/resources/assets/create/models/item/weathered_iron_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_iron_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_sail.json b/src/generated/resources/assets/create/models/item/white_sail.json deleted file mode 100644 index 303c0e83a9..0000000000 --- a/src/generated/resources/assets/create/models/item/white_sail.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_sail" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_seat.json b/src/generated/resources/assets/create/models/item/white_seat.json deleted file mode 100644 index 609a09653f..0000000000 --- a/src/generated/resources/assets/create/models/item/white_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_valve_handle.json b/src/generated/resources/assets/create/models/item/white_valve_handle.json deleted file mode 100644 index d81403c930..0000000000 --- a/src/generated/resources/assets/create/models/item/white_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/yellow_seat.json b/src/generated/resources/assets/create/models/item/yellow_seat.json deleted file mode 100644 index d55fbb1308..0000000000 --- a/src/generated/resources/assets/create/models/item/yellow_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/yellow_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/yellow_valve_handle.json b/src/generated/resources/assets/create/models/item/yellow_valve_handle.json deleted file mode 100644 index eda359168c..0000000000 --- a/src/generated/resources/assets/create/models/item/yellow_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/yellow_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_block.json b/src/generated/resources/assets/create/models/item/zinc_block.json deleted file mode 100644 index 4ec24c2c69..0000000000 --- a/src/generated/resources/assets/create/models/item/zinc_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/zinc_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_ore.json b/src/generated/resources/assets/create/models/item/zinc_ore.json deleted file mode 100644 index e0f0cfe89b..0000000000 --- a/src/generated/resources/assets/create/models/item/zinc_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/zinc_ore" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/.wiki/block_info/copper_backtank.json b/src/generated/resources/data/create/.wiki/block_info/copper_backtank.json index 7706598868..fd93d29990 100644 --- a/src/generated/resources/data/create/.wiki/block_info/copper_backtank.json +++ b/src/generated/resources/data/create/.wiki/block_info/copper_backtank.json @@ -4,6 +4,6 @@ "hardness": 3.0, "ignited_by_lava": false, "luminous": false, - "stackable": 1, + "stackable": 64, "waterloggable": true } \ No newline at end of file diff --git a/src/generated/resources/data/create/.wiki/block_info/netherite_backtank.json b/src/generated/resources/data/create/.wiki/block_info/netherite_backtank.json index 7d7d25a50b..5574454229 100644 --- a/src/generated/resources/data/create/.wiki/block_info/netherite_backtank.json +++ b/src/generated/resources/data/create/.wiki/block_info/netherite_backtank.json @@ -4,6 +4,6 @@ "hardness": 50.0, "ignited_by_lava": false, "luminous": false, - "stackable": 1, + "stackable": 64, "waterloggable": true } \ No newline at end of file diff --git a/src/generated/resources/data/create/advancement/andesite_alloy.json b/src/generated/resources/data/create/advancement/andesite_alloy.json index 65e09dd15f..b68dc34f17 100644 --- a/src/generated/resources/data/create/advancement/andesite_alloy.json +++ b/src/generated/resources/data/create/advancement/andesite_alloy.json @@ -19,7 +19,6 @@ "translate": "advancement.create.andesite_alloy.desc" }, "icon": { - "count": 1, "id": "create:andesite_alloy" }, "title": { diff --git a/src/generated/resources/data/create/advancement/andesite_casing.json b/src/generated/resources/data/create/advancement/andesite_casing.json index e8447d29ca..54ae5f7c8e 100644 --- a/src/generated/resources/data/create/advancement/andesite_casing.json +++ b/src/generated/resources/data/create/advancement/andesite_casing.json @@ -11,7 +11,6 @@ "translate": "advancement.create.andesite_casing.desc" }, "icon": { - "count": 1, "id": "create:andesite_casing" }, "title": { diff --git a/src/generated/resources/data/create/advancement/anvil_plough.json b/src/generated/resources/data/create/advancement/anvil_plough.json index 0fb0fd5931..511e082206 100644 --- a/src/generated/resources/data/create/advancement/anvil_plough.json +++ b/src/generated/resources/data/create/advancement/anvil_plough.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "minecraft:chipped_anvil" }, "title": { diff --git a/src/generated/resources/data/create/advancement/arm_blaze_burner.json b/src/generated/resources/data/create/advancement/arm_blaze_burner.json index d6374e117f..c10c044da3 100644 --- a/src/generated/resources/data/create/advancement/arm_blaze_burner.json +++ b/src/generated/resources/data/create/advancement/arm_blaze_burner.json @@ -12,7 +12,6 @@ "translate": "advancement.create.arm_blaze_burner.desc" }, "icon": { - "count": 1, "id": "create:blaze_burner" }, "title": { diff --git a/src/generated/resources/data/create/advancement/arm_many_targets.json b/src/generated/resources/data/create/advancement/arm_many_targets.json index 7c78397b72..265da9c143 100644 --- a/src/generated/resources/data/create/advancement/arm_many_targets.json +++ b/src/generated/resources/data/create/advancement/arm_many_targets.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:mechanical_arm" }, "title": { diff --git a/src/generated/resources/data/create/advancement/backtank.json b/src/generated/resources/data/create/advancement/backtank.json index 5ea58a3d01..4a058dd25d 100644 --- a/src/generated/resources/data/create/advancement/backtank.json +++ b/src/generated/resources/data/create/advancement/backtank.json @@ -12,7 +12,6 @@ "translate": "advancement.create.backtank.desc" }, "icon": { - "count": 1, "id": "create:copper_backtank" }, "title": { diff --git a/src/generated/resources/data/create/advancement/belt.json b/src/generated/resources/data/create/advancement/belt.json index 4e8e4dff69..e4641d0d15 100644 --- a/src/generated/resources/data/create/advancement/belt.json +++ b/src/generated/resources/data/create/advancement/belt.json @@ -12,7 +12,6 @@ "translate": "advancement.create.belt.desc" }, "icon": { - "count": 1, "id": "create:belt_connector" }, "title": { diff --git a/src/generated/resources/data/create/advancement/belt_funnel_kiss.json b/src/generated/resources/data/create/advancement/belt_funnel_kiss.json index a55842e922..0cbd239469 100644 --- a/src/generated/resources/data/create/advancement/belt_funnel_kiss.json +++ b/src/generated/resources/data/create/advancement/belt_funnel_kiss.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:brass_funnel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/brass.json b/src/generated/resources/data/create/advancement/brass.json index ebb869e00b..500c0a9998 100644 --- a/src/generated/resources/data/create/advancement/brass.json +++ b/src/generated/resources/data/create/advancement/brass.json @@ -19,7 +19,6 @@ "translate": "advancement.create.brass.desc" }, "icon": { - "count": 1, "id": "create:brass_ingot" }, "title": { diff --git a/src/generated/resources/data/create/advancement/brass_casing.json b/src/generated/resources/data/create/advancement/brass_casing.json index 40d2430e0b..f35e2ba162 100644 --- a/src/generated/resources/data/create/advancement/brass_casing.json +++ b/src/generated/resources/data/create/advancement/brass_casing.json @@ -11,7 +11,6 @@ "translate": "advancement.create.brass_casing.desc" }, "icon": { - "count": 1, "id": "create:brass_casing" }, "title": { diff --git a/src/generated/resources/data/create/advancement/burner.json b/src/generated/resources/data/create/advancement/burner.json index e94bb9dbb7..325186fe13 100644 --- a/src/generated/resources/data/create/advancement/burner.json +++ b/src/generated/resources/data/create/advancement/burner.json @@ -19,7 +19,6 @@ "translate": "advancement.create.burner.desc" }, "icon": { - "count": 1, "id": "create:blaze_burner" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cardboard.json b/src/generated/resources/data/create/advancement/cardboard.json index 552ea55b65..870e7a6e94 100644 --- a/src/generated/resources/data/create/advancement/cardboard.json +++ b/src/generated/resources/data/create/advancement/cardboard.json @@ -19,7 +19,6 @@ "translate": "advancement.create.cardboard.desc" }, "icon": { - "count": 1, "id": "create:cardboard" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cardboard_armor.json b/src/generated/resources/data/create/advancement/cardboard_armor.json index 9b59fe84c0..727a6739b7 100644 --- a/src/generated/resources/data/create/advancement/cardboard_armor.json +++ b/src/generated/resources/data/create/advancement/cardboard_armor.json @@ -12,7 +12,6 @@ "translate": "advancement.create.cardboard_armor.desc" }, "icon": { - "count": 1, "id": "create:cardboard_chestplate" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cardboard_armor_trim.json b/src/generated/resources/data/create/advancement/cardboard_armor_trim.json index 6c0d387647..ab7ab5af73 100644 --- a/src/generated/resources/data/create/advancement/cardboard_armor_trim.json +++ b/src/generated/resources/data/create/advancement/cardboard_armor_trim.json @@ -19,7 +19,6 @@ "pattern": "minecraft:sentry" } }, - "count": 1, "id": "create:cardboard_chestplate" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cart_pickup.json b/src/generated/resources/data/create/advancement/cart_pickup.json index 4c491ee218..81827dd8ac 100644 --- a/src/generated/resources/data/create/advancement/cart_pickup.json +++ b/src/generated/resources/data/create/advancement/cart_pickup.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:chest_minecart_contraption" }, "title": { diff --git a/src/generated/resources/data/create/advancement/chained_drain.json b/src/generated/resources/data/create/advancement/chained_drain.json index 0aac5043a9..b21fd9bb61 100644 --- a/src/generated/resources/data/create/advancement/chained_drain.json +++ b/src/generated/resources/data/create/advancement/chained_drain.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:item_drain" }, "title": { diff --git a/src/generated/resources/data/create/advancement/chocolate_bucket.json b/src/generated/resources/data/create/advancement/chocolate_bucket.json index 881d818100..bb146c1141 100644 --- a/src/generated/resources/data/create/advancement/chocolate_bucket.json +++ b/src/generated/resources/data/create/advancement/chocolate_bucket.json @@ -19,7 +19,6 @@ "translate": "advancement.create.chocolate_bucket.desc" }, "icon": { - "count": 1, "id": "create:chocolate_bucket" }, "title": { diff --git a/src/generated/resources/data/create/advancement/chute.json b/src/generated/resources/data/create/advancement/chute.json index 40053680fb..f10f350128 100644 --- a/src/generated/resources/data/create/advancement/chute.json +++ b/src/generated/resources/data/create/advancement/chute.json @@ -12,7 +12,6 @@ "translate": "advancement.create.chute.desc" }, "icon": { - "count": 1, "id": "create:chute" }, "title": { diff --git a/src/generated/resources/data/create/advancement/clockwork_bearing.json b/src/generated/resources/data/create/advancement/clockwork_bearing.json index 5cd63e1de3..bb4c9b4661 100644 --- a/src/generated/resources/data/create/advancement/clockwork_bearing.json +++ b/src/generated/resources/data/create/advancement/clockwork_bearing.json @@ -11,7 +11,6 @@ "translate": "advancement.create.clockwork_bearing.desc" }, "icon": { - "count": 1, "id": "create:clockwork_bearing" }, "title": { diff --git a/src/generated/resources/data/create/advancement/compacting.json b/src/generated/resources/data/create/advancement/compacting.json index e91abc1f97..a1cab211e3 100644 --- a/src/generated/resources/data/create/advancement/compacting.json +++ b/src/generated/resources/data/create/advancement/compacting.json @@ -12,7 +12,6 @@ "translate": "advancement.create.compacting.desc" }, "icon": { - "count": 1, "id": "minecraft:iron_block" }, "title": { diff --git a/src/generated/resources/data/create/advancement/conductor.json b/src/generated/resources/data/create/advancement/conductor.json index 5417e54dc7..959a741616 100644 --- a/src/generated/resources/data/create/advancement/conductor.json +++ b/src/generated/resources/data/create/advancement/conductor.json @@ -12,7 +12,6 @@ "translate": "advancement.create.conductor.desc" }, "icon": { - "count": 1, "id": "create:schedule" }, "title": { diff --git a/src/generated/resources/data/create/advancement/contraption_actors.json b/src/generated/resources/data/create/advancement/contraption_actors.json index 14a5b197d8..02c87b8107 100644 --- a/src/generated/resources/data/create/advancement/contraption_actors.json +++ b/src/generated/resources/data/create/advancement/contraption_actors.json @@ -12,7 +12,6 @@ "translate": "advancement.create.contraption_actors.desc" }, "icon": { - "count": 1, "id": "create:mechanical_harvester" }, "title": { diff --git a/src/generated/resources/data/create/advancement/copper.json b/src/generated/resources/data/create/advancement/copper.json index a4b974afa1..56c095e166 100644 --- a/src/generated/resources/data/create/advancement/copper.json +++ b/src/generated/resources/data/create/advancement/copper.json @@ -19,7 +19,6 @@ "translate": "advancement.create.copper.desc" }, "icon": { - "count": 1, "id": "minecraft:copper_ingot" }, "show_toast": false, diff --git a/src/generated/resources/data/create/advancement/copper_casing.json b/src/generated/resources/data/create/advancement/copper_casing.json index 6bd094d5f8..edee158b0c 100644 --- a/src/generated/resources/data/create/advancement/copper_casing.json +++ b/src/generated/resources/data/create/advancement/copper_casing.json @@ -12,7 +12,6 @@ "translate": "advancement.create.copper_casing.desc" }, "icon": { - "count": 1, "id": "create:copper_casing" }, "title": { diff --git a/src/generated/resources/data/create/advancement/crafter_lazy_000.json b/src/generated/resources/data/create/advancement/crafter_lazy_000.json index b8803fb43c..805987fc60 100644 --- a/src/generated/resources/data/create/advancement/crafter_lazy_000.json +++ b/src/generated/resources/data/create/advancement/crafter_lazy_000.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:mechanical_crafter" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cross_streams.json b/src/generated/resources/data/create/advancement/cross_streams.json index 5f00181cb7..f91955f73b 100644 --- a/src/generated/resources/data/create/advancement/cross_streams.json +++ b/src/generated/resources/data/create/advancement/cross_streams.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "minecraft:cobblestone" }, "title": { diff --git a/src/generated/resources/data/create/advancement/crusher_maxed_0000.json b/src/generated/resources/data/create/advancement/crusher_maxed_0000.json index 42f00347fd..58dccf1043 100644 --- a/src/generated/resources/data/create/advancement/crusher_maxed_0000.json +++ b/src/generated/resources/data/create/advancement/crusher_maxed_0000.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:crushing_wheel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/crushing_wheel.json b/src/generated/resources/data/create/advancement/crushing_wheel.json index 522002a365..dbd455748d 100644 --- a/src/generated/resources/data/create/advancement/crushing_wheel.json +++ b/src/generated/resources/data/create/advancement/crushing_wheel.json @@ -11,7 +11,6 @@ "translate": "advancement.create.crushing_wheel.desc" }, "icon": { - "count": 1, "id": "create:crushing_wheel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/cuckoo_clock.json b/src/generated/resources/data/create/advancement/cuckoo_clock.json index 572b10ca73..fd7c4acb35 100644 --- a/src/generated/resources/data/create/advancement/cuckoo_clock.json +++ b/src/generated/resources/data/create/advancement/cuckoo_clock.json @@ -11,7 +11,6 @@ "translate": "advancement.create.cuckoo_clock.desc" }, "icon": { - "count": 1, "id": "create:cuckoo_clock" }, "title": { diff --git a/src/generated/resources/data/create/advancement/deployer.json b/src/generated/resources/data/create/advancement/deployer.json index c4306976ae..ce25ad6a0f 100644 --- a/src/generated/resources/data/create/advancement/deployer.json +++ b/src/generated/resources/data/create/advancement/deployer.json @@ -12,7 +12,6 @@ "translate": "advancement.create.deployer.desc" }, "icon": { - "count": 1, "id": "create:deployer" }, "title": { diff --git a/src/generated/resources/data/create/advancement/display_board_0.json b/src/generated/resources/data/create/advancement/display_board_0.json index a844759bc5..162da11850 100644 --- a/src/generated/resources/data/create/advancement/display_board_0.json +++ b/src/generated/resources/data/create/advancement/display_board_0.json @@ -11,7 +11,6 @@ "translate": "advancement.create.display_board_0.desc" }, "icon": { - "count": 1, "id": "create:display_board" }, "title": { diff --git a/src/generated/resources/data/create/advancement/display_link.json b/src/generated/resources/data/create/advancement/display_link.json index 009c8723e4..7362709f5f 100644 --- a/src/generated/resources/data/create/advancement/display_link.json +++ b/src/generated/resources/data/create/advancement/display_link.json @@ -12,7 +12,6 @@ "translate": "advancement.create.display_link.desc" }, "icon": { - "count": 1, "id": "create:display_link" }, "title": { diff --git a/src/generated/resources/data/create/advancement/diving_suit.json b/src/generated/resources/data/create/advancement/diving_suit.json index 3cacf8f8d0..a8763e5b67 100644 --- a/src/generated/resources/data/create/advancement/diving_suit.json +++ b/src/generated/resources/data/create/advancement/diving_suit.json @@ -12,7 +12,6 @@ "translate": "advancement.create.diving_suit.desc" }, "icon": { - "count": 1, "id": "create:copper_diving_helmet" }, "title": { diff --git a/src/generated/resources/data/create/advancement/diving_suit_lava.json b/src/generated/resources/data/create/advancement/diving_suit_lava.json index 1e138a37f3..1397744a6e 100644 --- a/src/generated/resources/data/create/advancement/diving_suit_lava.json +++ b/src/generated/resources/data/create/advancement/diving_suit_lava.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:netherite_diving_helmet" }, "title": { diff --git a/src/generated/resources/data/create/advancement/drain.json b/src/generated/resources/data/create/advancement/drain.json index 501f11d478..10ef520090 100644 --- a/src/generated/resources/data/create/advancement/drain.json +++ b/src/generated/resources/data/create/advancement/drain.json @@ -12,7 +12,6 @@ "translate": "advancement.create.drain.desc" }, "icon": { - "count": 1, "id": "create:item_drain" }, "title": { diff --git a/src/generated/resources/data/create/advancement/ejector_maxed.json b/src/generated/resources/data/create/advancement/ejector_maxed.json index f9d9982881..245056a524 100644 --- a/src/generated/resources/data/create/advancement/ejector_maxed.json +++ b/src/generated/resources/data/create/advancement/ejector_maxed.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:weighted_ejector" }, "title": { diff --git a/src/generated/resources/data/create/advancement/encased_fan.json b/src/generated/resources/data/create/advancement/encased_fan.json index 23def2642c..79f1f1b2bd 100644 --- a/src/generated/resources/data/create/advancement/encased_fan.json +++ b/src/generated/resources/data/create/advancement/encased_fan.json @@ -12,7 +12,6 @@ "translate": "advancement.create.encased_fan.desc" }, "icon": { - "count": 1, "id": "create:encased_fan" }, "title": { diff --git a/src/generated/resources/data/create/advancement/extendo_grip.json b/src/generated/resources/data/create/advancement/extendo_grip.json index ff329b02d1..4aa7be134b 100644 --- a/src/generated/resources/data/create/advancement/extendo_grip.json +++ b/src/generated/resources/data/create/advancement/extendo_grip.json @@ -12,7 +12,6 @@ "translate": "advancement.create.extendo_grip.desc" }, "icon": { - "count": 1, "id": "create:extendo_grip" }, "title": { diff --git a/src/generated/resources/data/create/advancement/extendo_grip_dual.json b/src/generated/resources/data/create/advancement/extendo_grip_dual.json index 7be62d292a..e9b5412090 100644 --- a/src/generated/resources/data/create/advancement/extendo_grip_dual.json +++ b/src/generated/resources/data/create/advancement/extendo_grip_dual.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:extendo_grip" }, "title": { diff --git a/src/generated/resources/data/create/advancement/factory_gauge.json b/src/generated/resources/data/create/advancement/factory_gauge.json index 9c8ee93dbe..3b95e22b96 100644 --- a/src/generated/resources/data/create/advancement/factory_gauge.json +++ b/src/generated/resources/data/create/advancement/factory_gauge.json @@ -11,7 +11,6 @@ "translate": "advancement.create.factory_gauge.desc" }, "icon": { - "count": 1, "id": "create:factory_gauge" }, "title": { diff --git a/src/generated/resources/data/create/advancement/fan_processing.json b/src/generated/resources/data/create/advancement/fan_processing.json index e2a668b95b..60f9d2f382 100644 --- a/src/generated/resources/data/create/advancement/fan_processing.json +++ b/src/generated/resources/data/create/advancement/fan_processing.json @@ -12,7 +12,6 @@ "translate": "advancement.create.fan_processing.desc" }, "icon": { - "count": 1, "id": "create:propeller" }, "title": { diff --git a/src/generated/resources/data/create/advancement/fist_bump.json b/src/generated/resources/data/create/advancement/fist_bump.json index 537f9de0b3..c24ed15418 100644 --- a/src/generated/resources/data/create/advancement/fist_bump.json +++ b/src/generated/resources/data/create/advancement/fist_bump.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:deployer" }, "title": { diff --git a/src/generated/resources/data/create/advancement/foods.json b/src/generated/resources/data/create/advancement/foods.json index 727a5b8ee5..d1891c628b 100644 --- a/src/generated/resources/data/create/advancement/foods.json +++ b/src/generated/resources/data/create/advancement/foods.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:chocolate_glazed_berries" }, "title": { diff --git a/src/generated/resources/data/create/advancement/frogport.json b/src/generated/resources/data/create/advancement/frogport.json index a6aca23261..7eaf8bcb99 100644 --- a/src/generated/resources/data/create/advancement/frogport.json +++ b/src/generated/resources/data/create/advancement/frogport.json @@ -11,7 +11,6 @@ "translate": "advancement.create.frogport.desc" }, "icon": { - "count": 1, "id": "create:package_frogport" }, "title": { diff --git a/src/generated/resources/data/create/advancement/funnel.json b/src/generated/resources/data/create/advancement/funnel.json index 3adbe7c329..406569646e 100644 --- a/src/generated/resources/data/create/advancement/funnel.json +++ b/src/generated/resources/data/create/advancement/funnel.json @@ -12,7 +12,6 @@ "translate": "advancement.create.funnel.desc" }, "icon": { - "count": 1, "id": "create:andesite_funnel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/glass_pipe.json b/src/generated/resources/data/create/advancement/glass_pipe.json index 8b2e5ac7a2..69c64a61c8 100644 --- a/src/generated/resources/data/create/advancement/glass_pipe.json +++ b/src/generated/resources/data/create/advancement/glass_pipe.json @@ -12,7 +12,6 @@ "translate": "advancement.create.glass_pipe.desc" }, "icon": { - "count": 1, "id": "create:fluid_pipe" }, "title": { diff --git a/src/generated/resources/data/create/advancement/hand_crank_000.json b/src/generated/resources/data/create/advancement/hand_crank_000.json index 10b8254167..fb9696c9f5 100644 --- a/src/generated/resources/data/create/advancement/hand_crank_000.json +++ b/src/generated/resources/data/create/advancement/hand_crank_000.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:hand_crank" }, "title": { diff --git a/src/generated/resources/data/create/advancement/haunted_bell.json b/src/generated/resources/data/create/advancement/haunted_bell.json index ea3f0ce9aa..f4a77a110b 100644 --- a/src/generated/resources/data/create/advancement/haunted_bell.json +++ b/src/generated/resources/data/create/advancement/haunted_bell.json @@ -11,7 +11,6 @@ "translate": "advancement.create.haunted_bell.desc" }, "icon": { - "count": 1, "id": "create:haunted_bell" }, "title": { diff --git a/src/generated/resources/data/create/advancement/honey_drain.json b/src/generated/resources/data/create/advancement/honey_drain.json index 0a360f5173..15e7fd8e19 100644 --- a/src/generated/resources/data/create/advancement/honey_drain.json +++ b/src/generated/resources/data/create/advancement/honey_drain.json @@ -12,7 +12,6 @@ "translate": "advancement.create.honey_drain.desc" }, "icon": { - "count": 1, "id": "minecraft:beehive" }, "title": { diff --git a/src/generated/resources/data/create/advancement/hose_pulley.json b/src/generated/resources/data/create/advancement/hose_pulley.json index e267a088e9..2e3b6c1cfd 100644 --- a/src/generated/resources/data/create/advancement/hose_pulley.json +++ b/src/generated/resources/data/create/advancement/hose_pulley.json @@ -12,7 +12,6 @@ "translate": "advancement.create.hose_pulley.desc" }, "icon": { - "count": 1, "id": "create:hose_pulley" }, "title": { diff --git a/src/generated/resources/data/create/advancement/hose_pulley_lava.json b/src/generated/resources/data/create/advancement/hose_pulley_lava.json index 1cb01d4fa9..20ca07d721 100644 --- a/src/generated/resources/data/create/advancement/hose_pulley_lava.json +++ b/src/generated/resources/data/create/advancement/hose_pulley_lava.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:hose_pulley" }, "title": { diff --git a/src/generated/resources/data/create/advancement/lava_wheel_00000.json b/src/generated/resources/data/create/advancement/lava_wheel_00000.json index b6f0922b6e..5d8806bf05 100644 --- a/src/generated/resources/data/create/advancement/lava_wheel_00000.json +++ b/src/generated/resources/data/create/advancement/lava_wheel_00000.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:water_wheel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/linked_controller.json b/src/generated/resources/data/create/advancement/linked_controller.json index 67a05a1959..792db4e59c 100644 --- a/src/generated/resources/data/create/advancement/linked_controller.json +++ b/src/generated/resources/data/create/advancement/linked_controller.json @@ -12,7 +12,6 @@ "translate": "advancement.create.linked_controller.desc" }, "icon": { - "count": 1, "id": "create:linked_controller" }, "title": { diff --git a/src/generated/resources/data/create/advancement/long_train.json b/src/generated/resources/data/create/advancement/long_train.json index 118d14cc16..662ba6f472 100644 --- a/src/generated/resources/data/create/advancement/long_train.json +++ b/src/generated/resources/data/create/advancement/long_train.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "minecraft:minecart" }, "title": { diff --git a/src/generated/resources/data/create/advancement/long_travel.json b/src/generated/resources/data/create/advancement/long_travel.json index 1dd36d0268..60c4141797 100644 --- a/src/generated/resources/data/create/advancement/long_travel.json +++ b/src/generated/resources/data/create/advancement/long_travel.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:green_seat" }, "title": { diff --git a/src/generated/resources/data/create/advancement/mechanical_arm.json b/src/generated/resources/data/create/advancement/mechanical_arm.json index 26e27b9316..fb26b20952 100644 --- a/src/generated/resources/data/create/advancement/mechanical_arm.json +++ b/src/generated/resources/data/create/advancement/mechanical_arm.json @@ -11,7 +11,6 @@ "translate": "advancement.create.mechanical_arm.desc" }, "icon": { - "count": 1, "id": "create:mechanical_arm" }, "title": { diff --git a/src/generated/resources/data/create/advancement/mechanical_crafter.json b/src/generated/resources/data/create/advancement/mechanical_crafter.json index f65a6553e2..5812139407 100644 --- a/src/generated/resources/data/create/advancement/mechanical_crafter.json +++ b/src/generated/resources/data/create/advancement/mechanical_crafter.json @@ -12,7 +12,6 @@ "translate": "advancement.create.mechanical_crafter.desc" }, "icon": { - "count": 1, "id": "create:mechanical_crafter" }, "title": { diff --git a/src/generated/resources/data/create/advancement/mechanical_mixer.json b/src/generated/resources/data/create/advancement/mechanical_mixer.json index 4553a8bfad..86402bc137 100644 --- a/src/generated/resources/data/create/advancement/mechanical_mixer.json +++ b/src/generated/resources/data/create/advancement/mechanical_mixer.json @@ -12,7 +12,6 @@ "translate": "advancement.create.mechanical_mixer.desc" }, "icon": { - "count": 1, "id": "create:mechanical_mixer" }, "title": { diff --git a/src/generated/resources/data/create/advancement/mechanical_press.json b/src/generated/resources/data/create/advancement/mechanical_press.json index 5adb2df0d3..cea4082af8 100644 --- a/src/generated/resources/data/create/advancement/mechanical_press.json +++ b/src/generated/resources/data/create/advancement/mechanical_press.json @@ -11,7 +11,6 @@ "translate": "advancement.create.mechanical_press.desc" }, "icon": { - "count": 1, "id": "create:mechanical_press" }, "title": { diff --git a/src/generated/resources/data/create/advancement/mechanical_pump_0.json b/src/generated/resources/data/create/advancement/mechanical_pump_0.json index a376087afe..928307633d 100644 --- a/src/generated/resources/data/create/advancement/mechanical_pump_0.json +++ b/src/generated/resources/data/create/advancement/mechanical_pump_0.json @@ -12,7 +12,6 @@ "translate": "advancement.create.mechanical_pump_0.desc" }, "icon": { - "count": 1, "id": "create:mechanical_pump" }, "title": { diff --git a/src/generated/resources/data/create/advancement/millstone.json b/src/generated/resources/data/create/advancement/millstone.json index 37ad9b1709..fc22b6cfde 100644 --- a/src/generated/resources/data/create/advancement/millstone.json +++ b/src/generated/resources/data/create/advancement/millstone.json @@ -12,7 +12,6 @@ "translate": "advancement.create.millstone.desc" }, "icon": { - "count": 1, "id": "create:millstone" }, "title": { diff --git a/src/generated/resources/data/create/advancement/musical_arm.json b/src/generated/resources/data/create/advancement/musical_arm.json index 778294bffa..7bbc6d9567 100644 --- a/src/generated/resources/data/create/advancement/musical_arm.json +++ b/src/generated/resources/data/create/advancement/musical_arm.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "minecraft:jukebox" }, "title": { diff --git a/src/generated/resources/data/create/advancement/package_chute_throw.json b/src/generated/resources/data/create/advancement/package_chute_throw.json index 7cfbe1aa7c..f9ccfdf38b 100644 --- a/src/generated/resources/data/create/advancement/package_chute_throw.json +++ b/src/generated/resources/data/create/advancement/package_chute_throw.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:cardboard_package_12x12" }, "title": { diff --git a/src/generated/resources/data/create/advancement/packager.json b/src/generated/resources/data/create/advancement/packager.json index e81ad3fe81..6f5228aab7 100644 --- a/src/generated/resources/data/create/advancement/packager.json +++ b/src/generated/resources/data/create/advancement/packager.json @@ -12,7 +12,6 @@ "translate": "advancement.create.packager.desc" }, "icon": { - "count": 1, "id": "create:packager" }, "title": { diff --git a/src/generated/resources/data/create/advancement/pipe_organ.json b/src/generated/resources/data/create/advancement/pipe_organ.json index ba7153d387..807b041434 100644 --- a/src/generated/resources/data/create/advancement/pipe_organ.json +++ b/src/generated/resources/data/create/advancement/pipe_organ.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:steam_whistle" }, "title": { diff --git a/src/generated/resources/data/create/advancement/portable_storage_interface.json b/src/generated/resources/data/create/advancement/portable_storage_interface.json index 84319fbc00..aef638770a 100644 --- a/src/generated/resources/data/create/advancement/portable_storage_interface.json +++ b/src/generated/resources/data/create/advancement/portable_storage_interface.json @@ -12,7 +12,6 @@ "translate": "advancement.create.portable_storage_interface.desc" }, "icon": { - "count": 1, "id": "create:portable_storage_interface" }, "title": { diff --git a/src/generated/resources/data/create/advancement/potato_cannon.json b/src/generated/resources/data/create/advancement/potato_cannon.json index d2dd11c030..0725604e94 100644 --- a/src/generated/resources/data/create/advancement/potato_cannon.json +++ b/src/generated/resources/data/create/advancement/potato_cannon.json @@ -11,7 +11,6 @@ "translate": "advancement.create.potato_cannon.desc" }, "icon": { - "count": 1, "id": "create:potato_cannon" }, "title": { diff --git a/src/generated/resources/data/create/advancement/potato_cannon_collide.json b/src/generated/resources/data/create/advancement/potato_cannon_collide.json index 3107a2ccf3..875bc4cb62 100644 --- a/src/generated/resources/data/create/advancement/potato_cannon_collide.json +++ b/src/generated/resources/data/create/advancement/potato_cannon_collide.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "minecraft:carrot" }, "title": { diff --git a/src/generated/resources/data/create/advancement/precision_mechanism.json b/src/generated/resources/data/create/advancement/precision_mechanism.json index 1ba5e29f0f..0a2c58dd33 100644 --- a/src/generated/resources/data/create/advancement/precision_mechanism.json +++ b/src/generated/resources/data/create/advancement/precision_mechanism.json @@ -18,7 +18,6 @@ "translate": "advancement.create.precision_mechanism.desc" }, "icon": { - "count": 1, "id": "create:precision_mechanism" }, "title": { diff --git a/src/generated/resources/data/create/advancement/pulley_maxed.json b/src/generated/resources/data/create/advancement/pulley_maxed.json index 65b959ccb8..dc1db2a8b9 100644 --- a/src/generated/resources/data/create/advancement/pulley_maxed.json +++ b/src/generated/resources/data/create/advancement/pulley_maxed.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:rope_pulley" }, "title": { diff --git a/src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/chain_from_zinc.json b/src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/iron_chain_from_zinc.json similarity index 79% rename from src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/chain_from_zinc.json rename to src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/iron_chain_from_zinc.json index 9213a25ad4..e60224a0e0 100644 --- a/src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/chain_from_zinc.json +++ b/src/generated/resources/data/create/advancement/recipes/misc/crafting/appliances/iron_chain_from_zinc.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "create:crafting/appliances/chain_from_zinc" + "recipe": "create:crafting/appliances/iron_chain_from_zinc" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "create:crafting/appliances/chain_from_zinc" + "create:crafting/appliances/iron_chain_from_zinc" ] } } \ No newline at end of file diff --git a/src/generated/resources/data/create/advancement/red_signal.json b/src/generated/resources/data/create/advancement/red_signal.json index 50d2933c62..19d2fffc4d 100644 --- a/src/generated/resources/data/create/advancement/red_signal.json +++ b/src/generated/resources/data/create/advancement/red_signal.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:track_signal" }, "title": { diff --git a/src/generated/resources/data/create/advancement/root.json b/src/generated/resources/data/create/advancement/root.json index 1781659249..a0bdf5fa75 100644 --- a/src/generated/resources/data/create/advancement/root.json +++ b/src/generated/resources/data/create/advancement/root.json @@ -12,7 +12,6 @@ "translate": "advancement.create.root.desc" }, "icon": { - "count": 1, "id": "create:brass_hand" }, "show_toast": false, diff --git a/src/generated/resources/data/create/advancement/rose_quartz.json b/src/generated/resources/data/create/advancement/rose_quartz.json index 987e8bd935..b3dce75bd8 100644 --- a/src/generated/resources/data/create/advancement/rose_quartz.json +++ b/src/generated/resources/data/create/advancement/rose_quartz.json @@ -19,7 +19,6 @@ "translate": "advancement.create.rose_quartz.desc" }, "icon": { - "count": 1, "id": "create:polished_rose_quartz" }, "title": { diff --git a/src/generated/resources/data/create/advancement/saw_processing.json b/src/generated/resources/data/create/advancement/saw_processing.json index d15c52a4ce..1bed238df8 100644 --- a/src/generated/resources/data/create/advancement/saw_processing.json +++ b/src/generated/resources/data/create/advancement/saw_processing.json @@ -12,7 +12,6 @@ "translate": "advancement.create.saw_processing.desc" }, "icon": { - "count": 1, "id": "create:mechanical_saw" }, "title": { diff --git a/src/generated/resources/data/create/advancement/self_deploying.json b/src/generated/resources/data/create/advancement/self_deploying.json index f7e4c624fc..ef97128b29 100644 --- a/src/generated/resources/data/create/advancement/self_deploying.json +++ b/src/generated/resources/data/create/advancement/self_deploying.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "minecraft:rail" }, "title": { diff --git a/src/generated/resources/data/create/advancement/shifting_gears.json b/src/generated/resources/data/create/advancement/shifting_gears.json index 451df2ce25..c8b1d2acd7 100644 --- a/src/generated/resources/data/create/advancement/shifting_gears.json +++ b/src/generated/resources/data/create/advancement/shifting_gears.json @@ -12,7 +12,6 @@ "translate": "advancement.create.shifting_gears.desc" }, "icon": { - "count": 1, "id": "create:cogwheel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/speed_controller.json b/src/generated/resources/data/create/advancement/speed_controller.json index 79ceaa8505..c898a30e91 100644 --- a/src/generated/resources/data/create/advancement/speed_controller.json +++ b/src/generated/resources/data/create/advancement/speed_controller.json @@ -12,7 +12,6 @@ "translate": "advancement.create.speed_controller.desc" }, "icon": { - "count": 1, "id": "create:rotation_speed_controller" }, "title": { diff --git a/src/generated/resources/data/create/advancement/spout.json b/src/generated/resources/data/create/advancement/spout.json index 1fc527c757..0ac9f36de6 100644 --- a/src/generated/resources/data/create/advancement/spout.json +++ b/src/generated/resources/data/create/advancement/spout.json @@ -12,7 +12,6 @@ "translate": "advancement.create.spout.desc" }, "icon": { - "count": 1, "id": "create:spout" }, "title": { diff --git a/src/generated/resources/data/create/advancement/steam_engine.json b/src/generated/resources/data/create/advancement/steam_engine.json index 0737123c2a..c85dafdea1 100644 --- a/src/generated/resources/data/create/advancement/steam_engine.json +++ b/src/generated/resources/data/create/advancement/steam_engine.json @@ -12,7 +12,6 @@ "translate": "advancement.create.steam_engine.desc" }, "icon": { - "count": 1, "id": "create:steam_engine" }, "title": { diff --git a/src/generated/resources/data/create/advancement/steam_engine_maxed.json b/src/generated/resources/data/create/advancement/steam_engine_maxed.json index e09c39e699..17681804dd 100644 --- a/src/generated/resources/data/create/advancement/steam_engine_maxed.json +++ b/src/generated/resources/data/create/advancement/steam_engine_maxed.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:steam_engine" }, "title": { diff --git a/src/generated/resources/data/create/advancement/steam_whistle.json b/src/generated/resources/data/create/advancement/steam_whistle.json index ce9a4f617f..40988240d6 100644 --- a/src/generated/resources/data/create/advancement/steam_whistle.json +++ b/src/generated/resources/data/create/advancement/steam_whistle.json @@ -12,7 +12,6 @@ "translate": "advancement.create.steam_whistle.desc" }, "icon": { - "count": 1, "id": "create:steam_whistle" }, "title": { diff --git a/src/generated/resources/data/create/advancement/stock_ticker.json b/src/generated/resources/data/create/advancement/stock_ticker.json index 04e7ea3ef3..28bffc3cff 100644 --- a/src/generated/resources/data/create/advancement/stock_ticker.json +++ b/src/generated/resources/data/create/advancement/stock_ticker.json @@ -11,7 +11,6 @@ "translate": "advancement.create.stock_ticker.desc" }, "icon": { - "count": 1, "id": "create:stock_ticker" }, "title": { diff --git a/src/generated/resources/data/create/advancement/stressometer.json b/src/generated/resources/data/create/advancement/stressometer.json index 10a685ba99..c0f75df844 100644 --- a/src/generated/resources/data/create/advancement/stressometer.json +++ b/src/generated/resources/data/create/advancement/stressometer.json @@ -12,7 +12,6 @@ "translate": "advancement.create.stressometer.desc" }, "icon": { - "count": 1, "id": "create:stressometer" }, "title": { diff --git a/src/generated/resources/data/create/advancement/stressometer_maxed.json b/src/generated/resources/data/create/advancement/stressometer_maxed.json index 22c2a70b79..fd82dc1b58 100644 --- a/src/generated/resources/data/create/advancement/stressometer_maxed.json +++ b/src/generated/resources/data/create/advancement/stressometer_maxed.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:stressometer" }, "title": { diff --git a/src/generated/resources/data/create/advancement/sturdy_sheet.json b/src/generated/resources/data/create/advancement/sturdy_sheet.json index b5d7a66b05..98b7692726 100644 --- a/src/generated/resources/data/create/advancement/sturdy_sheet.json +++ b/src/generated/resources/data/create/advancement/sturdy_sheet.json @@ -19,7 +19,6 @@ "translate": "advancement.create.sturdy_sheet.desc" }, "icon": { - "count": 1, "id": "create:sturdy_sheet" }, "title": { diff --git a/src/generated/resources/data/create/advancement/super_glue.json b/src/generated/resources/data/create/advancement/super_glue.json index 027e7331e6..24e95d8ca8 100644 --- a/src/generated/resources/data/create/advancement/super_glue.json +++ b/src/generated/resources/data/create/advancement/super_glue.json @@ -12,7 +12,6 @@ "translate": "advancement.create.super_glue.desc" }, "icon": { - "count": 1, "id": "create:super_glue" }, "title": { diff --git a/src/generated/resources/data/create/advancement/table_cloth_shop.json b/src/generated/resources/data/create/advancement/table_cloth_shop.json index 220e443606..fb7a8c1d96 100644 --- a/src/generated/resources/data/create/advancement/table_cloth_shop.json +++ b/src/generated/resources/data/create/advancement/table_cloth_shop.json @@ -11,7 +11,6 @@ "translate": "advancement.create.table_cloth_shop.desc" }, "icon": { - "count": 1, "id": "create:red_table_cloth" }, "title": { diff --git a/src/generated/resources/data/create/advancement/track_0.json b/src/generated/resources/data/create/advancement/track_0.json index eb67522f0f..9d221641ea 100644 --- a/src/generated/resources/data/create/advancement/track_0.json +++ b/src/generated/resources/data/create/advancement/track_0.json @@ -19,7 +19,6 @@ "translate": "advancement.create.track_0.desc" }, "icon": { - "count": 1, "id": "create:track" }, "title": { diff --git a/src/generated/resources/data/create/advancement/track_crafting_factory.json b/src/generated/resources/data/create/advancement/track_crafting_factory.json index 13ee6455cf..f18706ecb7 100644 --- a/src/generated/resources/data/create/advancement/track_crafting_factory.json +++ b/src/generated/resources/data/create/advancement/track_crafting_factory.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:mechanical_press" }, "title": { diff --git a/src/generated/resources/data/create/advancement/track_signal.json b/src/generated/resources/data/create/advancement/track_signal.json index 40fcfc4495..f63c77a320 100644 --- a/src/generated/resources/data/create/advancement/track_signal.json +++ b/src/generated/resources/data/create/advancement/track_signal.json @@ -12,7 +12,6 @@ "translate": "advancement.create.track_signal.desc" }, "icon": { - "count": 1, "id": "create:track_signal" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train.json b/src/generated/resources/data/create/advancement/train.json index 28638cb63a..2e8d6577b7 100644 --- a/src/generated/resources/data/create/advancement/train.json +++ b/src/generated/resources/data/create/advancement/train.json @@ -11,7 +11,6 @@ "translate": "advancement.create.train.desc" }, "icon": { - "count": 1, "id": "create:track_station" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_casing_00.json b/src/generated/resources/data/create/advancement/train_casing_00.json index c5c8774837..75d034d7b6 100644 --- a/src/generated/resources/data/create/advancement/train_casing_00.json +++ b/src/generated/resources/data/create/advancement/train_casing_00.json @@ -12,7 +12,6 @@ "translate": "advancement.create.train_casing_00.desc" }, "icon": { - "count": 1, "id": "create:railway_casing" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_crash.json b/src/generated/resources/data/create/advancement/train_crash.json index 8627bdb878..2759ffb22a 100644 --- a/src/generated/resources/data/create/advancement/train_crash.json +++ b/src/generated/resources/data/create/advancement/train_crash.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:incomplete_track" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_crash_backwards.json b/src/generated/resources/data/create/advancement/train_crash_backwards.json index 9f38114e45..1fdf486b90 100644 --- a/src/generated/resources/data/create/advancement/train_crash_backwards.json +++ b/src/generated/resources/data/create/advancement/train_crash_backwards.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "create:incomplete_track" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_portal.json b/src/generated/resources/data/create/advancement/train_portal.json index de925fc67b..9a6d6a57b9 100644 --- a/src/generated/resources/data/create/advancement/train_portal.json +++ b/src/generated/resources/data/create/advancement/train_portal.json @@ -11,7 +11,6 @@ "translate": "advancement.create.train_portal.desc" }, "icon": { - "count": 1, "id": "minecraft:amethyst_block" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_roadkill.json b/src/generated/resources/data/create/advancement/train_roadkill.json index 2605653659..e3f9eb53c0 100644 --- a/src/generated/resources/data/create/advancement/train_roadkill.json +++ b/src/generated/resources/data/create/advancement/train_roadkill.json @@ -13,7 +13,6 @@ "frame": "goal", "hidden": true, "icon": { - "count": 1, "id": "minecraft:diamond_sword" }, "title": { diff --git a/src/generated/resources/data/create/advancement/train_whistle.json b/src/generated/resources/data/create/advancement/train_whistle.json index 97025b4839..097892be37 100644 --- a/src/generated/resources/data/create/advancement/train_whistle.json +++ b/src/generated/resources/data/create/advancement/train_whistle.json @@ -12,7 +12,6 @@ "translate": "advancement.create.train_whistle.desc" }, "icon": { - "count": 1, "id": "create:steam_whistle" }, "title": { diff --git a/src/generated/resources/data/create/advancement/water_supply.json b/src/generated/resources/data/create/advancement/water_supply.json index 76d7211949..526d425abc 100644 --- a/src/generated/resources/data/create/advancement/water_supply.json +++ b/src/generated/resources/data/create/advancement/water_supply.json @@ -12,7 +12,6 @@ "translate": "advancement.create.water_supply.desc" }, "icon": { - "count": 1, "id": "minecraft:water_bucket" }, "title": { diff --git a/src/generated/resources/data/create/advancement/water_wheel.json b/src/generated/resources/data/create/advancement/water_wheel.json index a7160034bd..4ea8ff05ba 100644 --- a/src/generated/resources/data/create/advancement/water_wheel.json +++ b/src/generated/resources/data/create/advancement/water_wheel.json @@ -12,7 +12,6 @@ "translate": "advancement.create.water_wheel.desc" }, "icon": { - "count": 1, "id": "create:water_wheel" }, "title": { diff --git a/src/generated/resources/data/create/advancement/windmill.json b/src/generated/resources/data/create/advancement/windmill.json index 5fd73bb67c..cab4108d4b 100644 --- a/src/generated/resources/data/create/advancement/windmill.json +++ b/src/generated/resources/data/create/advancement/windmill.json @@ -12,7 +12,6 @@ "translate": "advancement.create.windmill.desc" }, "icon": { - "count": 1, "id": "create:sail_frame" }, "title": { diff --git a/src/generated/resources/data/create/advancement/windmill_maxed.json b/src/generated/resources/data/create/advancement/windmill_maxed.json index 6bb6be550f..28f3b62460 100644 --- a/src/generated/resources/data/create/advancement/windmill_maxed.json +++ b/src/generated/resources/data/create/advancement/windmill_maxed.json @@ -12,7 +12,6 @@ }, "frame": "goal", "icon": { - "count": 1, "id": "create:white_sail" }, "title": { diff --git a/src/generated/resources/data/create/advancement/wrench_goggles.json b/src/generated/resources/data/create/advancement/wrench_goggles.json index 37631feed6..6ce0b6e5b5 100644 --- a/src/generated/resources/data/create/advancement/wrench_goggles.json +++ b/src/generated/resources/data/create/advancement/wrench_goggles.json @@ -29,7 +29,6 @@ "translate": "advancement.create.wrench_goggles.desc" }, "icon": { - "count": 1, "id": "create:wrench" }, "title": { diff --git a/src/generated/resources/data/create/create/potato_projectile/type/enchanted_golden_apple.json b/src/generated/resources/data/create/create/potato_projectile/type/enchanted_golden_apple.json index 3debb2bf5c..d946f8f79e 100644 --- a/src/generated/resources/data/create/create/potato_projectile/type/enchanted_golden_apple.json +++ b/src/generated/resources/data/create/create/potato_projectile/type/enchanted_golden_apple.json @@ -5,54 +5,6 @@ "type": "create:food_effects", "food_property": { "can_always_eat": true, - "effects": [ - { - "effect": { - "amplifier": 1, - "duration": 400, - "id": "minecraft:regeneration", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - }, - { - "effect": { - "duration": 6000, - "id": "minecraft:resistance", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - }, - { - "effect": { - "duration": 6000, - "id": "minecraft:fire_resistance", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - }, - { - "effect": { - "amplifier": 3, - "duration": 2400, - "id": "minecraft:absorption", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - } - ], "nutrition": 4, "saturation": 9.6 }, diff --git a/src/generated/resources/data/create/create/potato_projectile/type/pufferfish.json b/src/generated/resources/data/create/create/potato_projectile/type/pufferfish.json index 2443f6f79e..0910f17bf6 100644 --- a/src/generated/resources/data/create/create/potato_projectile/type/pufferfish.json +++ b/src/generated/resources/data/create/create/potato_projectile/type/pufferfish.json @@ -5,44 +5,6 @@ "on_entity_hit": { "type": "create:food_effects", "food_property": { - "effects": [ - { - "effect": { - "amplifier": 1, - "duration": 1200, - "id": "minecraft:poison", - "neoforge:cures": [ - "protected_by_totem", - "honey", - "milk" - ], - "show_icon": true - } - }, - { - "effect": { - "amplifier": 2, - "duration": 300, - "id": "minecraft:hunger", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - }, - { - "effect": { - "duration": 300, - "id": "minecraft:nausea", - "neoforge:cures": [ - "protected_by_totem", - "milk" - ], - "show_icon": true - } - } - ], "nutrition": 1, "saturation": 0.2 }, diff --git a/src/generated/resources/data/create/create/potato_projectile/type/suspicious_stew.json b/src/generated/resources/data/create/create/potato_projectile/type/suspicious_stew.json index f6ce92e6fa..f8905faebe 100644 --- a/src/generated/resources/data/create/create/potato_projectile/type/suspicious_stew.json +++ b/src/generated/resources/data/create/create/potato_projectile/type/suspicious_stew.json @@ -1,7 +1,6 @@ { "damage": 3, "drop_stack": { - "count": 1, "id": "minecraft:bowl" }, "items": "minecraft:suspicious_stew", diff --git a/src/generated/resources/data/create/curios/entities/players.json b/src/generated/resources/data/create/curios/entities/players.json deleted file mode 100644 index e109155425..0000000000 --- a/src/generated/resources/data/create/curios/entities/players.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "entities": [ - "minecraft:player" - ], - "slots": [ - "head" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/enchantment/potato_recovery.json b/src/generated/resources/data/create/enchantment/potato_recovery.json index 76f9274c1d..0e7d9f8e2f 100644 --- a/src/generated/resources/data/create/enchantment/potato_recovery.json +++ b/src/generated/resources/data/create/enchantment/potato_recovery.json @@ -17,7 +17,7 @@ "requirements": { "condition": "minecraft:match_tool", "predicate": { - "items": [] + "items": "create:potato_cannon" } } } diff --git a/src/generated/resources/data/create/loot_table/blocks/acacia_window.json b/src/generated/resources/data/create/loot_table/blocks/acacia_window.json index f4fa170853..1f24270204 100644 --- a/src/generated/resources/data/create/loot_table/blocks/acacia_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/acacia_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/acacia_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/acacia_window_pane.json index 1cf1b53794..dc280cf175 100644 --- a/src/generated/resources/data/create/loot_table/blocks/acacia_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/acacia_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/adjustable_chain_gearshift.json b/src/generated/resources/data/create/loot_table/blocks/adjustable_chain_gearshift.json index c9cace58b7..2311dbad86 100644 --- a/src/generated/resources/data/create/loot_table/blocks/adjustable_chain_gearshift.json +++ b/src/generated/resources/data/create/loot_table/blocks/adjustable_chain_gearshift.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/analog_lever.json b/src/generated/resources/data/create/loot_table/blocks/analog_lever.json index 0a01548943..0496cd1e43 100644 --- a/src/generated/resources/data/create/loot_table/blocks/analog_lever.json +++ b/src/generated/resources/data/create/loot_table/blocks/analog_lever.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_alloy_block.json b/src/generated/resources/data/create/loot_table/blocks/andesite_alloy_block.json index 650d48a1c3..4203676367 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_alloy_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_alloy_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_bars.json b/src/generated/resources/data/create/loot_table/blocks/andesite_bars.json index d9ed3e4bb9..5365e4d6c7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_bars.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_bars.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_belt_funnel.json b/src/generated/resources/data/create/loot_table/blocks/andesite_belt_funnel.json index 6bacfe1d8c..442e1a0389 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_belt_funnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_belt_funnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_casing.json b/src/generated/resources/data/create/loot_table/blocks/andesite_casing.json index e8265b89bc..55a2b545fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_door.json b/src/generated/resources/data/create/loot_table/blocks/andesite_door.json index 7a2aa1b440..f2f9336d74 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_door.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_door.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_cogwheel.json index 3c92a0106d..64602c6b24 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_large_cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_large_cogwheel.json index 3be6f8bb51..680885569c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_large_cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_large_cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_shaft.json b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_shaft.json index 62ffcff90c..ea3ad75d4f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_encased_shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_encased_shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_funnel.json b/src/generated/resources/data/create/loot_table/blocks/andesite_funnel.json index 332e67693f..dfbed3f7b2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_funnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_funnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_ladder.json b/src/generated/resources/data/create/loot_table/blocks/andesite_ladder.json index 21a01185ed..e805e2442a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_ladder.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_ladder.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_pillar.json b/src/generated/resources/data/create/loot_table/blocks/andesite_pillar.json index b37e93c846..5a38321ec9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_scaffolding.json b/src/generated/resources/data/create/loot_table/blocks/andesite_scaffolding.json index 3695965c5a..db6c4815ed 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_scaffolding.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_scaffolding.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/andesite_table_cloth.json index d5dcbb5a9e..73aa95c0e3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/andesite_tunnel.json b/src/generated/resources/data/create/loot_table/blocks/andesite_tunnel.json index 98c08b92e2..72d6009d27 100644 --- a/src/generated/resources/data/create/loot_table/blocks/andesite_tunnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/andesite_tunnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/asurine.json b/src/generated/resources/data/create/loot_table/blocks/asurine.json index 4c115991c9..7a0854485e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/asurine.json +++ b/src/generated/resources/data/create/loot_table/blocks/asurine.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/asurine_pillar.json b/src/generated/resources/data/create/loot_table/blocks/asurine_pillar.json index f385bf264f..68af96894f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/asurine_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/asurine_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/bamboo_window.json b/src/generated/resources/data/create/loot_table/blocks/bamboo_window.json index ee92a227cf..83e9cc111b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/bamboo_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/bamboo_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/bamboo_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/bamboo_window_pane.json index 5f687cf003..1e141ecfce 100644 --- a/src/generated/resources/data/create/loot_table/blocks/bamboo_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/bamboo_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/basin.json b/src/generated/resources/data/create/loot_table/blocks/basin.json index 065d106c50..5a2f003b14 100644 --- a/src/generated/resources/data/create/loot_table/blocks/basin.json +++ b/src/generated/resources/data/create/loot_table/blocks/basin.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/belt.json b/src/generated/resources/data/create/loot_table/blocks/belt.json index 75e48e2a7d..dcb5dd0c68 100644 --- a/src/generated/resources/data/create/loot_table/blocks/belt.json +++ b/src/generated/resources/data/create/loot_table/blocks/belt.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/birch_window.json b/src/generated/resources/data/create/loot_table/blocks/birch_window.json index e0532146ca..caf22953ba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/birch_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/birch_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/birch_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/birch_window_pane.json index 256f18ea4a..037dffd26b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/birch_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/birch_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/black_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/black_nixie_tube.json index eb11c7f6b0..62bd3a0320 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_postbox.json b/src/generated/resources/data/create/loot_table/blocks/black_postbox.json index 6392812530..e6877e80ee 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_sail.json b/src/generated/resources/data/create/loot_table/blocks/black_sail.json index 42eaf48f27..d4332436ec 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_seat.json b/src/generated/resources/data/create/loot_table/blocks/black_seat.json index 8dc73c58c7..5178dc366b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/black_table_cloth.json index bcfb49077d..6190e94bbd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/black_toolbox.json index 690bdffc2c..33ff5d690a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/black_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/black_valve_handle.json index 500ba8398f..396d51b148 100644 --- a/src/generated/resources/data/create/loot_table/blocks/black_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/black_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blaze_burner.json b/src/generated/resources/data/create/loot_table/blocks/blaze_burner.json index 7b5bc60e56..422b1a3c65 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blaze_burner.json +++ b/src/generated/resources/data/create/loot_table/blocks/blaze_burner.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/blue_nixie_tube.json index 01c66c7727..531a71a0f5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_postbox.json b/src/generated/resources/data/create/loot_table/blocks/blue_postbox.json index 14e3805b2a..c27f286d1d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_sail.json b/src/generated/resources/data/create/loot_table/blocks/blue_sail.json index 38cf44aa0c..27bd7740e7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_seat.json b/src/generated/resources/data/create/loot_table/blocks/blue_seat.json index 53fd3011dd..535ead2e79 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/blue_table_cloth.json index 8d0aa383a8..d8e6825450 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/blue_toolbox.json index 9d880d200a..e3e27500b6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/blue_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/blue_valve_handle.json index fd3af6aa4a..fdbc58887a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/blue_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/blue_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/bound_cardboard_block.json b/src/generated/resources/data/create/loot_table/blocks/bound_cardboard_block.json index 9a8b4882d9..b3c305e943 100644 --- a/src/generated/resources/data/create/loot_table/blocks/bound_cardboard_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/bound_cardboard_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", @@ -43,7 +42,6 @@ "rolls": 1.0 }, { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:inverted", diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_bars.json b/src/generated/resources/data/create/loot_table/blocks/brass_bars.json index 1c065dc17b..8aed74ec41 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_bars.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_bars.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_belt_funnel.json b/src/generated/resources/data/create/loot_table/blocks/brass_belt_funnel.json index a278689137..b81bb93a9f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_belt_funnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_belt_funnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_block.json b/src/generated/resources/data/create/loot_table/blocks/brass_block.json index 8ea75163c5..ef5ff8297e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_casing.json b/src/generated/resources/data/create/loot_table/blocks/brass_casing.json index 80e6051d39..5422b40b67 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_door.json b/src/generated/resources/data/create/loot_table/blocks/brass_door.json index d94639f24f..98fb72f0da 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_door.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_door.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_encased_cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/brass_encased_cogwheel.json index 803365c422..9aadad0e76 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_encased_cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_encased_cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_encased_large_cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/brass_encased_large_cogwheel.json index 042eaf459b..e66bc87501 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_encased_large_cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_encased_large_cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_encased_shaft.json b/src/generated/resources/data/create/loot_table/blocks/brass_encased_shaft.json index 0372346ed0..64f06bed3d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_encased_shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_encased_shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_funnel.json b/src/generated/resources/data/create/loot_table/blocks/brass_funnel.json index c3c93097f6..6f47070879 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_funnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_funnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_ladder.json b/src/generated/resources/data/create/loot_table/blocks/brass_ladder.json index ee8bf60fe5..b659907742 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_ladder.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_ladder.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_scaffolding.json b/src/generated/resources/data/create/loot_table/blocks/brass_scaffolding.json index fc1b018a3c..0193306b41 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_scaffolding.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_scaffolding.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/brass_table_cloth.json index 28df84a681..390f8bf8ad 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brass_tunnel.json b/src/generated/resources/data/create/loot_table/blocks/brass_tunnel.json index 65b01973a9..a945621d6c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brass_tunnel.json +++ b/src/generated/resources/data/create/loot_table/blocks/brass_tunnel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/brown_nixie_tube.json index 51355b1bf6..83ee53209e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_postbox.json b/src/generated/resources/data/create/loot_table/blocks/brown_postbox.json index 547a1f196d..14ac57d278 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_sail.json b/src/generated/resources/data/create/loot_table/blocks/brown_sail.json index 74d9e458e6..165f6d9a48 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_seat.json b/src/generated/resources/data/create/loot_table/blocks/brown_seat.json index d7690d0453..c3fb807800 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/brown_table_cloth.json index d8c66cdb82..857e9293b9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/brown_toolbox.json index b225e5cee2..b82180c5ef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/brown_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/brown_valve_handle.json index 96b4610b0a..22b99e18ed 100644 --- a/src/generated/resources/data/create/loot_table/blocks/brown_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/brown_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/calcite_pillar.json b/src/generated/resources/data/create/loot_table/blocks/calcite_pillar.json index 4bef8c00ce..5a2bd7fee1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/calcite_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/calcite_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cardboard_block.json b/src/generated/resources/data/create/loot_table/blocks/cardboard_block.json index edd4a2520b..f2b4071648 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cardboard_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/cardboard_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cart_assembler.json b/src/generated/resources/data/create/loot_table/blocks/cart_assembler.json index 7124898537..0d2e99d664 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cart_assembler.json +++ b/src/generated/resources/data/create/loot_table/blocks/cart_assembler.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/chain_conveyor.json b/src/generated/resources/data/create/loot_table/blocks/chain_conveyor.json index 2f5a7f326e..e68e2050e1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/chain_conveyor.json +++ b/src/generated/resources/data/create/loot_table/blocks/chain_conveyor.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cherry_window.json b/src/generated/resources/data/create/loot_table/blocks/cherry_window.json index dc0ab597b6..63e433f7bc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cherry_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/cherry_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/cherry_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/cherry_window_pane.json index 9a0d60d8bc..899425c640 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cherry_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/cherry_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/chute.json b/src/generated/resources/data/create/loot_table/blocks/chute.json index cf41d8a444..790a417eda 100644 --- a/src/generated/resources/data/create/loot_table/blocks/chute.json +++ b/src/generated/resources/data/create/loot_table/blocks/chute.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/clockwork_bearing.json b/src/generated/resources/data/create/loot_table/blocks/clockwork_bearing.json index b22e7eaa84..4a7dd5f629 100644 --- a/src/generated/resources/data/create/loot_table/blocks/clockwork_bearing.json +++ b/src/generated/resources/data/create/loot_table/blocks/clockwork_bearing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/clutch.json b/src/generated/resources/data/create/loot_table/blocks/clutch.json index a0f6e568e9..3a62cfd25b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/clutch.json +++ b/src/generated/resources/data/create/loot_table/blocks/clutch.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/cogwheel.json index 3191cda028..a0e7128532 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/content_observer.json b/src/generated/resources/data/create/loot_table/blocks/content_observer.json index 6e0b8bfd94..cc3b9958af 100644 --- a/src/generated/resources/data/create/loot_table/blocks/content_observer.json +++ b/src/generated/resources/data/create/loot_table/blocks/content_observer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/contraption_controls.json b/src/generated/resources/data/create/loot_table/blocks/contraption_controls.json index 761f12ae3c..7e26d99d29 100644 --- a/src/generated/resources/data/create/loot_table/blocks/contraption_controls.json +++ b/src/generated/resources/data/create/loot_table/blocks/contraption_controls.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/controller_rail.json b/src/generated/resources/data/create/loot_table/blocks/controller_rail.json index db4ea39b7b..ae2a74ce47 100644 --- a/src/generated/resources/data/create/loot_table/blocks/controller_rail.json +++ b/src/generated/resources/data/create/loot_table/blocks/controller_rail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/controls.json b/src/generated/resources/data/create/loot_table/blocks/controls.json index ac5773e62c..f38bc44506 100644 --- a/src/generated/resources/data/create/loot_table/blocks/controls.json +++ b/src/generated/resources/data/create/loot_table/blocks/controls.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_backtank.json b/src/generated/resources/data/create/loot_table/blocks/copper_backtank.json index 81134dc8e1..51dee5e05b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_backtank.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_backtank.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_bars.json b/src/generated/resources/data/create/loot_table/blocks/copper_bars.json index f09a1ecc72..7afe369d69 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_bars.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_bars.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_casing.json b/src/generated/resources/data/create/loot_table/blocks/copper_casing.json index cadc853d35..c8fbf7683c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_door.json b/src/generated/resources/data/create/loot_table/blocks/copper_door.json index ba324954e8..a4e4bd93c9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_door.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_door.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_ladder.json b/src/generated/resources/data/create/loot_table/blocks/copper_ladder.json index 6c4a9219eb..61c6ce4fe8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_ladder.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_ladder.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_scaffolding.json b/src/generated/resources/data/create/loot_table/blocks/copper_scaffolding.json index 9e209c0b1b..d76b7cea57 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_scaffolding.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_scaffolding.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/copper_shingle_slab.json index 65a78c2d35..f19e8ac1be 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/copper_shingle_stairs.json index 83f7ccfe92..eef772a867 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/copper_shingles.json index 81713d6f0c..e3b22c66ca 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/copper_table_cloth.json index ce500397b5..1d646398f4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/copper_tile_slab.json index 16c3a479bc..7f39babc69 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/copper_tile_stairs.json index e32e2de014..494bf33edb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/copper_tiles.json index 80e9cceb64..79cfd2402c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copper_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/copper_valve_handle.json index 48700c6002..ac3d15facd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copper_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/copper_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copycat_bars.json b/src/generated/resources/data/create/loot_table/blocks/copycat_bars.json index 2db2c32df9..17640b691e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copycat_bars.json +++ b/src/generated/resources/data/create/loot_table/blocks/copycat_bars.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/copycat_bars" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/copycat_base.json b/src/generated/resources/data/create/loot_table/blocks/copycat_base.json index 4d75792606..a356615018 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copycat_base.json +++ b/src/generated/resources/data/create/loot_table/blocks/copycat_base.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/copycat_base" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/copycat_panel.json b/src/generated/resources/data/create/loot_table/blocks/copycat_panel.json index b804f5d0cb..5a302e1b44 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copycat_panel.json +++ b/src/generated/resources/data/create/loot_table/blocks/copycat_panel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/copycat_step.json b/src/generated/resources/data/create/loot_table/blocks/copycat_step.json index 3dbce9b80a..52f679ad2a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/copycat_step.json +++ b/src/generated/resources/data/create/loot_table/blocks/copycat_step.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/creative_crate.json b/src/generated/resources/data/create/loot_table/blocks/creative_crate.json index ef54d0ea3d..8811295f05 100644 --- a/src/generated/resources/data/create/loot_table/blocks/creative_crate.json +++ b/src/generated/resources/data/create/loot_table/blocks/creative_crate.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/creative_fluid_tank.json b/src/generated/resources/data/create/loot_table/blocks/creative_fluid_tank.json index d308e7959a..c371f32094 100644 --- a/src/generated/resources/data/create/loot_table/blocks/creative_fluid_tank.json +++ b/src/generated/resources/data/create/loot_table/blocks/creative_fluid_tank.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/creative_motor.json b/src/generated/resources/data/create/loot_table/blocks/creative_motor.json index 4f63efca2a..8db82c5321 100644 --- a/src/generated/resources/data/create/loot_table/blocks/creative_motor.json +++ b/src/generated/resources/data/create/loot_table/blocks/creative_motor.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/crimsite.json b/src/generated/resources/data/create/loot_table/blocks/crimsite.json index 5b3a2c22f5..0b3bc3d709 100644 --- a/src/generated/resources/data/create/loot_table/blocks/crimsite.json +++ b/src/generated/resources/data/create/loot_table/blocks/crimsite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/crimsite_pillar.json b/src/generated/resources/data/create/loot_table/blocks/crimsite_pillar.json index d5ef059b0a..ae5ca75447 100644 --- a/src/generated/resources/data/create/loot_table/blocks/crimsite_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/crimsite_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/crimson_window.json b/src/generated/resources/data/create/loot_table/blocks/crimson_window.json index 6cb5b5f29f..b709bc47e8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/crimson_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/crimson_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/crimson_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/crimson_window_pane.json index e660a828c0..b153b64ecf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/crimson_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/crimson_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/crushing_wheel.json b/src/generated/resources/data/create/loot_table/blocks/crushing_wheel.json index 0180f4b887..65ad62b9f7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/crushing_wheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/crushing_wheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cuckoo_clock.json b/src/generated/resources/data/create/loot_table/blocks/cuckoo_clock.json index ff11801570..43aace7497 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cuckoo_clock.json +++ b/src/generated/resources/data/create/loot_table/blocks/cuckoo_clock.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite.json index 664187ff5c..2ae126caf7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_slab.json index 26ac327746..c036e141f3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_andesite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_stairs.json index 367e6db0e8..7149e18035 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_wall.json index 5a1a14d3f6..afc2d76ddd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_bricks.json index 744330b645..2013af5dec 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_slab.json index 84b1ddf33e..90b761c295 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_andesite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_stairs.json index 7206741b3a..72487fa47c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_wall.json index 6731e402bf..4f0f4fbf3c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_andesite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_andesite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine.json index 9a5432ac72..f4010a0da5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_slab.json index a0770cfca6..0fd818c7f5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_asurine_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_stairs.json index 72f4966e1d..59df70e407 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_wall.json index d0c1710158..a0d133857f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_bricks.json index b334679aa6..c41b9b6683 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_slab.json index 8f856a5042..1c4f44324b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_asurine_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_stairs.json index 946aeab155..3cf3e2cb88 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_wall.json index 72905f458f..51698c7e21 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_asurine_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_asurine_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite.json index bc2fdb1c9e..ab7f42a9dd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_slab.json index 8d067b235d..ea74447267 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_calcite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_stairs.json index c084fdbcdf..6ed627b16f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_wall.json index 7f4e8129ed..057aa3d381 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_bricks.json index 65e8303711..e796abb622 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_slab.json index 54c33121d9..efae464ad3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_calcite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_stairs.json index 90950bd61a..dacc82f24e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_wall.json index 23dcc2743b..d05acc9625 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_calcite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_calcite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite.json index e75152c5bd..712b2873e9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_slab.json index dffbd7eb4b..9f59c3bfc4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_crimsite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_stairs.json index 42ed2e15e9..206ff608bb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_wall.json index bc2574595c..fe7a524229 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_bricks.json index 13810cc0d6..c67406f300 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_slab.json index 520699d51f..7afbe52500 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_crimsite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_stairs.json index f096d22f3e..a64f5fe2cf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_wall.json index a9aa6723f3..9b4e5c4df8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_crimsite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate.json index 0533ee02a6..c0f1de6450 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_slab.json index 9a9dbc93cc..b3d23300f6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_deepslate_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_stairs.json index 4d5bad8051..90b5cc36bb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_wall.json index 6b83377029..9459d72a08 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_bricks.json index 5870e72e4a..79774c41ef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_slab.json index ecd1f8e540..154195a6be 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_deepslate_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_stairs.json index 1ef3c061c2..f463b7f19a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_wall.json index 9f27353f84..8436eeae1c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_deepslate_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite.json index 37a59508e5..43c987caa2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_slab.json index de1f5e1f74..138adc305f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_diorite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_stairs.json index 0972baf98a..be34bec24c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_wall.json index d260d1face..ad7e9cc143 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_bricks.json index 813d3e0b8d..53d1573f1d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_slab.json index cb051314ef..042aa82948 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_diorite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_stairs.json index 92af1f2355..6f05bccbba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_wall.json index 3367d4fb3c..3df6c0efa2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_diorite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_diorite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone.json index 1564bb1f21..7c481e8488 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_slab.json index 8f10dabf17..34fe18736e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_dripstone_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_stairs.json index c6c8ff89e1..d8a43badd6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_wall.json index 65e214a414..bec11c4052 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_bricks.json index 203b1591fd..76ddf17ad0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_slab.json index c4a3b710db..a4dc9b16ee 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_dripstone_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_stairs.json index 90051a5920..b566ccf2a8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_wall.json index 1dbb87b5da..e04cb147ca 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_dripstone_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite.json index afb3ad35b6..9c2e4532f1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_slab.json index 483839d0e8..93f5a2f167 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_granite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_stairs.json index 6c5c2d3f69..77b6048e19 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_wall.json index aca3414e5d..2590f2a1cf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_bricks.json index bb2776ca11..eef8f6d45c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_slab.json index e0ecd2ead0..dd78174ff9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_granite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_stairs.json index ad83e5b6f1..c0b0d6ef93 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_granite_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_granite_wall.json index 93f8cd712b..5aa2b0ac66 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_granite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_granite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone.json index d1c0962379..46a221c79a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_slab.json index 123eafccaa..0d7f397f6c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_limestone_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_stairs.json index 03be34ed8f..3c225f4311 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_wall.json index 124166e091..186313418d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_bricks.json index c29cc0c82f..e3cbc09587 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_slab.json index 456b47b150..1e65e6ea55 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_limestone_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_stairs.json index 39d1a9923a..1b65a38603 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_wall.json index d44c86123f..5511ddca2b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_limestone_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_limestone_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum.json index 59f8abda79..b7a2b179fd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_slab.json index e45ac40539..31977aaede 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_ochrum_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_stairs.json index 896e71503d..062d4eeb54 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_wall.json index 438d2578d7..b9cb8f99ca 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_bricks.json index dfdec926b0..8cf06a3e4f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_slab.json index 0298dd4433..f2196b3896 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_ochrum_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_stairs.json index 036cf4823b..1134fae740 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_wall.json index 985261eeab..f1eaf6517a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_ochrum_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia.json index c5a74bb4de..c520a8c3b4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_slab.json index 4639b328b0..a1f02a3141 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_scorchia_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_stairs.json index 1845775bcb..dfece8a2ba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_wall.json index bd78e5c7bb..b9bae7bc0e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_bricks.json index 39920a83e2..10a46625ef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_slab.json index e5089c4cde..f1ce8430bc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_scorchia_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_stairs.json index 97abdb5e20..43fd374b1b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_wall.json index d0ea587b1f..fb55b49288 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scorchia_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria.json index 72204535e0..74c522a291 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_slab.json index c9cf2d21ae..68f45f065a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_scoria_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_stairs.json index 170a853f0f..d3d2a4c6ac 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_wall.json index f2048c6bdb..26cc00466e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_bricks.json index 7252f584bb..089da3b556 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_slab.json index f6e7714955..f56eb611bf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_scoria_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_stairs.json index 0842a851e4..93084b5aa7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_wall.json index 25decaef81..b253e2c522 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_scoria_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_scoria_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff.json index ccf30d088d..e50a937e02 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_slab.json index f754d72671..21fcdbb437 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_tuff_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_stairs.json index a7bd0c84a4..4e35e86c71 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_wall.json index e3b4134891..d11ff0d211 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_bricks.json index bd9a3dc658..5ce696bf1d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_slab.json index d10b6e13c1..07ad113e93 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_tuff_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_stairs.json index 08fed82a98..dc07dbce7c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_wall.json index 0cda6cfe14..7295185ae8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_tuff_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_tuff_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium.json index 1338876e1d..d2bbe8977d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_slab.json index 864ea613c6..4bd85504fa 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_veridium_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_stairs.json index 4ce372d81d..af81f616fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_wall.json index e2d2833879..7932129d92 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_bricks.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_bricks.json index 2a44cb82cb..221a37be0f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_slab.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_slab.json index fa79376f73..2e59f2e185 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:cut_veridium_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_stairs.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_stairs.json index a46b915fd1..9c0b47a582 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_wall.json b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_wall.json index 8514124935..c2a5ce31ca 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cut_veridium_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/cut_veridium_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/cyan_nixie_tube.json index a087b4c2da..0538599d15 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_postbox.json b/src/generated/resources/data/create/loot_table/blocks/cyan_postbox.json index 5c7be1045d..0f7f811cb9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_sail.json b/src/generated/resources/data/create/loot_table/blocks/cyan_sail.json index 0bcf85d48c..73eb30e82f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_seat.json b/src/generated/resources/data/create/loot_table/blocks/cyan_seat.json index 369f6ffcd3..d670866c6a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/cyan_table_cloth.json index f6214c3ff5..004a5e7d9c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/cyan_toolbox.json index 4d592c563d..a1472639e7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/cyan_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/cyan_valve_handle.json index c6bd70acba..d2e0cabc7b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/cyan_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/cyan_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/dark_oak_window.json b/src/generated/resources/data/create/loot_table/blocks/dark_oak_window.json index 5ce3bc42bd..c24a8701a0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/dark_oak_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/dark_oak_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/dark_oak_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/dark_oak_window_pane.json index e9ccaed9af..647e66527f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/dark_oak_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/dark_oak_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/deepslate_pillar.json b/src/generated/resources/data/create/loot_table/blocks/deepslate_pillar.json index 053fb2a4a9..7a172f0c0f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/deepslate_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/deepslate_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/deepslate_zinc_ore.json b/src/generated/resources/data/create/loot_table/blocks/deepslate_zinc_ore.json index abe41b4d58..fa5c0d4ace 100644 --- a/src/generated/resources/data/create/loot_table/blocks/deepslate_zinc_ore.json +++ b/src/generated/resources/data/create/loot_table/blocks/deepslate_zinc_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/generated/resources/data/create/loot_table/blocks/deployer.json b/src/generated/resources/data/create/loot_table/blocks/deployer.json index d46e40b701..9e37ac2879 100644 --- a/src/generated/resources/data/create/loot_table/blocks/deployer.json +++ b/src/generated/resources/data/create/loot_table/blocks/deployer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/depot.json b/src/generated/resources/data/create/loot_table/blocks/depot.json index c0c7d84001..b64c915532 100644 --- a/src/generated/resources/data/create/loot_table/blocks/depot.json +++ b/src/generated/resources/data/create/loot_table/blocks/depot.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/desk_bell.json b/src/generated/resources/data/create/loot_table/blocks/desk_bell.json index baa0dfa9c3..fdb1e1d4fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/desk_bell.json +++ b/src/generated/resources/data/create/loot_table/blocks/desk_bell.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/diorite_pillar.json b/src/generated/resources/data/create/loot_table/blocks/diorite_pillar.json index 64c240c76c..d026aeb0a8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/diorite_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/diorite_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/display_board.json b/src/generated/resources/data/create/loot_table/blocks/display_board.json index 1b30f19cfb..5d411d291a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/display_board.json +++ b/src/generated/resources/data/create/loot_table/blocks/display_board.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/display_link.json b/src/generated/resources/data/create/loot_table/blocks/display_link.json index f53f1095bc..9e22cf3e61 100644 --- a/src/generated/resources/data/create/loot_table/blocks/display_link.json +++ b/src/generated/resources/data/create/loot_table/blocks/display_link.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/dripstone_pillar.json b/src/generated/resources/data/create/loot_table/blocks/dripstone_pillar.json index b66e8059d0..8fd7d097ce 100644 --- a/src/generated/resources/data/create/loot_table/blocks/dripstone_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/dripstone_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/elevator_contact.json b/src/generated/resources/data/create/loot_table/blocks/elevator_contact.json index 445c71b93b..c50f9a59a9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/elevator_contact.json +++ b/src/generated/resources/data/create/loot_table/blocks/elevator_contact.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/elevator_pulley.json b/src/generated/resources/data/create/loot_table/blocks/elevator_pulley.json index 5db11f865a..ca77b6b4c0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/elevator_pulley.json +++ b/src/generated/resources/data/create/loot_table/blocks/elevator_pulley.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/encased_chain_drive.json b/src/generated/resources/data/create/loot_table/blocks/encased_chain_drive.json index 0f0463b3c2..b33267d112 100644 --- a/src/generated/resources/data/create/loot_table/blocks/encased_chain_drive.json +++ b/src/generated/resources/data/create/loot_table/blocks/encased_chain_drive.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/encased_fan.json b/src/generated/resources/data/create/loot_table/blocks/encased_fan.json index 99ed187087..be8131e7c4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/encased_fan.json +++ b/src/generated/resources/data/create/loot_table/blocks/encased_fan.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/encased_fluid_pipe.json b/src/generated/resources/data/create/loot_table/blocks/encased_fluid_pipe.json index d4597e350c..596361a901 100644 --- a/src/generated/resources/data/create/loot_table/blocks/encased_fluid_pipe.json +++ b/src/generated/resources/data/create/loot_table/blocks/encased_fluid_pipe.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/experience_block.json b/src/generated/resources/data/create/loot_table/blocks/experience_block.json index 2370fff4b5..f29a7ed991 100644 --- a/src/generated/resources/data/create/loot_table/blocks/experience_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/experience_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_slab.json index 34715f1262..73e3b44206 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:exposed_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_stairs.json index 6b13536e0d..149bd08994 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingles.json index 7e4de4311c..15220b358d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_slab.json index a7f9114a06..f2c9270e68 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:exposed_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_stairs.json index adf131bd94..88e4335b52 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tiles.json index a98525dc9b..748784f5b5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/exposed_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/factory_gauge.json b/src/generated/resources/data/create/loot_table/blocks/factory_gauge.json index ea2899df42..76100e68d3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/factory_gauge.json +++ b/src/generated/resources/data/create/loot_table/blocks/factory_gauge.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/fake_track.json b/src/generated/resources/data/create/loot_table/blocks/fake_track.json index 5c5c6a1155..7aa4ee598b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/fake_track.json +++ b/src/generated/resources/data/create/loot_table/blocks/fake_track.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/fake_track" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/fluid_pipe.json b/src/generated/resources/data/create/loot_table/blocks/fluid_pipe.json index 573849df3b..6e383fb66b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/fluid_pipe.json +++ b/src/generated/resources/data/create/loot_table/blocks/fluid_pipe.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/fluid_tank.json b/src/generated/resources/data/create/loot_table/blocks/fluid_tank.json index 4fda5c256e..5ca36c2edc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/fluid_tank.json +++ b/src/generated/resources/data/create/loot_table/blocks/fluid_tank.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/fluid_valve.json b/src/generated/resources/data/create/loot_table/blocks/fluid_valve.json index f9fc0016fa..0341bd9aab 100644 --- a/src/generated/resources/data/create/loot_table/blocks/fluid_valve.json +++ b/src/generated/resources/data/create/loot_table/blocks/fluid_valve.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/flywheel.json b/src/generated/resources/data/create/loot_table/blocks/flywheel.json index 0e8b0b4927..3d8d90c948 100644 --- a/src/generated/resources/data/create/loot_table/blocks/flywheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/flywheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/framed_glass.json b/src/generated/resources/data/create/loot_table/blocks/framed_glass.json index 9217dcf2cc..2c7aaae76f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/framed_glass.json +++ b/src/generated/resources/data/create/loot_table/blocks/framed_glass.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/framed_glass_door.json b/src/generated/resources/data/create/loot_table/blocks/framed_glass_door.json index 009b34aafd..8861922170 100644 --- a/src/generated/resources/data/create/loot_table/blocks/framed_glass_door.json +++ b/src/generated/resources/data/create/loot_table/blocks/framed_glass_door.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/framed_glass_pane.json b/src/generated/resources/data/create/loot_table/blocks/framed_glass_pane.json index 4fd9e403d2..a4d826fc28 100644 --- a/src/generated/resources/data/create/loot_table/blocks/framed_glass_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/framed_glass_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/framed_glass_trapdoor.json b/src/generated/resources/data/create/loot_table/blocks/framed_glass_trapdoor.json index c097efb4c8..4fa5a1a406 100644 --- a/src/generated/resources/data/create/loot_table/blocks/framed_glass_trapdoor.json +++ b/src/generated/resources/data/create/loot_table/blocks/framed_glass_trapdoor.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gantry_carriage.json b/src/generated/resources/data/create/loot_table/blocks/gantry_carriage.json index e12ee01ba4..c99d2be784 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gantry_carriage.json +++ b/src/generated/resources/data/create/loot_table/blocks/gantry_carriage.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gantry_shaft.json b/src/generated/resources/data/create/loot_table/blocks/gantry_shaft.json index 4f3b671630..1a2cc77a95 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gantry_shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/gantry_shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gearbox.json b/src/generated/resources/data/create/loot_table/blocks/gearbox.json index 09dcd00fac..7da5c18ce8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gearbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/gearbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gearshift.json b/src/generated/resources/data/create/loot_table/blocks/gearshift.json index cdec4aeca0..6f47e23530 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gearshift.json +++ b/src/generated/resources/data/create/loot_table/blocks/gearshift.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/glass_fluid_pipe.json b/src/generated/resources/data/create/loot_table/blocks/glass_fluid_pipe.json index 217ee230e1..3744c78f7a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/glass_fluid_pipe.json +++ b/src/generated/resources/data/create/loot_table/blocks/glass_fluid_pipe.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/granite_pillar.json b/src/generated/resources/data/create/loot_table/blocks/granite_pillar.json index c579254685..2d8ced0b6d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/granite_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/granite_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/gray_nixie_tube.json index 7eed5d7508..62bb486c0c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_postbox.json b/src/generated/resources/data/create/loot_table/blocks/gray_postbox.json index e262d34059..469402c6ea 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_sail.json b/src/generated/resources/data/create/loot_table/blocks/gray_sail.json index c22eda57ba..896429e421 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_seat.json b/src/generated/resources/data/create/loot_table/blocks/gray_seat.json index 41342917d0..69649787a9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/gray_table_cloth.json index 9faaacff04..2c636c60da 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/gray_toolbox.json index 0c45165c22..1854efd1e6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/gray_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/gray_valve_handle.json index 9184ab44ed..9d96a4b72d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/gray_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/gray_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/green_nixie_tube.json index 9b5909435e..5169b35ebb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_postbox.json b/src/generated/resources/data/create/loot_table/blocks/green_postbox.json index e3dca64f6e..6fecfc1bf4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_sail.json b/src/generated/resources/data/create/loot_table/blocks/green_sail.json index 79b4962474..0a8e9ccd1c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_seat.json b/src/generated/resources/data/create/loot_table/blocks/green_seat.json index 8234a4b4b0..adfc741e00 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/green_table_cloth.json index e9cd8e03f0..e99282e9d8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/green_toolbox.json index 66f648d7be..4b1d9f4a3c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/green_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/green_valve_handle.json index 94a2de9d1b..af758260d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/green_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/green_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/hand_crank.json b/src/generated/resources/data/create/loot_table/blocks/hand_crank.json index 1bd17678c4..e2e94aa747 100644 --- a/src/generated/resources/data/create/loot_table/blocks/hand_crank.json +++ b/src/generated/resources/data/create/loot_table/blocks/hand_crank.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/haunted_bell.json b/src/generated/resources/data/create/loot_table/blocks/haunted_bell.json index 0d033fcae9..540756a22f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/haunted_bell.json +++ b/src/generated/resources/data/create/loot_table/blocks/haunted_bell.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass.json b/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass.json index d26cfe80c6..b67e7da6b7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass.json +++ b/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass_pane.json b/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass_pane.json index d6901871ea..bed91ffec4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/horizontal_framed_glass_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/hose_pulley.json b/src/generated/resources/data/create/loot_table/blocks/hose_pulley.json index 12be7414ae..191c9f7358 100644 --- a/src/generated/resources/data/create/loot_table/blocks/hose_pulley.json +++ b/src/generated/resources/data/create/loot_table/blocks/hose_pulley.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_block.json b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_block.json index 67b8bab5a5..18ebb9b612 100644 --- a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window.json b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window.json index f764674a25..1957af2531 100644 --- a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window_pane.json index d059b32c6a..5106a7a4fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/industrial_iron_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/item_drain.json b/src/generated/resources/data/create/loot_table/blocks/item_drain.json index c9b58301d3..8130d1b815 100644 --- a/src/generated/resources/data/create/loot_table/blocks/item_drain.json +++ b/src/generated/resources/data/create/loot_table/blocks/item_drain.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/item_hatch.json b/src/generated/resources/data/create/loot_table/blocks/item_hatch.json index 604fbaf760..534e8a5b08 100644 --- a/src/generated/resources/data/create/loot_table/blocks/item_hatch.json +++ b/src/generated/resources/data/create/loot_table/blocks/item_hatch.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/item_vault.json b/src/generated/resources/data/create/loot_table/blocks/item_vault.json index b47680c44c..cca8b6e344 100644 --- a/src/generated/resources/data/create/loot_table/blocks/item_vault.json +++ b/src/generated/resources/data/create/loot_table/blocks/item_vault.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/jungle_window.json b/src/generated/resources/data/create/loot_table/blocks/jungle_window.json index a28ae70812..4f3523cdf7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/jungle_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/jungle_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/jungle_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/jungle_window_pane.json index 5d101d3d7a..b214ff7b7b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/jungle_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/jungle_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/large_bogey.json b/src/generated/resources/data/create/loot_table/blocks/large_bogey.json index 71e3374e6c..98dea3b8ab 100644 --- a/src/generated/resources/data/create/loot_table/blocks/large_bogey.json +++ b/src/generated/resources/data/create/loot_table/blocks/large_bogey.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/large_cogwheel.json b/src/generated/resources/data/create/loot_table/blocks/large_cogwheel.json index c63c0cd1fa..16a0010ba6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/large_cogwheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/large_cogwheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/large_water_wheel.json b/src/generated/resources/data/create/loot_table/blocks/large_water_wheel.json index ac9caab7b9..104c2aff75 100644 --- a/src/generated/resources/data/create/loot_table/blocks/large_water_wheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/large_water_wheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_andesite.json b/src/generated/resources/data/create/loot_table/blocks/layered_andesite.json index fbde615cb1..8b6269a903 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_andesite.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_andesite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_asurine.json b/src/generated/resources/data/create/loot_table/blocks/layered_asurine.json index 18e27ed000..1f8555a815 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_asurine.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_asurine.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_calcite.json b/src/generated/resources/data/create/loot_table/blocks/layered_calcite.json index f70686083b..63bd90cfab 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_calcite.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_calcite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_crimsite.json b/src/generated/resources/data/create/loot_table/blocks/layered_crimsite.json index b9a7d19628..31040212f0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_crimsite.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_crimsite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_deepslate.json b/src/generated/resources/data/create/loot_table/blocks/layered_deepslate.json index 77cc515b4b..5050a27cd5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_deepslate.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_deepslate.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_diorite.json b/src/generated/resources/data/create/loot_table/blocks/layered_diorite.json index e45d7df19b..680594adf0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_diorite.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_diorite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_dripstone.json b/src/generated/resources/data/create/loot_table/blocks/layered_dripstone.json index 5bc4f25ed2..cff1c6e0b2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_dripstone.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_dripstone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_granite.json b/src/generated/resources/data/create/loot_table/blocks/layered_granite.json index 2f4b12d980..5a45f99cb5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_granite.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_granite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_limestone.json b/src/generated/resources/data/create/loot_table/blocks/layered_limestone.json index 83af54bf75..41da012219 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_limestone.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_limestone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_ochrum.json b/src/generated/resources/data/create/loot_table/blocks/layered_ochrum.json index c33c976b8b..a70f67c61d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_ochrum.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_ochrum.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_scorchia.json b/src/generated/resources/data/create/loot_table/blocks/layered_scorchia.json index 5e3c74cb93..0afa154298 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_scorchia.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_scorchia.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_scoria.json b/src/generated/resources/data/create/loot_table/blocks/layered_scoria.json index d606bfafc8..55ca46cf49 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_scoria.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_scoria.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_tuff.json b/src/generated/resources/data/create/loot_table/blocks/layered_tuff.json index 9adf0ef103..d1c78e8b96 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_tuff.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_tuff.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/layered_veridium.json b/src/generated/resources/data/create/loot_table/blocks/layered_veridium.json index 1cac583ce0..bf27004382 100644 --- a/src/generated/resources/data/create/loot_table/blocks/layered_veridium.json +++ b/src/generated/resources/data/create/loot_table/blocks/layered_veridium.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lectern_controller.json b/src/generated/resources/data/create/loot_table/blocks/lectern_controller.json index a8b04ee931..4e50ad0cff 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lectern_controller.json +++ b/src/generated/resources/data/create/loot_table/blocks/lectern_controller.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_nixie_tube.json index 96348d13a8..668c16cc2d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_postbox.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_postbox.json index 5ce4a4eef2..5daa2158ab 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_sail.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_sail.json index 6c687304bc..cbe0fa71ea 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_seat.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_seat.json index a2fe12442d..0835a0d12a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_table_cloth.json index e8a961e43e..0ea2d7cc5a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_toolbox.json index a6abbe081c..674511c8de 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_blue_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/light_blue_valve_handle.json index faaa67bf79..a4ae58a88d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_blue_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_blue_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_nixie_tube.json index 36b3b905ef..39655110c6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_postbox.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_postbox.json index 4efb6e6035..dd9d91f6f6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_sail.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_sail.json index a10518c1e2..62340ad8fc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_seat.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_seat.json index bff8c22305..044b3e6d62 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_table_cloth.json index 0135623941..255bcf52cc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_toolbox.json index 63df2fa03f..38e4d6c001 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/light_gray_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/light_gray_valve_handle.json index 817914d3f9..3d24c5ce88 100644 --- a/src/generated/resources/data/create/loot_table/blocks/light_gray_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/light_gray_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/lime_nixie_tube.json index 4216b967ef..921850ce38 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_postbox.json b/src/generated/resources/data/create/loot_table/blocks/lime_postbox.json index 578daeea8e..7cf9496fbf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_sail.json b/src/generated/resources/data/create/loot_table/blocks/lime_sail.json index 9d2a319f40..2b2a221661 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_seat.json b/src/generated/resources/data/create/loot_table/blocks/lime_seat.json index 60a24a2e82..5510ecf61e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/lime_table_cloth.json index 1270bdee85..6f2686b5c6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/lime_toolbox.json index 3437947b68..9e99207f73 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lime_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/lime_valve_handle.json index 5cc537c72e..2d099c0957 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lime_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/lime_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/limestone.json b/src/generated/resources/data/create/loot_table/blocks/limestone.json index 4a9b1f2024..79706ac776 100644 --- a/src/generated/resources/data/create/loot_table/blocks/limestone.json +++ b/src/generated/resources/data/create/loot_table/blocks/limestone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/limestone_pillar.json b/src/generated/resources/data/create/loot_table/blocks/limestone_pillar.json index 806fd09446..2abbe0ece9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/limestone_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/limestone_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/linear_chassis.json b/src/generated/resources/data/create/loot_table/blocks/linear_chassis.json index e4b8a1c8e4..f65dfe1850 100644 --- a/src/generated/resources/data/create/loot_table/blocks/linear_chassis.json +++ b/src/generated/resources/data/create/loot_table/blocks/linear_chassis.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/lit_blaze_burner.json b/src/generated/resources/data/create/loot_table/blocks/lit_blaze_burner.json index 6840137d74..91c662e7c4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/lit_blaze_burner.json +++ b/src/generated/resources/data/create/loot_table/blocks/lit_blaze_burner.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/magenta_nixie_tube.json index bb84460083..e9b988d676 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_postbox.json b/src/generated/resources/data/create/loot_table/blocks/magenta_postbox.json index 76e817a3b4..0dca4de262 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_sail.json b/src/generated/resources/data/create/loot_table/blocks/magenta_sail.json index d2ba79ae08..091d78e70e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_seat.json b/src/generated/resources/data/create/loot_table/blocks/magenta_seat.json index 996ca40b05..3a2e72afba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/magenta_table_cloth.json index e75a70ea66..06aa2f8ae1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/magenta_toolbox.json index 0d16b5e045..628377ea14 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/magenta_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/magenta_valve_handle.json index 83ae8c4443..acb0e8d7fc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/magenta_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/magenta_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mangrove_window.json b/src/generated/resources/data/create/loot_table/blocks/mangrove_window.json index 6c75055c83..a05eb49fb9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mangrove_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/mangrove_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/mangrove_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/mangrove_window_pane.json index 76f6d356c7..5fcb1a277d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mangrove_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/mangrove_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_arm.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_arm.json index b3f0025c53..7f8189e215 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_arm.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_arm.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_bearing.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_bearing.json index 3e6bf8659c..856b6a1e53 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_bearing.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_bearing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_crafter.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_crafter.json index 3a7a16856a..297f684b8a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_crafter.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_crafter.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_drill.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_drill.json index 7269fabbf9..df2c594491 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_drill.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_drill.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_harvester.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_harvester.json index 5b60f51fac..6e50d062d0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_harvester.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_harvester.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_mixer.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_mixer.json index 10200ebaf1..0052c624d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_mixer.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_mixer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_piston.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_piston.json index ec81472598..92caf34a58 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_piston.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_piston.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_piston_head.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_piston_head.json deleted file mode 100644 index 55e6987598..0000000000 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_piston_head.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "create:piston_extension_pole" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "create:blocks/mechanical_piston_head" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_plough.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_plough.json index e1c84a5d8e..361933feb7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_plough.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_plough.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_press.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_press.json index ab2fa36906..3ae8fe804e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_press.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_press.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_pump.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_pump.json index 573cb76d97..91fb936d55 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_pump.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_pump.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_roller.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_roller.json index 22b93b5d66..c2049fbd91 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_roller.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_roller.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/mechanical_saw.json b/src/generated/resources/data/create/loot_table/blocks/mechanical_saw.json index 38479c5f1c..7bc8732730 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mechanical_saw.json +++ b/src/generated/resources/data/create/loot_table/blocks/mechanical_saw.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/metal_bracket.json b/src/generated/resources/data/create/loot_table/blocks/metal_bracket.json index 9bb24bc03d..0b3f8e1905 100644 --- a/src/generated/resources/data/create/loot_table/blocks/metal_bracket.json +++ b/src/generated/resources/data/create/loot_table/blocks/metal_bracket.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/metal_girder.json b/src/generated/resources/data/create/loot_table/blocks/metal_girder.json index 5d89358b2d..52ac783a73 100644 --- a/src/generated/resources/data/create/loot_table/blocks/metal_girder.json +++ b/src/generated/resources/data/create/loot_table/blocks/metal_girder.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/metal_girder_encased_shaft.json b/src/generated/resources/data/create/loot_table/blocks/metal_girder_encased_shaft.json index 969e6bc2f5..abf90c5eba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/metal_girder_encased_shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/metal_girder_encased_shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" @@ -17,7 +16,6 @@ "rolls": 1.0 }, { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/millstone.json b/src/generated/resources/data/create/loot_table/blocks/millstone.json index 929e2c0abc..f48a917a8c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/millstone.json +++ b/src/generated/resources/data/create/loot_table/blocks/millstone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/minecart_anchor.json b/src/generated/resources/data/create/loot_table/blocks/minecart_anchor.json index 69a03f4594..23faf27d4a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/minecart_anchor.json +++ b/src/generated/resources/data/create/loot_table/blocks/minecart_anchor.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/minecart_anchor" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/mysterious_cuckoo_clock.json b/src/generated/resources/data/create/loot_table/blocks/mysterious_cuckoo_clock.json index c82a97eb84..00feeda8a8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/mysterious_cuckoo_clock.json +++ b/src/generated/resources/data/create/loot_table/blocks/mysterious_cuckoo_clock.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/netherite_backtank.json b/src/generated/resources/data/create/loot_table/blocks/netherite_backtank.json index 3583df4a5f..8658f75bef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/netherite_backtank.json +++ b/src/generated/resources/data/create/loot_table/blocks/netherite_backtank.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/nixie_tube.json index de7b1b0f2f..02fac6e729 100644 --- a/src/generated/resources/data/create/loot_table/blocks/nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/nozzle.json b/src/generated/resources/data/create/loot_table/blocks/nozzle.json index c4000add35..7da0a340d5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/nozzle.json +++ b/src/generated/resources/data/create/loot_table/blocks/nozzle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/oak_window.json b/src/generated/resources/data/create/loot_table/blocks/oak_window.json index d5fbac7d13..f9e892bf63 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oak_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/oak_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/oak_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/oak_window_pane.json index 7363370a20..09b979b16c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oak_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/oak_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/ochrum.json b/src/generated/resources/data/create/loot_table/blocks/ochrum.json index c4329f4a89..061e126418 100644 --- a/src/generated/resources/data/create/loot_table/blocks/ochrum.json +++ b/src/generated/resources/data/create/loot_table/blocks/ochrum.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/ochrum_pillar.json b/src/generated/resources/data/create/loot_table/blocks/ochrum_pillar.json index 8d87e93ebe..e789b54ea0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/ochrum_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/ochrum_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_postbox.json b/src/generated/resources/data/create/loot_table/blocks/orange_postbox.json index 92a50f2d7c..fafcfc184c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_sail.json b/src/generated/resources/data/create/loot_table/blocks/orange_sail.json index 2ee474b317..2291d2e97d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_seat.json b/src/generated/resources/data/create/loot_table/blocks/orange_seat.json index 975b482339..936f09889c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/orange_table_cloth.json index df88a6a9c0..3eb60d1544 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/orange_toolbox.json index 612e5667f3..c80a859966 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/orange_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/orange_valve_handle.json index 425ed0aaae..0cd3c836fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/orange_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/orange_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window.json b/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window.json index 682b29df57..fb7c22d0e5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window_pane.json index e048674d65..5bd0b19f6e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/ornate_iron_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_slab.json index 22b2c98865..442e13ff17 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:oxidized_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json index 45f6c4cd2d..c757be57d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingles.json index 9b22c7a678..66e3725409 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_slab.json index 1f175770e5..6ba26c936c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:oxidized_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_stairs.json index 8e38095564..e16c015998 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tiles.json index f7a9f660e3..7e27294d55 100644 --- a/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/oxidized_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/package_frogport.json b/src/generated/resources/data/create/loot_table/blocks/package_frogport.json index 2ffb7daf2c..0980be8538 100644 --- a/src/generated/resources/data/create/loot_table/blocks/package_frogport.json +++ b/src/generated/resources/data/create/loot_table/blocks/package_frogport.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/packager.json b/src/generated/resources/data/create/loot_table/blocks/packager.json index d72df3d122..aaf34e863f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/packager.json +++ b/src/generated/resources/data/create/loot_table/blocks/packager.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/peculiar_bell.json b/src/generated/resources/data/create/loot_table/blocks/peculiar_bell.json index a3e4a95fc0..11f26c1f3d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/peculiar_bell.json +++ b/src/generated/resources/data/create/loot_table/blocks/peculiar_bell.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/pink_nixie_tube.json index 3c4b598f49..667d98733c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_postbox.json b/src/generated/resources/data/create/loot_table/blocks/pink_postbox.json index 2fa4ee3783..f456e252c9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_sail.json b/src/generated/resources/data/create/loot_table/blocks/pink_sail.json index a7986f7703..cffe273e5c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_seat.json b/src/generated/resources/data/create/loot_table/blocks/pink_seat.json index 46615d1c08..ac4575df0e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/pink_table_cloth.json index dbd7471d90..e1cc49d58e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/pink_toolbox.json index a457f03a08..41dbd8d3aa 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pink_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/pink_valve_handle.json index 3ad6d80f38..9027a95fe3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pink_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/pink_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/piston_extension_pole.json b/src/generated/resources/data/create/loot_table/blocks/piston_extension_pole.json deleted file mode 100644 index 27d796dbba..0000000000 --- a/src/generated/resources/data/create/loot_table/blocks/piston_extension_pole.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "create:piston_extension_pole" - } - ], - "rolls": 1.0 - } - ], - "random_sequence": "create:blocks/piston_extension_pole" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/placard.json b/src/generated/resources/data/create/loot_table/blocks/placard.json index 6a0e27faca..8bc4c8e03b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/placard.json +++ b/src/generated/resources/data/create/loot_table/blocks/placard.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite.json index 62a3229fdb..6b493cbf25 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_slab.json index bba2a4bc6c..bc4331ebbc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_andesite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_stairs.json index f6df89f1f5..4d009e0667 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_wall.json index 9a562c15b0..01f00734d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_andesite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine.json index 34bf375369..3e4bc7d88e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_slab.json index e03d0db1bf..f0c645501d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_asurine_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_stairs.json index 1263b79676..e502e07689 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_wall.json index 634854dd83..686ec5c017 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_asurine_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite.json index 45cd1ce33c..d43a1f1aea 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_slab.json index 5c9a486c7d..c61d8d2453 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_calcite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_stairs.json index 2fae180e22..5c79e021ef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_wall.json index 27c8b3c11f..c8b94df832 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_calcite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite.json index 7ba47ddd96..f1c0e429b9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_slab.json index 7210707e2a..a8de22b0de 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_crimsite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_stairs.json index c7d3405bf3..3ca6cf74b2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_wall.json index 3befae6f8a..370fc6ecce 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_crimsite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate.json index fe58692721..bd5f7864b5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_slab.json index 7e2e1e2b00..3f66a1c3fe 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_deepslate_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_stairs.json index 72eac683f5..afc78b09e4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_wall.json index 5f6a6e4098..43fe2798d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_deepslate_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite.json index a447656047..4d7fcf292b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_slab.json index 6a2f62f127..07607576ce 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_diorite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_stairs.json index 96e9282aaf..4758ed4c1b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_wall.json index 70bd7a939c..a490c60147 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_diorite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone.json index bdc57879fd..5d41e1b329 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_slab.json index 45353c2448..d0a3a1b268 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_dripstone_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_stairs.json index c190a0780f..21044e82d9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_wall.json index 0ecd8a5081..62bae97f09 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_dripstone_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite.json index 9397474458..edb990b879 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_slab.json index 072f71b58c..73c9aa4a1f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_granite_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_stairs.json index d5aaa9ae93..d39be80e3a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_wall.json index 1e80b6df04..854566a49e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_granite_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone.json index be4a5fabaf..1b689c418a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_slab.json index bdc638e266..72913a0423 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_limestone_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_stairs.json index 89cf88c2ad..7b1f42b3e4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_wall.json index b358d9d8bf..c4996f535c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_limestone_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum.json index 41e7a67eba..1abbd7c0e9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_slab.json index 8ca33f206a..5956480511 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_ochrum_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_stairs.json index a1144a3ccb..de39745a94 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_wall.json index 2299b70e1e..f53003e743 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_ochrum_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia.json index c90f4c858a..bc17e05227 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_slab.json index 1eda66fa23..6bd335897a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_scorchia_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_stairs.json index ce0458c69a..1a737a9cab 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_wall.json index 68898ee22f..e77200ed92 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scorchia_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria.json index 74979f7df9..da5e49a989 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_slab.json index 5d27666d10..25fba880d0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_scoria_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_stairs.json index b6801fd120..f96ce22d46 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_wall.json index 30a9b88571..3fc20a84b5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_scoria_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff.json index 6e1aed6e8f..802141f618 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_slab.json index 7a475d06a6..232137b66d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_tuff_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_stairs.json index 673db989a0..4b0ea54584 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_wall.json index a5a5ffccfb..960a3abb55 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_tuff_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium.json index caa4bb53cb..11b6cafc7f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_slab.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_slab.json index ab732ffa08..f70aeccda0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:polished_cut_veridium_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_stairs.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_stairs.json index 84b3ff547d..56062768d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_wall.json b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_wall.json index 5c097f98d2..21aa202108 100644 --- a/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/polished_cut_veridium_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/portable_fluid_interface.json b/src/generated/resources/data/create/loot_table/blocks/portable_fluid_interface.json index 5e04d398e9..c9c96403d9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/portable_fluid_interface.json +++ b/src/generated/resources/data/create/loot_table/blocks/portable_fluid_interface.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/portable_storage_interface.json b/src/generated/resources/data/create/loot_table/blocks/portable_storage_interface.json index ab2c90e820..db537f2b70 100644 --- a/src/generated/resources/data/create/loot_table/blocks/portable_storage_interface.json +++ b/src/generated/resources/data/create/loot_table/blocks/portable_storage_interface.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/powered_latch.json b/src/generated/resources/data/create/loot_table/blocks/powered_latch.json index 2598711e4f..dbf8995483 100644 --- a/src/generated/resources/data/create/loot_table/blocks/powered_latch.json +++ b/src/generated/resources/data/create/loot_table/blocks/powered_latch.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/powered_shaft.json b/src/generated/resources/data/create/loot_table/blocks/powered_shaft.json index e31810471d..3feaa23fd3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/powered_shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/powered_shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/powered_toggle_latch.json b/src/generated/resources/data/create/loot_table/blocks/powered_toggle_latch.json index c61091f089..409ed00ee5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/powered_toggle_latch.json +++ b/src/generated/resources/data/create/loot_table/blocks/powered_toggle_latch.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pulley_magnet.json b/src/generated/resources/data/create/loot_table/blocks/pulley_magnet.json index b3d48d97db..60d1cfff4a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pulley_magnet.json +++ b/src/generated/resources/data/create/loot_table/blocks/pulley_magnet.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/pulley_magnet" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/pulse_extender.json b/src/generated/resources/data/create/loot_table/blocks/pulse_extender.json index 598547cc8f..76b8353e76 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pulse_extender.json +++ b/src/generated/resources/data/create/loot_table/blocks/pulse_extender.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pulse_repeater.json b/src/generated/resources/data/create/loot_table/blocks/pulse_repeater.json index d5171c7942..1000f948f6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pulse_repeater.json +++ b/src/generated/resources/data/create/loot_table/blocks/pulse_repeater.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/pulse_timer.json b/src/generated/resources/data/create/loot_table/blocks/pulse_timer.json index fe56ca9642..72c8269410 100644 --- a/src/generated/resources/data/create/loot_table/blocks/pulse_timer.json +++ b/src/generated/resources/data/create/loot_table/blocks/pulse_timer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/purple_nixie_tube.json index 3d1edece25..727524cbb1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_postbox.json b/src/generated/resources/data/create/loot_table/blocks/purple_postbox.json index 373fd05424..0b2ff292f8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_sail.json b/src/generated/resources/data/create/loot_table/blocks/purple_sail.json index fd985a7452..30f6612ba8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_seat.json b/src/generated/resources/data/create/loot_table/blocks/purple_seat.json index 570efa7f9f..8e65f512f3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/purple_table_cloth.json index 87822b1e51..4bcc4b3e6b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/purple_toolbox.json index a762f93f8d..4e45e36976 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/purple_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/purple_valve_handle.json index f4931a8969..a598ad4acc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/purple_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/purple_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/radial_chassis.json b/src/generated/resources/data/create/loot_table/blocks/radial_chassis.json index 033e76032c..400528f3c9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/radial_chassis.json +++ b/src/generated/resources/data/create/loot_table/blocks/radial_chassis.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/railway_casing.json b/src/generated/resources/data/create/loot_table/blocks/railway_casing.json index 08c3545e86..a5fe761d9a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/railway_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/railway_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/raw_zinc_block.json b/src/generated/resources/data/create/loot_table/blocks/raw_zinc_block.json index 3767e878cc..fde85c54c8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/raw_zinc_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/raw_zinc_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/red_nixie_tube.json index d7c04dd358..4298e4601a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_postbox.json b/src/generated/resources/data/create/loot_table/blocks/red_postbox.json index 30008f94ea..a377ceb3db 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_sail.json b/src/generated/resources/data/create/loot_table/blocks/red_sail.json index 5942ed3324..bd274690b9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_seat.json b/src/generated/resources/data/create/loot_table/blocks/red_seat.json index d9314f32c5..9b15d1fbd2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/red_table_cloth.json index 8132ffe194..144e8e64d8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/red_toolbox.json index be7ce161a4..2787649402 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/red_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/red_valve_handle.json index bbe852dc02..cbe917aebc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/red_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/red_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/redstone_contact.json b/src/generated/resources/data/create/loot_table/blocks/redstone_contact.json index 890e5fa0bd..fa302b0e0e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/redstone_contact.json +++ b/src/generated/resources/data/create/loot_table/blocks/redstone_contact.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/redstone_link.json b/src/generated/resources/data/create/loot_table/blocks/redstone_link.json index c10c202a63..a8416178bb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/redstone_link.json +++ b/src/generated/resources/data/create/loot_table/blocks/redstone_link.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/redstone_requester.json b/src/generated/resources/data/create/loot_table/blocks/redstone_requester.json index 29fe85b8ec..8132be8568 100644 --- a/src/generated/resources/data/create/loot_table/blocks/redstone_requester.json +++ b/src/generated/resources/data/create/loot_table/blocks/redstone_requester.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/refined_radiance_casing.json b/src/generated/resources/data/create/loot_table/blocks/refined_radiance_casing.json index 730b2b4f3b..e196547a12 100644 --- a/src/generated/resources/data/create/loot_table/blocks/refined_radiance_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/refined_radiance_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/repackager.json b/src/generated/resources/data/create/loot_table/blocks/repackager.json index b541c71ed8..7100e7979c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/repackager.json +++ b/src/generated/resources/data/create/loot_table/blocks/repackager.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/rope.json b/src/generated/resources/data/create/loot_table/blocks/rope.json index adb42acc98..dcc82bbf37 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rope.json +++ b/src/generated/resources/data/create/loot_table/blocks/rope.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/rope" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/rope_pulley.json b/src/generated/resources/data/create/loot_table/blocks/rope_pulley.json index b29d7f648a..0d044272b3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rope_pulley.json +++ b/src/generated/resources/data/create/loot_table/blocks/rope_pulley.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_block.json b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_block.json index e138efbcfe..5c70eac953 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_lamp.json b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_lamp.json index df67054596..a80eb4d022 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_lamp.json +++ b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_lamp.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_tiles.json b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_tiles.json index 8c0329fe1f..6fe2fe3b41 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rose_quartz_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/rose_quartz_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/rotation_speed_controller.json b/src/generated/resources/data/create/loot_table/blocks/rotation_speed_controller.json index 8630d6bf5d..f7eaed624b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/rotation_speed_controller.json +++ b/src/generated/resources/data/create/loot_table/blocks/rotation_speed_controller.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/sail_frame.json b/src/generated/resources/data/create/loot_table/blocks/sail_frame.json index 26d116337f..7176bb13d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/sail_frame.json +++ b/src/generated/resources/data/create/loot_table/blocks/sail_frame.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/schematic_table.json b/src/generated/resources/data/create/loot_table/blocks/schematic_table.json index d7045dc750..7a7993d81a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/schematic_table.json +++ b/src/generated/resources/data/create/loot_table/blocks/schematic_table.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/schematicannon.json b/src/generated/resources/data/create/loot_table/blocks/schematicannon.json index c4bd359c2e..4721b992d2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/schematicannon.json +++ b/src/generated/resources/data/create/loot_table/blocks/schematicannon.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/scorchia.json b/src/generated/resources/data/create/loot_table/blocks/scorchia.json index 0562b53fdd..9321877b96 100644 --- a/src/generated/resources/data/create/loot_table/blocks/scorchia.json +++ b/src/generated/resources/data/create/loot_table/blocks/scorchia.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/scorchia_pillar.json b/src/generated/resources/data/create/loot_table/blocks/scorchia_pillar.json index fc018b4a58..a8b8d1e9bf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/scorchia_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/scorchia_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/scoria.json b/src/generated/resources/data/create/loot_table/blocks/scoria.json index f7240936bc..2108867e79 100644 --- a/src/generated/resources/data/create/loot_table/blocks/scoria.json +++ b/src/generated/resources/data/create/loot_table/blocks/scoria.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/scoria_pillar.json b/src/generated/resources/data/create/loot_table/blocks/scoria_pillar.json index 6b09f596c3..6c7d104de4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/scoria_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/scoria_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/secondary_linear_chassis.json b/src/generated/resources/data/create/loot_table/blocks/secondary_linear_chassis.json index fc50933626..63beca4cdd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/secondary_linear_chassis.json +++ b/src/generated/resources/data/create/loot_table/blocks/secondary_linear_chassis.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/sequenced_gearshift.json b/src/generated/resources/data/create/loot_table/blocks/sequenced_gearshift.json index 8d6d80cf03..c1a1b62cfa 100644 --- a/src/generated/resources/data/create/loot_table/blocks/sequenced_gearshift.json +++ b/src/generated/resources/data/create/loot_table/blocks/sequenced_gearshift.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/shadow_steel_casing.json b/src/generated/resources/data/create/loot_table/blocks/shadow_steel_casing.json index cf90a2c7af..4de4c72cb4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/shadow_steel_casing.json +++ b/src/generated/resources/data/create/loot_table/blocks/shadow_steel_casing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/shaft.json b/src/generated/resources/data/create/loot_table/blocks/shaft.json index b2f57ab64e..9484864055 100644 --- a/src/generated/resources/data/create/loot_table/blocks/shaft.json +++ b/src/generated/resources/data/create/loot_table/blocks/shaft.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_slab.json index f03fea0158..f7ec42cb63 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_andesite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_stairs.json index 7045c029c3..ebb120e942 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_wall.json index ccac720478..3e4aef2172 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_andesite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_andesite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_andesite_bricks.json index 69c2bd5b6f..823fd02977 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_andesite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_andesite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_slab.json index 4f6986040e..0e277d91e8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_asurine_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_stairs.json index 1bd97611bd..436ba89bb3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_wall.json index 2bff4fa37f..5694ecda4d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_asurine_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_asurine_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_asurine_bricks.json index 2b98c03b26..93448af5b3 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_asurine_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_asurine_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_bogey.json b/src/generated/resources/data/create/loot_table/blocks/small_bogey.json index c8def22000..a75316c413 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_bogey.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_bogey.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_slab.json index 107bc28d64..72d175bfc2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_calcite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_stairs.json index e9279f4fad..6e4f46ab89 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_wall.json index e7ed482e4a..46151071cd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_calcite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_calcite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_calcite_bricks.json index e000491160..c3d6bbe3d9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_calcite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_calcite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_slab.json index 98201451f6..cf164588bd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_crimsite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_stairs.json index da1b72bef1..737f1fa4f2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_wall.json index 0568c2900c..8bcdd8cde8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_bricks.json index 1231e19791..5d470fa326 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_crimsite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_crimsite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_slab.json index 95012d0094..83e762fc85 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_deepslate_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_stairs.json index d0619522e6..1d9d3159f9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_wall.json index 2d78c95898..022e17c2bc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_bricks.json index 556e734b5b..55b7a67253 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_deepslate_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_deepslate_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_slab.json index da5458829f..0453562c13 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_diorite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_stairs.json index c80387c3c3..4cff2ee828 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_wall.json index b7526d43c6..31a5818203 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_diorite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_diorite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_diorite_bricks.json index a85411bd69..527a32f13b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_diorite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_diorite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_slab.json index b11ae8620e..a6b5bdb275 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_dripstone_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_stairs.json index 76d93ea7d7..018e510b74 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_wall.json index 6db1ab5a55..93b66af1c9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_bricks.json index f6b5cb3f5e..03fd3c517e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_dripstone_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_dripstone_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_slab.json index 7bb43c3e77..2cc65ac7b8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_granite_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_stairs.json index 21fb26cde2..a9a3719113 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_wall.json index b95ef53876..9a186c58fd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_granite_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_granite_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_granite_bricks.json index 7607aab6e0..81fb2d4194 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_granite_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_granite_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_slab.json index bfd9a56008..83a9d8d8db 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_limestone_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_stairs.json index af6076b8c4..bbbcd00897 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_wall.json index c32ea7d7f4..a1536bc8df 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_limestone_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_limestone_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_limestone_bricks.json index 7ae6714f78..d5ce34b7f9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_limestone_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_limestone_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_slab.json index 6d4d738674..a97f0b137e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_ochrum_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_stairs.json index 3323e7d4ec..fcf005daec 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_wall.json index d390730f49..3ce8e5109e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_bricks.json index 6e67f72b73..ea988bb925 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_ochrum_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_ochrum_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_rose_quartz_tiles.json b/src/generated/resources/data/create/loot_table/blocks/small_rose_quartz_tiles.json index a6a2e05913..f6a3a87fc4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_rose_quartz_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_rose_quartz_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_slab.json index eb6be29bca..4905e4fbda 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_scorchia_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_stairs.json index c547436fbc..7f3b4497e5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_wall.json index f46f9e8e8e..00e8990ae6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_bricks.json index d20214bc91..fc3067a49f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scorchia_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scorchia_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_slab.json index 2a2ea011b3..96e4fc8db2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_scoria_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_stairs.json index 134d9b1964..e42116e1c6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_wall.json index c15fc82f2b..77cb34a888 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scoria_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_scoria_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_scoria_bricks.json index c3036ea75c..c7e46e6725 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_scoria_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_scoria_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_slab.json index ab02457458..2ee68baeba 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_tuff_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_stairs.json index 1d4d036842..0f54446458 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_wall.json index db23086c56..1c1713d186 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_tuff_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_tuff_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_tuff_bricks.json index dd5353b160..8601f84f8c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_tuff_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_tuff_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_slab.json b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_slab.json index ba2570bc5b..c5c1695356 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:small_veridium_brick_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_stairs.json b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_stairs.json index 57ec6bfa6f..7f24d564bb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_wall.json b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_wall.json index bd3dd00070..d14d427153 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_wall.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_veridium_brick_wall.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/small_veridium_bricks.json b/src/generated/resources/data/create/loot_table/blocks/small_veridium_bricks.json index 2cf3e39fc8..5b0c8a03ef 100644 --- a/src/generated/resources/data/create/loot_table/blocks/small_veridium_bricks.json +++ b/src/generated/resources/data/create/loot_table/blocks/small_veridium_bricks.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/smart_chute.json b/src/generated/resources/data/create/loot_table/blocks/smart_chute.json index 0182c8dfa3..2502c694e7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/smart_chute.json +++ b/src/generated/resources/data/create/loot_table/blocks/smart_chute.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/smart_fluid_pipe.json b/src/generated/resources/data/create/loot_table/blocks/smart_fluid_pipe.json index cc11b0edb9..272d6c14ca 100644 --- a/src/generated/resources/data/create/loot_table/blocks/smart_fluid_pipe.json +++ b/src/generated/resources/data/create/loot_table/blocks/smart_fluid_pipe.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/speedometer.json b/src/generated/resources/data/create/loot_table/blocks/speedometer.json index 5bcb0464d9..80593d1404 100644 --- a/src/generated/resources/data/create/loot_table/blocks/speedometer.json +++ b/src/generated/resources/data/create/loot_table/blocks/speedometer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/spout.json b/src/generated/resources/data/create/loot_table/blocks/spout.json index c73dd77d5f..560ea8b282 100644 --- a/src/generated/resources/data/create/loot_table/blocks/spout.json +++ b/src/generated/resources/data/create/loot_table/blocks/spout.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/spruce_window.json b/src/generated/resources/data/create/loot_table/blocks/spruce_window.json index d7848cebb7..5fe89e91f8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/spruce_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/spruce_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/spruce_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/spruce_window_pane.json index 43d9d752eb..cdd4f3a9bd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/spruce_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/spruce_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/steam_engine.json b/src/generated/resources/data/create/loot_table/blocks/steam_engine.json index ea8cf918de..759203b539 100644 --- a/src/generated/resources/data/create/loot_table/blocks/steam_engine.json +++ b/src/generated/resources/data/create/loot_table/blocks/steam_engine.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/steam_whistle.json b/src/generated/resources/data/create/loot_table/blocks/steam_whistle.json index 1df42372c0..58eb9597e5 100644 --- a/src/generated/resources/data/create/loot_table/blocks/steam_whistle.json +++ b/src/generated/resources/data/create/loot_table/blocks/steam_whistle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/steam_whistle_extension.json b/src/generated/resources/data/create/loot_table/blocks/steam_whistle_extension.json index 9d1bcb2b48..0f29d4b9b6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/steam_whistle_extension.json +++ b/src/generated/resources/data/create/loot_table/blocks/steam_whistle_extension.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/steam_whistle_extension" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/sticker.json b/src/generated/resources/data/create/loot_table/blocks/sticker.json index 7be2091c77..630239ffdb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/sticker.json +++ b/src/generated/resources/data/create/loot_table/blocks/sticker.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/sticky_mechanical_piston.json b/src/generated/resources/data/create/loot_table/blocks/sticky_mechanical_piston.json index e0b37c1097..a856244f29 100644 --- a/src/generated/resources/data/create/loot_table/blocks/sticky_mechanical_piston.json +++ b/src/generated/resources/data/create/loot_table/blocks/sticky_mechanical_piston.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/stock_link.json b/src/generated/resources/data/create/loot_table/blocks/stock_link.json index e41b77898f..62ac28d6bb 100644 --- a/src/generated/resources/data/create/loot_table/blocks/stock_link.json +++ b/src/generated/resources/data/create/loot_table/blocks/stock_link.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/stock_ticker.json b/src/generated/resources/data/create/loot_table/blocks/stock_ticker.json index 033168cdcc..7d4c2ea3c1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/stock_ticker.json +++ b/src/generated/resources/data/create/loot_table/blocks/stock_ticker.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/stockpile_switch.json b/src/generated/resources/data/create/loot_table/blocks/stockpile_switch.json index 426e4d9765..b97754532c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/stockpile_switch.json +++ b/src/generated/resources/data/create/loot_table/blocks/stockpile_switch.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/stressometer.json b/src/generated/resources/data/create/loot_table/blocks/stressometer.json index b120d3aa03..632514271a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/stressometer.json +++ b/src/generated/resources/data/create/loot_table/blocks/stressometer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/tiled_glass.json b/src/generated/resources/data/create/loot_table/blocks/tiled_glass.json index ca765557d1..6dfc66b67e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/tiled_glass.json +++ b/src/generated/resources/data/create/loot_table/blocks/tiled_glass.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/tiled_glass_pane.json b/src/generated/resources/data/create/loot_table/blocks/tiled_glass_pane.json index c073dd3c18..7369968ac0 100644 --- a/src/generated/resources/data/create/loot_table/blocks/tiled_glass_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/tiled_glass_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/track.json b/src/generated/resources/data/create/loot_table/blocks/track.json index 741a31722b..0615ca3df6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/track.json +++ b/src/generated/resources/data/create/loot_table/blocks/track.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/track_observer.json b/src/generated/resources/data/create/loot_table/blocks/track_observer.json index f73018a998..cef55b60a2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/track_observer.json +++ b/src/generated/resources/data/create/loot_table/blocks/track_observer.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/track_signal.json b/src/generated/resources/data/create/loot_table/blocks/track_signal.json index 8735e9c85d..6b00464487 100644 --- a/src/generated/resources/data/create/loot_table/blocks/track_signal.json +++ b/src/generated/resources/data/create/loot_table/blocks/track_signal.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/track_station.json b/src/generated/resources/data/create/loot_table/blocks/track_station.json index 8417b8c3f8..b655607a37 100644 --- a/src/generated/resources/data/create/loot_table/blocks/track_station.json +++ b/src/generated/resources/data/create/loot_table/blocks/track_station.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/train_door.json b/src/generated/resources/data/create/loot_table/blocks/train_door.json index 19e5ef14a0..273a872c4a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/train_door.json +++ b/src/generated/resources/data/create/loot_table/blocks/train_door.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/train_trapdoor.json b/src/generated/resources/data/create/loot_table/blocks/train_trapdoor.json index ddc070d36f..c0cf1051a8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/train_trapdoor.json +++ b/src/generated/resources/data/create/loot_table/blocks/train_trapdoor.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/tuff_pillar.json b/src/generated/resources/data/create/loot_table/blocks/tuff_pillar.json index 86a0965e9f..d7b58ccb06 100644 --- a/src/generated/resources/data/create/loot_table/blocks/tuff_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/tuff_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/turntable.json b/src/generated/resources/data/create/loot_table/blocks/turntable.json index 78c411654f..89e8a00f22 100644 --- a/src/generated/resources/data/create/loot_table/blocks/turntable.json +++ b/src/generated/resources/data/create/loot_table/blocks/turntable.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/veridium.json b/src/generated/resources/data/create/loot_table/blocks/veridium.json index 668397107e..fa603ef63e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/veridium.json +++ b/src/generated/resources/data/create/loot_table/blocks/veridium.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/veridium_pillar.json b/src/generated/resources/data/create/loot_table/blocks/veridium_pillar.json index c6e2639b31..5b47bf6c33 100644 --- a/src/generated/resources/data/create/loot_table/blocks/veridium_pillar.json +++ b/src/generated/resources/data/create/loot_table/blocks/veridium_pillar.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass.json b/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass.json index 1b8f7681ad..bf8a4e0536 100644 --- a/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass.json +++ b/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass_pane.json b/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass_pane.json index f204b3cc71..1c279df65c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/vertical_framed_glass_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/warped_window.json b/src/generated/resources/data/create/loot_table/blocks/warped_window.json index 2961996cab..631b50a44d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/warped_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/warped_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/warped_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/warped_window_pane.json index d0e4365601..805a89b5d1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/warped_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/warped_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/water_wheel.json b/src/generated/resources/data/create/loot_table/blocks/water_wheel.json index cf6935adc6..d3b7038b86 100644 --- a/src/generated/resources/data/create/loot_table/blocks/water_wheel.json +++ b/src/generated/resources/data/create/loot_table/blocks/water_wheel.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/water_wheel_structure.json b/src/generated/resources/data/create/loot_table/blocks/water_wheel_structure.json index ee87d5ab69..5e85509fcf 100644 --- a/src/generated/resources/data/create/loot_table/blocks/water_wheel_structure.json +++ b/src/generated/resources/data/create/loot_table/blocks/water_wheel_structure.json @@ -1,21 +1,4 @@ { "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "rolls": 1.0 - } - ], "random_sequence": "create:blocks/water_wheel_structure" } \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_slab.json index 91a5d840ab..b64f7ac256 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_stairs.json index 27181dacb4..c0afc1c50f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingles.json index 0dac8c67c8..eadad3305e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_slab.json index c1c1f27275..976bb7207a 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_stairs.json index 5a1a1a1eb6..f0407f03d9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tiles.json index 964b868197..3d145c6dd8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json index 31e6bb5b8c..0f1a3d7e6c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_exposed_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json index 2cf889b80c..ed2e4ac24c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingles.json index 958de360b2..ca14bf18c4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json index 737127e98d..c68e8b40dd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_exposed_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json index f9782915c5..d483ba9cf8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tiles.json index 74e0cdae85..bb254cb9b9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_exposed_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json index 717442b41b..a4570d2f03 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_oxidized_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json index dd4a98cde0..1d53422bae 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json index 0c914ac2b2..b1c40fbebc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json index 1cd3fc6d43..d1fd1cf34e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_oxidized_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json index 23c091808e..390e9499bc 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json index 4d09b6410c..303dc10ec8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_oxidized_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json index a5aa1ffbb2..d94cfb52d1 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_weathered_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json index d2482ba1d1..3da5968df6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingles.json index 9dd881f548..351284297e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json index 4e54e60132..46e2776a4e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:waxed_weathered_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json index b9a1f2d4d4..fd4e40b054 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tiles.json index 8a33d59eae..0fdee18583 100644 --- a/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/waxed_weathered_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_slab.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_slab.json index 422704f42f..bd7eac3343 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:weathered_copper_shingle_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_stairs.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_stairs.json index 7f56d0bf40..3bb22099d6 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingle_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingles.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingles.json index 0a203b9e58..8e4492e486 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingles.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_shingles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_slab.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_slab.json index 8a6481186d..d964582893 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_slab.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_slab.json @@ -2,13 +2,11 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", "functions": [ { - "add": false, "conditions": [ { "block": "create:weathered_copper_tile_slab", diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_stairs.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_stairs.json index 347d4155fe..887c9210d7 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_stairs.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tile_stairs.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tiles.json b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tiles.json index 112a24317e..8a8dede30f 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tiles.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_copper_tiles.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_block.json b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_block.json index a17ac769e5..bce6469d34 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window.json b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window.json index a1406ac233..cf312f6b39 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window_pane.json b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window_pane.json index 5c8ef301db..398d2c212e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window_pane.json +++ b/src/generated/resources/data/create/loot_table/blocks/weathered_iron_window_pane.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:match_tool", diff --git a/src/generated/resources/data/create/loot_table/blocks/weighted_ejector.json b/src/generated/resources/data/create/loot_table/blocks/weighted_ejector.json index 11156c7d86..f50acbccea 100644 --- a/src/generated/resources/data/create/loot_table/blocks/weighted_ejector.json +++ b/src/generated/resources/data/create/loot_table/blocks/weighted_ejector.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/white_nixie_tube.json index bdab9052fd..dc15b0b891 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_postbox.json b/src/generated/resources/data/create/loot_table/blocks/white_postbox.json index f5f6f92553..01a3e0ffc4 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_sail.json b/src/generated/resources/data/create/loot_table/blocks/white_sail.json index 4bcc37037e..a7044283b2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_seat.json b/src/generated/resources/data/create/loot_table/blocks/white_seat.json index 1532e129c1..45346ad8f9 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/white_table_cloth.json index 43d3518de4..9bbd3f7a5b 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/white_toolbox.json index ebd2da8472..abfab881cd 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/white_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/white_valve_handle.json index 06c74c51c1..036bec6ea8 100644 --- a/src/generated/resources/data/create/loot_table/blocks/white_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/white_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/windmill_bearing.json b/src/generated/resources/data/create/loot_table/blocks/windmill_bearing.json index 0cc371c21b..0f4ddf170d 100644 --- a/src/generated/resources/data/create/loot_table/blocks/windmill_bearing.json +++ b/src/generated/resources/data/create/loot_table/blocks/windmill_bearing.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/wooden_bracket.json b/src/generated/resources/data/create/loot_table/blocks/wooden_bracket.json index 4ea532ffe3..bf3170b0f2 100644 --- a/src/generated/resources/data/create/loot_table/blocks/wooden_bracket.json +++ b/src/generated/resources/data/create/loot_table/blocks/wooden_bracket.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_nixie_tube.json b/src/generated/resources/data/create/loot_table/blocks/yellow_nixie_tube.json index 454634526a..941ca82d54 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_nixie_tube.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_nixie_tube.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_postbox.json b/src/generated/resources/data/create/loot_table/blocks/yellow_postbox.json index ffcf660c29..759899f628 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_postbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_postbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_sail.json b/src/generated/resources/data/create/loot_table/blocks/yellow_sail.json index 801b42e989..a9b9f84651 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_sail.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_sail.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_seat.json b/src/generated/resources/data/create/loot_table/blocks/yellow_seat.json index 2f2fc3a1b2..a724c7e83c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_seat.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_seat.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_table_cloth.json b/src/generated/resources/data/create/loot_table/blocks/yellow_table_cloth.json index e36894d645..62a4b7167e 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_table_cloth.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_table_cloth.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_toolbox.json b/src/generated/resources/data/create/loot_table/blocks/yellow_toolbox.json index 6bebdbe885..83049220ae 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_toolbox.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_toolbox.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/yellow_valve_handle.json b/src/generated/resources/data/create/loot_table/blocks/yellow_valve_handle.json index 9a55088c4e..bba65af1ec 100644 --- a/src/generated/resources/data/create/loot_table/blocks/yellow_valve_handle.json +++ b/src/generated/resources/data/create/loot_table/blocks/yellow_valve_handle.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/zinc_block.json b/src/generated/resources/data/create/loot_table/blocks/zinc_block.json index 685ddca2a1..b66352ddee 100644 --- a/src/generated/resources/data/create/loot_table/blocks/zinc_block.json +++ b/src/generated/resources/data/create/loot_table/blocks/zinc_block.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "conditions": [ { "condition": "minecraft:survives_explosion" diff --git a/src/generated/resources/data/create/loot_table/blocks/zinc_ore.json b/src/generated/resources/data/create/loot_table/blocks/zinc_ore.json index 25b3b0244f..069bbfc12c 100644 --- a/src/generated/resources/data/create/loot_table/blocks/zinc_ore.json +++ b/src/generated/resources/data/create/loot_table/blocks/zinc_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/generated/resources/data/create/recipe/acacia_window.json b/src/generated/resources/data/create/recipe/acacia_window.json index 04aa28e106..73efafdeb8 100644 --- a/src/generated/resources/data/create/recipe/acacia_window.json +++ b/src/generated/resources/data/create/recipe/acacia_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:acacia_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:acacia_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/acacia_window_pane.json b/src/generated/resources/data/create/recipe/acacia_window_pane.json index 8d85c624bb..257abcc3f5 100644 --- a/src/generated/resources/data/create/recipe/acacia_window_pane.json +++ b/src/generated/resources/data/create/recipe/acacia_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:acacia_window" - } + "#": "create:acacia_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json index 908b4ff1a5..858bfa51c6 100644 --- a/src/generated/resources/data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_bars_from_andesite_alloy_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_alloy" - }, + "ingredient": "create:andesite_alloy", "result": { "count": 4, "id": "create:andesite_bars" diff --git a/src/generated/resources/data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json index dbbcef78f8..af5592c3f8 100644 --- a/src/generated/resources/data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "minecraft:andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json index 1a1ec2aab5..15cab654a5 100644 --- a/src/generated/resources/data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_ladder_from_andesite_alloy_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_alloy" - }, + "ingredient": "create:andesite_alloy", "result": { "count": 2, "id": "create:andesite_ladder" diff --git a/src/generated/resources/data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json index dc39e56ee4..424eba810b 100644 --- a/src/generated/resources/data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_pillar_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:andesite_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json index 74fec12fc8..c1e0d74655 100644 --- a/src/generated/resources/data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_scaffolding_from_andesite_alloy_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_alloy" - }, + "ingredient": "create:andesite_alloy", "result": { "count": 2, "id": "create:andesite_scaffolding" diff --git a/src/generated/resources/data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json b/src/generated/resources/data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json index 109dea2b19..f0ce62e38d 100644 --- a/src/generated/resources/data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json +++ b/src/generated/resources/data/create/recipe/andesite_table_cloth_from_andesite_alloy_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_alloy" - }, + "ingredient": "create:andesite_alloy", "result": { "count": 2, "id": "create:andesite_table_cloth" diff --git a/src/generated/resources/data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json index 91c7a1f417..8b30383d8e 100644 --- a/src/generated/resources/data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/asurine_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json index 5f051a5532..9e1c115f24 100644 --- a/src/generated/resources/data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/asurine_pillar_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:asurine_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/bamboo_window.json b/src/generated/resources/data/create/recipe/bamboo_window.json index bfe2b429e5..c990c55db1 100644 --- a/src/generated/resources/data/create/recipe/bamboo_window.json +++ b/src/generated/resources/data/create/recipe/bamboo_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:bamboo_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:bamboo_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/bamboo_window_pane.json b/src/generated/resources/data/create/recipe/bamboo_window_pane.json index 58647532f3..68235221ed 100644 --- a/src/generated/resources/data/create/recipe/bamboo_window_pane.json +++ b/src/generated/resources/data/create/recipe/bamboo_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:bamboo_window" - } + "#": "create:bamboo_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/birch_window.json b/src/generated/resources/data/create/recipe/birch_window.json index b3614919c5..be574e2270 100644 --- a/src/generated/resources/data/create/recipe/birch_window.json +++ b/src/generated/resources/data/create/recipe/birch_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:birch_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:birch_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/birch_window_pane.json b/src/generated/resources/data/create/recipe/birch_window_pane.json index be4502de82..5ab9f9cd18 100644 --- a/src/generated/resources/data/create/recipe/birch_window_pane.json +++ b/src/generated/resources/data/create/recipe/birch_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:birch_window" - } + "#": "create:birch_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/blasting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/blasting/copper_ingot_from_crushed.json index 342f701711..87e1a3eb5e 100644 --- a/src/generated/resources/data/create/recipe/blasting/copper_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/blasting/copper_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_copper" - }, + "ingredient": "create:crushed_raw_copper", "result": { - "count": 1, "id": "minecraft:copper_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/blasting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/blasting/gold_ingot_from_crushed.json index d7f1ac64ae..16cde54e17 100644 --- a/src/generated/resources/data/create/recipe/blasting/gold_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/blasting/gold_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_gold" - }, + "ingredient": "create:crushed_raw_gold", "result": { - "count": 1, "id": "minecraft:gold_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_aluminium_compat_ic2.json b/src/generated/resources/data/create/recipe/blasting/ingot_aluminium_compat_ic2.json index b107747613..d364ab7902 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_aluminium_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_aluminium_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_aluminum" - }, + "ingredient": "create:crushed_raw_aluminum", "result": { "id": "ic2:ingot_aluminium" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json index e49ff2140d..9d439be618 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_aluminum_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_aluminum" - }, + "ingredient": "create:crushed_raw_aluminum", "result": { "id": "immersiveengineering:ingot_aluminum" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json index 8dbe3c6950..2584385861 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "immersiveengineering:ingot_lead" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_mekanism.json index 1e9cec4fb8..f88ffbb2e2 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_lead_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "mekanism:ingot_lead" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json index 1b534b1c91..c47cdd2709 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_nickel_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_nickel" - }, + "ingredient": "create:crushed_raw_nickel", "result": { "id": "immersiveengineering:ingot_nickel" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/recipe/blasting/ingot_osmium_compat_mekanism.json index 798a988949..2ff9aed429 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_osmium_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_osmium_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_osmium" - }, + "ingredient": "create:crushed_raw_osmium", "result": { "id": "mekanism:ingot_osmium" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_ic2.json index 470515dbf7..f357434ad4 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "ic2:ingot_silver" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json index 85b1f7adc3..74dd3b6ec7 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_silver_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "immersiveengineering:ingot_silver" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_ic2.json index 38ce62dff4..396ff924e9 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "ic2:ingot_tin" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_mekanism.json index 64394356a2..66a3e60dce 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_tin_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "mekanism:ingot_tin" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_ic2.json index b739010e19..292d3a1052 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "ic2:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json index 2f73af39ed..c6add78fe9 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "immersiveengineering:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_mekanism.json index 5e32450220..080449d291 100644 --- a/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/blasting/ingot_uranium_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "mekanism:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/blasting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/blasting/iron_ingot_from_crushed.json index b0c55624f7..d512ee099d 100644 --- a/src/generated/resources/data/create/recipe/blasting/iron_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/blasting/iron_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_iron" - }, + "ingredient": "create:crushed_raw_iron", "result": { - "count": 1, "id": "minecraft:iron_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_oreganized.json index b3ad710ca9..9a12d73a18 100644 --- a/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_oreganized.json +++ b/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_oreganized.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "oreganized:lead_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_thermal.json index 788a36a66e..6ca359c04d 100644 --- a/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/blasting/lead_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "thermal:lead_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/blasting/nickel_ingot_compat_thermal.json index 9755e76404..9424c34fee 100644 --- a/src/generated/resources/data/create/recipe/blasting/nickel_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/blasting/nickel_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_nickel" - }, + "ingredient": "create:crushed_raw_nickel", "result": { "id": "thermal:nickel_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_galosphere.json index bde72a7e7b..bb2b6c4015 100644 --- a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_galosphere.json +++ b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_galosphere.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "galosphere:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_iceandfire.json index 6712c29cf5..0a1d920546 100644 --- a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_iceandfire.json +++ b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_iceandfire.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "iceandfire:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_oreganized.json index b21a8bafe8..6eab3667e8 100644 --- a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_oreganized.json +++ b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_oreganized.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "oreganized:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_thermal.json index 54a6fb1806..25d59cc5eb 100644 --- a/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/blasting/silver_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "thermal:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/blasting/tin_ingot_compat_thermal.json index f583d5aad8..bd9a640773 100644 --- a/src/generated/resources/data/create/recipe/blasting/tin_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/blasting/tin_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:blasting", - "category": "blocks", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "thermal:tin_ingot" } diff --git a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_crushed.json index 3108df3e3a..4df6506241 100644 --- a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_zinc" - }, + "ingredient": "create:crushed_raw_zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_ore.json index 9e757cf613..ec7ee08410 100644 --- a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_ore.json +++ b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_ore.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 1.0, - "ingredient": { - "tag": "c:ores/zinc" - }, + "ingredient": "#c:ores/zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_raw_ore.json b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_raw_ore.json index f88d505084..1dcbd9e4b2 100644 --- a/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_raw_ore.json +++ b/src/generated/resources/data/create/recipe/blasting/zinc_ingot_from_raw_ore.json @@ -1,13 +1,8 @@ { "type": "minecraft:blasting", - "category": "misc", - "cookingtime": 100, "experience": 0.7, - "ingredient": { - "tag": "c:raw_materials/zinc" - }, + "ingredient": "#c:raw_materials/zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json b/src/generated/resources/data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json index db88aad6f2..763f6df4d9 100644 --- a/src/generated/resources/data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json +++ b/src/generated/resources/data/create/recipe/brass_bars_from_ingots_brass_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/brass" - }, + "ingredient": "#c:ingots/brass", "result": { "count": 4, "id": "create:brass_bars" diff --git a/src/generated/resources/data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json b/src/generated/resources/data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json index fdcf5c0e3e..4a4364df6d 100644 --- a/src/generated/resources/data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json +++ b/src/generated/resources/data/create/recipe/brass_ladder_from_ingots_brass_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/brass" - }, + "ingredient": "#c:ingots/brass", "result": { "count": 2, "id": "create:brass_ladder" diff --git a/src/generated/resources/data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json b/src/generated/resources/data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json index e51f7f2fac..c70a759783 100644 --- a/src/generated/resources/data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json +++ b/src/generated/resources/data/create/recipe/brass_scaffolding_from_ingots_brass_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/brass" - }, + "ingredient": "#c:ingots/brass", "result": { "count": 2, "id": "create:brass_scaffolding" diff --git a/src/generated/resources/data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json b/src/generated/resources/data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json index f2bf028bfc..e238feb68c 100644 --- a/src/generated/resources/data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json +++ b/src/generated/resources/data/create/recipe/brass_table_cloth_from_ingots_brass_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/brass" - }, + "ingredient": "#c:ingots/brass", "result": { "count": 2, "id": "create:brass_table_cloth" diff --git a/src/generated/resources/data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json index 999a55ceff..5d5b53a32b 100644 --- a/src/generated/resources/data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/calcite_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "minecraft:calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json index 94a9e24bed..665d438a14 100644 --- a/src/generated/resources/data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/calcite_pillar_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:calcite_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/campfire_cooking/bread.json b/src/generated/resources/data/create/recipe/campfire_cooking/bread.json index 4f675a862c..af7e70bc89 100644 --- a/src/generated/resources/data/create/recipe/campfire_cooking/bread.json +++ b/src/generated/resources/data/create/recipe/campfire_cooking/bread.json @@ -1,13 +1,8 @@ { "type": "minecraft:campfire_cooking", - "category": "food", "cookingtime": 600, - "experience": 0.0, - "ingredient": { - "item": "create:dough" - }, + "ingredient": "create:dough", "result": { - "count": 1, "id": "minecraft:bread" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cherry_window.json b/src/generated/resources/data/create/recipe/cherry_window.json index d6f703a120..6bf2bdb5e4 100644 --- a/src/generated/resources/data/create/recipe/cherry_window.json +++ b/src/generated/resources/data/create/recipe/cherry_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:cherry_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:cherry_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/cherry_window_pane.json b/src/generated/resources/data/create/recipe/cherry_window_pane.json index 10c959e2fc..7d99d49805 100644 --- a/src/generated/resources/data/create/recipe/cherry_window_pane.json +++ b/src/generated/resources/data/create/recipe/cherry_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:cherry_window" - } + "#": "create:cherry_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/compacting/andesite_from_flint.json b/src/generated/resources/data/create/recipe/compacting/andesite_from_flint.json index ba0591484c..f818d03260 100644 --- a/src/generated/resources/data/create/recipe/compacting/andesite_from_flint.json +++ b/src/generated/resources/data/create/recipe/compacting/andesite_from_flint.json @@ -1,19 +1,13 @@ { "type": "create:compacting", "ingredients": [ + "minecraft:flint", + "minecraft:flint", + "minecraft:gravel", { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:gravel" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 100, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/compacting/blaze_cake.json b/src/generated/resources/data/create/recipe/compacting/blaze_cake.json index 19ad3543d1..b9216f2079 100644 --- a/src/generated/resources/data/create/recipe/compacting/blaze_cake.json +++ b/src/generated/resources/data/create/recipe/compacting/blaze_cake.json @@ -1,15 +1,9 @@ { "type": "create:compacting", "ingredients": [ - { - "tag": "c:eggs" - }, - { - "item": "minecraft:sugar" - }, - { - "item": "create:cinder_flour" - } + "#c:eggs", + "minecraft:sugar", + "create:cinder_flour" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/compacting/chocolate.json b/src/generated/resources/data/create/recipe/compacting/chocolate.json index 14ab75ca48..a75625848a 100644 --- a/src/generated/resources/data/create/recipe/compacting/chocolate.json +++ b/src/generated/resources/data/create/recipe/compacting/chocolate.json @@ -2,9 +2,9 @@ "type": "create:compacting", "ingredients": [ { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "create:chocolate" + "ingredient": "create:chocolate" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/compacting/diorite_from_flint.json b/src/generated/resources/data/create/recipe/compacting/diorite_from_flint.json index 4d64566945..ed08243555 100644 --- a/src/generated/resources/data/create/recipe/compacting/diorite_from_flint.json +++ b/src/generated/resources/data/create/recipe/compacting/diorite_from_flint.json @@ -1,19 +1,13 @@ { "type": "create:compacting", "ingredients": [ + "minecraft:flint", + "minecraft:flint", + "minecraft:calcite", { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:calcite" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 100, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/compacting/granite_from_flint.json b/src/generated/resources/data/create/recipe/compacting/granite_from_flint.json index d7f2128f61..e9f5af3994 100644 --- a/src/generated/resources/data/create/recipe/compacting/granite_from_flint.json +++ b/src/generated/resources/data/create/recipe/compacting/granite_from_flint.json @@ -1,19 +1,13 @@ { "type": "create:compacting", "ingredients": [ + "minecraft:flint", + "minecraft:flint", + "minecraft:red_sand", { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:red_sand" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 100, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/compacting/honey.json b/src/generated/resources/data/create/recipe/compacting/honey.json index 7e88a16069..b59702b19e 100644 --- a/src/generated/resources/data/create/recipe/compacting/honey.json +++ b/src/generated/resources/data/create/recipe/compacting/honey.json @@ -2,9 +2,9 @@ "type": "create:compacting", "ingredients": [ { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 1000, - "tag": "c:honey" + "ingredient": "#c:honey" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/compacting/ice.json b/src/generated/resources/data/create/recipe/compacting/ice.json index e369473464..ae345f65b4 100644 --- a/src/generated/resources/data/create/recipe/compacting/ice.json +++ b/src/generated/resources/data/create/recipe/compacting/ice.json @@ -1,33 +1,15 @@ { "type": "create:compacting", "ingredients": [ - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - }, - { - "item": "minecraft:snow_block" - } + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block", + "minecraft:snow_block" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json index 44136e6fb4..f7b5b86c9c 100644 --- a/src/generated/resources/data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_bars_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 4, "id": "create:copper_bars" diff --git a/src/generated/resources/data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json index ac0e7b39ce..5cbf750682 100644 --- a/src/generated/resources/data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_ladder_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 2, "id": "create:copper_ladder" diff --git a/src/generated/resources/data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json index c18a6aa145..e31fcfefc8 100644 --- a/src/generated/resources/data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_scaffolding_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 2, "id": "create:copper_scaffolding" diff --git a/src/generated/resources/data/create/recipe/copper_shingle_slab.json b/src/generated/resources/data/create/recipe/copper_shingle_slab.json index b4570d4041..e8eedcd969 100644 --- a/src/generated/resources/data/create/recipe/copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:copper_shingles" - } + "X": "create:copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json index eccf982c59..82f4cf9e86 100644 --- a/src/generated/resources/data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_shingle_slab_from_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:copper_shingles" - }, + "ingredient": "create:copper_shingles", "result": { "count": 2, "id": "create:copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/copper_shingle_stairs.json index 8af61edf9a..aa28538f27 100644 --- a/src/generated/resources/data/create/recipe/copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:copper_shingles" - } + "X": "create:copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json index 651864d9c9..0b5368e906 100644 --- a/src/generated/resources/data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_shingle_stairs_from_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:copper_shingles" - }, + "ingredient": "create:copper_shingles", "result": { - "count": 1, "id": "create:copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json index 62186fd268..f7a598722e 100644 --- a/src/generated/resources/data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_shingles_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 2, "id": "create:copper_shingles" diff --git a/src/generated/resources/data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json index 6a4e0107ad..28ec58dbe7 100644 --- a/src/generated/resources/data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_table_cloth_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 2, "id": "create:copper_table_cloth" diff --git a/src/generated/resources/data/create/recipe/copper_tile_slab.json b/src/generated/resources/data/create/recipe/copper_tile_slab.json index e49a816d15..331975ce28 100644 --- a/src/generated/resources/data/create/recipe/copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:copper_tiles" - } + "X": "create:copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json index 35c88fc6ab..83a353244d 100644 --- a/src/generated/resources/data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_tile_slab_from_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:copper_tiles" - }, + "ingredient": "create:copper_tiles", "result": { "count": 2, "id": "create:copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/copper_tile_stairs.json b/src/generated/resources/data/create/recipe/copper_tile_stairs.json index b61124ef86..95e6f931d7 100644 --- a/src/generated/resources/data/create/recipe/copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:copper_tiles" - } + "X": "create:copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json index e4ed9180f6..2fe4b5b63f 100644 --- a/src/generated/resources/data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_tile_stairs_from_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:copper_tiles" - }, + "ingredient": "create:copper_tiles", "result": { - "count": 1, "id": "create:copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json b/src/generated/resources/data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json index 0264caee3f..356695f561 100644 --- a/src/generated/resources/data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copper_tiles_from_ingots_copper_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/copper" - }, + "ingredient": "#c:ingots/copper", "result": { "count": 2, "id": "create:copper_tiles" diff --git a/src/generated/resources/data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json b/src/generated/resources/data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json index a12dd536a9..13bcb3c294 100644 --- a/src/generated/resources/data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copycat_panel_from_ingots_zinc_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/zinc" - }, + "ingredient": "#c:ingots/zinc", "result": { "count": 4, "id": "create:copycat_panel" diff --git a/src/generated/resources/data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json b/src/generated/resources/data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json index 716a7db5a5..aaa2d9fd92 100644 --- a/src/generated/resources/data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json +++ b/src/generated/resources/data/create/recipe/copycat_step_from_ingots_zinc_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/zinc" - }, + "ingredient": "#c:ingots/zinc", "result": { "count": 4, "id": "create:copycat_step" diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/attribute_filter_clear.json b/src/generated/resources/data/create/recipe/crafting/appliances/attribute_filter_clear.json index be8f028884..60ab9aa98f 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/attribute_filter_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/attribute_filter_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:attribute_filter" - } + "create:attribute_filter" ], "result": { - "count": 1, "id": "create:attribute_filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/book.json b/src/generated/resources/data/create/recipe/crafting/appliances/book.json index a06324f0c1..625e659241 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/book.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/book.json @@ -1,22 +1,12 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cardboard" - }, - { - "item": "minecraft:paper" - }, - { - "item": "minecraft:paper" - }, - { - "item": "minecraft:paper" - } + "create:cardboard", + "minecraft:paper", + "minecraft:paper", + "minecraft:paper" ], "result": { - "count": 1, "id": "minecraft:book" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_boots.json b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_boots.json index aaee620a80..7901fe5382 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_boots.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_boots.json @@ -1,17 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - } + "P": "create:cardboard" }, "pattern": [ "P P", "P P" ], "result": { - "count": 1, "id": "create:cardboard_boots" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_chestplate.json b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_chestplate.json index 174b974ff4..c77056657a 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_chestplate.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_chestplate.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - } + "P": "create:cardboard" }, "pattern": [ "P P", @@ -12,7 +9,6 @@ "PPP" ], "result": { - "count": 1, "id": "create:cardboard_chestplate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_helmet.json b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_helmet.json index 7ec7668085..4237ab50f3 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_helmet.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_helmet.json @@ -1,17 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - } + "P": "create:cardboard" }, "pattern": [ "PPP", "P P" ], "result": { - "count": 1, "id": "create:cardboard_helmet" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_leggings.json b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_leggings.json index 129ba379ab..b4d4c40ee7 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_leggings.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_leggings.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - } + "P": "create:cardboard" }, "pattern": [ "PPP", @@ -12,7 +9,6 @@ "P P" ], "result": { - "count": 1, "id": "create:cardboard_leggings" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_sword.json b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_sword.json index 8f45abac2a..570188b772 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_sword.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/cardboard_sword.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - }, - "S": { - "tag": "c:rods/wooden" - } + "P": "create:cardboard", + "S": "#c:rods/wooden" }, "pattern": [ "P", @@ -15,7 +10,6 @@ "S" ], "result": { - "count": 1, "id": "create:cardboard_sword" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/chain_from_zinc.json b/src/generated/resources/data/create/recipe/crafting/appliances/chain_from_zinc.json deleted file mode 100644 index 5356a843a4..0000000000 --- a/src/generated/resources/data/create/recipe/crafting/appliances/chain_from_zinc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "C": { - "tag": "c:ingots/zinc" - }, - "S": { - "tag": "c:nuggets/zinc" - } - }, - "pattern": [ - "S", - "C", - "S" - ], - "result": { - "count": 1, - "id": "minecraft:chain" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/clipboard.json b/src/generated/resources/data/create/recipe/crafting/appliances/clipboard.json index be283fc3a8..7d404baa1d 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/clipboard.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/clipboard.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "G": { - "tag": "minecraft:planks" - }, - "P": { - "item": "minecraft:paper" - } + "A": "create:andesite_alloy", + "G": "#minecraft:planks", + "P": "minecraft:paper" }, "pattern": [ "A", @@ -18,7 +11,6 @@ "G" ], "result": { - "count": 1, "id": "create:clipboard" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/clipboard_clear.json b/src/generated/resources/data/create/recipe/crafting/appliances/clipboard_clear.json index 16a493585e..9ca3009ebf 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/clipboard_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/clipboard_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:clipboard" - } + "create:clipboard" ], "result": { - "count": 1, "id": "create:clipboard" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/copper_backtank.json b/src/generated/resources/data/create/recipe/crafting/appliances/copper_backtank.json index 737b8390d7..5cbd39a218 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/copper_backtank.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/copper_backtank.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "tag": "c:storage_blocks/copper" - }, - "G": { - "item": "create:shaft" - }, - "P": { - "tag": "c:ingots/copper" - } + "A": "create:andesite_alloy", + "B": "#c:storage_blocks/copper", + "G": "create:shaft", + "P": "#c:ingots/copper" }, "pattern": [ "AGA", @@ -21,7 +12,6 @@ " P " ], "result": { - "count": 1, "id": "create:copper_backtank" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_boots.json b/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_boots.json index 8cbc4d135c..4a6b257661 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_boots.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_boots.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "G": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "c:ingots/copper" - } + "G": "create:andesite_alloy", + "P": "#c:ingots/copper" }, "pattern": [ "P P", @@ -15,7 +10,6 @@ "G G" ], "result": { - "count": 1, "id": "create:copper_diving_boots" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_helmet.json b/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_helmet.json index cb3f620593..dfc1b46ddf 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_helmet.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/copper_diving_helmet.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "G": { - "tag": "c:glass_blocks" - }, - "P": { - "tag": "c:ingots/copper" - } + "G": "#c:glass_blocks", + "P": "#c:ingots/copper" }, "pattern": [ "PPP", "PGP" ], "result": { - "count": 1, "id": "create:copper_diving_helmet" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/crafting_blueprint.json b/src/generated/resources/data/create/recipe/crafting/appliances/crafting_blueprint.json index 81b4661168..ccc2513d37 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/crafting_blueprint.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/crafting_blueprint.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "minecraft:painting" - }, - { - "item": "minecraft:crafting_table" - } + "minecraft:painting", + "minecraft:crafting_table" ], "result": { - "count": 1, "id": "create:crafting_blueprint" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/dough.json b/src/generated/resources/data/create/recipe/crafting/appliances/dough.json index b8699ecdfb..ecf7a6d444 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/dough.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/dough.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:flours/wheat" - }, - { - "item": "minecraft:water_bucket" - } + "#c:flours/wheat", + "minecraft:water_bucket" ], "result": { - "count": 1, "id": "create:dough" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/filter_clear.json b/src/generated/resources/data/create/recipe/crafting/appliances/filter_clear.json index b8dc66ccfd..9321c34b64 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/filter_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/filter_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:filter" - } + "create:filter" ], "result": { - "count": 1, "id": "create:filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/iron_chain_from_zinc.json b/src/generated/resources/data/create/recipe/crafting/appliances/iron_chain_from_zinc.json new file mode 100644 index 0000000000..92652ae88d --- /dev/null +++ b/src/generated/resources/data/create/recipe/crafting/appliances/iron_chain_from_zinc.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "key": { + "C": "#c:ingots/zinc", + "S": "#c:nuggets/zinc" + }, + "pattern": [ + "S", + "C", + "S" + ], + "result": { + "id": "minecraft:iron_chain" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/item_frame.json b/src/generated/resources/data/create/recipe/crafting/appliances/item_frame.json index 73c4935a9f..fdd65336ab 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/item_frame.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/item_frame.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:cardboard" - }, - "S": { - "tag": "c:rods/wooden" - } + "P": "create:cardboard", + "S": "#c:rods/wooden" }, "pattern": [ "SSS", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "minecraft:item_frame" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/linked_controller.json b/src/generated/resources/data/create/recipe/crafting/appliances/linked_controller.json index 1392d88148..911864e723 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/linked_controller.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/linked_controller.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:redstone_link" - }, - "S": { - "tag": "minecraft:wooden_buttons" - } + "P": "create:redstone_link", + "S": "#minecraft:wooden_buttons" }, "pattern": [ "SSS", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:linked_controller" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/name_tag.json b/src/generated/resources/data/create/recipe/crafting/appliances/name_tag.json index 27b73582b0..396a706497 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/name_tag.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/name_tag.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/black" - }, - { - "tag": "c:strings" - }, - { - "item": "create:cardboard" - } + "#c:dyes/black", + "#c:strings", + "create:cardboard" ], "result": { - "count": 1, "id": "minecraft:name_tag" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank.json index 803de3d1d9..83f28e920e 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "tag": "c:ingots/netherite" - }, - "base": { - "item": "create:copper_backtank" - }, + "addition": "#c:ingots/netherite", + "base": "create:copper_backtank", "result": { - "count": 1, "id": "create:netherite_backtank" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json index 5d785c04b4..1fbc373bc0 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_backtank_from_netherite.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "item": "create:copper_backtank" - }, - "base": { - "item": "minecraft:netherite_chestplate" - }, + "addition": "create:copper_backtank", + "base": "minecraft:netherite_chestplate", "result": { - "count": 1, "id": "create:netherite_backtank" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots.json index 6bd8269d87..9181d0cca4 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "tag": "c:ingots/netherite" - }, - "base": { - "item": "create:copper_diving_boots" - }, + "addition": "#c:ingots/netherite", + "base": "create:copper_diving_boots", "result": { - "count": 1, "id": "create:netherite_diving_boots" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json index 17ea1a779b..4d5fae5bdf 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_boots_from_netherite.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "item": "create:copper_diving_boots" - }, - "base": { - "item": "minecraft:netherite_boots" - }, + "addition": "create:copper_diving_boots", + "base": "minecraft:netherite_boots", "result": { - "count": 1, "id": "create:netherite_diving_boots" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet.json index dd7ba2773a..4a467adf7d 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "tag": "c:ingots/netherite" - }, - "base": { - "item": "create:copper_diving_helmet" - }, + "addition": "#c:ingots/netherite", + "base": "create:copper_diving_helmet", "result": { - "count": 1, "id": "create:netherite_diving_helmet" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json index 43de5bacb1..835024900a 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/netherite_diving_helmet_from_netherite.json @@ -1,16 +1,9 @@ { "type": "minecraft:smithing_transform", - "addition": { - "item": "create:copper_diving_helmet" - }, - "base": { - "item": "minecraft:netherite_helmet" - }, + "addition": "create:copper_diving_helmet", + "base": "minecraft:netherite_helmet", "result": { - "count": 1, "id": "create:netherite_diving_helmet" }, - "template": { - "item": "minecraft:netherite_upgrade_smithing_template" - } + "template": "minecraft:netherite_upgrade_smithing_template" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/package_filter_clear.json b/src/generated/resources/data/create/recipe/crafting/appliances/package_filter_clear.json index 970c685242..18d2f4dfd9 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/package_filter_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/package_filter_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:package_filter" - } + "create:package_filter" ], "result": { - "count": 1, "id": "create:package_filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/schedule_clear.json b/src/generated/resources/data/create/recipe/crafting/appliances/schedule_clear.json index a1007f3f28..1e30a3c258 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/schedule_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/schedule_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:schedule" - } + "create:schedule" ], "result": { - "count": 1, "id": "create:schedule" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/slime_ball.json b/src/generated/resources/data/create/recipe/crafting/appliances/slime_ball.json index a95b2260ad..c44289eb26 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/slime_ball.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/slime_ball.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:dough" - }, - { - "tag": "c:dyes/lime" - } + "create:dough", + "#c:dyes/lime" ], "result": { - "count": 1, "id": "minecraft:slime_ball" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/appliances/tree_fertilizer.json b/src/generated/resources/data/create/recipe/crafting/appliances/tree_fertilizer.json index da78c33f3d..149edba8b6 100644 --- a/src/generated/resources/data/create/recipe/crafting/appliances/tree_fertilizer.json +++ b/src/generated/resources/data/create/recipe/crafting/appliances/tree_fertilizer.json @@ -1,33 +1,16 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:small_flowers" - }, - { - "tag": "minecraft:small_flowers" - }, + "#c:flowers/small", + "#c:flowers/small", [ - { - "item": "minecraft:horn_coral" - }, - { - "item": "minecraft:brain_coral" - }, - { - "item": "minecraft:tube_coral" - }, - { - "item": "minecraft:bubble_coral" - }, - { - "item": "minecraft:fire_coral" - } + "minecraft:horn_coral", + "minecraft:brain_coral", + "minecraft:tube_coral", + "minecraft:bubble_coral", + "minecraft:fire_coral" ], - { - "item": "minecraft:bone_meal" - } + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json index d66c559571..2878908d97 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_shingle_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_shingle_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json index be135295bd..9d81d6b8b0 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingle_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_shingle_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json index dbff6165e0..556fbd9cbe 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_shingles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_shingles" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_shingles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_shingles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json index 6e9771bafe..df00d15e61 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_tile_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_tile_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_tile_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json index e8e9d2d93b..2b7dfb6a6e 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tile_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_tile_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json index d8bcc0c515..da056ceb79 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_copper_tiles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:copper_tiles" - }, - { - "item": "minecraft:honeycomb" - } + "create:copper_tiles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_copper_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json index b964c97061..65dda60a58 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_shingle_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_shingle_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json index 2c9461ae44..583f838699 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingle_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_shingle_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json index 7693abc99f..881ea208e5 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_shingles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_shingles" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_shingles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_shingles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json index 5fb3d4782a..b4de0feb2a 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_tile_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_tile_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json index 56b4c756ff..acf7feda63 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tile_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_tile_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json index 979dbd874d..494d35cd59 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_exposed_copper_tiles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:exposed_copper_tiles" - }, - { - "item": "minecraft:honeycomb" - } + "create:exposed_copper_tiles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_exposed_copper_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json index 7e9ed14256..1acbe9f159 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_shingle_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_shingle_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json index 48984415aa..a84a1f7e9e 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingle_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_shingle_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json index 74973d50e1..47db1a9df5 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_shingles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_shingles" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_shingles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_shingles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json index 53f6eebdcf..b9d247f7f8 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_tile_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_tile_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json index dbe0002650..606db4c331 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tile_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_tile_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json index 222483d9f0..9c4cd3483a 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_oxidized_copper_tiles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:oxidized_copper_tiles" - }, - { - "item": "minecraft:honeycomb" - } + "create:oxidized_copper_tiles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_oxidized_copper_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json index d500c23774..4b40d6ea55 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_shingle_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_shingle_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json index 4888bc0145..2acbfa5708 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingle_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_shingle_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json index 0e9262fe31..20f9e58a10 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_shingles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_shingles" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_shingles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_shingles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json index 8e95476a12..091e2d0918 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_slab_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_tile_slab", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_tile_slab" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json index 1f6e166b5e..3ec6043c46 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tile_stairs_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_tile_stairs", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json index 4b2b8ce45e..bb22101481 100644 --- a/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json +++ b/src/generated/resources/data/create/recipe/crafting/copper/waxed_weathered_copper_tiles_from_honeycomb.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:weathered_copper_tiles" - }, - { - "item": "minecraft:honeycomb" - } + "create:weathered_copper_tiles", + "minecraft:honeycomb" ], "result": { - "count": 1, "id": "create:waxed_weathered_copper_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/brown_toolbox.json b/src/generated/resources/data/create/recipe/crafting/curiosities/brown_toolbox.json index 963876756c..e89f0992e6 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/brown_toolbox.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/brown_toolbox.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:cogwheel" - }, - "L": { - "tag": "c:leathers" - }, - "S": { - "tag": "c:plates/gold" - }, - "W": { - "tag": "c:chests/wooden" - } + "C": "create:cogwheel", + "L": "#c:leathers", + "S": "#c:plates/gold", + "W": "#c:chests/wooden" }, "pattern": [ " C ", @@ -21,7 +12,6 @@ " L " ], "result": { - "count": 1, "id": "create:brown_toolbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/cake.json b/src/generated/resources/data/create/recipe/crafting/curiosities/cake.json index fa63d2e6cf..deaca07e39 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/cake.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/cake.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "E": { - "tag": "c:eggs" - }, - "M": { - "item": "minecraft:milk_bucket" - }, - "P": { - "tag": "c:foods/dough" - }, - "S": { - "item": "minecraft:sugar" - } + "E": "#c:eggs", + "M": "minecraft:milk_bucket", + "P": "#c:foods/dough", + "S": "minecraft:sugar" }, "pattern": [ " M ", @@ -21,7 +12,6 @@ " P " ], "result": { - "count": 1, "id": "minecraft:cake" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/item_copying.json b/src/generated/resources/data/create/recipe/crafting/curiosities/item_copying.json index 81fc0b7fd6..fe4974eb41 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/item_copying.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/item_copying.json @@ -1,4 +1,3 @@ { - "type": "create:item_copying", - "category": "misc" + "type": "create:item_copying" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/minecart_coupling.json b/src/generated/resources/data/create/recipe/crafting/curiosities/minecart_coupling.json index 02b72e4fed..f6bcdb82d6 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/minecart_coupling.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/minecart_coupling.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "E": { - "item": "create:andesite_alloy" - }, - "O": { - "tag": "c:plates/iron" - } + "E": "create:andesite_alloy", + "O": "#c:plates/iron" }, "pattern": [ " E", @@ -15,7 +10,6 @@ "E " ], "result": { - "count": 1, "id": "create:minecart_coupling" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/peculiar_bell.json b/src/generated/resources/data/create/recipe/crafting/curiosities/peculiar_bell.json index bd512f7766..b97293eb83 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/peculiar_bell.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/peculiar_bell.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "I": { - "tag": "c:storage_blocks/brass" - }, - "P": { - "tag": "c:plates/brass" - } + "I": "#c:storage_blocks/brass", + "P": "#c:plates/brass" }, "pattern": [ "I", "P" ], "result": { - "count": 1, "id": "create:peculiar_bell" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/curiosities/toolbox_dyeing.json b/src/generated/resources/data/create/recipe/crafting/curiosities/toolbox_dyeing.json index d005217e9c..a2959e1bca 100644 --- a/src/generated/resources/data/create/recipe/crafting/curiosities/toolbox_dyeing.json +++ b/src/generated/resources/data/create/recipe/crafting/curiosities/toolbox_dyeing.json @@ -1,4 +1,3 @@ { - "type": "create:toolbox_dyeing", - "category": "misc" + "type": "create:toolbox_dyeing" } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json b/src/generated/resources/data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json index 33af52c9cb..9578bab47f 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/adjustable_chain_gearshift.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:encased_chain_drive" - }, - { - "item": "create:electron_tube" - } + "create:encased_chain_drive", + "create:electron_tube" ], "result": { - "count": 1, "id": "create:adjustable_chain_gearshift" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/analog_lever.json b/src/generated/resources/data/create/recipe/crafting/kinetics/analog_lever.json index 9b7ed30d76..6c333518be 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/analog_lever.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/analog_lever.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "tag": "c:rods/wooden" - }, - "S": { - "item": "create:andesite_casing" - } + "P": "#c:rods/wooden", + "S": "create:andesite_casing" }, "pattern": [ "P", "S" ], "result": { - "count": 1, "id": "create:analog_lever" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/andesite_door.json b/src/generated/resources/data/create/recipe/crafting/kinetics/andesite_door.json index 10a5b88e2b..ef0d722ef3 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/andesite_door.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/andesite_door.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_doors" - }, - { - "item": "create:andesite_casing" - } + "#minecraft:wooden_doors", + "create:andesite_casing" ], "result": { - "count": 1, "id": "create:andesite_door" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/attribute_filter.json b/src/generated/resources/data/create/recipe/crafting/kinetics/attribute_filter.json index 79d1c55e8a..95fe361d9b 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/attribute_filter.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/attribute_filter.json @@ -1,19 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:nuggets/brass" - }, - "S": { - "tag": "minecraft:wool" - } + "A": "#c:nuggets/brass", + "S": "#minecraft:wool" }, "pattern": [ "ASA" ], "result": { - "count": 1, "id": "create:attribute_filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/basin.json b/src/generated/resources/data/create/recipe/crafting/kinetics/basin.json index 34e7bdb0b7..400d832f42 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/basin.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/basin.json @@ -1,17 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - } + "A": "create:andesite_alloy" }, "pattern": [ "A A", "AAA" ], "result": { - "count": 1, "id": "create:basin" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/belt_connector.json b/src/generated/resources/data/create/recipe/crafting/kinetics/belt_connector.json index a75c9eb575..a4f2d6b1dd 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/belt_connector.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/belt_connector.json @@ -1,17 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "D": { - "item": "minecraft:dried_kelp" - } + "D": "minecraft:dried_kelp" }, "pattern": [ "DDD", "DDD" ], "result": { - "count": 1, "id": "create:belt_connector" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat.json index 50721539d9..0362005fb1 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:black_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:black_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:black_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json index fca43714b5..9ff7f07d9f 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/black_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/black" - }, - { - "tag": "create:seats" - } + "#c:dyes/black", + "#create:seats" ], "result": { - "count": 1, "id": "create:black_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json index a72da0851e..3321bc16f6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/black_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/black" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/black", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:black_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat.json index 5999c8e0e6..439377a9f4 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:blue_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:blue_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:blue_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json index e87ac069cd..db10b61279 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/blue" - }, - { - "tag": "create:seats" - } + "#c:dyes/blue", + "#create:seats" ], "result": { - "count": 1, "id": "create:blue_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json index b222344ac4..9c38bd50c2 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/blue" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/blue", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:blue_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/brass_door.json b/src/generated/resources/data/create/recipe/crafting/kinetics/brass_door.json index 91aa79e79c..4afb064f52 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/brass_door.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/brass_door.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_doors" - }, - { - "item": "create:brass_casing" - } + "#minecraft:wooden_doors", + "create:brass_casing" ], "result": { - "count": 1, "id": "create:brass_door" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/brass_hand.json b/src/generated/resources/data/create/recipe/crafting/kinetics/brass_hand.json index 06e1ab6fd9..ef7c4528f0 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/brass_hand.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/brass_hand.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "tag": "c:plates/brass" - } + "A": "create:andesite_alloy", + "B": "#c:plates/brass" }, "pattern": [ " A ", @@ -15,7 +10,6 @@ " B " ], "result": { - "count": 1, "id": "create:brass_hand" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat.json index 85a4989265..e0f34fe03e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:brown_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:brown_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:brown_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json index 5c6a3961a1..1c052fce1d 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/brown" - }, - { - "tag": "create:seats" - } + "#c:dyes/brown", + "#create:seats" ], "result": { - "count": 1, "id": "create:brown_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json index e2901fed23..295aa266d9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/brown" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/brown", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:brown_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cart_assembler.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cart_assembler.json index 35a59f96fa..2503f5448b 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cart_assembler.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cart_assembler.json @@ -1,23 +1,15 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "L": { - "tag": "minecraft:logs" - }, - "R": { - "tag": "c:dusts/redstone" - } + "C": "create:andesite_alloy", + "L": "#minecraft:logs", + "R": "#c:dusts/redstone" }, "pattern": [ "CRC", "L L" ], "result": { - "count": 1, "id": "create:cart_assembler" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/chain_conveyor.json b/src/generated/resources/data/create/recipe/crafting/kinetics/chain_conveyor.json index 6f2a6afabb..96025c2a5a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/chain_conveyor.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/chain_conveyor.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:large_cogwheel" - }, - "C": { - "item": "create:andesite_casing" - } + "A": "create:large_cogwheel", + "C": "create:andesite_casing" }, "pattern": [ " C ", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/chute.json b/src/generated/resources/data/create/recipe/crafting/kinetics/chute.json index 5c76e27f79..0a4701664e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/chute.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/chute.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:plates/iron" - }, - "I": { - "tag": "c:ingots/iron" - } + "A": "#c:plates/iron", + "I": "#c:ingots/iron" }, "pattern": [ "A", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/clockwork_bearing.json b/src/generated/resources/data/create/recipe/crafting/kinetics/clockwork_bearing.json index aed7482177..f993c958f5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/clockwork_bearing.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/clockwork_bearing.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "item": "create:brass_casing" - }, - "S": { - "item": "create:electron_tube" - } + "B": "#minecraft:wooden_slabs", + "C": "create:brass_casing", + "S": "create:electron_tube" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "S" ], "result": { - "count": 1, "id": "create:clockwork_bearing" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/clutch.json b/src/generated/resources/data/create/recipe/crafting/kinetics/clutch.json index 5864ee45b4..32b672b61d 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/clutch.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/clutch.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "item": "create:shaft" - }, - { - "tag": "c:dusts/redstone" - } + "create:andesite_casing", + "create:shaft", + "#c:dusts/redstone" ], "result": { - "count": 1, "id": "create:clutch" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cogwheel.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cogwheel.json index 681d2601f0..9d670ec712 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cogwheel.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cogwheel.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:shaft" - }, - { - "tag": "minecraft:planks" - } + "create:shaft", + "#minecraft:planks" ], "result": { - "count": 1, "id": "create:cogwheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/contraption_controls.json b/src/generated/resources/data/create/recipe/crafting/kinetics/contraption_controls.json index a52913d9c8..f10ed9f586 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/contraption_controls.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/contraption_controls.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:buttons" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:electron_tube" - } + "B": "#minecraft:wooden_buttons", + "C": "create:andesite_casing", + "I": "create:electron_tube" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:contraption_controls" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/controller_rail.json b/src/generated/resources/data/create/recipe/crafting/kinetics/controller_rail.json index 56e7348e99..9b28f83ce1 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/controller_rail.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/controller_rail.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:ingots/gold" - }, - "E": { - "item": "create:electron_tube" - }, - "S": { - "tag": "c:rods/wooden" - } + "A": "#c:ingots/gold", + "E": "create:electron_tube", + "S": "#c:rods/wooden" }, "pattern": [ "A A", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/controls.json b/src/generated/resources/data/create/recipe/crafting/kinetics/controls.json index d1cf84188a..eb83522ec2 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/controls.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/controls.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "minecraft:lever" - }, - "C": { - "item": "create:railway_casing" - }, - "I": { - "item": "create:precision_mechanism" - } + "B": "minecraft:lever", + "C": "create:railway_casing", + "I": "create:precision_mechanism" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:controls" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_door.json b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_door.json index f821d28800..6496f0f092 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_door.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_door.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_doors" - }, - { - "item": "create:copper_casing" - } + "#minecraft:wooden_doors", + "create:copper_casing" ], "result": { - "count": 1, "id": "create:copper_door" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle.json index e06d04f505..b5498554c5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "S": { - "item": "create:andesite_alloy" - } + "C": "#c:plates/copper", + "S": "create:andesite_alloy" }, "pattern": [ "CCC", " S " ], "result": { - "count": 1, "id": "create:copper_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json index befe972cea..b0a6cfdaa6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/copper_valve_handle_from_others.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "create:valve_handles" - } + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:copper_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/crafter_slot_cover.json b/src/generated/resources/data/create/recipe/crafting/kinetics/crafter_slot_cover.json index 9b77f28ae2..33a4889a58 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/crafter_slot_cover.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/crafter_slot_cover.json @@ -1,16 +1,12 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:nuggets/brass" - } + "A": "#c:nuggets/brass" }, "pattern": [ "AAA" ], "result": { - "count": 1, "id": "create:crafter_slot_cover" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cuckoo_clock.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cuckoo_clock.json index ef004f0a19..c52351df9a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cuckoo_clock.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cuckoo_clock.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "minecraft:clock" - }, - "C": { - "item": "create:andesite_casing" - }, - "S": { - "tag": "minecraft:planks" - } + "A": "minecraft:clock", + "C": "create:andesite_casing", + "S": "#minecraft:planks" }, "pattern": [ "S", @@ -18,7 +11,6 @@ "A" ], "result": { - "count": 1, "id": "create:cuckoo_clock" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat.json index c5a36a8358..da7935d425 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:cyan_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:cyan_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:cyan_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json index bc09200d10..543c3014d9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/cyan" - }, - { - "tag": "create:seats" - } + "#c:dyes/cyan", + "#create:seats" ], "result": { - "count": 1, "id": "create:cyan_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json index be23814350..93ce863aa6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/cyan" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/cyan", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:cyan_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/deployer.json b/src/generated/resources/data/create/recipe/crafting/kinetics/deployer.json index d7bf25a1cf..f2f0099db6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/deployer.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/deployer.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:electron_tube" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:brass_hand" - } + "B": "create:electron_tube", + "C": "create:andesite_casing", + "I": "create:brass_hand" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:deployer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/depot.json b/src/generated/resources/data/create/recipe/crafting/kinetics/depot.json index ac65f5f9aa..2fc3c3097c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/depot.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/depot.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_alloy" - }, - { - "item": "create:andesite_casing" - } + "create:andesite_alloy", + "create:andesite_casing" ], "result": { - "count": 1, "id": "create:depot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/display_board.json b/src/generated/resources/data/create/recipe/crafting/kinetics/display_board.json index f0de253ef2..103e4a0353 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/display_board.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/display_board.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:electron_tube" - }, - "P": { - "item": "create:andesite_alloy" - } + "A": "create:electron_tube", + "P": "create:andesite_alloy" }, "pattern": [ "PAP" diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/elevator_pulley.json b/src/generated/resources/data/create/recipe/crafting/kinetics/elevator_pulley.json index 31c8262461..dd65d82c39 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/elevator_pulley.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/elevator_pulley.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:brass_casing" - }, - "C": { - "item": "minecraft:dried_kelp_block" - }, - "I": { - "tag": "c:plates/iron" - } + "B": "create:brass_casing", + "C": "minecraft:dried_kelp_block", + "I": "#c:plates/iron" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:elevator_pulley" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/empty_blaze_burner.json b/src/generated/resources/data/create/recipe/crafting/kinetics/empty_blaze_burner.json index d2236ccd0a..416fb1badb 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/empty_blaze_burner.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/empty_blaze_burner.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:netherracks" - }, - "I": { - "tag": "c:plates/iron" - } + "A": "#c:netherracks", + "I": "#c:plates/iron" }, "pattern": [ " I ", @@ -15,7 +10,6 @@ " I " ], "result": { - "count": 1, "id": "create:empty_blaze_burner" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive.json b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive.json index 8351e74903..94e74173bf 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive.json @@ -1,22 +1,12 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "tag": "c:nuggets/iron" - }, - { - "tag": "c:nuggets/iron" - }, - { - "tag": "c:nuggets/iron" - } + "create:andesite_casing", + "#c:nuggets/iron", + "#c:nuggets/iron", + "#c:nuggets/iron" ], "result": { - "count": 1, "id": "create:encased_chain_drive" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json index 23653bfadd..e505566f49 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_chain_drive_from_zinc.json @@ -1,22 +1,12 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "tag": "c:nuggets/zinc" - }, - { - "tag": "c:nuggets/zinc" - }, - { - "tag": "c:nuggets/zinc" - } + "create:andesite_casing", + "#c:nuggets/zinc", + "#c:nuggets/zinc", + "#c:nuggets/zinc" ], "result": { - "count": 1, "id": "create:encased_chain_drive" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_fan.json b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_fan.json index b2fef51859..29232bace8 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/encased_fan.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/encased_fan.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_casing" - }, - "P": { - "item": "create:propeller" - }, - "S": { - "item": "create:shaft" - } + "A": "create:andesite_casing", + "P": "create:propeller", + "S": "create:shaft" }, "pattern": [ "S", @@ -18,7 +11,6 @@ "P" ], "result": { - "count": 1, "id": "create:encased_fan" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/filter.json b/src/generated/resources/data/create/recipe/crafting/kinetics/filter.json index 7b2e7c4f6c..7cdf94af75 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/filter.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/filter.json @@ -1,19 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:nuggets/iron" - }, - "S": { - "tag": "minecraft:wool" - } + "A": "#c:nuggets/iron", + "S": "#minecraft:wool" }, "pattern": [ "ASA" ], "result": { - "count": 1, "id": "create:filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe.json b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe.json index b6ff76a514..6211936b63 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "S": { - "tag": "c:plates/copper" - } + "C": "#c:ingots/copper", + "S": "#c:plates/copper" }, "pattern": [ "SCS" diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json index 603318cf84..96aaa42ed2 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_pipe_vertical.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "S": { - "tag": "c:plates/copper" - } + "C": "#c:ingots/copper", + "S": "#c:plates/copper" }, "pattern": [ "S", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_tank.json b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_tank.json index 4acc933069..8e4f723196 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_tank.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_tank.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "c:plates/copper" - }, - "C": { - "tag": "c:barrels/wooden" - } + "B": "#c:plates/copper", + "C": "#c:barrels/wooden" }, "pattern": [ "B", @@ -15,7 +10,6 @@ "B" ], "result": { - "count": 1, "id": "create:fluid_tank" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_valve.json b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_valve.json index d4c95e6c2f..d59fa9df6c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_valve.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/fluid_valve.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:plates/iron" - }, - { - "item": "create:fluid_pipe" - } + "#c:plates/iron", + "create:fluid_pipe" ], "result": { - "count": 1, "id": "create:fluid_valve" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/flywheel.json b/src/generated/resources/data/create/recipe/crafting/kinetics/flywheel.json index f7d6726716..656f3ece4a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/flywheel.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/flywheel.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:shaft" - }, - "C": { - "tag": "c:ingots/brass" - } + "A": "create:shaft", + "C": "#c:ingots/brass" }, "pattern": [ "CCC", @@ -15,7 +10,6 @@ "CCC" ], "result": { - "count": 1, "id": "create:flywheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_door.json b/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_door.json index 3eb62a3ea8..ee09a10346 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_door.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_door.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_doors" - }, - { - "item": "create:framed_glass" - } + "#minecraft:wooden_doors", + "create:framed_glass" ], "result": { - "count": 1, "id": "create:framed_glass_door" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json b/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json index 7a4ec4b104..d0b3523a19 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/framed_glass_trapdoor.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_trapdoors" - }, - { - "item": "create:framed_glass" - } + "#minecraft:wooden_trapdoors", + "create:framed_glass" ], "result": { - "count": 1, "id": "create:framed_glass_trapdoor" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json b/src/generated/resources/data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json index e8645f07fc..a1606b55a8 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/furnace_minecart_from_contraption_cart.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:furnace_minecart_contraption" - } + "create:furnace_minecart_contraption" ], "result": { - "count": 1, "id": "minecraft:furnace_minecart" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_carriage.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_carriage.json index 29d1fb042b..8a606a54fe 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_carriage.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_carriage.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:cogwheel" - } + "B": "#minecraft:wooden_slabs", + "C": "create:andesite_casing", + "I": "create:cogwheel" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:gantry_carriage" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_shaft.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_shaft.json index 76331cbdd3..2750c7e899 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_shaft.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gantry_shaft.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "R": { - "tag": "c:dusts/redstone" - } + "A": "create:andesite_alloy", + "R": "#c:dusts/redstone" }, "pattern": [ "A", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox.json index f45cccd7fc..7aaf1ab507 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:andesite_casing" - }, - "C": { - "item": "create:cogwheel" - } + "B": "create:andesite_casing", + "C": "create:cogwheel" }, "pattern": [ " C ", @@ -15,7 +10,6 @@ " C " ], "result": { - "count": 1, "id": "create:gearbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox_from_conversion.json index 9123d979fd..35ae49d18f 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gearbox_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:vertical_gearbox" - } + "create:vertical_gearbox" ], "result": { - "count": 1, "id": "create:gearbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gearshift.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gearshift.json index 288cd270fb..4686b81e03 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gearshift.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gearshift.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "item": "create:cogwheel" - }, - { - "tag": "c:dusts/redstone" - } + "create:andesite_casing", + "create:cogwheel", + "#c:dusts/redstone" ], "result": { - "count": 1, "id": "create:gearshift" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/goggles.json b/src/generated/resources/data/create/recipe/crafting/kinetics/goggles.json index 60bed79464..805f27fe15 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/goggles.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/goggles.json @@ -1,23 +1,15 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "G": { - "tag": "c:glass_blocks" - }, - "P": { - "tag": "c:plates/gold" - }, - "S": { - "tag": "c:strings" - } + "G": "#c:glass_blocks", + "P": "#c:plates/gold", + "S": "#c:strings" }, "pattern": [ " S ", "GPG" ], "result": { - "count": 1, "id": "create:goggles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat.json index ed3c315b11..bc2b3c1eb9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:gray_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:gray_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:gray_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json index c72e37170c..dcbcc73f9c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/gray" - }, - { - "tag": "create:seats" - } + "#c:dyes/gray", + "#create:seats" ], "result": { - "count": 1, "id": "create:gray_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json index 95a9cc7872..9f237acfff 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/gray" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/gray", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:gray_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat.json index be28f1e046..db6b73b07a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:green_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:green_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:green_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json index 0ebbafd2b1..b2d8862e67 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/green_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/green" - }, - { - "tag": "create:seats" - } + "#c:dyes/green", + "#create:seats" ], "result": { - "count": 1, "id": "create:green_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json index 621ee42c06..c7851c16a5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/green_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/green" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/green", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:green_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/hand_crank.json b/src/generated/resources/data/create/recipe/crafting/kinetics/hand_crank.json index 61e8d279b1..d4b3f526c9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/hand_crank.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/hand_crank.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "minecraft:planks" - } + "A": "create:andesite_alloy", + "C": "#minecraft:planks" }, "pattern": [ "CCC", " A" ], "result": { - "count": 1, "id": "create:hand_crank" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/hose_pulley.json b/src/generated/resources/data/create/recipe/crafting/kinetics/hose_pulley.json index 57156ae02b..657ef9debb 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/hose_pulley.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/hose_pulley.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:copper_casing" - }, - "C": { - "item": "minecraft:dried_kelp_block" - }, - "I": { - "tag": "c:plates/copper" - } + "B": "create:copper_casing", + "C": "minecraft:dried_kelp_block", + "I": "#c:plates/copper" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:hose_pulley" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/item_drain.json b/src/generated/resources/data/create/recipe/crafting/kinetics/item_drain.json index 76d30397b0..cd2d5b4515 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/item_drain.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/item_drain.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "minecraft:iron_bars" - }, - "S": { - "item": "create:copper_casing" - } + "P": "minecraft:iron_bars", + "S": "create:copper_casing" }, "pattern": [ "P", "S" ], "result": { - "count": 1, "id": "create:item_drain" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/item_vault.json b/src/generated/resources/data/create/recipe/crafting/kinetics/item_vault.json index 3ee11a0224..e65af46433 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/item_vault.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/item_vault.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "c:plates/iron" - }, - "C": { - "tag": "c:barrels/wooden" - } + "B": "#c:plates/iron", + "C": "#c:barrels/wooden" }, "pattern": [ "B", @@ -15,7 +10,6 @@ "B" ], "result": { - "count": 1, "id": "create:item_vault" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel.json b/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel.json index 7b596d6046..0c9ad2bf82 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:shaft" - }, - { - "tag": "minecraft:planks" - }, - { - "tag": "minecraft:planks" - } + "create:shaft", + "#minecraft:planks", + "#minecraft:planks" ], "result": { - "count": 1, "id": "create:large_cogwheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json b/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json index 81f35e9211..dda6d3a9e8 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/large_cogwheel_from_little.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cogwheel" - }, - { - "tag": "minecraft:planks" - } + "create:cogwheel", + "#minecraft:planks" ], "result": { - "count": 1, "id": "create:large_cogwheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/large_water_wheel.json b/src/generated/resources/data/create/recipe/crafting/kinetics/large_water_wheel.json index 863b5e8099..05270da8ed 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/large_water_wheel.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/large_water_wheel.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:water_wheel" - }, - "S": { - "tag": "minecraft:planks" - } + "C": "create:water_wheel", + "S": "#minecraft:planks" }, "pattern": [ "SSS", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:large_water_wheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat.json index 71615e4ab2..4199641cef 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:light_blue_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:light_blue_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:light_blue_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json index f7c163364f..3096a0644c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_blue" - }, - { - "tag": "create:seats" - } + "#c:dyes/light_blue", + "#create:seats" ], "result": { - "count": 1, "id": "create:light_blue_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json index 80612eb341..451efe577c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/light_blue" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/light_blue", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:light_blue_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat.json index e02d51ff01..54ab24d7bd 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:light_gray_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:light_gray_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:light_gray_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json index d0d8f1c3d6..faa2da54ff 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_gray" - }, - { - "tag": "create:seats" - } + "#c:dyes/light_gray", + "#create:seats" ], "result": { - "count": 1, "id": "create:light_gray_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json index 61fc87428f..0038a03b62 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/light_gray" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/light_gray", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:light_gray_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat.json index 7b5bc0e3aa..e06a1e7a4e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:lime_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:lime_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:lime_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json index 60deac890a..befd93abbd 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/lime" - }, - { - "tag": "create:seats" - } + "#c:dyes/lime", + "#create:seats" ], "result": { - "count": 1, "id": "create:lime_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json index e9caa8d6eb..e289068ea5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/lime" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/lime", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:lime_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis.json b/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis.json index 48cf176e3b..fd99181808 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "L": { - "tag": "minecraft:logs" - }, - "P": { - "item": "create:andesite_alloy" - } + "L": "#minecraft:logs", + "P": "create:andesite_alloy" }, "pattern": [ " P ", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json index 1f0ac2ab78..c11f29f854 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/linear_chassis_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:secondary_linear_chassis" - } + "create:secondary_linear_chassis" ], "result": { - "count": 1, "id": "create:linear_chassis" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat.json index 38c8778354..95e671cebd 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:magenta_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:magenta_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:magenta_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json index 9b17fc5163..c8447e1df6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/magenta" - }, - { - "tag": "create:seats" - } + "#c:dyes/magenta", + "#create:seats" ], "result": { - "count": 1, "id": "create:magenta_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json index ae4a07927e..1415255294 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/magenta" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/magenta", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:magenta_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_arm.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_arm.json index 0d6c894c50..f90677a531 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_arm.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_arm.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:brass_casing" - }, - "I": { - "item": "create:precision_mechanism" - }, - "L": { - "tag": "c:plates/brass" - } + "A": "create:andesite_alloy", + "C": "create:brass_casing", + "I": "create:precision_mechanism", + "L": "#c:plates/brass" }, "pattern": [ "LLA", @@ -21,7 +12,6 @@ "IC " ], "result": { - "count": 1, "id": "create:mechanical_arm" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_bearing.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_bearing.json index 0551bae58f..6296b712fc 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_bearing.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_bearing.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:shaft" - } + "B": "#minecraft:wooden_slabs", + "C": "create:andesite_casing", + "I": "create:shaft" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:mechanical_bearing" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_crafter.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_crafter.json index 380b61c834..0a742842b9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_crafter.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_crafter.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:electron_tube" - }, - "C": { - "item": "create:brass_casing" - }, - "R": { - "item": "minecraft:crafting_table" - } + "B": "create:electron_tube", + "C": "create:brass_casing", + "R": "minecraft:crafting_table" }, "pattern": [ "B", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_drill.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_drill.json index 7b3ceaffc9..3a32139b9b 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_drill.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_drill.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "c:ingots/iron" - } + "A": "create:andesite_alloy", + "C": "create:andesite_casing", + "I": "#c:ingots/iron" }, "pattern": [ " A ", @@ -18,7 +11,6 @@ " C " ], "result": { - "count": 1, "id": "create:mechanical_drill" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_harvester.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_harvester.json index 691df535ec..ef64351c06 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_harvester.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_harvester.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "c:plates/iron" - } + "A": "create:andesite_alloy", + "C": "create:andesite_casing", + "I": "#c:plates/iron" }, "pattern": [ "AIA", @@ -18,7 +11,6 @@ " C " ], "result": { - "count": 1, "id": "create:mechanical_harvester" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_mixer.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_mixer.json index 508a2d2058..2dece27832 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_mixer.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_mixer.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:whisk" - }, - "S": { - "item": "create:cogwheel" - } + "C": "create:andesite_casing", + "I": "create:whisk", + "S": "create:cogwheel" }, "pattern": [ "S", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:mechanical_mixer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_piston.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_piston.json index c2ca3732c5..f9a6ba9517 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_piston.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_piston.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:piston_extension_pole" - } + "B": "#minecraft:wooden_slabs", + "C": "create:andesite_casing", + "I": "create:piston_extension_pole" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:mechanical_piston" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_plough.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_plough.json index 6f204ea7f3..6f937751bf 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_plough.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_plough.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "c:plates/iron" - } + "A": "create:andesite_alloy", + "C": "create:andesite_casing", + "I": "#c:plates/iron" }, "pattern": [ "III", @@ -18,7 +11,6 @@ " C " ], "result": { - "count": 1, "id": "create:mechanical_plough" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_press.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_press.json index 448cb4fa78..2759900126 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_press.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_press.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "S": { - "item": "create:shaft" - } + "C": "create:andesite_casing", + "I": "#c:storage_blocks/iron", + "S": "create:shaft" }, "pattern": [ "S", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:mechanical_press" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_pump.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_pump.json index ee4008cf12..eab83d6582 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_pump.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_pump.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cogwheel" - }, - { - "item": "create:fluid_pipe" - } + "create:cogwheel", + "create:fluid_pipe" ], "result": { - "count": 1, "id": "create:mechanical_pump" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_roller.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_roller.json index a72051eca4..3f4b2c8bdb 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_roller.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_roller.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:electron_tube" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:crushing_wheel" - } + "A": "create:electron_tube", + "C": "create:andesite_casing", + "I": "create:crushing_wheel" }, "pattern": [ "A", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:mechanical_roller" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_saw.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_saw.json index 8740951159..a9ecf0a869 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_saw.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mechanical_saw.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:plates/iron" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "c:ingots/iron" - } + "A": "#c:plates/iron", + "C": "create:andesite_casing", + "I": "#c:ingots/iron" }, "pattern": [ " A ", @@ -18,7 +11,6 @@ " C " ], "result": { - "count": 1, "id": "create:mechanical_saw" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/metal_bracket.json b/src/generated/resources/data/create/recipe/crafting/kinetics/metal_bracket.json index eb12305e1a..d1c68b0640 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/metal_bracket.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/metal_bracket.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "c:ingots/iron" - }, - "S": { - "tag": "c:nuggets/iron" - } + "C": "create:andesite_alloy", + "P": "#c:ingots/iron", + "S": "#c:nuggets/iron" }, "pattern": [ "SSS", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/metal_girder.json b/src/generated/resources/data/create/recipe/crafting/kinetics/metal_girder.json index 9d5dc1aec2..e5bc768a6d 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/metal_girder.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/metal_girder.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "c:plates/iron" - } + "C": "create:andesite_alloy", + "P": "#c:plates/iron" }, "pattern": [ "PPP", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/millstone.json b/src/generated/resources/data/create/recipe/crafting/kinetics/millstone.json index 02e1f68f84..c6eada1c6f 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/millstone.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/millstone.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:cogwheel" - }, - "I": { - "tag": "c:stones" - }, - "S": { - "item": "create:andesite_casing" - } + "C": "create:cogwheel", + "I": "#c:stones", + "S": "create:andesite_casing" }, "pattern": [ "C", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:millstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json b/src/generated/resources/data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json index bd82e34c1b..701a5b9660 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/minecart_from_contraption_cart.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:minecart_contraption" - } + "create:minecart_contraption" ], "result": { - "count": 1, "id": "minecraft:minecart" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json b/src/generated/resources/data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json index b76136c055..0b999a3eb1 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/mysterious_cuckoo_clock.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:cuckoo_clock" - }, - "C": { - "tag": "c:gunpowders" - } + "B": "create:cuckoo_clock", + "C": "#c:gunpowders" }, "pattern": [ " C ", @@ -15,7 +10,6 @@ " C " ], "result": { - "count": 1, "id": "create:mysterious_cuckoo_clock" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/nixie_tube.json b/src/generated/resources/data/create/recipe/crafting/kinetics/nixie_tube.json index 496a57a397..c878968624 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/nixie_tube.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/nixie_tube.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:electron_tube" - }, - { - "item": "create:electron_tube" - } + "create:electron_tube", + "create:electron_tube" ], "result": { "count": 4, diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/nozzle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/nozzle.json index 7acc87b1ee..06e033758d 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/nozzle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/nozzle.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "minecraft:wool" - }, - "S": { - "item": "create:andesite_alloy" - } + "C": "#minecraft:wool", + "S": "create:andesite_alloy" }, "pattern": [ " S ", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:nozzle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat.json index fba800218b..2eb11382c5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:orange_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:orange_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:orange_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json index 19b46cba24..4a8ab1098e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/orange" - }, - { - "tag": "create:seats" - } + "#c:dyes/orange", + "#create:seats" ], "result": { - "count": 1, "id": "create:orange_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json index 71b8872e7d..1fbca89944 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/orange" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/orange", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:orange_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/package_filter.json b/src/generated/resources/data/create/recipe/crafting/kinetics/package_filter.json index 50dd9d9eb7..49c0d7efa4 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/package_filter.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/package_filter.json @@ -1,19 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:nuggets/zinc" - }, - "S": { - "tag": "minecraft:wool" - } + "A": "#c:nuggets/zinc", + "S": "#minecraft:wool" }, "pattern": [ "ASA" ], "result": { - "count": 1, "id": "create:package_filter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat.json index b1e3d8bea2..6879ef4c65 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:pink_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:pink_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:pink_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json index 531a82b6b2..3b4f169636 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/pink" - }, - { - "tag": "create:seats" - } + "#c:dyes/pink", + "#create:seats" ], "result": { - "count": 1, "id": "create:pink_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json index 3b3a41502a..7a0b1d4610 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/pink" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/pink", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:pink_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/piston_extension_pole.json b/src/generated/resources/data/create/recipe/crafting/kinetics/piston_extension_pole.json index 3ec8162ece..88401396be 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/piston_extension_pole.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/piston_extension_pole.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "minecraft:planks" - } + "A": "create:andesite_alloy", + "P": "#minecraft:planks" }, "pattern": [ "P", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/placard.json b/src/generated/resources/data/create/recipe/crafting/kinetics/placard.json index f1e9526aa3..efb1cd63cb 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/placard.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/placard.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "minecraft:item_frame" - }, - { - "tag": "c:plates/brass" - } + "minecraft:item_frame", + "#c:plates/brass" ], "result": { - "count": 1, "id": "create:placard" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/portable_fluid_interface.json b/src/generated/resources/data/create/recipe/crafting/kinetics/portable_fluid_interface.json index d1b8ff81bc..07daf01d9b 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/portable_fluid_interface.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/portable_fluid_interface.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:copper_casing" - }, - { - "item": "create:chute" - } + "create:copper_casing", + "create:chute" ], "result": { - "count": 1, "id": "create:portable_fluid_interface" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/portable_storage_interface.json b/src/generated/resources/data/create/recipe/crafting/kinetics/portable_storage_interface.json index 634166c231..7ac1434123 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/portable_storage_interface.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/portable_storage_interface.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "item": "create:chute" - } + "create:andesite_casing", + "create:chute" ], "result": { - "count": 1, "id": "create:portable_storage_interface" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/propeller.json b/src/generated/resources/data/create/recipe/crafting/kinetics/propeller.json index 7894d88a68..8c2a44a241 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/propeller.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/propeller.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "c:plates/iron" - } + "C": "create:andesite_alloy", + "S": "#c:plates/iron" }, "pattern": [ " S ", @@ -15,7 +10,6 @@ " S " ], "result": { - "count": 1, "id": "create:propeller" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat.json index dbc325b97c..e52bdb5c15 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:purple_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:purple_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:purple_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json index ccc6b4067b..2c7b1b02e9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/purple" - }, - { - "tag": "create:seats" - } + "#c:dyes/purple", + "#create:seats" ], "result": { - "count": 1, "id": "create:purple_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json index 64369facae..abbc54951e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/purple" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/purple", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:purple_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/radial_chassis.json b/src/generated/resources/data/create/recipe/crafting/kinetics/radial_chassis.json index 810ed0a019..a51e32de55 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/radial_chassis.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/radial_chassis.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "L": { - "tag": "minecraft:logs" - }, - "P": { - "item": "create:andesite_alloy" - } + "L": "#minecraft:logs", + "P": "create:andesite_alloy" }, "pattern": [ " L ", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat.json index dbf31afadd..33cb288d1e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:red_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:red_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:red_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json index 88c1e05837..ffb827359a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/red_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/red" - }, - { - "tag": "create:seats" - } + "#c:dyes/red", + "#create:seats" ], "result": { - "count": 1, "id": "create:red_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json index fe792a369c..aca73106ee 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/red_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/red" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/red", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:red_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/rope_pulley.json b/src/generated/resources/data/create/recipe/crafting/kinetics/rope_pulley.json index ad4764105f..412686c6d6 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/rope_pulley.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/rope_pulley.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:andesite_casing" - }, - "C": { - "tag": "minecraft:wool" - }, - "I": { - "tag": "c:plates/iron" - } + "B": "create:andesite_casing", + "C": "#minecraft:wool", + "I": "#c:plates/iron" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:rope_pulley" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/rose_quartz_lamp.json b/src/generated/resources/data/create/recipe/crafting/kinetics/rose_quartz_lamp.json index 582b45347b..ef626d4ae8 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/rose_quartz_lamp.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/rose_quartz_lamp.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:polished_rose_quartz" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:ingots/zinc" - } + "create:polished_rose_quartz", + "#c:dusts/redstone", + "#c:ingots/zinc" ], "result": { - "count": 1, "id": "create:rose_quartz_lamp" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/rotation_speed_controller.json b/src/generated/resources/data/create/recipe/crafting/kinetics/rotation_speed_controller.json index 80fe96ce09..7c63d0ee2e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/rotation_speed_controller.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/rotation_speed_controller.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:precision_mechanism" - }, - "C": { - "item": "create:brass_casing" - } + "B": "create:precision_mechanism", + "C": "create:brass_casing" }, "pattern": [ "B", "C" ], "result": { - "count": 1, "id": "create:rotation_speed_controller" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json index 7c5f38bb66..fb7313af4c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/sail_frame_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:white_sail" - } + "create:white_sail" ], "result": { - "count": 1, "id": "create:sail_frame" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/schedule.json b/src/generated/resources/data/create/recipe/crafting/kinetics/schedule.json index 1177ab77aa..1e834768ce 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/schedule.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/schedule.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:plates/obsidian" - }, - { - "item": "minecraft:paper" - } + "#c:plates/obsidian", + "minecraft:paper" ], "result": { "count": 4, diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json index d02e2b60e2..2b1ff7584a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/secondary_linear_chassis_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:linear_chassis" - } + "create:linear_chassis" ], "result": { - "count": 1, "id": "create:secondary_linear_chassis" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/sequenced_gearshift.json b/src/generated/resources/data/create/recipe/crafting/kinetics/sequenced_gearshift.json index 5994a038dc..9547bf83c8 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/sequenced_gearshift.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/sequenced_gearshift.json @@ -1,19 +1,11 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:brass_casing" - }, - { - "item": "create:cogwheel" - }, - { - "item": "create:electron_tube" - } + "create:brass_casing", + "create:cogwheel", + "create:electron_tube" ], "result": { - "count": 1, "id": "create:sequenced_gearshift" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/shaft.json b/src/generated/resources/data/create/recipe/crafting/kinetics/shaft.json index 8c28f39351..7e42d17be0 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/shaft.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/shaft.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - } + "A": "create:andesite_alloy" }, "pattern": [ "A", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/smart_chute.json b/src/generated/resources/data/create/recipe/crafting/kinetics/smart_chute.json index bae00b7837..1ca7fe5091 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/smart_chute.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/smart_chute.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "I": { - "tag": "c:plates/brass" - }, - "P": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:chute" - } + "I": "#c:plates/brass", + "P": "create:electron_tube", + "S": "create:chute" }, "pattern": [ "I", @@ -18,7 +11,6 @@ "P" ], "result": { - "count": 1, "id": "create:smart_chute" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/smart_fluid_pipe.json b/src/generated/resources/data/create/recipe/crafting/kinetics/smart_fluid_pipe.json index b01514db8a..6c11cd1e64 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/smart_fluid_pipe.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/smart_fluid_pipe.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "I": { - "tag": "c:plates/brass" - }, - "P": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:fluid_pipe" - } + "I": "#c:plates/brass", + "P": "create:electron_tube", + "S": "create:fluid_pipe" }, "pattern": [ "I", @@ -18,7 +11,6 @@ "P" ], "result": { - "count": 1, "id": "create:smart_fluid_pipe" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer.json b/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer.json index 4c0c4ea2b8..8cbdbd42ad 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_casing" - }, - "C": { - "item": "minecraft:compass" - } + "A": "create:andesite_casing", + "C": "minecraft:compass" }, "pattern": [ "C", "A" ], "result": { - "count": 1, "id": "create:speedometer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer_from_conversion.json index d3f15726cf..6d78185862 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/speedometer_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:stressometer" - } + "create:stressometer" ], "result": { - "count": 1, "id": "create:speedometer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/spout.json b/src/generated/resources/data/create/recipe/crafting/kinetics/spout.json index 9ddfac2061..baca2aaaef 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/spout.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/spout.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "minecraft:dried_kelp" - }, - "T": { - "item": "create:copper_casing" - } + "P": "minecraft:dried_kelp", + "T": "create:copper_casing" }, "pattern": [ "T", "P" ], "result": { - "count": 1, "id": "create:spout" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/steam_engine.json b/src/generated/resources/data/create/recipe/crafting/kinetics/steam_engine.json index 9b2e66e358..a43faf8e3f 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/steam_engine.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/steam_engine.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "c:storage_blocks/copper" - }, - "P": { - "tag": "c:plates/gold" - } + "A": "create:andesite_alloy", + "C": "#c:storage_blocks/copper", + "P": "#c:plates/gold" }, "pattern": [ "P", @@ -18,7 +11,6 @@ "C" ], "result": { - "count": 1, "id": "create:steam_engine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/steam_whistle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/steam_whistle.json index 7297f70e8c..01b47d1dd1 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/steam_whistle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/steam_whistle.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "P": { - "tag": "c:plates/gold" - } + "C": "#c:ingots/copper", + "P": "#c:plates/gold" }, "pattern": [ "P", "C" ], "result": { - "count": 1, "id": "create:steam_whistle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/sticker.json b/src/generated/resources/data/create/recipe/crafting/kinetics/sticker.json index 497a73317c..6b28f8782a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/sticker.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/sticker.json @@ -1,26 +1,16 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:cobblestones" - }, - "I": { - "item": "create:andesite_alloy" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:slimeballs" - } + "C": "#c:cobblestones", + "I": "create:andesite_alloy", + "R": "#c:dusts/redstone", + "S": "#c:slime_balls" }, "pattern": [ "ISI", "CRC" ], "result": { - "count": 1, "id": "create:sticker" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json b/src/generated/resources/data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json index 9dbc04fb03..9365b8d616 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/sticky_mechanical_piston.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "item": "create:mechanical_piston" - }, - "S": { - "tag": "c:slimeballs" - } + "P": "create:mechanical_piston", + "S": "#c:slime_balls" }, "pattern": [ "S", "P" ], "result": { - "count": 1, "id": "create:sticky_mechanical_piston" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/stressometer_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/stressometer_from_conversion.json index b2f7871da5..9a93119d7c 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/stressometer_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/stressometer_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:speedometer" - } + "create:speedometer" ], "result": { - "count": 1, "id": "create:stressometer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/super_glue.json b/src/generated/resources/data/create/recipe/crafting/kinetics/super_glue.json index 2fcf175155..5e0b93b645 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/super_glue.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/super_glue.json @@ -1,23 +1,15 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:slimeballs" - }, - "N": { - "tag": "c:nuggets/iron" - }, - "S": { - "tag": "c:plates/iron" - } + "A": "#c:slime_balls", + "N": "#c:nuggets/iron", + "S": "#c:plates/iron" }, "pattern": [ "AS", "NA" ], "result": { - "count": 1, "id": "create:super_glue" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer.json b/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer.json index 0c4a7b036c..ae22ba70b3 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:railway_casing" - }, - { - "tag": "minecraft:wooden_pressure_plates" - } + "create:railway_casing", + "#minecraft:wooden_pressure_plates" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json b/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json index 686831471a..6bef10027e 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/track_observer_from_other_plates.json @@ -1,23 +1,12 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:railway_casing" - }, + "create:railway_casing", [ - { - "item": "minecraft:stone_pressure_plate" - }, - { - "item": "minecraft:polished_blackstone_pressure_plate" - }, - { - "item": "minecraft:heavy_weighted_pressure_plate" - }, - { - "item": "minecraft:light_weighted_pressure_plate" - } + "minecraft:stone_pressure_plate", + "minecraft:polished_blackstone_pressure_plate", + "minecraft:heavy_weighted_pressure_plate", + "minecraft:light_weighted_pressure_plate" ] ], "result": { diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/track_signal.json b/src/generated/resources/data/create/recipe/crafting/kinetics/track_signal.json index f329026277..ab06be5c76 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/track_signal.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/track_signal.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:railway_casing" - }, - { - "item": "create:electron_tube" - } + "create:railway_casing", + "create:electron_tube" ], "result": { "count": 4, diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/track_station.json b/src/generated/resources/data/create/recipe/crafting/kinetics/track_station.json index 822cea445a..766d11d995 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/track_station.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/track_station.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:railway_casing" - }, - { - "item": "minecraft:compass" - } + "create:railway_casing", + "minecraft:compass" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/train_door.json b/src/generated/resources/data/create/recipe/crafting/kinetics/train_door.json index dc13319155..31680b9680 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/train_door.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/train_door.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_doors" - }, - { - "item": "create:railway_casing" - } + "#minecraft:wooden_doors", + "create:railway_casing" ], "result": { - "count": 1, "id": "create:train_door" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/train_trapdoor.json b/src/generated/resources/data/create/recipe/crafting/kinetics/train_trapdoor.json index c77524f85e..46114ec1f5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/train_trapdoor.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/train_trapdoor.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:wooden_trapdoors" - }, - { - "item": "create:railway_casing" - } + "#minecraft:wooden_trapdoors", + "create:railway_casing" ], "result": { - "count": 1, "id": "create:train_trapdoor" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/turntable.json b/src/generated/resources/data/create/recipe/crafting/kinetics/turntable.json index 8fb0277f51..bbc9e1971a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/turntable.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/turntable.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "P": { - "tag": "minecraft:wooden_slabs" - }, - "S": { - "item": "create:shaft" - } + "P": "#minecraft:wooden_slabs", + "S": "create:shaft" }, "pattern": [ "P", "S" ], "result": { - "count": 1, "id": "create:turntable" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox.json b/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox.json index 0c75701ff0..879d22e15a 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:andesite_casing" - }, - "C": { - "item": "create:cogwheel" - } + "B": "create:andesite_casing", + "C": "create:cogwheel" }, "pattern": [ "C C", @@ -15,7 +10,6 @@ "C C" ], "result": { - "count": 1, "id": "create:vertical_gearbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json index e111bdb1c4..58e63213ee 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/vertical_gearbox_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:gearbox" - } + "create:gearbox" ], "result": { - "count": 1, "id": "create:vertical_gearbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/water_wheel.json b/src/generated/resources/data/create/recipe/crafting/kinetics/water_wheel.json index c791c505e7..8e14a7d541 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/water_wheel.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/water_wheel.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:shaft" - }, - "S": { - "tag": "minecraft:planks" - } + "C": "create:shaft", + "S": "#minecraft:planks" }, "pattern": [ "SSS", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:water_wheel" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/weighted_ejector.json b/src/generated/resources/data/create/recipe/crafting/kinetics/weighted_ejector.json index a2cda51ad7..63749394ac 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/weighted_ejector.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/weighted_ejector.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:plates/gold" - }, - "D": { - "item": "create:depot" - }, - "I": { - "item": "create:cogwheel" - } + "A": "#c:plates/gold", + "D": "create:depot", + "I": "create:cogwheel" }, "pattern": [ "A", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:weighted_ejector" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/whisk.json b/src/generated/resources/data/create/recipe/crafting/kinetics/whisk.json index d0ae30a232..4fb6d09d66 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/whisk.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/whisk.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "c:plates/iron" - } + "C": "create:andesite_alloy", + "S": "#c:plates/iron" }, "pattern": [ " C ", @@ -15,7 +10,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:whisk" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail.json b/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail.json index 77090a5b05..af15fbfea5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "c:rods/wooden" - }, - "W": { - "tag": "minecraft:wool" - } + "A": "create:andesite_alloy", + "S": "#c:rods/wooden", + "W": "#minecraft:wool" }, "pattern": [ "WS", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail_from_conversion.json index cd68f12447..82496e3144 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/white_sail_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:sail_frame" - } + "create:sail_frame" ], "result": { - "count": 1, "id": "create:white_sail" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat.json index 0fa14d4415..2165f44847 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:white_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:white_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:white_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json index 62990d6e8c..e9046b0142 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/white_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/white" - }, - { - "tag": "create:seats" - } + "#c:dyes/white", + "#create:seats" ], "result": { - "count": 1, "id": "create:white_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json index 6a26b59953..6250970b49 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/white_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/white" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/white", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:white_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/windmill_bearing.json b/src/generated/resources/data/create/recipe/crafting/kinetics/windmill_bearing.json index b09607262f..9a6918f886 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/windmill_bearing.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/windmill_bearing.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "tag": "c:stones" - }, - "I": { - "item": "create:shaft" - } + "B": "#minecraft:wooden_slabs", + "C": "#c:stones", + "I": "create:shaft" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:windmill_bearing" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/wooden_bracket.json b/src/generated/resources/data/create/recipe/crafting/kinetics/wooden_bracket.json index 8ded69bb2e..b7cb73ae97 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/wooden_bracket.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/wooden_bracket.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "minecraft:planks" - }, - "S": { - "tag": "c:rods/wooden" - } + "C": "create:andesite_alloy", + "P": "#minecraft:planks", + "S": "#c:rods/wooden" }, "pattern": [ "SSS", diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/wrench.json b/src/generated/resources/data/create/recipe/crafting/kinetics/wrench.json index 1b104145f1..4468cb0460 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/wrench.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/wrench.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "G": { - "tag": "c:plates/gold" - }, - "P": { - "item": "create:cogwheel" - }, - "S": { - "tag": "c:rods/wooden" - } + "G": "#c:plates/gold", + "P": "create:cogwheel", + "S": "#c:rods/wooden" }, "pattern": [ "GG", @@ -18,7 +11,6 @@ " S" ], "result": { - "count": 1, "id": "create:wrench" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat.json index 8cb0be3974..c45eda6fa0 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:yellow_wool" - }, - { - "tag": "minecraft:wooden_slabs" - } + "minecraft:yellow_wool", + "#minecraft:wooden_slabs" ], "result": { - "count": 1, "id": "create:yellow_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json index ce0d207de8..86933115b5 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_seat_from_other_seat.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/yellow" - }, - { - "tag": "create:seats" - } + "#c:dyes/yellow", + "#create:seats" ], "result": { - "count": 1, "id": "create:yellow_seat" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json index 9300f0f732..85d7499fc9 100644 --- a/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +++ b/src/generated/resources/data/create/recipe/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:dyes/yellow" - }, - { - "tag": "create:valve_handles" - } + "#c:dyes/yellow", + "#create:valve_handles" ], "result": { - "count": 1, "id": "create:yellow_valve_handle" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_funnel.json b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_funnel.json index e444591e37..b1d8e6cea4 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_funnel.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_funnel.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "K": { - "item": "minecraft:dried_kelp" - } + "A": "create:andesite_alloy", + "K": "minecraft:dried_kelp" }, "pattern": [ "A", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json index 91b7c39bea..3a3c1925b3 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_table_cloth" - } + "create:andesite_table_cloth" ], "result": { - "count": 1, "id": "create:andesite_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_tunnel.json b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_tunnel.json index 008ed0f186..559f98bb10 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/andesite_tunnel.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/andesite_tunnel.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "K": { - "item": "minecraft:dried_kelp" - } + "A": "create:andesite_alloy", + "K": "minecraft:dried_kelp" }, "pattern": [ "AA", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox.json index f3352ae380..376f0f7ead 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/black" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/black" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:black_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json index b58e94533c..c24aacad5f 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/black_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/black" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/black", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:black_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth.json index 1587926988..903cdd0553 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:black_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:black_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_clear.json index bb571316b6..e4d0044c6c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:black_table_cloth" - } + "create:black_table_cloth" ], "result": { - "count": 1, "id": "create:black_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json index 2bd636ce4c..c7ec722beb 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/black_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/black" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/black", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:black_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox.json index bf4fe0a463..6223f8fb50 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/blue" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/blue" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:blue_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json index fc30a8e899..8001fa872c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/blue_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/blue" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/blue", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:blue_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth.json index d618778287..e6485a070e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:blue_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:blue_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_clear.json index aec3c86098..a515a2bb9d 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:blue_table_cloth" - } + "create:blue_table_cloth" ], "result": { - "count": 1, "id": "create:blue_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json index 0631e3ebae..a0afe07a02 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/blue_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/blue" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/blue", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:blue_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brass_funnel.json b/src/generated/resources/data/create/recipe/crafting/logistics/brass_funnel.json index 776aac4c66..77248bd138 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brass_funnel.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brass_funnel.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:ingots/brass" - }, - "E": { - "item": "create:electron_tube" - }, - "K": { - "item": "minecraft:dried_kelp" - } + "A": "#c:ingots/brass", + "E": "create:electron_tube", + "K": "minecraft:dried_kelp" }, "pattern": [ "E", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brass_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/brass_table_cloth_clear.json index 4d32badf00..ffa535db6c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brass_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brass_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:brass_table_cloth" - } + "create:brass_table_cloth" ], "result": { - "count": 1, "id": "create:brass_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brass_tunnel.json b/src/generated/resources/data/create/recipe/crafting/logistics/brass_tunnel.json index c79caac37d..07f40392e4 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brass_tunnel.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brass_tunnel.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "tag": "c:ingots/brass" - }, - "E": { - "item": "create:electron_tube" - }, - "K": { - "item": "minecraft:dried_kelp" - } + "A": "#c:ingots/brass", + "E": "create:electron_tube", + "K": "minecraft:dried_kelp" }, "pattern": [ "E ", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox.json index d1ba89e02f..00a39b4403 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/brown" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/brown" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:brown_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json index 6a61137068..0db7840482 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brown_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/brown" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/brown", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:brown_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth.json index 96b483b45e..0497d3b05b 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:brown_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:brown_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_clear.json index bc3561a57c..1702d5f2bf 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:brown_table_cloth" - } + "create:brown_table_cloth" ], "result": { - "count": 1, "id": "create:brown_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json index d6598b4f18..235a5af25a 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/brown_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/brown" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/brown", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:brown_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/content_observer.json b/src/generated/resources/data/create/recipe/crafting/logistics/content_observer.json index 5f272128bf..77d688eecf 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/content_observer.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/content_observer.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:brass_casing" - }, - "I": { - "item": "minecraft:observer" - }, - "R": { - "item": "create:electron_tube" - } + "B": "create:brass_casing", + "I": "minecraft:observer", + "R": "create:electron_tube" }, "pattern": [ "R", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:content_observer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/copper_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/copper_table_cloth_clear.json index 7e4510b380..9109ba459f 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/copper_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/copper_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:copper_table_cloth" - } + "create:copper_table_cloth" ], "result": { - "count": 1, "id": "create:copper_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox.json index 81f9d55d3e..57c23d26f2 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/cyan" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/cyan" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:cyan_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json index 64700a2714..d34ec66422 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/cyan" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/cyan", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:cyan_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth.json index a7babce0d4..47c3d1a4f9 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:cyan_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:cyan_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json index 4caa772331..5145dce811 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cyan_table_cloth" - } + "create:cyan_table_cloth" ], "result": { - "count": 1, "id": "create:cyan_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json index 48be5d1c64..0dcc85953e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/cyan_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/cyan" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/cyan", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:cyan_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/desk_bell.json b/src/generated/resources/data/create/recipe/crafting/logistics/desk_bell.json index d9559461bd..88068e5188 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/desk_bell.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/desk_bell.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_casing" - }, - { - "tag": "c:plates/gold" - } + "create:andesite_casing", + "#c:plates/gold" ], "result": { - "count": 1, "id": "create:desk_bell" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/display_link.json b/src/generated/resources/data/create/recipe/crafting/logistics/display_link.json index 958079c829..298018b1cf 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/display_link.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/display_link.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:transmitter" - }, - "S": { - "item": "create:brass_casing" - } + "C": "create:transmitter", + "S": "create:brass_casing" }, "pattern": [ "C", "S" ], "result": { - "count": 1, "id": "create:display_link" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge.json b/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge.json index 9b548fb0ab..edb2cb3d74 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:stock_link" - }, - { - "item": "create:precision_mechanism" - } + "create:stock_link", + "create:precision_mechanism" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge_clear.json index ef8dd26d17..48096b0821 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/factory_gauge_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:factory_gauge" - } + "create:factory_gauge" ], "result": { - "count": 1, "id": "create:factory_gauge" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox.json index 7ea94e96d6..dbef2d0cbb 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/gray" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/gray" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:gray_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json index e97ad19525..d833b6740c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/gray_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/gray" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/gray", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:gray_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth.json index 9a84e73839..5b8a52cfd4 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:gray_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:gray_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_clear.json index 36f553011f..dcfe2d9e5a 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:gray_table_cloth" - } + "create:gray_table_cloth" ], "result": { - "count": 1, "id": "create:gray_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json index b749c0bafb..1471401f42 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/gray_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/gray" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/gray", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:gray_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox.json index 9d04d82aa0..c0427077b1 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/green" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/green" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:green_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json index 5b25144743..6df0cf6ff5 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/green_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/green" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/green", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:green_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth.json index e523d5a831..fa80c89669 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:green_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:green_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_clear.json index bb74fa1e78..45b1c3d058 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:green_table_cloth" - } + "create:green_table_cloth" ], "result": { - "count": 1, "id": "create:green_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json index cb8f508da8..6562ed3632 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/green_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/green" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/green", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:green_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/item_hatch.json b/src/generated/resources/data/create/recipe/crafting/logistics/item_hatch.json index c1fd9e132e..6c50f310a8 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/item_hatch.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/item_hatch.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_alloy" - }, - { - "item": "minecraft:iron_trapdoor" - } + "create:andesite_alloy", + "minecraft:iron_trapdoor" ], "result": { - "count": 1, "id": "create:item_hatch" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox.json index 9dc7b8ea39..386dfde51b 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/light_blue" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/light_blue" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:light_blue_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json index 884179c9f4..290c602010 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_blue" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/light_blue", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:light_blue_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth.json index 77ed37cb42..8b67ab9c1e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:light_blue_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:light_blue_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json index 09ce0c6ff9..3f54de5d37 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:light_blue_table_cloth" - } + "create:light_blue_table_cloth" ], "result": { - "count": 1, "id": "create:light_blue_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json index a22acccba0..2ca78d25e2 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_blue_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_blue" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/light_blue", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:light_blue_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox.json index 8d5e9597d7..d2f8862fa8 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/light_gray" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/light_gray" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:light_gray_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json index 54bca69e2d..1bc5c4f383 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_gray" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/light_gray", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:light_gray_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth.json index 6afbdbcda6..50c2d6d62e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:light_gray_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:light_gray_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json index 9886689704..df73b49e5a 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:light_gray_table_cloth" - } + "create:light_gray_table_cloth" ], "result": { - "count": 1, "id": "create:light_gray_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json index cc1a23e2d4..1f7c0a2ff2 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/light_gray_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/light_gray" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/light_gray", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:light_gray_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox.json index 21e6d1d102..25c2588156 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/lime" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/lime" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:lime_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json index fc9ce1d741..18e1057522 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/lime_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/lime" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/lime", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:lime_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth.json index bd84447fd5..35ed9c3b49 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:lime_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:lime_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_clear.json index 2240ed7e3f..5f18a73ace 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:lime_table_cloth" - } + "create:lime_table_cloth" ], "result": { - "count": 1, "id": "create:lime_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json index 273e7a4520..13a929e7a0 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/lime_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/lime" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/lime", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:lime_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox.json index 928924750c..ea01ab9724 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/magenta" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/magenta" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:magenta_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json index a6c222ae28..05f5f70f61 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/magenta" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/magenta", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:magenta_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth.json index 07397a5af9..f5e113e645 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:magenta_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:magenta_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json index 293b14dfa9..23c61fcf97 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:magenta_table_cloth" - } + "create:magenta_table_cloth" ], "result": { - "count": 1, "id": "create:magenta_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json index 4194224e71..e4d66b5c34 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/magenta_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/magenta" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/magenta", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:magenta_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox.json index 078079ea0f..fd5088cee7 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/orange" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/orange" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:orange_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json index 953d3e7d7d..cb56b680b0 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/orange_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/orange" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/orange", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:orange_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth.json index 4be644743b..8ae789f4e5 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:orange_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:orange_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_clear.json index 83e265c6e8..4e37f0aba7 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:orange_table_cloth" - } + "create:orange_table_cloth" ], "result": { - "count": 1, "id": "create:orange_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json index 1aac015c06..cf4f139ae0 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/orange_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/orange" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/orange", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:orange_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/package_frogport.json b/src/generated/resources/data/create/recipe/crafting/logistics/package_frogport.json index f8e3ddf9a5..56e3b6869b 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/package_frogport.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/package_frogport.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:item_vault" - }, - "B": { - "tag": "c:slimeballs" - }, - "C": { - "item": "create:andesite_alloy" - } + "A": "create:item_vault", + "B": "#c:slime_balls", + "C": "create:andesite_alloy" }, "pattern": [ "B", @@ -18,7 +11,6 @@ "C" ], "result": { - "count": 1, "id": "create:package_frogport" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/packager.json b/src/generated/resources/data/create/recipe/crafting/logistics/packager.json index fb7ea21a89..6312ad5c28 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/packager.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/packager.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:cardboard_block" - }, - "C": { - "tag": "c:ingots/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "A": "create:cardboard_block", + "C": "#c:ingots/iron", + "R": "#c:dusts/redstone" }, "pattern": [ " C ", @@ -18,7 +11,6 @@ "RCR" ], "result": { - "count": 1, "id": "create:packager" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/packager_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/logistics/packager_from_conversion.json index 85dbcf5cb3..7ff85e8311 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/packager_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/packager_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:repackager" - } + "create:repackager" ], "result": { - "count": 1, "id": "create:packager" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox.json index dfdde83166..01a84c8631 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/pink" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/pink" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:pink_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json index 2eabb53440..d34a0f2d19 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pink_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/pink" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/pink", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:pink_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth.json index 204af9755c..9df73c1aae 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:pink_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:pink_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_clear.json index 24b52a13ca..81b69c5953 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:pink_table_cloth" - } + "create:pink_table_cloth" ], "result": { - "count": 1, "id": "create:pink_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json index 9b1a7ed1c6..95b224d5a4 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pink_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/pink" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/pink", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:pink_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/powered_latch.json b/src/generated/resources/data/create/recipe/crafting/logistics/powered_latch.json index e63486b787..29a2df2a0e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/powered_latch.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/powered_latch.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "minecraft:lever" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:stones" - }, - "T": { - "item": "minecraft:redstone_torch" - } + "C": "minecraft:lever", + "R": "#c:dusts/redstone", + "S": "#c:stones", + "T": "minecraft:redstone_torch" }, "pattern": [ " T ", @@ -21,7 +12,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:powered_latch" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/powered_toggle_latch.json b/src/generated/resources/data/create/recipe/crafting/logistics/powered_toggle_latch.json index d9aed6c5f3..c6c236add8 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/powered_toggle_latch.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/powered_toggle_latch.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "minecraft:lever" - }, - "S": { - "tag": "c:stones" - }, - "T": { - "item": "minecraft:redstone_torch" - } + "C": "minecraft:lever", + "S": "#c:stones", + "T": "minecraft:redstone_torch" }, "pattern": [ " T ", @@ -18,7 +11,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:powered_toggle_latch" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_extender.json b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_extender.json index 1c596437f3..3398a4ed3e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_extender.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_extender.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:plates/brass" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:stones" - }, - "T": { - "item": "minecraft:redstone_torch" - } + "C": "#c:plates/brass", + "R": "#c:dusts/redstone", + "S": "#c:stones", + "T": "minecraft:redstone_torch" }, "pattern": [ " T", @@ -21,7 +12,6 @@ "SSS" ], "result": { - "count": 1, "id": "create:pulse_extender" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_repeater.json b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_repeater.json index 81e17bd932..53d6bca2f5 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_repeater.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_repeater.json @@ -1,26 +1,16 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:plates/brass" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:stones" - }, - "T": { - "item": "minecraft:redstone_torch" - } + "C": "#c:plates/brass", + "R": "#c:dusts/redstone", + "S": "#c:stones", + "T": "minecraft:redstone_torch" }, "pattern": [ "RCT", "SSS" ], "result": { - "count": 1, "id": "create:pulse_repeater" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_timer.json b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_timer.json index c440c65d76..57ff366651 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/pulse_timer.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/pulse_timer.json @@ -1,26 +1,16 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:plates/brass" - }, - "R": { - "item": "minecraft:amethyst_shard" - }, - "S": { - "tag": "c:stones" - }, - "T": { - "item": "minecraft:redstone_torch" - } + "C": "#c:plates/brass", + "R": "minecraft:amethyst_shard", + "S": "#c:stones", + "T": "minecraft:redstone_torch" }, "pattern": [ "RCT", "SSS" ], "result": { - "count": 1, "id": "create:pulse_timer" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox.json index 73b6bc4761..99b612b8ec 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/purple" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/purple" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:purple_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json index b8b0de5a89..c7d75ae250 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/purple_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/purple" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/purple", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:purple_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth.json index 01ae62b65a..f277ad89c6 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:purple_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:purple_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_clear.json index 80ac43879c..6988366821 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:purple_table_cloth" - } + "create:purple_table_cloth" ], "result": { - "count": 1, "id": "create:purple_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json index b7c562698f..588a97fdd1 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/purple_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/purple" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/purple", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:purple_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox.json index e3114a2295..0f07f40289 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/red" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/red" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:red_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json index 0264b06fba..5606f16436 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/red_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/red" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/red", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:red_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth.json index b7c0ca6093..97fd5d7d5d 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:red_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:red_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_clear.json index 3da2a40914..255bd02e1c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:red_table_cloth" - } + "create:red_table_cloth" ], "result": { - "count": 1, "id": "create:red_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json index f108ecc483..97cdd9d42d 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/red_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/red" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/red", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:red_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_contact.json b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_contact.json index fd6282ee19..3bf0f37611 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_contact.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_contact.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "minecraft:cobblestone" - }, - "S": { - "tag": "c:plates/iron" - }, - "W": { - "tag": "c:dusts/redstone" - } + "C": "minecraft:cobblestone", + "S": "#c:plates/iron", + "W": "#c:dusts/redstone" }, "pattern": [ " S ", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_link.json b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_link.json index 8d0067c781..3f25147ed1 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_link.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_link.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:transmitter" - }, - "S": { - "item": "create:andesite_casing" - } + "C": "create:transmitter", + "S": "create:andesite_casing" }, "pattern": [ "C", diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester.json b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester.json index eb3b15d0b7..42c416c089 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:stock_link" - }, - "B": { - "tag": "c:ingots/iron" - }, - "C": { - "tag": "c:dusts/redstone" - } + "A": "create:stock_link", + "B": "#c:ingots/iron", + "C": "#c:dusts/redstone" }, "pattern": [ "C", @@ -18,7 +11,6 @@ "B" ], "result": { - "count": 1, "id": "create:redstone_requester" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester_clear.json index a7ed88c346..960ad8232d 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/redstone_requester_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:redstone_requester" - } + "create:redstone_requester" ], "result": { - "count": 1, "id": "create:redstone_requester" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/repackager_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/logistics/repackager_from_conversion.json index 7986b1e22c..746ae24db8 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/repackager_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/repackager_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:packager" - } + "create:packager" ], "result": { - "count": 1, "id": "create:repackager" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/stock_link.json b/src/generated/resources/data/create/recipe/crafting/logistics/stock_link.json index f6262ad718..d44a6b86b5 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/stock_link.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/stock_link.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:item_vault" - }, - "C": { - "item": "create:transmitter" - } + "B": "create:item_vault", + "C": "create:transmitter" }, "pattern": [ "C", "B" ], "result": { - "count": 1, "id": "create:stock_link" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/stock_link_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/stock_link_clear.json index 9be396f628..e95599ef2b 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/stock_link_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/stock_link_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:stock_link" - } + "create:stock_link" ], "result": { - "count": 1, "id": "create:stock_link" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker.json b/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker.json index 2be17aa446..d06c38cc06 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "create:stock_link" - }, - "B": { - "tag": "c:ingots/gold" - }, - "C": { - "tag": "c:glass_blocks" - } + "A": "create:stock_link", + "B": "#c:ingots/gold", + "C": "#c:glass_blocks" }, "pattern": [ "C", @@ -18,7 +11,6 @@ "B" ], "result": { - "count": 1, "id": "create:stock_ticker" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker_clear.json index e157170216..a0af1c7f9b 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/stock_ticker_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:stock_ticker" - } + "create:stock_ticker" ], "result": { - "count": 1, "id": "create:stock_ticker" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/stockpile_switch.json b/src/generated/resources/data/create/recipe/crafting/logistics/stockpile_switch.json index a2f7ea9c95..504bac5e61 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/stockpile_switch.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/stockpile_switch.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "B": { - "item": "create:brass_casing" - }, - "I": { - "item": "minecraft:comparator" - }, - "R": { - "item": "create:electron_tube" - } + "B": "create:brass_casing", + "I": "minecraft:comparator", + "R": "create:electron_tube" }, "pattern": [ "R", @@ -18,7 +11,6 @@ "I" ], "result": { - "count": 1, "id": "create:stockpile_switch" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox.json index dd7b05d578..855598f85e 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/white" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/white" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:white_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json index 62dbd26367..c9f2072705 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/white_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/white" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/white", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:white_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth.json index bf404fd23e..51c23349e1 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:white_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:white_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_clear.json index 42b57df377..67e26cac8f 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:white_table_cloth" - } + "create:white_table_cloth" ], "result": { - "count": 1, "id": "create:white_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json index 8ea451eeb6..c906a159c6 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/white_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/white" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/white", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:white_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox.json index 6739d48dd2..9694d57301 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "minecraft:barrel" - }, - "D": { - "tag": "c:dyes/yellow" - } + "A": "create:andesite_alloy", + "B": "minecraft:barrel", + "D": "#c:dyes/yellow" }, "pattern": [ "D", @@ -18,7 +12,6 @@ "A" ], "result": { - "count": 1, "id": "create:yellow_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json index 967b5a3647..7e8febde90 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_postbox_from_other_postbox.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/yellow" - }, - { - "tag": "create:postboxes" - } + "#c:dyes/yellow", + "#create:postboxes" ], "result": { - "count": 1, "id": "create:yellow_postbox" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth.json index 5e0201093d..e6bee74baf 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "minecraft:yellow_wool" - }, - { - "item": "create:andesite_alloy" - } + "minecraft:yellow_wool", + "create:andesite_alloy" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json index 715c2ad0e3..d56986331c 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_clear.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:yellow_table_cloth" - } + "create:yellow_table_cloth" ], "result": { - "count": 1, "id": "create:yellow_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json index c94e87a926..e42bfc67fa 100644 --- a/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json +++ b/src/generated/resources/data/create/recipe/crafting/logistics/yellow_table_cloth_from_other_table_cloth.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "tag": "c:dyes/yellow" - }, - { - "tag": "create:dyed_table_cloths" - } + "#c:dyes/yellow", + "#create:dyed_table_cloths" ], "result": { - "count": 1, "id": "create:yellow_table_cloth" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy.json b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy.json index 6e4f3c34e7..a5769025e9 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "minecraft:andesite" - }, - "B": { - "tag": "c:nuggets/iron" - } + "A": "minecraft:andesite", + "B": "#c:nuggets/iron" }, "pattern": [ "BA", "AB" ], "result": { - "count": 1, "id": "create:andesite_alloy" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_block.json b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_block.json index ca8b5e40ee..8d7c904bab 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:andesite_alloy" - } + "C": "create:andesite_alloy" }, "pattern": [ "CCC", @@ -12,7 +9,6 @@ "CCC" ], "result": { - "count": 1, "id": "create:andesite_alloy_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_block.json b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_block.json index cf811e6eb3..0a67c94707 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:andesite_alloy_block" - } + "create:andesite_alloy_block" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json index 59d67a28bf..f2391076f0 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/andesite_alloy_from_zinc.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "A": { - "item": "minecraft:andesite" - }, - "B": { - "tag": "c:nuggets/zinc" - } + "A": "minecraft:andesite", + "B": "#c:nuggets/zinc" }, "pattern": [ "BA", "AB" ], "result": { - "count": 1, "id": "create:andesite_alloy" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/bound_cardboard_block.json b/src/generated/resources/data/create/recipe/crafting/materials/bound_cardboard_block.json index 2d8ef7153e..140dbe287b 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/bound_cardboard_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/bound_cardboard_block.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cardboard_block" - }, - { - "tag": "c:strings" - } + "create:cardboard_block", + "#c:strings" ], "result": { - "count": 1, "id": "create:bound_cardboard_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/brass_block_from_compacting.json b/src/generated/resources/data/create/recipe/crafting/materials/brass_block_from_compacting.json index ee250dbbee..ee4a0fad92 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/brass_block_from_compacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/brass_block_from_compacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "#": { - "tag": "c:ingots/brass" - } + "#": "#c:ingots/brass" }, "pattern": [ "###", @@ -12,7 +9,6 @@ "###" ], "result": { - "count": 1, "id": "create:brass_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_compacting.json b/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_compacting.json index df2a8b9c34..878cf073b9 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_compacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_compacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "#": { - "tag": "c:nuggets/brass" - } + "#": "#c:nuggets/brass" }, "pattern": [ "###", @@ -12,7 +9,6 @@ "###" ], "result": { - "count": 1, "id": "create:brass_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json b/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json index a4e3011bd9..2a8ead74f4 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/brass_ingot_from_decompacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:storage_blocks/brass" - } + "#c:storage_blocks/brass" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json b/src/generated/resources/data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json index aa496b0526..d0a6a4b1e0 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/brass_nugget_from_decompacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:ingots/brass" - } + "#c:ingots/brass" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_block.json b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_block.json index a5ed5b4424..953f2034c7 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_block.json @@ -1,17 +1,13 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:cardboard" - } + "C": "create:cardboard" }, "pattern": [ "CC", "CC" ], "result": { - "count": 1, "id": "create:cardboard_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_block.json b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_block.json index 7718d30dd5..cf1718167f 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:cardboard_block" - } + "create:cardboard_block" ], "result": { "count": 4, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_bound_block.json b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_bound_block.json index ea27348934..d97dc1dd28 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_bound_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/cardboard_from_bound_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:bound_cardboard_block" - } + "create:bound_cardboard_block" ], "result": { "count": 4, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/copper_ingot.json b/src/generated/resources/data/create/recipe/crafting/materials/copper_ingot.json index 9ebe88646c..fae0f2fc78 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/copper_ingot.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/copper_ingot.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "tag": "c:nuggets/copper" - } + "C": "#c:nuggets/copper" }, "pattern": [ "CCC", @@ -12,7 +9,6 @@ "CCC" ], "result": { - "count": 1, "id": "minecraft:copper_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/copper_nugget.json b/src/generated/resources/data/create/recipe/crafting/materials/copper_nugget.json index 4adecacfaf..25be366167 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/copper_nugget.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/copper_nugget.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:ingots/copper" - } + "#c:ingots/copper" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/electron_tube.json b/src/generated/resources/data/create/recipe/crafting/materials/electron_tube.json index b6ebeed054..66f3583eb5 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/electron_tube.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/electron_tube.json @@ -1,20 +1,14 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "L": { - "item": "create:polished_rose_quartz" - }, - "N": { - "tag": "c:plates/iron" - } + "L": "create:polished_rose_quartz", + "N": "#c:plates/iron" }, "pattern": [ "L", "N" ], "result": { - "count": 1, "id": "create:electron_tube" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/experience_block.json b/src/generated/resources/data/create/recipe/crafting/materials/experience_block.json index 26c3588e15..036e55d05f 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/experience_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/experience_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:experience_nugget" - } + "C": "create:experience_nugget" }, "pattern": [ "CCC", @@ -12,7 +9,6 @@ "CCC" ], "result": { - "count": 1, "id": "create:experience_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/experience_nugget_from_block.json b/src/generated/resources/data/create/recipe/crafting/materials/experience_nugget_from_block.json index 622accf162..d810eaa50e 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/experience_nugget_from_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/experience_nugget_from_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:experience_block" - } + "create:experience_block" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc.json b/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc.json index 7451259d03..490b3cf75c 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:raw_zinc_block" - } + "create:raw_zinc_block" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc_block.json b/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc_block.json index 4591fce98d..4c8d78f4e6 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc_block.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/raw_zinc_block.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "C": { - "item": "create:raw_zinc" - } + "C": "create:raw_zinc" }, "pattern": [ "CCC", @@ -12,7 +9,6 @@ "CCC" ], "result": { - "count": 1, "id": "create:raw_zinc_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/red_sand_paper.json b/src/generated/resources/data/create/recipe/crafting/materials/red_sand_paper.json index f3ca01c4f8..f70d9daeb4 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/red_sand_paper.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/red_sand_paper.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "c:sands/red" - } + "minecraft:paper", + "#c:sands/red" ], "result": { - "count": 1, "id": "create:red_sand_paper" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz.json b/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz.json index 2ca0534754..18035270a4 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz.json @@ -1,37 +1,17 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:gems/quartz" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - }, - { - "tag": "c:dusts/redstone" - } + "#c:gems/quartz", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone", + "#c:dusts/redstone" ], "result": { - "count": 1, "id": "create:rose_quartz" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json index d64bcb4a85..241f3ab5b2 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/rose_quartz_tiles_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:small_rose_quartz_tiles" - } + "create:small_rose_quartz_tiles" ], "result": { - "count": 1, "id": "create:rose_quartz_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/sand_paper.json b/src/generated/resources/data/create/recipe/crafting/materials/sand_paper.json index fd077c25b9..c5de6d01c0 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/sand_paper.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/sand_paper.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "c:sands/colorless" - } + "minecraft:paper", + "#c:sands/colorless" ], "result": { - "count": 1, "id": "create:sand_paper" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json b/src/generated/resources/data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json index 6ff129157b..8b3a9a526b 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/small_rose_quartz_tiles_from_conversion.json @@ -1,13 +1,9 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:rose_quartz_tiles" - } + "create:rose_quartz_tiles" ], "result": { - "count": 1, "id": "create:small_rose_quartz_tiles" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/transmitter.json b/src/generated/resources/data/create/recipe/crafting/materials/transmitter.json index 65cac208d1..624266e687 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/transmitter.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/transmitter.json @@ -1,16 +1,9 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "L": { - "tag": "c:plates/copper" - }, - "N": { - "item": "minecraft:lightning_rod" - }, - "R": { - "tag": "c:dusts/redstone" - } + "L": "#c:plates/copper", + "N": "minecraft:lightning_rod", + "R": "#c:dusts/redstone" }, "pattern": [ " N ", @@ -18,7 +11,6 @@ " R " ], "result": { - "count": 1, "id": "create:transmitter" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/zinc_block_from_compacting.json b/src/generated/resources/data/create/recipe/crafting/materials/zinc_block_from_compacting.json index c326be5dbb..b2a5d1f2e6 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/zinc_block_from_compacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/zinc_block_from_compacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "#": { - "tag": "c:ingots/zinc" - } + "#": "#c:ingots/zinc" }, "pattern": [ "###", @@ -12,7 +9,6 @@ "###" ], "result": { - "count": 1, "id": "create:zinc_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json b/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json index bf64326841..0668f0da62 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_compacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "#": { - "tag": "c:nuggets/zinc" - } + "#": "#c:nuggets/zinc" }, "pattern": [ "###", @@ -12,7 +9,6 @@ "###" ], "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json b/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json index b85a34ff58..534c79cad1 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/zinc_ingot_from_decompacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:storage_blocks/zinc" - } + "#c:storage_blocks/zinc" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json b/src/generated/resources/data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json index 1ea68e3b08..1fe2d6f7b6 100644 --- a/src/generated/resources/data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json +++ b/src/generated/resources/data/create/recipe/crafting/materials/zinc_nugget_from_decompacting.json @@ -1,10 +1,7 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "c:ingots/zinc" - } + "#c:ingots/zinc" ], "result": { "count": 9, diff --git a/src/generated/resources/data/create/recipe/crafting/palettes/scorchia.json b/src/generated/resources/data/create/recipe/crafting/palettes/scorchia.json index 4575b9b197..3591485f0e 100644 --- a/src/generated/resources/data/create/recipe/crafting/palettes/scorchia.json +++ b/src/generated/resources/data/create/recipe/crafting/palettes/scorchia.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "#": { - "item": "create:scoria" - }, - "D": { - "tag": "c:dyes/black" - } + "#": "create:scoria", + "D": "#c:dyes/black" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/crafting/schematics/empty_schematic.json b/src/generated/resources/data/create/recipe/crafting/schematics/empty_schematic.json index 1ae7168bb6..e005636939 100644 --- a/src/generated/resources/data/create/recipe/crafting/schematics/empty_schematic.json +++ b/src/generated/resources/data/create/recipe/crafting/schematics/empty_schematic.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "c:dyes/light_blue" - } + "minecraft:paper", + "#c:dyes/light_blue" ], "result": { - "count": 1, "id": "create:empty_schematic" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/schematics/schematic_and_quill.json b/src/generated/resources/data/create/recipe/crafting/schematics/schematic_and_quill.json index 95ae6ee2d9..0130f2acfe 100644 --- a/src/generated/resources/data/create/recipe/crafting/schematics/schematic_and_quill.json +++ b/src/generated/resources/data/create/recipe/crafting/schematics/schematic_and_quill.json @@ -1,16 +1,10 @@ { "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "item": "create:empty_schematic" - }, - { - "tag": "c:feathers" - } + "create:empty_schematic", + "#c:feathers" ], "result": { - "count": 1, "id": "create:schematic_and_quill" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/schematics/schematic_table.json b/src/generated/resources/data/create/recipe/crafting/schematics/schematic_table.json index 8d35c2fbce..524ace0a91 100644 --- a/src/generated/resources/data/create/recipe/crafting/schematics/schematic_table.json +++ b/src/generated/resources/data/create/recipe/crafting/schematics/schematic_table.json @@ -1,13 +1,8 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "S": { - "item": "minecraft:smooth_stone" - }, - "W": { - "tag": "minecraft:wooden_slabs" - } + "S": "minecraft:smooth_stone", + "W": "#minecraft:wooden_slabs" }, "pattern": [ "WWW", @@ -15,7 +10,6 @@ " S " ], "result": { - "count": 1, "id": "create:schematic_table" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/schematics/schematicannon.json b/src/generated/resources/data/create/recipe/crafting/schematics/schematicannon.json index 960d93d842..dac32f0bc8 100644 --- a/src/generated/resources/data/create/recipe/crafting/schematics/schematicannon.json +++ b/src/generated/resources/data/create/recipe/crafting/schematics/schematicannon.json @@ -1,19 +1,10 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", "key": { - "D": { - "item": "minecraft:dispenser" - }, - "I": { - "item": "minecraft:iron_block" - }, - "L": { - "tag": "minecraft:logs" - }, - "S": { - "item": "minecraft:smooth_stone" - } + "D": "minecraft:dispenser", + "I": "minecraft:iron_block", + "L": "#minecraft:logs", + "S": "minecraft:smooth_stone" }, "pattern": [ " I ", @@ -21,7 +12,6 @@ "SDS" ], "result": { - "count": 1, "id": "create:schematicannon" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crafting/tree_fertilizer.json b/src/generated/resources/data/create/recipe/crafting/tree_fertilizer.json index a7a3b5f8f0..824cff9db1 100644 --- a/src/generated/resources/data/create/recipe/crafting/tree_fertilizer.json +++ b/src/generated/resources/data/create/recipe/crafting/tree_fertilizer.json @@ -6,20 +6,11 @@ } ], "type": "minecraft:crafting_shapeless", - "category": "misc", "ingredients": [ - { - "tag": "minecraft:small_flowers" - }, - { - "tag": "minecraft:small_flowers" - }, - { - "tag": "create:upgrade_aquatic/coral" - }, - { - "item": "minecraft:bone_meal" - } + "#c:flowers/small", + "#c:flowers/small", + "#create:upgrade_aquatic/coral", + "minecraft:bone_meal" ], "result": { "count": 2, diff --git a/src/generated/resources/data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json index 7b3efca874..ba691479f9 100644 --- a/src/generated/resources/data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/crimsite_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json index d5d4ed5994..175e388d36 100644 --- a/src/generated/resources/data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/crimsite_pillar_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:crimsite_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/crimson_window.json b/src/generated/resources/data/create/recipe/crimson_window.json index d4fde07dd3..5910f88cf8 100644 --- a/src/generated/resources/data/create/recipe/crimson_window.json +++ b/src/generated/resources/data/create/recipe/crimson_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:crimson_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:crimson_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/crimson_window_pane.json b/src/generated/resources/data/create/recipe/crimson_window_pane.json index eb64eb0ae4..25d4192fc0 100644 --- a/src/generated/resources/data/create/recipe/crimson_window_pane.json +++ b/src/generated/resources/data/create/recipe/crimson_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:crimson_window" - } + "#": "create:crimson_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/crushing/aluminum_ore.json b/src/generated/resources/data/create/recipe/crushing/aluminum_ore.json index d874759668..8b8b2b0d8d 100644 --- a/src/generated/resources/data/create/recipe/crushing/aluminum_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/aluminum_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/aluminum" - } + "#c:ores/aluminum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/amethyst_block.json b/src/generated/resources/data/create/recipe/crushing/amethyst_block.json index 8f2f0c7f02..90ac2f5f8f 100644 --- a/src/generated/resources/data/create/recipe/crushing/amethyst_block.json +++ b/src/generated/resources/data/create/recipe/crushing/amethyst_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:amethyst_block" - } + "minecraft:amethyst_block" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/amethyst_cluster.json b/src/generated/resources/data/create/recipe/crushing/amethyst_cluster.json index dcb196fdb9..b180292ed1 100644 --- a/src/generated/resources/data/create/recipe/crushing/amethyst_cluster.json +++ b/src/generated/resources/data/create/recipe/crushing/amethyst_cluster.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:amethyst_cluster" - } + "minecraft:amethyst_cluster" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/asurine.json b/src/generated/resources/data/create/recipe/crushing/asurine.json index 9a3867593a..4d3df5aa7b 100644 --- a/src/generated/resources/data/create/recipe/crushing/asurine.json +++ b/src/generated/resources/data/create/recipe/crushing/asurine.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:asurine" - } + "create:asurine" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/asurine_recycling.json b/src/generated/resources/data/create/recipe/crushing/asurine_recycling.json index 9fc7dfb734..604f2d1ad7 100644 --- a/src/generated/resources/data/create/recipe/crushing/asurine_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/asurine_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/asurine" - } + "#create:stone_types/asurine" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/blaze_rod.json b/src/generated/resources/data/create/recipe/crushing/blaze_rod.json index 0b7b66bdf4..bfc4891dd9 100644 --- a/src/generated/resources/data/create/recipe/crushing/blaze_rod.json +++ b/src/generated/resources/data/create/recipe/crushing/blaze_rod.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:blaze_rod" - } + "minecraft:blaze_rod" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/coal_ore.json b/src/generated/resources/data/create/recipe/crushing/coal_ore.json index a10aec966e..6fb1b3aad2 100644 --- a/src/generated/resources/data/create/recipe/crushing/coal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/coal_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:coal_ore" - } + "minecraft:coal_ore" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/aether/ambrosium_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/aether/ambrosium_ore.json index d91d981c94..7ca9737c57 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/aether/ambrosium_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/aether/ambrosium_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "aether:ambrosium_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/aether/zanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/aether/zanite_ore.json index b4ee952a1f..14f4a07bcb 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/aether/zanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/aether/zanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "aether:zanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json b/src/generated/resources/data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json index 0c4b55dec4..feb7426ea7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/biomesoplenty/rose_quartz.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:rose_quartz_cluster" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/biomeswevegone/red_rock.json b/src/generated/resources/data/create/recipe/crushing/compat/biomeswevegone/red_rock.json index 3d1ac66fd5..1c8890511d 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/biomeswevegone/red_rock.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/biomeswevegone/red_rock.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:red_rock" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/amber_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/amber_ore.json index 740a948f55..e4ddea05a9 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/amber_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/amber_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "druidcraft:amber_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json index e460518562..aefd415273 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/fiery_glass_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "druidcraft:fiery_glass_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json index 7786472b26..75e89820b2 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/druidcraft/moonstone_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "druidcraft:moonstone_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json index 8aed11a6ae..38ebfb8818 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_coal_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json index 1d71481536..2f893a74e2 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_coal_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_coal_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json index 82c27b8a7a..58d4bfda20 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_copper_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json index 03ed016c1d..c335247ea1 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_copper_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_copper_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json index 5f751812fe..8bec812435 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_diamond_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json index 6847afbe3f..4cae599261 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_diamond_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_diamond_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json index 9bb638a526..cdf9b85a0b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_emerald_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json index e148e1d9e4..7f6defd59e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_emerald_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_emerald_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json index fd15dc7ab0..4f052f98f7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ender_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_ender_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json index 53322dba4f..2c5cb54f94 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_ghast_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_ghast_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json index cfe1c24b6b..2265c56038 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_iron_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_iron_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json index dff2f1e463..0c08612b60 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_lapis_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json index 6303abbadc..fafd212a14 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_lapis_nether.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_lapis_nether" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json index 81d0332e14..c51f126207 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/elementaryores/ore_redstone_end.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "elementaryores:ore_redstone_end" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/andesite.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/andesite.json index 7b34bf611d..013bbd6dc0 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/andesite.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/andesite.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "minecraft:andesite" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json index b185f0f403..e51d5d4cf5 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_diorite.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "exnihilosequentia:crushed_diorite" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json index 84ffea57c0..b7f9fc9be0 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/crushed_netherrack.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "exnihilosequentia:crushed_netherrack" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/diorite.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/diorite.json index d6bce87bb8..2916d3cf6d 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/diorite.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/diorite.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "minecraft:diorite" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/dust.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/dust.json index fdb1e80f4d..36b9fb4a35 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/dust.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/dust.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:sand" - } + "minecraft:sand" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json index 8d57ad2876..95f98474b2 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/end_stone.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "minecraft:end_stone" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/granite.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/granite.json index 88ce42b81d..d1d1866b29 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/granite.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/granite.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "minecraft:granite" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json index f5c6263c3b..25c83e4aaa 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/exnihilosequentia/netherrack.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "minecraft:netherrack" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/allurite.json b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/allurite.json index d22547b5b9..4bc2a7a3f1 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/allurite.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/allurite.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/galosphere/allurite" - } + "#create:stone_types/galosphere/allurite" ], "processing_time": 300, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/amethyst.json b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/amethyst.json index 9364f3814b..c450c99d45 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/amethyst.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/amethyst.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/galosphere/amethyst" - } + "#create:stone_types/galosphere/amethyst" ], "processing_time": 300, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/lumiere.json b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/lumiere.json index 8ee06bfc52..9392c091dc 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/galosphere/lumiere.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/galosphere/lumiere.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/galosphere/lumiere" - } + "#create:stone_types/galosphere/lumiere" ], "processing_time": 300, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json index a10b0d904f..89744929cc 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coal_coke.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "immersiveengineering:coal_coke" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coke_block.json b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coke_block.json index c9a949c112..6ce31a0ff9 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coke_block.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/coke_block.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "immersiveengineering:coke" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/slag.json b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/slag.json index e137d64274..377941779e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/slag.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/immersiveengineering/slag.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "immersiveengineering:slag" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/neapolitan/ice.json b/src/generated/resources/data/create/recipe/crushing/compat/neapolitan/ice.json index 523ddbf60c..4794a4622e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/neapolitan/ice.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/neapolitan/ice.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:ice" - } + "minecraft:ice" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/quark/moss_block.json b/src/generated/resources/data/create/recipe/crushing/compat/quark/moss_block.json index 9708d7bb39..7c2520fd7b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/quark/moss_block.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/quark/moss_block.json @@ -7,9 +7,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:moss_block" - } + "minecraft:moss_block" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json index 64152d06cb..f0a36b18e2 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/alexandrite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:alexandrite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ammolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ammolite_ore.json index 92beec140e..23d997c990 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ammolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ammolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:ammolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json index 07fb643fb8..19956aea73 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/aquamarine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:aquamarine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json index 6c54c41c38..61b4c473fb 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/black_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:black_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/carnelian_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/carnelian_ore.json index 742c30e1c8..9f37222c68 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/carnelian_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/carnelian_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:carnelian_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/citrine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/citrine_ore.json index 83c245e39a..415999ff21 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/citrine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/citrine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:citrine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json index d5e77a3afa..ff22037a7a 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_alexandrite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_alexandrite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json index cc009585f7..210547230f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ammolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_ammolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json index d840634def..b2d442dfc7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_aquamarine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_aquamarine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json index f9bede1510..80f23b82d9 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_black_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_black_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json index b1c1717362..df9e4e4867 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_carnelian_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_carnelian_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json index da53d3ea41..014fd7887f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_citrine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_citrine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json index 2a7f668f7e..232c35afe9 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_garnet_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_garnet_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json index 1c5841f4f4..f6632ed6f8 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_heliodor_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_heliodor_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json index 49fc81449a..6d91ab9f65 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_iolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_iolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json index 044e4e000c..c11518daa3 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_kyanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_kyanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json index cdee0c54d2..2513a9260a 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_moldavite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_moldavite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json index c511c6dbd7..40ae743b3d 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_opal_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_opal_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json index 79c362f3f6..7afaf9582f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_pearl_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_pearl_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json index b08fac4e24..89bdcd2313 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_peridot_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_peridot_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json index d2a88babdf..c28d152231 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_rose_quartz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_rose_quartz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json index fdb598a4bb..61ad2683f8 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_ruby_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_ruby_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json index 83184c76ca..0307a2091e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_sapphire_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_sapphire_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json index 8da9b4bf57..2dc0a81645 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_tanzanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_tanzanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json index 00f4000e38..b738cdefb1 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_topaz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_topaz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json index c5e7d326c6..fb22043005 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_turquoise_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_turquoise_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json index 110cbf9d6e..c14d354d08 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/deepslate_white_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:deepslate_white_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json index 23538acbce..1d5128a609 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_alexandrite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_alexandrite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json index 735d13e8bb..111335ac8b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ammolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_ammolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json index d8bbdf4547..ab90eaf1a2 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_aquamarine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_aquamarine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json index 1321a7a9c2..9e74a48909 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_black_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_black_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json index 3bf1121941..9be750c110 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_carnelian_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_carnelian_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json index 634d98c4e0..c9814e6acd 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_citrine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_citrine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json index dabb564318..c44b3228cb 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_garnet_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_garnet_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json index 581a6db552..b95f81ac11 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_heliodor_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_heliodor_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json index 6fa7070826..1d15dc6e16 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_iolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_iolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json index 5e650886e5..f3074c71c7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_kyanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_kyanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json index 88cd6f25c2..cb77e2d4a3 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_moldavite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_moldavite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_opal_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_opal_ore.json index a8beba15ab..c261f3ad1b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_opal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_opal_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_opal_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json index 6a84f6f113..5355e92a1f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_pearl_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_pearl_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json index edfda18ee2..af3acb276b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_peridot_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_peridot_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json index 2ca2af7840..aac45aeb2c 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_rose_quartz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_rose_quartz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json index 4023c9271e..80e12eef12 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_ruby_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_ruby_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json index 7b575e0516..4f3e628c45 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_sapphire_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_sapphire_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json index 34656447dc..2cc480b28e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_tanzanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_tanzanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json index 6c6f5c3421..b5439090cb 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_topaz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_topaz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json index 59f3fd8c99..11ff4f59e7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_turquoise_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_turquoise_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json index ae9106faf6..dccc8f74b8 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/end_white_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:end_white_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/garnet_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/garnet_ore.json index 7708907e19..4819bf2a64 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/garnet_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/garnet_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:garnet_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/heliodor_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/heliodor_ore.json index 329cf48035..0e6807e95e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/heliodor_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/heliodor_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:heliodor_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/iolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/iolite_ore.json index 7129edb205..485af851d6 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/iolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/iolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:iolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/kyanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/kyanite_ore.json index 8677a6c7c6..14a1b7562c 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/kyanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/kyanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:kyanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/moldavite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/moldavite_ore.json index 7f6eccb7ff..f6c10acf85 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/moldavite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/moldavite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:moldavite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json index 9ea9b231d6..406d3d0885 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_alexandrite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_alexandrite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json index 76c48b620f..15c427dabe 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ammolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_ammolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json index 666eb73847..343313e4c8 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_aquamarine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_aquamarine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json index f0fdb7f851..65cbf639c7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_black_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_black_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json index 7f9f6669f9..4c85d5cc56 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_carnelian_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_carnelian_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json index fd047c445f..7682eae1a1 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_citrine_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_citrine_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json index 603f17a7df..430f999a1a 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_garnet_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_garnet_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json index 8d6994bfe6..c625ab5f5f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_heliodor_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_heliodor_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json index baf4060032..9396705600 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_iolite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_iolite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json index b6eacd72cf..19fa251af7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_kyanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_kyanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json index ac2264b038..536810b38c 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_moldavite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_moldavite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json index b4ade4ca4d..1d0c5059d5 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_opal_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_opal_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json index ccdf574f80..993e782f79 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_pearl_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_pearl_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json index 2389ef48d2..869f6ab30b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_peridot_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_peridot_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json index 671972d4ce..aea99cc824 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_rose_quartz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_rose_quartz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json index e32184d2c5..6e289eb09f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_ruby_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_ruby_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json index edfd8b718e..af894a05ca 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_sapphire_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_sapphire_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json index 3ed9d60fea..377d883e28 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_tanzanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_tanzanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json index 964e69937f..1eedc0195b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_topaz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_topaz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json index cfe5348436..5f89ffe4e4 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_turquoise_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_turquoise_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json index f93e8c8120..930d99f715 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/nether_white_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:nether_white_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/opal_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/opal_ore.json index 1c56c8e282..e6e01b6c07 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/opal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/opal_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:opal_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/pearl_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/pearl_ore.json index 0d67ca8d56..2476b37144 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/pearl_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/pearl_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:pearl_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/peridot_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/peridot_ore.json index 8103ddc2b0..6f47087556 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/peridot_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/peridot_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:peridot_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json index a11dafd35c..17890027b7 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/rose_quartz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:rose_quartz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ruby_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ruby_ore.json index 32bf090f3f..9bac4899fd 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ruby_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/ruby_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:ruby_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/sapphire_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/sapphire_ore.json index 3a5b66f957..ba5d72aa06 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/sapphire_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/sapphire_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:sapphire_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json index 39850d9407..80f112e83b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/tanzanite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:tanzanite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/topaz_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/topaz_ore.json index cc7753aa45..f3dc9d1467 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/topaz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/topaz_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:topaz_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/turquoise_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/turquoise_ore.json index 6ce6bdf46e..3af6f4b2c0 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/turquoise_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/turquoise_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:turquoise_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json index 681af020be..4c7bd77c9a 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/silentgems/white_diamond_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "silentgems:white_diamond_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/barley.json b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/barley.json index 4499c842d3..1fb3d88a25 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/barley.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/barley.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "simplefarming:barley" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/oat.json b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/oat.json index c30cb7bf50..1fc9ef3a66 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/oat.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/oat.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "simplefarming:oat" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rice.json b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rice.json index dd9013772f..210a25f115 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rice.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rice.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "simplefarming:rice" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rye.json b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rye.json index 2b904ef54f..60225784a3 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rye.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/simplefarming/rye.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "simplefarming:rye" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/thermal/apatite_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/thermal/apatite_ore.json index 9fbcac1b20..69851d203f 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/thermal/apatite_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/thermal/apatite_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "thermal:apatite_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/thermal/cinnabar_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/thermal/cinnabar_ore.json index 70f005f211..1945340f4b 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/thermal/cinnabar_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/thermal/cinnabar_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "thermal:cinnabar_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/thermal/niter_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/thermal/niter_ore.json index 9b797211c1..778ac81b2a 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/thermal/niter_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/thermal/niter_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "thermal:niter_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/compat/thermal/sulfur_ore.json b/src/generated/resources/data/create/recipe/crushing/compat/thermal/sulfur_ore.json index 56041d7eca..14e527592e 100644 --- a/src/generated/resources/data/create/recipe/crushing/compat/thermal/sulfur_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/compat/thermal/sulfur_ore.json @@ -8,7 +8,7 @@ "type": "create:crushing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "thermal:sulfur_ore" diff --git a/src/generated/resources/data/create/recipe/crushing/copper_ore.json b/src/generated/resources/data/create/recipe/crushing/copper_ore.json index fdcb5b68dd..a0b0fdb68a 100644 --- a/src/generated/resources/data/create/recipe/crushing/copper_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/copper_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:copper_ore" - } + "minecraft:copper_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/crimsite.json b/src/generated/resources/data/create/recipe/crushing/crimsite.json index a4a3fd9498..875390ebaf 100644 --- a/src/generated/resources/data/create/recipe/crushing/crimsite.json +++ b/src/generated/resources/data/create/recipe/crushing/crimsite.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:crimsite" - } + "create:crimsite" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/crimsite_recycling.json b/src/generated/resources/data/create/recipe/crushing/crimsite_recycling.json index aae152688e..bdd344d90d 100644 --- a/src/generated/resources/data/create/recipe/crushing/crimsite_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/crimsite_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/crimsite" - } + "#create:stone_types/crimsite" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_coal_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_coal_ore.json index 40ebc5b4fa..18157da556 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_coal_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_coal_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_coal_ore" - } + "minecraft:deepslate_coal_ore" ], "processing_time": 300, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_copper_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_copper_ore.json index c20895eb88..9861160fc1 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_copper_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_copper_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_copper_ore" - } + "minecraft:deepslate_copper_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_diamond_ore.json index 1d027da333..785edc215d 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_diamond_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_diamond_ore" - } + "minecraft:deepslate_diamond_ore" ], "processing_time": 450, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_emerald_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_emerald_ore.json index 830ba76740..dd871c510d 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_emerald_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_emerald_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_emerald_ore" - } + "minecraft:deepslate_emerald_ore" ], "processing_time": 450, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_gold_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_gold_ore.json index 2a3ca33d1c..305a0df2f3 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_gold_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_gold_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_gold_ore" - } + "minecraft:deepslate_gold_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_iron_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_iron_ore.json index 5068798f89..4905727e63 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_iron_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_iron_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_iron_ore" - } + "minecraft:deepslate_iron_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_lapis_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_lapis_ore.json index 32bfc2c9c3..c012214a94 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_lapis_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_lapis_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_lapis_ore" - } + "minecraft:deepslate_lapis_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_redstone_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_redstone_ore.json index 090b4ab606..77a83f7b50 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_redstone_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_redstone_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:deepslate_redstone_ore" - } + "minecraft:deepslate_redstone_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/deepslate_zinc_ore.json b/src/generated/resources/data/create/recipe/crushing/deepslate_zinc_ore.json index e212d9e5f5..053ec3e2f7 100644 --- a/src/generated/resources/data/create/recipe/crushing/deepslate_zinc_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/deepslate_zinc_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:deepslate_zinc_ore" - } + "create:deepslate_zinc_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/diamond_horse_armor.json b/src/generated/resources/data/create/recipe/crushing/diamond_horse_armor.json index 6463bbe17b..7c26651503 100644 --- a/src/generated/resources/data/create/recipe/crushing/diamond_horse_armor.json +++ b/src/generated/resources/data/create/recipe/crushing/diamond_horse_armor.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:diamond_horse_armor" - } + "minecraft:diamond_horse_armor" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/diamond_ore.json b/src/generated/resources/data/create/recipe/crushing/diamond_ore.json index eb8770f44b..63691cde67 100644 --- a/src/generated/resources/data/create/recipe/crushing/diamond_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/diamond_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:diamond_ore" - } + "minecraft:diamond_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/diorite.json b/src/generated/resources/data/create/recipe/crushing/diorite.json index 02f9342610..b4f511fee7 100644 --- a/src/generated/resources/data/create/recipe/crushing/diorite.json +++ b/src/generated/resources/data/create/recipe/crushing/diorite.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:diorite" - } + "minecraft:diorite" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/diorite_recycling.json b/src/generated/resources/data/create/recipe/crushing/diorite_recycling.json index bd22d40ccc..7d51ecc9d5 100644 --- a/src/generated/resources/data/create/recipe/crushing/diorite_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/diorite_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/diorite" - } + "#create:stone_types/diorite" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/emerald_ore.json b/src/generated/resources/data/create/recipe/crushing/emerald_ore.json index 8ce02ef4f1..5294b8c260 100644 --- a/src/generated/resources/data/create/recipe/crushing/emerald_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/emerald_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:emerald_ore" - } + "minecraft:emerald_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/gilded_blackstone.json b/src/generated/resources/data/create/recipe/crushing/gilded_blackstone.json index 97378b642a..8f6cb435f2 100644 --- a/src/generated/resources/data/create/recipe/crushing/gilded_blackstone.json +++ b/src/generated/resources/data/create/recipe/crushing/gilded_blackstone.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:gilded_blackstone" - } + "minecraft:gilded_blackstone" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/glowstone.json b/src/generated/resources/data/create/recipe/crushing/glowstone.json index 495e8040bd..5d845a97f5 100644 --- a/src/generated/resources/data/create/recipe/crushing/glowstone.json +++ b/src/generated/resources/data/create/recipe/crushing/glowstone.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:glowstone" - } + "minecraft:glowstone" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/gold_ore.json b/src/generated/resources/data/create/recipe/crushing/gold_ore.json index af96b88762..9a74f2d7aa 100644 --- a/src/generated/resources/data/create/recipe/crushing/gold_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/gold_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:gold_ore" - } + "minecraft:gold_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/golden_horse_armor.json b/src/generated/resources/data/create/recipe/crushing/golden_horse_armor.json index f8106a1464..0c68fe4f72 100644 --- a/src/generated/resources/data/create/recipe/crushing/golden_horse_armor.json +++ b/src/generated/resources/data/create/recipe/crushing/golden_horse_armor.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:golden_horse_armor" - } + "minecraft:golden_horse_armor" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/gravel.json b/src/generated/resources/data/create/recipe/crushing/gravel.json index 6d92235a99..c36eed9a47 100644 --- a/src/generated/resources/data/create/recipe/crushing/gravel.json +++ b/src/generated/resources/data/create/recipe/crushing/gravel.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:gravel" - } + "minecraft:gravel" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/iron_horse_armor.json b/src/generated/resources/data/create/recipe/crushing/iron_horse_armor.json index 344c199648..ef5c35e682 100644 --- a/src/generated/resources/data/create/recipe/crushing/iron_horse_armor.json +++ b/src/generated/resources/data/create/recipe/crushing/iron_horse_armor.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:iron_horse_armor" - } + "minecraft:iron_horse_armor" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/iron_ore.json b/src/generated/resources/data/create/recipe/crushing/iron_ore.json index ead4011c09..b3cd944f31 100644 --- a/src/generated/resources/data/create/recipe/crushing/iron_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/iron_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:iron_ore" - } + "minecraft:iron_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/lapis_ore.json b/src/generated/resources/data/create/recipe/crushing/lapis_ore.json index 8ad6be2d95..47ea6fb090 100644 --- a/src/generated/resources/data/create/recipe/crushing/lapis_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/lapis_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:lapis_ore" - } + "minecraft:lapis_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/lead_ore.json b/src/generated/resources/data/create/recipe/crushing/lead_ore.json index d48cf54e57..4bcbdf6462 100644 --- a/src/generated/resources/data/create/recipe/crushing/lead_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/lead_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/lead" - } + "#c:ores/lead" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/leather_horse_armor.json b/src/generated/resources/data/create/recipe/crushing/leather_horse_armor.json index 3e1a549219..6bca470253 100644 --- a/src/generated/resources/data/create/recipe/crushing/leather_horse_armor.json +++ b/src/generated/resources/data/create/recipe/crushing/leather_horse_armor.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:leather_horse_armor" - } + "minecraft:leather_horse_armor" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/nether_gold_ore.json b/src/generated/resources/data/create/recipe/crushing/nether_gold_ore.json index cf063c4a7b..136d63215d 100644 --- a/src/generated/resources/data/create/recipe/crushing/nether_gold_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/nether_gold_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:nether_gold_ore" - } + "minecraft:nether_gold_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/nether_quartz_ore.json b/src/generated/resources/data/create/recipe/crushing/nether_quartz_ore.json index 07f7ee6be2..fe990d974e 100644 --- a/src/generated/resources/data/create/recipe/crushing/nether_quartz_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/nether_quartz_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:nether_quartz_ore" - } + "minecraft:nether_quartz_ore" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/nether_wart_block.json b/src/generated/resources/data/create/recipe/crushing/nether_wart_block.json index b9940569c9..5b5ce304f8 100644 --- a/src/generated/resources/data/create/recipe/crushing/nether_wart_block.json +++ b/src/generated/resources/data/create/recipe/crushing/nether_wart_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:nether_wart_block" - } + "minecraft:nether_wart_block" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/netherrack.json b/src/generated/resources/data/create/recipe/crushing/netherrack.json index 8512e8b0fc..91ca97ae55 100644 --- a/src/generated/resources/data/create/recipe/crushing/netherrack.json +++ b/src/generated/resources/data/create/recipe/crushing/netherrack.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:netherrack" - } + "minecraft:netherrack" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/nickel_ore.json b/src/generated/resources/data/create/recipe/crushing/nickel_ore.json index 7f3f9740c5..7944d45192 100644 --- a/src/generated/resources/data/create/recipe/crushing/nickel_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/nickel_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/nickel" - } + "#c:ores/nickel" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/obsidian.json b/src/generated/resources/data/create/recipe/crushing/obsidian.json index 4a680b27e4..e9a9a1679d 100644 --- a/src/generated/resources/data/create/recipe/crushing/obsidian.json +++ b/src/generated/resources/data/create/recipe/crushing/obsidian.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:obsidian" - } + "minecraft:obsidian" ], "processing_time": 500, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/ochrum.json b/src/generated/resources/data/create/recipe/crushing/ochrum.json index 8d17bfd8c5..66b1ba1f68 100644 --- a/src/generated/resources/data/create/recipe/crushing/ochrum.json +++ b/src/generated/resources/data/create/recipe/crushing/ochrum.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:ochrum" - } + "create:ochrum" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/ochrum_recycling.json b/src/generated/resources/data/create/recipe/crushing/ochrum_recycling.json index a5d92d33c8..57a32d8ac7 100644 --- a/src/generated/resources/data/create/recipe/crushing/ochrum_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/ochrum_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/ochrum" - } + "#create:stone_types/ochrum" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/osmium_ore.json b/src/generated/resources/data/create/recipe/crushing/osmium_ore.json index 7ca86db07c..e98a1dc3a0 100644 --- a/src/generated/resources/data/create/recipe/crushing/osmium_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/osmium_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/osmium" - } + "#c:ores/osmium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/platinum_ore.json b/src/generated/resources/data/create/recipe/crushing/platinum_ore.json index c32362b78c..825395701f 100644 --- a/src/generated/resources/data/create/recipe/crushing/platinum_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/platinum_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/platinum" - } + "#c:ores/platinum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/prismarine_crystals.json b/src/generated/resources/data/create/recipe/crushing/prismarine_crystals.json index 58d8001cad..ffa5780752 100644 --- a/src/generated/resources/data/create/recipe/crushing/prismarine_crystals.json +++ b/src/generated/resources/data/create/recipe/crushing/prismarine_crystals.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:prismarine_crystals" - } + "minecraft:prismarine_crystals" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/quicksilver_ore.json b/src/generated/resources/data/create/recipe/crushing/quicksilver_ore.json index f2e4c4c4b7..45bea74735 100644 --- a/src/generated/resources/data/create/recipe/crushing/quicksilver_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/quicksilver_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/quicksilver" - } + "#c:ores/quicksilver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_aluminum.json b/src/generated/resources/data/create/recipe/crushing/raw_aluminum.json index 9c38f67fc0..db54b1cefa 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_aluminum.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_aluminum.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/aluminum" - } + "#c:raw_materials/aluminum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_aluminum_block.json b/src/generated/resources/data/create/recipe/crushing/raw_aluminum_block.json index 2c855e276f..15c3704b9a 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_aluminum_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_aluminum_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_aluminum" - } + "#c:storage_blocks/raw_aluminum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_copper.json b/src/generated/resources/data/create/recipe/crushing/raw_copper.json index 33453c93a2..443cb74176 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_copper.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_copper.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/copper" - } + "#c:raw_materials/copper" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_copper_block.json b/src/generated/resources/data/create/recipe/crushing/raw_copper_block.json index bf9247ee3b..06dc985bb2 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_copper_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_copper_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_copper" - } + "#c:storage_blocks/raw_copper" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_gold.json b/src/generated/resources/data/create/recipe/crushing/raw_gold.json index 037dbd5f69..80b566f314 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_gold.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_gold.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/gold" - } + "#c:raw_materials/gold" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_gold_block.json b/src/generated/resources/data/create/recipe/crushing/raw_gold_block.json index ab2f988a49..e306180adb 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_gold_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_gold_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_gold" - } + "#c:storage_blocks/raw_gold" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_iron.json b/src/generated/resources/data/create/recipe/crushing/raw_iron.json index 61885b3b41..96d882c8e9 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_iron.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_iron.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/iron" - } + "#c:raw_materials/iron" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_iron_block.json b/src/generated/resources/data/create/recipe/crushing/raw_iron_block.json index cfed3ced9c..298d45daeb 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_iron_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_iron_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_iron" - } + "#c:storage_blocks/raw_iron" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_lead.json b/src/generated/resources/data/create/recipe/crushing/raw_lead.json index 4584cf9c2b..18853d03e2 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_lead.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_lead.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/lead" - } + "#c:raw_materials/lead" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_lead_block.json b/src/generated/resources/data/create/recipe/crushing/raw_lead_block.json index c399e7e25a..636e8135cc 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_lead_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_lead_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_lead" - } + "#c:storage_blocks/raw_lead" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_nickel.json b/src/generated/resources/data/create/recipe/crushing/raw_nickel.json index d594ae1d26..0f4c4aa4ca 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_nickel.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_nickel.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/nickel" - } + "#c:raw_materials/nickel" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_nickel_block.json b/src/generated/resources/data/create/recipe/crushing/raw_nickel_block.json index 338ff24ef1..24d2f0f941 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_nickel_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_nickel_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_nickel" - } + "#c:storage_blocks/raw_nickel" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_osmium.json b/src/generated/resources/data/create/recipe/crushing/raw_osmium.json index e18a8f35d0..4b3b03688c 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_osmium.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_osmium.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/osmium" - } + "#c:raw_materials/osmium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_osmium_block.json b/src/generated/resources/data/create/recipe/crushing/raw_osmium_block.json index b1c4d584db..9bbba32e5e 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_osmium_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_osmium_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_osmium" - } + "#c:storage_blocks/raw_osmium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_platinum.json b/src/generated/resources/data/create/recipe/crushing/raw_platinum.json index e7d83aa269..383e30b82c 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_platinum.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_platinum.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/platinum" - } + "#c:raw_materials/platinum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_platinum_block.json b/src/generated/resources/data/create/recipe/crushing/raw_platinum_block.json index ce8eeaa31f..841d11f5f9 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_platinum_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_platinum_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_platinum" - } + "#c:storage_blocks/raw_platinum" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_quicksilver.json b/src/generated/resources/data/create/recipe/crushing/raw_quicksilver.json index 60f38f3b4b..439d9a12ce 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_quicksilver.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_quicksilver.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/quicksilver" - } + "#c:raw_materials/quicksilver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_quicksilver_block.json b/src/generated/resources/data/create/recipe/crushing/raw_quicksilver_block.json index 07e8a053b0..bde1613433 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_quicksilver_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_quicksilver_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_quicksilver" - } + "#c:storage_blocks/raw_quicksilver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_silver.json b/src/generated/resources/data/create/recipe/crushing/raw_silver.json index 402bd4e932..dc7931e9a8 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_silver.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_silver.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/silver" - } + "#c:raw_materials/silver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_silver_block.json b/src/generated/resources/data/create/recipe/crushing/raw_silver_block.json index cdf8afab20..bc02870654 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_silver_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_silver_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_silver" - } + "#c:storage_blocks/raw_silver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_tin.json b/src/generated/resources/data/create/recipe/crushing/raw_tin.json index e45ffd259d..d3215ca9bb 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_tin.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_tin.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/tin" - } + "#c:raw_materials/tin" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_tin_block.json b/src/generated/resources/data/create/recipe/crushing/raw_tin_block.json index b3e1e8e9ce..efa87054b6 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_tin_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_tin_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_tin" - } + "#c:storage_blocks/raw_tin" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_uranium.json b/src/generated/resources/data/create/recipe/crushing/raw_uranium.json index 14928ec54a..bb57efa172 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_uranium.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_uranium.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/uranium" - } + "#c:raw_materials/uranium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_uranium_block.json b/src/generated/resources/data/create/recipe/crushing/raw_uranium_block.json index 108c2743a2..1b5ee37c32 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_uranium_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_uranium_block.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_uranium" - } + "#c:storage_blocks/raw_uranium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_zinc.json b/src/generated/resources/data/create/recipe/crushing/raw_zinc.json index 261b5b2d3b..e387a41243 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_zinc.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_zinc.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:raw_materials/zinc" - } + "#c:raw_materials/zinc" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/raw_zinc_block.json b/src/generated/resources/data/create/recipe/crushing/raw_zinc_block.json index f5536a13e2..42e0b311d1 100644 --- a/src/generated/resources/data/create/recipe/crushing/raw_zinc_block.json +++ b/src/generated/resources/data/create/recipe/crushing/raw_zinc_block.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "c:storage_blocks/raw_zinc" - } + "#c:storage_blocks/raw_zinc" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/redstone_ore.json b/src/generated/resources/data/create/recipe/crushing/redstone_ore.json index fca8cf4e05..218769c68c 100644 --- a/src/generated/resources/data/create/recipe/crushing/redstone_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/redstone_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:redstone_ore" - } + "minecraft:redstone_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/silver_ore.json b/src/generated/resources/data/create/recipe/crushing/silver_ore.json index d072880fad..2677188ffd 100644 --- a/src/generated/resources/data/create/recipe/crushing/silver_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/silver_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/silver" - } + "#c:ores/silver" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/tin_ore.json b/src/generated/resources/data/create/recipe/crushing/tin_ore.json index 87163b3596..47009aa585 100644 --- a/src/generated/resources/data/create/recipe/crushing/tin_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/tin_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/tin" - } + "#c:ores/tin" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/tuff.json b/src/generated/resources/data/create/recipe/crushing/tuff.json index bbc5a3ca83..271a48db68 100644 --- a/src/generated/resources/data/create/recipe/crushing/tuff.json +++ b/src/generated/resources/data/create/recipe/crushing/tuff.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "minecraft:tuff" - } + "minecraft:tuff" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/tuff_recycling.json b/src/generated/resources/data/create/recipe/crushing/tuff_recycling.json index cc3c95c4f6..cdccc508b2 100644 --- a/src/generated/resources/data/create/recipe/crushing/tuff_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/tuff_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/tuff" - } + "#create:stone_types/tuff" ], "processing_time": 350, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/uranium_ore.json b/src/generated/resources/data/create/recipe/crushing/uranium_ore.json index 7b9d610278..3ecbff95fd 100644 --- a/src/generated/resources/data/create/recipe/crushing/uranium_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/uranium_ore.json @@ -10,9 +10,7 @@ ], "type": "create:crushing", "ingredients": [ - { - "tag": "c:ores/uranium" - } + "#c:ores/uranium" ], "processing_time": 400, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/veridium.json b/src/generated/resources/data/create/recipe/crushing/veridium.json index a5b294333a..c8845a95cf 100644 --- a/src/generated/resources/data/create/recipe/crushing/veridium.json +++ b/src/generated/resources/data/create/recipe/crushing/veridium.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:veridium" - } + "create:veridium" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/veridium_recycling.json b/src/generated/resources/data/create/recipe/crushing/veridium_recycling.json index 8911746c72..1d99e73f0a 100644 --- a/src/generated/resources/data/create/recipe/crushing/veridium_recycling.json +++ b/src/generated/resources/data/create/recipe/crushing/veridium_recycling.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "create:stone_types/veridium" - } + "#create:stone_types/veridium" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/wool.json b/src/generated/resources/data/create/recipe/crushing/wool.json index cdb66541aa..a747f85f3d 100644 --- a/src/generated/resources/data/create/recipe/crushing/wool.json +++ b/src/generated/resources/data/create/recipe/crushing/wool.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "tag": "minecraft:wool" - } + "#minecraft:wool" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/crushing/zinc_ore.json b/src/generated/resources/data/create/recipe/crushing/zinc_ore.json index 2d16841061..759122651c 100644 --- a/src/generated/resources/data/create/recipe/crushing/zinc_ore.json +++ b/src/generated/resources/data/create/recipe/crushing/zinc_ore.json @@ -1,9 +1,7 @@ { "type": "create:crushing", "ingredients": [ - { - "item": "create:zinc_ore" - } + "create:zinc_ore" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab.json index 358cee4aff..3623019ac7 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_andesite_brick_slab", "key": { - "X": { - "item": "create:cut_andesite_bricks" - } + "X": "create:cut_andesite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json index d068afebf5..67391708ad 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_from_stone_types_andesite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { "count": 2, "id": "create:cut_andesite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_recycling.json index 3bafd6cdc9..d3586fc806 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_andesite_brick_slab" - }, - { - "item": "create:cut_andesite_brick_slab" - } + "create:cut_andesite_brick_slab", + "create:cut_andesite_brick_slab" ], "result": { - "count": 1, "id": "create:cut_andesite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs.json index 686524dc9e..752bbd46d6 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_andesite_brick_stairs", "key": { - "X": { - "item": "create:cut_andesite_bricks" - } + "X": "create:cut_andesite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json index 4ab1288ccd..d5bd410a35 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_wall.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_wall.json index 5eaf65e106..14a58db24d 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_andesite_bricks" - } + "X": "create:cut_andesite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json index 061a0d6f58..28e7a456c1 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_brick_wall_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json index 9205caa108..4de5f99783 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_bricks_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json index e0f31a28a6..60d09a01a7 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_slab.json b/src/generated/resources/data/create/recipe/cut_andesite_slab.json index b897bcb71e..35b9471841 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_slab.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_andesite_slab", "key": { - "X": { - "item": "create:cut_andesite" - } + "X": "create:cut_andesite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json index 6f58798711..659b9036ab 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_slab_from_stone_types_andesite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { "count": 2, "id": "create:cut_andesite_slab" diff --git a/src/generated/resources/data/create/recipe/cut_andesite_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_andesite_slab_recycling.json index 0e287ff1fb..b86df20433 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_andesite_slab" - }, - { - "item": "create:cut_andesite_slab" - } + "create:cut_andesite_slab", + "create:cut_andesite_slab" ], "result": { - "count": 1, "id": "create:cut_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_stairs.json b/src/generated/resources/data/create/recipe/cut_andesite_stairs.json index 3f35bcd505..892801d094 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_andesite_stairs", "key": { - "X": { - "item": "create:cut_andesite" - } + "X": "create:cut_andesite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json index 0344441c6b..c49640d06d 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_stairs_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_andesite_wall.json b/src/generated/resources/data/create/recipe/cut_andesite_wall.json index dee18823ca..46f6386e8a 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_wall.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_andesite" - } + "X": "create:cut_andesite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json index d9ad8dc1a5..57b1a1898c 100644 --- a/src/generated/resources/data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_andesite_wall_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:cut_andesite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab.json index 88212f833e..c292ab20c5 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_asurine_brick_slab", "key": { - "X": { - "item": "create:cut_asurine_bricks" - } + "X": "create:cut_asurine_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json index a12d0baf19..127dd71c13 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_from_stone_types_asurine_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { "count": 2, "id": "create:cut_asurine_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_recycling.json index 281028eee2..0cf9081697 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_asurine_brick_slab" - }, - { - "item": "create:cut_asurine_brick_slab" - } + "create:cut_asurine_brick_slab", + "create:cut_asurine_brick_slab" ], "result": { - "count": 1, "id": "create:cut_asurine_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs.json index ca8ca23e4f..4864f80e2e 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_asurine_brick_stairs", "key": { - "X": { - "item": "create:cut_asurine_bricks" - } + "X": "create:cut_asurine_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json index 5c202c83f5..df9904c070 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_wall.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_wall.json index 9c2be3749a..ab587e2cb7 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_asurine_bricks" - } + "X": "create:cut_asurine_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json index f95b84d63d..0f364bf15a 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_brick_wall_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json index 9a620093ce..2afc791a87 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_bricks_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json index 9f3ecdb486..2441f5e9c8 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_slab.json b/src/generated/resources/data/create/recipe/cut_asurine_slab.json index c0d4fb16f3..a073baf386 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_slab.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_asurine_slab", "key": { - "X": { - "item": "create:cut_asurine" - } + "X": "create:cut_asurine" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json index c37a0e4873..87151f4050 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_slab_from_stone_types_asurine_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { "count": 2, "id": "create:cut_asurine_slab" diff --git a/src/generated/resources/data/create/recipe/cut_asurine_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_asurine_slab_recycling.json index 9060dbd1f8..75aa2f354a 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_asurine_slab" - }, - { - "item": "create:cut_asurine_slab" - } + "create:cut_asurine_slab", + "create:cut_asurine_slab" ], "result": { - "count": 1, "id": "create:cut_asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_stairs.json b/src/generated/resources/data/create/recipe/cut_asurine_stairs.json index 95fd49001d..b4b82dd8f9 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_asurine_stairs", "key": { - "X": { - "item": "create:cut_asurine" - } + "X": "create:cut_asurine" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json index 8142ff85db..b00991ea6b 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_stairs_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_asurine_wall.json b/src/generated/resources/data/create/recipe/cut_asurine_wall.json index d8f7c8146e..dd01816bde 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_wall.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_asurine" - } + "X": "create:cut_asurine" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json index 34dcc93fd9..2677220321 100644 --- a/src/generated/resources/data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_asurine_wall_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:cut_asurine_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab.json index 3cf29d8281..d729881730 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_calcite_brick_slab", "key": { - "X": { - "item": "create:cut_calcite_bricks" - } + "X": "create:cut_calcite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json index 4df1d77987..3e30441f73 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_from_stone_types_calcite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { "count": 2, "id": "create:cut_calcite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_recycling.json index 530d61ea8e..7a0d255c62 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_calcite_brick_slab" - }, - { - "item": "create:cut_calcite_brick_slab" - } + "create:cut_calcite_brick_slab", + "create:cut_calcite_brick_slab" ], "result": { - "count": 1, "id": "create:cut_calcite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs.json index f3a46aab23..29ca817c4d 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_calcite_brick_stairs", "key": { - "X": { - "item": "create:cut_calcite_bricks" - } + "X": "create:cut_calcite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json index ab49625ed4..1dff250357 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_wall.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_wall.json index a3f0828f57..a493b8e425 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_calcite_bricks" - } + "X": "create:cut_calcite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json index 9f6a545b8b..1cc821b2f5 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_brick_wall_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json index 36b08b3568..70ed12c49a 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_bricks_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json index c8420fea3e..998df15872 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_slab.json b/src/generated/resources/data/create/recipe/cut_calcite_slab.json index 50e0290645..d0bd5be1d7 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_slab.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_calcite_slab", "key": { - "X": { - "item": "create:cut_calcite" - } + "X": "create:cut_calcite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json index 90043efab9..65e2771e40 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_slab_from_stone_types_calcite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { "count": 2, "id": "create:cut_calcite_slab" diff --git a/src/generated/resources/data/create/recipe/cut_calcite_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_calcite_slab_recycling.json index 5ddab6cb21..e66c9e917f 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_calcite_slab" - }, - { - "item": "create:cut_calcite_slab" - } + "create:cut_calcite_slab", + "create:cut_calcite_slab" ], "result": { - "count": 1, "id": "create:cut_calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_stairs.json b/src/generated/resources/data/create/recipe/cut_calcite_stairs.json index f0ad6c9c02..d23baf4855 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_calcite_stairs", "key": { - "X": { - "item": "create:cut_calcite" - } + "X": "create:cut_calcite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json index e59a781940..d69ece8fb4 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_stairs_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_calcite_wall.json b/src/generated/resources/data/create/recipe/cut_calcite_wall.json index 65e964e7b9..f94cef0c11 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_wall.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_calcite" - } + "X": "create:cut_calcite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json index e438211b4c..cf82286a84 100644 --- a/src/generated/resources/data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_calcite_wall_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:cut_calcite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab.json index effd2e0f56..f05001bc5d 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_crimsite_brick_slab", "key": { - "X": { - "item": "create:cut_crimsite_bricks" - } + "X": "create:cut_crimsite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json index 9bd5f0d6e5..896a9eb065 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { "count": 2, "id": "create:cut_crimsite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_recycling.json index e7cd87f1c7..1d4514409c 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_crimsite_brick_slab" - }, - { - "item": "create:cut_crimsite_brick_slab" - } + "create:cut_crimsite_brick_slab", + "create:cut_crimsite_brick_slab" ], "result": { - "count": 1, "id": "create:cut_crimsite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs.json index 5979196532..374197b84c 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_crimsite_brick_stairs", "key": { - "X": { - "item": "create:cut_crimsite_bricks" - } + "X": "create:cut_crimsite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json index 0bdbff29aa..ebe58045bb 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall.json index 7981da1588..99137957c8 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_crimsite_bricks" - } + "X": "create:cut_crimsite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json index 468e1a0d91..e6a2f7016d 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json index 5526db6b36..230d757a58 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_bricks_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json index 00368c7828..7e439b5d04 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_slab.json b/src/generated/resources/data/create/recipe/cut_crimsite_slab.json index be05c97a57..849e7727c1 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_slab.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_crimsite_slab", "key": { - "X": { - "item": "create:cut_crimsite" - } + "X": "create:cut_crimsite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json index d98f562c4f..bf000e71a9 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { "count": 2, "id": "create:cut_crimsite_slab" diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_crimsite_slab_recycling.json index a190f5703b..39f60b1308 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_crimsite_slab" - }, - { - "item": "create:cut_crimsite_slab" - } + "create:cut_crimsite_slab", + "create:cut_crimsite_slab" ], "result": { - "count": 1, "id": "create:cut_crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_stairs.json b/src/generated/resources/data/create/recipe/cut_crimsite_stairs.json index a64f598e32..5d6d1e57ad 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_crimsite_stairs", "key": { - "X": { - "item": "create:cut_crimsite" - } + "X": "create:cut_crimsite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json index ca8f2c1d74..ab91221bf8 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_wall.json b/src/generated/resources/data/create/recipe/cut_crimsite_wall.json index f880b0f2e0..d0e18ef2ba 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_wall.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_crimsite" - } + "X": "create:cut_crimsite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json index 114c0f963c..c5334b21ca 100644 --- a/src/generated/resources/data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:cut_crimsite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab.json index 235240c002..b83d7a19a8 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_deepslate_brick_slab", "key": { - "X": { - "item": "create:cut_deepslate_bricks" - } + "X": "create:cut_deepslate_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json index ca2c38ac16..bbc51d5b6a 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { "count": 2, "id": "create:cut_deepslate_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_recycling.json index e62786b984..a13fc0a18a 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_deepslate_brick_slab" - }, - { - "item": "create:cut_deepslate_brick_slab" - } + "create:cut_deepslate_brick_slab", + "create:cut_deepslate_brick_slab" ], "result": { - "count": 1, "id": "create:cut_deepslate_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs.json index 6dd0075d1c..8ee356812d 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_deepslate_brick_stairs", "key": { - "X": { - "item": "create:cut_deepslate_bricks" - } + "X": "create:cut_deepslate_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json index 4fbced2091..7c23904a68 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall.json index b50b5710e7..2ac8903d12 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_deepslate_bricks" - } + "X": "create:cut_deepslate_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json index e61daf7897..ff92d70033 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json index 5919a2c7d4..71a7ec4bda 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_bricks_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json index 0f17eda003..f99db65fdf 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_slab.json b/src/generated/resources/data/create/recipe/cut_deepslate_slab.json index f2a9e751f6..1939020949 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_slab.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_deepslate_slab", "key": { - "X": { - "item": "create:cut_deepslate" - } + "X": "create:cut_deepslate" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json index d5edaf5e24..c365212b65 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { "count": 2, "id": "create:cut_deepslate_slab" diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_deepslate_slab_recycling.json index 3b19064538..588de104c8 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_deepslate_slab" - }, - { - "item": "create:cut_deepslate_slab" - } + "create:cut_deepslate_slab", + "create:cut_deepslate_slab" ], "result": { - "count": 1, "id": "create:cut_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_stairs.json b/src/generated/resources/data/create/recipe/cut_deepslate_stairs.json index cb87e76f1f..3723014b59 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_deepslate_stairs", "key": { - "X": { - "item": "create:cut_deepslate" - } + "X": "create:cut_deepslate" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json index afbc7e9868..142a0de9aa 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_wall.json b/src/generated/resources/data/create/recipe/cut_deepslate_wall.json index 1b31e1fc5f..138c44974f 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_wall.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_deepslate" - } + "X": "create:cut_deepslate" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json index a2088cc214..bacea19977 100644 --- a/src/generated/resources/data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:cut_deepslate_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab.json index 5e24fea3ea..8eae9943d2 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_diorite_brick_slab", "key": { - "X": { - "item": "create:cut_diorite_bricks" - } + "X": "create:cut_diorite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json index 153ce44fb5..1ca0112d22 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_from_stone_types_diorite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { "count": 2, "id": "create:cut_diorite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_recycling.json index 4f3e0f5d27..e08b96d868 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_diorite_brick_slab" - }, - { - "item": "create:cut_diorite_brick_slab" - } + "create:cut_diorite_brick_slab", + "create:cut_diorite_brick_slab" ], "result": { - "count": 1, "id": "create:cut_diorite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs.json index fc02871f65..2ec48813b1 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_diorite_brick_stairs", "key": { - "X": { - "item": "create:cut_diorite_bricks" - } + "X": "create:cut_diorite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json index 2367603cf3..2f7a8337fb 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_wall.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_wall.json index 6a3930029c..46d7920c31 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_diorite_bricks" - } + "X": "create:cut_diorite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json index df44f99084..6f983f66f1 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_brick_wall_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json index 95bde1c556..fb45252516 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_bricks_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json index 5806d9afe9..d026135b09 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_slab.json b/src/generated/resources/data/create/recipe/cut_diorite_slab.json index 1775357e65..890288bb8d 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_slab.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_diorite_slab", "key": { - "X": { - "item": "create:cut_diorite" - } + "X": "create:cut_diorite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json index 913f178628..533c9c1174 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_slab_from_stone_types_diorite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { "count": 2, "id": "create:cut_diorite_slab" diff --git a/src/generated/resources/data/create/recipe/cut_diorite_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_diorite_slab_recycling.json index 8f22467651..c2ee9339b5 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_diorite_slab" - }, - { - "item": "create:cut_diorite_slab" - } + "create:cut_diorite_slab", + "create:cut_diorite_slab" ], "result": { - "count": 1, "id": "create:cut_diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_stairs.json b/src/generated/resources/data/create/recipe/cut_diorite_stairs.json index d91895d6fa..5ca779c2d3 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_diorite_stairs", "key": { - "X": { - "item": "create:cut_diorite" - } + "X": "create:cut_diorite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json index 811fc269b1..779fabe659 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_stairs_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_diorite_wall.json b/src/generated/resources/data/create/recipe/cut_diorite_wall.json index f5e8ec293d..57f67b3318 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_wall.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_diorite" - } + "X": "create:cut_diorite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json index f870a0c06e..e059879cf9 100644 --- a/src/generated/resources/data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_diorite_wall_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:cut_diorite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab.json index fbc2488ab2..9775700b00 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_dripstone_brick_slab", "key": { - "X": { - "item": "create:cut_dripstone_bricks" - } + "X": "create:cut_dripstone_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json index 06c2e05c26..feda6cb01d 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { "count": 2, "id": "create:cut_dripstone_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_recycling.json index 8c2fea472a..fe44eec19c 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_dripstone_brick_slab" - }, - { - "item": "create:cut_dripstone_brick_slab" - } + "create:cut_dripstone_brick_slab", + "create:cut_dripstone_brick_slab" ], "result": { - "count": 1, "id": "create:cut_dripstone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs.json index 684d431e94..d2b3024927 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_dripstone_brick_stairs", "key": { - "X": { - "item": "create:cut_dripstone_bricks" - } + "X": "create:cut_dripstone_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json index 6e3a5cb2bb..3602b9098e 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall.json index 5ab1a69d8c..7520475de3 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_dripstone_bricks" - } + "X": "create:cut_dripstone_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json index 4c8e7eeab6..3742908338 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json index f5419a7d4c..b321d3ad04 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_bricks_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json index a6ac861512..cfe7456ca2 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_slab.json b/src/generated/resources/data/create/recipe/cut_dripstone_slab.json index 53e92c16fb..ac3d57f0bd 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_slab.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_dripstone_slab", "key": { - "X": { - "item": "create:cut_dripstone" - } + "X": "create:cut_dripstone" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json index a65b5da36f..c3ee589b1b 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { "count": 2, "id": "create:cut_dripstone_slab" diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_dripstone_slab_recycling.json index 3f0c8c9517..f33ac13744 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_dripstone_slab" - }, - { - "item": "create:cut_dripstone_slab" - } + "create:cut_dripstone_slab", + "create:cut_dripstone_slab" ], "result": { - "count": 1, "id": "create:cut_dripstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_stairs.json b/src/generated/resources/data/create/recipe/cut_dripstone_stairs.json index 1cd280aaf6..2b12be9eb8 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_dripstone_stairs", "key": { - "X": { - "item": "create:cut_dripstone" - } + "X": "create:cut_dripstone" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json index 45b9827f6f..400adda0e9 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_wall.json b/src/generated/resources/data/create/recipe/cut_dripstone_wall.json index 3315be22da..68bfa1c8f1 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_wall.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_dripstone" - } + "X": "create:cut_dripstone" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json index 6c54c2c007..c24b93ff3a 100644 --- a/src/generated/resources/data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:cut_dripstone_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_slab.json b/src/generated/resources/data/create/recipe/cut_granite_brick_slab.json index f514066adc..f575758562 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_granite_brick_slab", "key": { - "X": { - "item": "create:cut_granite_bricks" - } + "X": "create:cut_granite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json index 277791397f..f3cccbde71 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_slab_from_stone_types_granite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { "count": 2, "id": "create:cut_granite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_granite_brick_slab_recycling.json index 2f8be4125d..845d45e605 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_granite_brick_slab" - }, - { - "item": "create:cut_granite_brick_slab" - } + "create:cut_granite_brick_slab", + "create:cut_granite_brick_slab" ], "result": { - "count": 1, "id": "create:cut_granite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_granite_brick_stairs.json index 4becb6dd7d..f4d8e40366 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_granite_brick_stairs", "key": { - "X": { - "item": "create:cut_granite_bricks" - } + "X": "create:cut_granite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json index 3a5266196a..48fabe5143 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_stairs_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_wall.json b/src/generated/resources/data/create/recipe/cut_granite_brick_wall.json index f9a235f882..0d283665f5 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_granite_bricks" - } + "X": "create:cut_granite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json index 1cc0794d30..1c4a625205 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_brick_wall_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json index 994805d675..5be619624d 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_bricks_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json index 5f5d9239be..0ef1c2e686 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_slab.json b/src/generated/resources/data/create/recipe/cut_granite_slab.json index 4df69f848a..b46a554750 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_slab.json +++ b/src/generated/resources/data/create/recipe/cut_granite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_granite_slab", "key": { - "X": { - "item": "create:cut_granite" - } + "X": "create:cut_granite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json index 2ff740788e..0cea71cb77 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_slab_from_stone_types_granite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { "count": 2, "id": "create:cut_granite_slab" diff --git a/src/generated/resources/data/create/recipe/cut_granite_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_granite_slab_recycling.json index 45fbd0e83c..38156ccb51 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_granite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_granite_slab" - }, - { - "item": "create:cut_granite_slab" - } + "create:cut_granite_slab", + "create:cut_granite_slab" ], "result": { - "count": 1, "id": "create:cut_granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_stairs.json b/src/generated/resources/data/create/recipe/cut_granite_stairs.json index 53f046e62b..96643a715f 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_granite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_granite_stairs", "key": { - "X": { - "item": "create:cut_granite" - } + "X": "create:cut_granite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json index 350c196285..f8cdb62da9 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_stairs_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_granite_wall.json b/src/generated/resources/data/create/recipe/cut_granite_wall.json index 4c7d5f4815..5e7ecc51da 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_wall.json +++ b/src/generated/resources/data/create/recipe/cut_granite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_granite" - } + "X": "create:cut_granite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json index 839f44c94e..b7dd4e451c 100644 --- a/src/generated/resources/data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_granite_wall_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:cut_granite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab.json index 960ea68790..a263298ba2 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_limestone_brick_slab", "key": { - "X": { - "item": "create:cut_limestone_bricks" - } + "X": "create:cut_limestone_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json index 636eb45dac..34ee91feb2 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_from_stone_types_limestone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { "count": 2, "id": "create:cut_limestone_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_recycling.json index 38af365724..75bfbea9ea 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_limestone_brick_slab" - }, - { - "item": "create:cut_limestone_brick_slab" - } + "create:cut_limestone_brick_slab", + "create:cut_limestone_brick_slab" ], "result": { - "count": 1, "id": "create:cut_limestone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs.json index d5f01d4e88..a9e2298912 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_limestone_brick_stairs", "key": { - "X": { - "item": "create:cut_limestone_bricks" - } + "X": "create:cut_limestone_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json index 7803d90f7a..d0c7668af6 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_wall.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_wall.json index 5305d9dc41..3778971c02 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_limestone_bricks" - } + "X": "create:cut_limestone_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json index a167860e1d..0bc9c148d1 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_brick_wall_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json index c210e206a8..e297e0a1c6 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_bricks_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json index 082410bc71..3c53348d8a 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_slab.json b/src/generated/resources/data/create/recipe/cut_limestone_slab.json index 016a270569..6b15fe9c24 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_slab.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_limestone_slab", "key": { - "X": { - "item": "create:cut_limestone" - } + "X": "create:cut_limestone" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json index 19af558c49..bd56200c52 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_slab_from_stone_types_limestone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { "count": 2, "id": "create:cut_limestone_slab" diff --git a/src/generated/resources/data/create/recipe/cut_limestone_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_limestone_slab_recycling.json index 225a05918a..38ef22a576 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_limestone_slab" - }, - { - "item": "create:cut_limestone_slab" - } + "create:cut_limestone_slab", + "create:cut_limestone_slab" ], "result": { - "count": 1, "id": "create:cut_limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_stairs.json b/src/generated/resources/data/create/recipe/cut_limestone_stairs.json index 017704ab23..faae9bd842 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_limestone_stairs", "key": { - "X": { - "item": "create:cut_limestone" - } + "X": "create:cut_limestone" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json index 678fede7ba..541a4d01cc 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_stairs_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_limestone_wall.json b/src/generated/resources/data/create/recipe/cut_limestone_wall.json index 1afa991f5a..832eb4717f 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_wall.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_limestone" - } + "X": "create:cut_limestone" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json index fcc02be7eb..6e108e99b1 100644 --- a/src/generated/resources/data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_limestone_wall_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:cut_limestone_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab.json index d029b0d252..4028103ef0 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_ochrum_brick_slab", "key": { - "X": { - "item": "create:cut_ochrum_bricks" - } + "X": "create:cut_ochrum_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json index f271f8dc1a..c8691d818e 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { "count": 2, "id": "create:cut_ochrum_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_recycling.json index c4ee888cac..879cbcb823 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_ochrum_brick_slab" - }, - { - "item": "create:cut_ochrum_brick_slab" - } + "create:cut_ochrum_brick_slab", + "create:cut_ochrum_brick_slab" ], "result": { - "count": 1, "id": "create:cut_ochrum_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs.json index c9100c85cf..ea70fc9e11 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_ochrum_brick_stairs", "key": { - "X": { - "item": "create:cut_ochrum_bricks" - } + "X": "create:cut_ochrum_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json index a060e1670c..1d0c7b031b 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall.json index 0594579ff3..0b42d22c4c 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_ochrum_bricks" - } + "X": "create:cut_ochrum_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json index 5c5e066810..d3329e818a 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json index 06f87a33e6..0a89d1b1cd 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_bricks_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json index 4a43c00f54..275433b21c 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_slab.json b/src/generated/resources/data/create/recipe/cut_ochrum_slab.json index 40d1b87137..bbacc57c66 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_slab.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_ochrum_slab", "key": { - "X": { - "item": "create:cut_ochrum" - } + "X": "create:cut_ochrum" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json index ace1c7cdf3..0c132d6e9b 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { "count": 2, "id": "create:cut_ochrum_slab" diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_ochrum_slab_recycling.json index 454ba66b4b..0512d9356a 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_ochrum_slab" - }, - { - "item": "create:cut_ochrum_slab" - } + "create:cut_ochrum_slab", + "create:cut_ochrum_slab" ], "result": { - "count": 1, "id": "create:cut_ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_stairs.json b/src/generated/resources/data/create/recipe/cut_ochrum_stairs.json index 858acbc3b8..ac0a595baf 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_ochrum_stairs", "key": { - "X": { - "item": "create:cut_ochrum" - } + "X": "create:cut_ochrum" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json index bd931d2e19..7ff4fc2665 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_wall.json b/src/generated/resources/data/create/recipe/cut_ochrum_wall.json index 43ea4fba2e..0d7e7f1c9a 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_wall.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_ochrum" - } + "X": "create:cut_ochrum" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json index 3fa87b5604..e861b63e07 100644 --- a/src/generated/resources/data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:cut_ochrum_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab.json index b059464ea1..67603e23c6 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scorchia_brick_slab", "key": { - "X": { - "item": "create:cut_scorchia_bricks" - } + "X": "create:cut_scorchia_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json index 425fb88ea5..53e03624e3 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { "count": 2, "id": "create:cut_scorchia_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_recycling.json index 4df538c208..8dd8f52578 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_scorchia_brick_slab" - }, - { - "item": "create:cut_scorchia_brick_slab" - } + "create:cut_scorchia_brick_slab", + "create:cut_scorchia_brick_slab" ], "result": { - "count": 1, "id": "create:cut_scorchia_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs.json index c4689b780b..3eaa22d1a2 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scorchia_brick_stairs", "key": { - "X": { - "item": "create:cut_scorchia_bricks" - } + "X": "create:cut_scorchia_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json index 5705643455..a76eab0ca5 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall.json index 691eda7f1b..34cc84b618 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_scorchia_bricks" - } + "X": "create:cut_scorchia_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json index a37440e0aa..efd73b8a4b 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json index b58d036a1f..081f1ba024 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_bricks_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json index ec4060ced8..d7a0dad1ed 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_slab.json b/src/generated/resources/data/create/recipe/cut_scorchia_slab.json index 3d1197d2f5..828ff9a6b2 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_slab.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scorchia_slab", "key": { - "X": { - "item": "create:cut_scorchia" - } + "X": "create:cut_scorchia" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json index 32a5ce85e4..5b653fd150 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { "count": 2, "id": "create:cut_scorchia_slab" diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_scorchia_slab_recycling.json index b010fdfe62..7bc3f120f0 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_scorchia_slab" - }, - { - "item": "create:cut_scorchia_slab" - } + "create:cut_scorchia_slab", + "create:cut_scorchia_slab" ], "result": { - "count": 1, "id": "create:cut_scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_stairs.json b/src/generated/resources/data/create/recipe/cut_scorchia_stairs.json index a81b611906..e7c6ddad59 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scorchia_stairs", "key": { - "X": { - "item": "create:cut_scorchia" - } + "X": "create:cut_scorchia" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json index fae0556db2..4469d39cf9 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_wall.json b/src/generated/resources/data/create/recipe/cut_scorchia_wall.json index a21becd965..6a9be4daab 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_wall.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_scorchia" - } + "X": "create:cut_scorchia" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json index 81fd1418b6..8e0582886a 100644 --- a/src/generated/resources/data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:cut_scorchia_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab.json index 11cc356401..352b518af0 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scoria_brick_slab", "key": { - "X": { - "item": "create:cut_scoria_bricks" - } + "X": "create:cut_scoria_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json index 41b2ae6794..d7321b46ca 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_from_stone_types_scoria_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { "count": 2, "id": "create:cut_scoria_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_recycling.json index bd940f04c5..7e55098854 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_scoria_brick_slab" - }, - { - "item": "create:cut_scoria_brick_slab" - } + "create:cut_scoria_brick_slab", + "create:cut_scoria_brick_slab" ], "result": { - "count": 1, "id": "create:cut_scoria_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs.json index aa4d38f677..46c76e684d 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scoria_brick_stairs", "key": { - "X": { - "item": "create:cut_scoria_bricks" - } + "X": "create:cut_scoria_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json index 1f720da42c..85cb87960c 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_wall.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_wall.json index ca117e9e38..01c9ab6548 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_scoria_bricks" - } + "X": "create:cut_scoria_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json index 9a637ed351..7863fdfe19 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_brick_wall_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json index 80e7550a55..0ab1313687 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_bricks_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json index ab40eb3a6b..9cf88161e6 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_slab.json b/src/generated/resources/data/create/recipe/cut_scoria_slab.json index f819751c32..199e7765aa 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_slab.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scoria_slab", "key": { - "X": { - "item": "create:cut_scoria" - } + "X": "create:cut_scoria" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json index ca2c7a3af6..63d34f14ff 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_slab_from_stone_types_scoria_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { "count": 2, "id": "create:cut_scoria_slab" diff --git a/src/generated/resources/data/create/recipe/cut_scoria_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_scoria_slab_recycling.json index bc708a8f90..71f74c68dd 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_scoria_slab" - }, - { - "item": "create:cut_scoria_slab" - } + "create:cut_scoria_slab", + "create:cut_scoria_slab" ], "result": { - "count": 1, "id": "create:cut_scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_stairs.json b/src/generated/resources/data/create/recipe/cut_scoria_stairs.json index 8a7df92788..6b3504b4c1 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_scoria_stairs", "key": { - "X": { - "item": "create:cut_scoria" - } + "X": "create:cut_scoria" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json index 97594a5c24..681c6952b1 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_stairs_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_scoria_wall.json b/src/generated/resources/data/create/recipe/cut_scoria_wall.json index c30316089f..e7d4cd93b0 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_wall.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_scoria" - } + "X": "create:cut_scoria" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json index 4683186238..b471c3d3cf 100644 --- a/src/generated/resources/data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_scoria_wall_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:cut_scoria_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab.json index 5a7b41ce89..c426501936 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_tuff_brick_slab", "key": { - "X": { - "item": "create:cut_tuff_bricks" - } + "X": "create:cut_tuff_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json index 760fbdee6a..e49e7e5b5a 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_from_stone_types_tuff_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { "count": 2, "id": "create:cut_tuff_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_recycling.json index e082a4fd1d..a077c9f5c0 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_tuff_brick_slab" - }, - { - "item": "create:cut_tuff_brick_slab" - } + "create:cut_tuff_brick_slab", + "create:cut_tuff_brick_slab" ], "result": { - "count": 1, "id": "create:cut_tuff_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs.json index 35b7336b77..6777bca948 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_tuff_brick_stairs", "key": { - "X": { - "item": "create:cut_tuff_bricks" - } + "X": "create:cut_tuff_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json index 5c251c6a6c..1d2dde1df4 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_wall.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_wall.json index 1b3347ff35..7007c52508 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_tuff_bricks" - } + "X": "create:cut_tuff_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json index 679b93878e..eefc206456 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_brick_wall_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json index cae7e19868..bca043efa2 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_bricks_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json index da9404db65..bd1dfc36b4 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_slab.json b/src/generated/resources/data/create/recipe/cut_tuff_slab.json index a8e78e6f21..203cbbf181 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_slab.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_tuff_slab", "key": { - "X": { - "item": "create:cut_tuff" - } + "X": "create:cut_tuff" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json index efe6bd990f..eb6e2be12d 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_slab_from_stone_types_tuff_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { "count": 2, "id": "create:cut_tuff_slab" diff --git a/src/generated/resources/data/create/recipe/cut_tuff_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_tuff_slab_recycling.json index 2c0a7b316a..5a40e3425e 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_tuff_slab" - }, - { - "item": "create:cut_tuff_slab" - } + "create:cut_tuff_slab", + "create:cut_tuff_slab" ], "result": { - "count": 1, "id": "create:cut_tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_stairs.json b/src/generated/resources/data/create/recipe/cut_tuff_stairs.json index 4a72ba9a67..25b485b415 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_tuff_stairs", "key": { - "X": { - "item": "create:cut_tuff" - } + "X": "create:cut_tuff" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json index 471a52200d..33ead8dfcc 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_stairs_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_tuff_wall.json b/src/generated/resources/data/create/recipe/cut_tuff_wall.json index b46d4d7d1c..8560219f15 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_wall.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_tuff" - } + "X": "create:cut_tuff" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json index 3067280b83..6fb202d718 100644 --- a/src/generated/resources/data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_tuff_wall_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:cut_tuff_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab.json index 2d83351a15..6ee36167d9 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_veridium_brick_slab", "key": { - "X": { - "item": "create:cut_veridium_bricks" - } + "X": "create:cut_veridium_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json index 351964ee0b..14a11ddb46 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_from_stone_types_veridium_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { "count": 2, "id": "create:cut_veridium_brick_slab" diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_recycling.json index c9af50b8f4..a22fdf4d49 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_veridium_brick_slab" - }, - { - "item": "create:cut_veridium_brick_slab" - } + "create:cut_veridium_brick_slab", + "create:cut_veridium_brick_slab" ], "result": { - "count": 1, "id": "create:cut_veridium_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs.json index 95d4c9503f..a1e3ce625b 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_veridium_brick_stairs", "key": { - "X": { - "item": "create:cut_veridium_bricks" - } + "X": "create:cut_veridium_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json index 27a297ab6c..d0aa9c5c00 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_wall.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_wall.json index 697f253a3c..5a9c4894d3 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_wall.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_veridium_bricks" - } + "X": "create:cut_veridium_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json index 39a4967773..317ef33c19 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_brick_wall_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json index e4493b95d4..b067c27911 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_bricks_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json index 9ca046c985..a50f52619d 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_slab.json b/src/generated/resources/data/create/recipe/cut_veridium_slab.json index f84062c00a..422688d232 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_slab.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_veridium_slab", "key": { - "X": { - "item": "create:cut_veridium" - } + "X": "create:cut_veridium" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json index 28c58578c7..a435d448fe 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_slab_from_stone_types_veridium_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { "count": 2, "id": "create:cut_veridium_slab" diff --git a/src/generated/resources/data/create/recipe/cut_veridium_slab_recycling.json b/src/generated/resources/data/create/recipe/cut_veridium_slab_recycling.json index 8370909961..d6633efbba 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:cut_veridium_slab" - }, - { - "item": "create:cut_veridium_slab" - } + "create:cut_veridium_slab", + "create:cut_veridium_slab" ], "result": { - "count": 1, "id": "create:cut_veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_stairs.json b/src/generated/resources/data/create/recipe/cut_veridium_stairs.json index 3f55025a09..5038b484ea 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_stairs.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "cut_veridium_stairs", "key": { - "X": { - "item": "create:cut_veridium" - } + "X": "create:cut_veridium" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json index dddc6c02db..7e9723a882 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_stairs_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cut_veridium_wall.json b/src/generated/resources/data/create/recipe/cut_veridium_wall.json index 928d4da132..492d77daa2 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_wall.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:cut_veridium" - } + "X": "create:cut_veridium" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json index 2c2873c862..c53dca9613 100644 --- a/src/generated/resources/data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/cut_veridium_wall_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:cut_veridium_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/cutting/andesite_alloy.json b/src/generated/resources/data/create/recipe/cutting/andesite_alloy.json index 03986669ca..e3e7d5811c 100644 --- a/src/generated/resources/data/create/recipe/cutting/andesite_alloy.json +++ b/src/generated/resources/data/create/recipe/cutting/andesite_alloy.json @@ -1,9 +1,7 @@ { "type": "create:cutting", "ingredients": [ - { - "item": "create:andesite_alloy" - } + "create:andesite_alloy" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/bamboo_planks.json b/src/generated/resources/data/create/recipe/cutting/bamboo_planks.json index 5e6f499d4b..9a3fb47e16 100644 --- a/src/generated/resources/data/create/recipe/cutting/bamboo_planks.json +++ b/src/generated/resources/data/create/recipe/cutting/bamboo_planks.json @@ -1,9 +1,7 @@ { "type": "create:cutting", "ingredients": [ - { - "item": "minecraft:bamboo_planks" - } + "minecraft:bamboo_planks" ], "processing_time": 20, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json index 68e8e725a4..a1f96fe042 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_elemental:stripped_yellow_archwood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json index fae1f2a879..8ca94a7f65 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_elemental/stripped_yellow_archwood_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_elemental:stripped_yellow_archwood_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json index b77eae1ac6..3157fd318b 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_green_archwood_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json index 06b4a65e82..d9555402ea 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_green_archwood_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_green_archwood_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json index 3d8a0ebdb9..77b8660952 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_purple_archwood_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json index 939f85511c..6b874ab62e 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_purple_archwood_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_purple_archwood_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json index 53af92e4f6..e29d304811 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_red_archwood_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json index 00e4611788..99e37a2f1d 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/ars_nouveau/stripped_red_archwood_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ars_nouveau:stripped_red_archwood_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_log.json b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_log.json index 255a539646..bff669813e 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:crustose_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_wood.json index 4bf59cf854..2777ee2d2e 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/crustose_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:crustose_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json index fa98a6c071..f991e4c4f1 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:watchful_aspen_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json index 24e3586a37..0a355b0bc4 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/atmospheric/watchful_aspen_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:watchful_aspen_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json b/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json index 5be8e4672b..d4b2eab654 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "autumnity:sappy_maple_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json index 00eb02efff..11cf0d8c93 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/autumnity/sappy_maple_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "autumnity:sappy_maple_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json b/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json index 95453c0137..c3cf8e621b 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:stripped_palo_verde_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json index c570ebaacd..82de50f26c 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/biomeswevegone/stripped_palo_verde_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:stripped_palo_verde_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json b/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json index 718f6022c9..d0028f9d24 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_stem.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:glowing_poise_stem" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json index 9d466cb935..743ace72cf 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/endergetic/glowing_poise_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:glowing_poise_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json index 1cb0392677..178b958627 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_aluminum.json @@ -7,9 +7,7 @@ ], "type": "create:cutting", "ingredients": [ - { - "tag": "c:plates/aluminum" - } + "#c:plates/aluminum" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json index 29914a86ca..09ae68eee9 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_copper.json @@ -7,9 +7,7 @@ ], "type": "create:cutting", "ingredients": [ - { - "tag": "c:plates/copper" - } + "#c:plates/copper" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json index 13305cba93..9242861bdc 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_electrum.json @@ -7,9 +7,7 @@ ], "type": "create:cutting", "ingredients": [ - { - "tag": "c:plates/electrum" - } + "#c:plates/electrum" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json index eb102f7954..e6d3fca3d4 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_lead.json @@ -7,9 +7,7 @@ ], "type": "create:cutting", "ingredients": [ - { - "tag": "c:plates/lead" - } + "#c:plates/lead" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json index b68902bd3f..0ca5494875 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/immersiveengineering/wire_steel.json @@ -7,9 +7,7 @@ ], "type": "create:cutting", "ingredients": [ - { - "tag": "c:plates/steel" - } + "#c:plates/steel" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json b/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json index 7ee78e2bdf..98ba2e55c3 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_hyphae.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "netherexp:cerebrage_claret_hyphae" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json b/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json index 3694f75763..1fff6f9153 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/netherexp/cerebrage_claret_stem.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "netherexp:cerebrage_claret_stem" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json index 5268d08f68..c75c0eee2f 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:ashen_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json index a2453ff581..dde466091e 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/ashen_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:ashen_wood" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json index 23efc128a4..1a49e11dc4 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/brimwood_log_magma.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:brimwood_log_magma" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json index 8316ffb2aa..2020fb1254 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_log.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silver_birch_log" diff --git a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json index 8ec684d7bc..c5156a0969 100644 --- a/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json +++ b/src/generated/resources/data/create/recipe/cutting/compat/regions_unexplored/silver_birch_wood.json @@ -8,7 +8,7 @@ "type": "create:cutting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silver_birch_wood" diff --git a/src/generated/resources/data/create/recipe/dark_oak_window.json b/src/generated/resources/data/create/recipe/dark_oak_window.json index 9ca17c98ea..1e0e949c1e 100644 --- a/src/generated/resources/data/create/recipe/dark_oak_window.json +++ b/src/generated/resources/data/create/recipe/dark_oak_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:dark_oak_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:dark_oak_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/dark_oak_window_pane.json b/src/generated/resources/data/create/recipe/dark_oak_window_pane.json index 3c409635d3..cdb868f631 100644 --- a/src/generated/resources/data/create/recipe/dark_oak_window_pane.json +++ b/src/generated/resources/data/create/recipe/dark_oak_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:dark_oak_window" - } + "#": "create:dark_oak_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json index 5eacdf7523..ebfb423c77 100644 --- a/src/generated/resources/data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/deepslate_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "minecraft:deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json index 806078439f..a02db39299 100644 --- a/src/generated/resources/data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/deepslate_pillar_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:deepslate_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_deoxidising.json index 1ab13d7850..373733d116 100644 --- a/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_removing_wax.json index e3c6a05a15..23865cdb3d 100644 --- a/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/chiseled_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cogwheel.json b/src/generated/resources/data/create/recipe/deploying/cogwheel.json index 1826cd8da5..40764294f1 100644 --- a/src/generated/resources/data/create/recipe/deploying/cogwheel.json +++ b/src/generated/resources/data/create/recipe/deploying/cogwheel.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:shaft" - }, - { - "tag": "minecraft:planks" - } + "create:shaft", + "#minecraft:planks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/deploying/copper_block_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_block_from_deoxidising.json index a29add88fa..a17a93bec2 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_block_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_block_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_block_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_block_from_removing_wax.json index 2c39c76d38..14b9427450 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_block_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_block_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_copper_block" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_copper_block", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_deoxidising.json index f8041d7963..3b87f8fa5b 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_removing_wax.json index 5cb0437283..bc1991a554 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_bulb_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_door_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_door_from_deoxidising.json index e81381d265..6f58a95f88 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_door_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_door_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_door_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_door_from_removing_wax.json index e676fb8393..f617a0b058 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_door_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_door_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_grate_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_grate_from_deoxidising.json index 36bd7aec58..6204912d45 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_grate_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_grate_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_grate_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_grate_from_removing_wax.json index 9f3e60dc7e..f23b9e1c64 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_grate_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_grate_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json index 5de6dc9d63..cebc660235 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json index a5dc68056e..9701a54b39 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingle_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json index bdf730ba68..21cfc303c1 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json index 4db9326915..61a7f3c851 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingle_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_deoxidising.json index 93bf540e24..3c703ad093 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_removing_wax.json index 2bd82f151c..01c0ed8a59 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_shingles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json index 2f96c9e170..8d92202b49 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json index ea412b7114..eb429b7333 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tile_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json index 5a2846dd29..1a464a4541 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json index 720e17b015..323c901a28 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tile_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_deoxidising.json index e52ea07867..814cccc369 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:exposed_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_removing_wax.json index 8d0551faec..b1bdedb140 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_tiles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json index 71d9abb4b0..910c67741f 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json index 7351cb284c..c802907a18 100644 --- a/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/copper_trapdoor_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_from_deoxidising.json index 5b4be430b2..2daf9bee3a 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_from_removing_wax.json index 775bcac802..dbba6549a8 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json index 1e6c2f8f7b..c6c117a3b6 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json index fae4fb6647..48feb74ada 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json index f974550f97..c65b72078b 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:exposed_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json index 554e3b9724..1c8fdb81d0 100644 --- a/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/cut_copper_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json index 06f5282a7c..47c4ef3458 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json index 92108ad7f9..5097e5c18d 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_chiseled_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json index 0332cd41dc..9bd72e9626 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json index 5d88fcd852..6085949ef1 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_bulb_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json index 34a7c52c31..5a42dbc9ad 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json index dea4f3472b..f7f6f933a4 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_door_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_deoxidising.json index 1c06948d36..f200059531 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_removing_wax.json index ac046d7cdc..6dcdc79645 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json index 162c38e663..ba86a7c6e5 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json index 1afc48b595..75ec12c4e3 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_grate_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json index b2fb55c002..fdf5df8e90 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json index 496f42a478..36a83c5ec7 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json index ba49d55a76..5cd2c5143d 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json index 7d4cf81949..cca1ebdb4c 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingle_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json index 7c7b85df16..5554921d52 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json index bb7c720a81..8753a49617 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_shingles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json index 6d39a737ec..df6586e9fe 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json index f9f6e64d64..35d6841d4b 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json index 7c9d0638b6..0266183115 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json index c582a90f39..5925ff73b6 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tile_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json index 66a4ccd178..7c3163ae7f 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:weathered_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json index 876617aa63..4e83f7c56e 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_tiles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_exposed_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_exposed_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json index 94cce7f4c0..bd2394987b 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json index d2a0e06b00..d67b1f0829 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_copper_trapdoor_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json index b6b426a413..251aa2ce48 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json index 787fd785fc..d46e5bbeaf 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json index 6c631bf62e..8eaa2f0ff8 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json index 26b24b5074..85d44e95e5 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json index ca392901e6..ba4d23229a 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:weathered_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json index b6a55a97c4..dfcc764ce7 100644 --- a/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/exposed_cut_copper_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_exposed_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_exposed_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/large_cogwheel.json b/src/generated/resources/data/create/recipe/deploying/large_cogwheel.json index 966da2427a..e8d8a2d9a9 100644 --- a/src/generated/resources/data/create/recipe/deploying/large_cogwheel.json +++ b/src/generated/resources/data/create/recipe/deploying/large_cogwheel.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:cogwheel" - }, - { - "tag": "minecraft:planks" - } + "create:cogwheel", + "#minecraft:planks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json index e1b4c33faf..d2ddaaf562 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_chiseled_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json index 5ab921632a..0e1a5d88ca 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_bulb_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json index f54298425c..cde407cf8d 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_door_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_from_removing_wax.json index 59a11cb7a3..9613fc6dce 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json index 6b59b96caa..ff4840f068 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_grate_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json index d57555d87c..d23978c5f2 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json index 5472540afe..9f3912a086 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingle_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json index 31a1580d5a..21c9a6e3e8 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_shingles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json index 8bdc15fbae..93a04e97ca 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json index 23d22e908a..16877ae3df 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tile_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json index 50376d752f..a9218f9717 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_tiles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_oxidized_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_oxidized_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json index d9d38b9514..4fb96bdf06 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_copper_trapdoor_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json index 5edde95723..e9dad83cec 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json index 152a0ab923..474db867f8 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json index 5a9b111449..53b1c76cbd 100644 --- a/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/oxidized_cut_copper_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_oxidized_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_oxidized_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json index 74c46654bc..62fdeed454 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_chiseled_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:chiseled_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:chiseled_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json index 064f908249..93f3869d92 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_block_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:copper_block" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:copper_block", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json index 26b278e7d0..16e314b83c 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_bulb_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:copper_bulb" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:copper_bulb", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json index e5a925e6ef..e35b568ac1 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_door_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:copper_door" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:copper_door", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json index 310ae30101..22ad617006 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_grate_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:copper_grate" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:copper_grate", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json index f134f42ce0..4b4a8465f9 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_shingle_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json index ad83a2e20f..b868c047b4 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingle_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_shingle_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json index 74344eaafe..053efc6784 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_shingles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_shingles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_shingles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json index b447ae1d2d..6bea4ee240 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_tile_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_tile_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json index e625006060..e0f17cb2b7 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tile_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_tile_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json index 7a565457ff..e94fe13e10 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_tiles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:copper_tiles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:copper_tiles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json index 696c69cfdd..a04ab0b37c 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_copper_trapdoor_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:copper_trapdoor" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:copper_trapdoor", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json index 18c97cf940..6269bcc17a 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:cut_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:cut_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json index c5e68d5351..1682530b54 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:cut_copper_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:cut_copper_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json index a94afb26cd..83d4b0a249 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_cut_copper_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:cut_copper_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:cut_copper_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json index 06e1ddedf2..3948ea620f 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_chiseled_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_chiseled_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_chiseled_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json index be93d9637a..922f00eb63 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_bulb_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_bulb" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_copper_bulb", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json index 9f5704d9ec..8da781d69a 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_door_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_door" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_copper_door", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json index 6fc038f3b9..7e7ee2aeea 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json index 7a6f914362..66d4676481 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_grate_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_grate" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_copper_grate", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json index 3ffca98f45..47ee98308d 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_shingle_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json index 8b7126d4df..225eb1f1a5 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingle_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_shingle_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json index e6c67cc908..cab5820bae 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_shingles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_shingles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_shingles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json index c8895c753f..4f00f3f837 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_tile_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json index 8a60f7dec9..5d741ff01b 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tile_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_tile_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json index 678d280038..4c53cbce66 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_tiles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:exposed_copper_tiles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:exposed_copper_tiles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json index a8b1729aa1..9ff359b967 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_copper_trapdoor_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_copper_trapdoor" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_copper_trapdoor", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json index a18ae41a96..384b02193d 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_cut_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json index 564f98a684..158a0348b6 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_cut_copper_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json index 47c1fa2827..37c7cdf4e3 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_exposed_cut_copper_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:exposed_cut_copper_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:exposed_cut_copper_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json index 93cde2cdc8..ec41fee31e 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_chiseled_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_chiseled_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_chiseled_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json index 42ab945b7f..81bc020637 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_bulb_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_bulb" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_copper_bulb", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json index 321377badb..444016b710 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_door_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_door" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_copper_door", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json index b9ffe9ef06..3507257c90 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json index 4c21bbec8a..58c026c5dd 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_grate_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_grate" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_copper_grate", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json index 9a2429ed1b..3b1d28e5e6 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_shingle_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json index f668f61e36..25d704f821 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingle_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_shingle_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json index 89e31767f4..61b93a8158 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_shingles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_shingles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json index b3932001de..32c7ad88f9 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_tile_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json index 9bf52732a2..a9ff3b3e3e 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tile_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_tile_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json index e12e678437..268e39a693 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_tiles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tiles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:oxidized_copper_tiles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json index da1758859c..3942556d64 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_copper_trapdoor_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_trapdoor" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_copper_trapdoor", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json index 57d3a3a5eb..c4835c558a 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_cut_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json index 16d0c95882..5409805260 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_cut_copper_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json index cf19a250b2..d2572f1a3c 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_oxidized_cut_copper_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:oxidized_cut_copper_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json index 2666fe6de7..e794f8a23d 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_chiseled_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_chiseled_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_chiseled_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json index 928963a4f0..6a7656c30c 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_bulb_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_bulb" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_copper_bulb", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json index c151b2c7bc..97150654ec 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_door_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_door" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_copper_door", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json index 438f04c5e0..5e8b3635a1 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json index d28c160ce9..8ff7f4c50c 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_grate_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_grate" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_copper_grate", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json index deb08532ae..522b98e22a 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingle_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_shingle_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json index 26d52be7b1..9a9415df55 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingle_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingle_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_shingle_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json index ca42014807..e08bf10864 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_shingles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_shingles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_shingles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json index 3749671006..e1b66231d2 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tile_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_tile_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json index fe3226806e..c838f757d4 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tile_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tile_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_tile_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json index a45a449ade..d613d4e901 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_tiles_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:weathered_copper_tiles" - }, - { - "item": "minecraft:honeycomb_block" - } + "create:weathered_copper_tiles", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json index 77c152be2d..fd64725fb1 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_copper_trapdoor_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_copper_trapdoor" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_copper_trapdoor", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json index c2d2470437..d615c73369 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_cut_copper", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json index aca33e8bde..30715b2c6d 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_slab_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper_slab" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_cut_copper_slab", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json index ff7bc5666f..68e74b2fc3 100644 --- a/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/waxed_weathered_cut_copper_stairs_from_adding_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:weathered_cut_copper_stairs" - }, - { - "item": "minecraft:honeycomb_block" - } + "minecraft:weathered_cut_copper_stairs", + "minecraft:honeycomb_block" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json index 816ae1e456..53870bb6e1 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json index 9c2d069195..2ae3bb111f 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_chiseled_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_chiseled_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_chiseled_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json index 159841d040..2dddd3e201 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json index b75d07f245..137ff594db 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_bulb_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_copper_bulb" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_copper_bulb", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json index bd7158e55f..295ce0aa7c 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json index 4b6ea60c5c..c0d783008f 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_door_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_copper_door" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_copper_door", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_deoxidising.json index edd336d925..200aaae431 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_removing_wax.json index 45e16f7ca4..6385e44640 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json index 9fb5b0c3e7..e5fb038a55 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json index dfdf786586..cba94296dc 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_grate_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_copper_grate" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_copper_grate", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json index 18cbed0a17..c53b1354e4 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json index 0f0665921c..da8008d63e 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_shingle_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_shingle_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json index 9bdceede5e..0339e47072 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json index 8aa6a9698f..24fabb2791 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingle_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_shingle_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_shingle_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json index 1b09ea35f4..96f80a601a 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json index ddd2c83617..123ed1e5bf 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_shingles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_shingles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_shingles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json index 5b405baa03..ccd7f7d664 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json index b638c3bb49..8a287a0072 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_tile_slab" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_tile_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json index b3f9d4982b..ec87cb6ce7 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json index 7acae8eeaf..53ba700fcb 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tile_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_tile_stairs" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_tile_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json index 1b8db9d8f8..e5f2b6be21 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:oxidized_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:oxidized_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json index 067c760b11..ee17a3d830 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_tiles_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:waxed_weathered_copper_tiles" - }, - { - "tag": "minecraft:axes" - } + "create:waxed_weathered_copper_tiles", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json index 397b9380a9..59917e40f4 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json index 76f57f4a03..b9189e373c 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_copper_trapdoor_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_copper_trapdoor" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_copper_trapdoor", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json index 4d7b81debb..c659e625b9 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json index 3fe3b15002..14534802cf 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_cut_copper" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_cut_copper", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json index b3428db6f1..87ea7fe884 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json index 7105d6dba9..3dd13b149f 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_slab_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_cut_copper_slab" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_cut_copper_slab", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json index 8195c9b501..d7ac37fd20 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_deoxidising.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:oxidized_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:oxidized_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json index ee264aadb4..5690d4735e 100644 --- a/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json +++ b/src/generated/resources/data/create/recipe/deploying/weathered_cut_copper_stairs_from_removing_wax.json @@ -1,12 +1,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "minecraft:waxed_weathered_cut_copper_stairs" - }, - { - "tag": "minecraft:axes" - } + "minecraft:waxed_weathered_cut_copper_stairs", + "#minecraft:axes" ], "keep_held_item": true, "results": [ diff --git a/src/generated/resources/data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json index 60711d7f0e..485e3d9346 100644 --- a/src/generated/resources/data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/diorite_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "minecraft:diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json index 02a6bac9ac..eaa1819ffc 100644 --- a/src/generated/resources/data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/diorite_pillar_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:diorite_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json index 9e5ef686f9..0c758626ef 100644 --- a/src/generated/resources/data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/dripstone_block_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "minecraft:dripstone_block" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json index 9c78d329d7..bc2022e6bc 100644 --- a/src/generated/resources/data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/dripstone_pillar_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:dripstone_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/emptying/builders_tea.json b/src/generated/resources/data/create/recipe/emptying/builders_tea.json index b928bafb45..3ff2b0aee1 100644 --- a/src/generated/resources/data/create/recipe/emptying/builders_tea.json +++ b/src/generated/resources/data/create/recipe/emptying/builders_tea.json @@ -1,9 +1,7 @@ { "type": "create:emptying", "ingredients": [ - { - "item": "create:builders_tea" - } + "create:builders_tea" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json b/src/generated/resources/data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json index cad42be50c..5cb4b0a9f5 100644 --- a/src/generated/resources/data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json +++ b/src/generated/resources/data/create/recipe/emptying/compat/alexsmobs/lava_bottle.json @@ -8,7 +8,7 @@ "type": "create:emptying", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "alexsmobs:lava_bottle" diff --git a/src/generated/resources/data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json b/src/generated/resources/data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json index 02bc0c60a1..c9bd3fd0dc 100644 --- a/src/generated/resources/data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json +++ b/src/generated/resources/data/create/recipe/emptying/compat/farmersdelight/milk_bottle.json @@ -8,7 +8,7 @@ "type": "create:emptying", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "farmersdelight:milk_bottle" diff --git a/src/generated/resources/data/create/recipe/emptying/compat/neapolitan/milk_bottle.json b/src/generated/resources/data/create/recipe/emptying/compat/neapolitan/milk_bottle.json index faf19cd249..44850c8d84 100644 --- a/src/generated/resources/data/create/recipe/emptying/compat/neapolitan/milk_bottle.json +++ b/src/generated/resources/data/create/recipe/emptying/compat/neapolitan/milk_bottle.json @@ -8,7 +8,7 @@ "type": "create:emptying", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "farmersdelight:milk_bottle" diff --git a/src/generated/resources/data/create/recipe/emptying/honey_bottle.json b/src/generated/resources/data/create/recipe/emptying/honey_bottle.json index 39a9534c95..f5564c0cc9 100644 --- a/src/generated/resources/data/create/recipe/emptying/honey_bottle.json +++ b/src/generated/resources/data/create/recipe/emptying/honey_bottle.json @@ -1,9 +1,7 @@ { "type": "create:emptying", "ingredients": [ - { - "item": "minecraft:honey_bottle" - } + "minecraft:honey_bottle" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab.json index 8a9916d7ca..99af4806b6 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:exposed_copper_shingles" - } + "X": "create:exposed_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json index 6150869b4b..d3f0067450 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_shingle_slab_from_exposed_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:exposed_copper_shingles" - }, + "ingredient": "create:exposed_copper_shingles", "result": { "count": 2, "id": "create:exposed_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs.json index e77d73f57c..ccde6ea270 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:exposed_copper_shingles" - } + "X": "create:exposed_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json index c90e9d18b7..fa4d306419 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_shingle_stairs_from_exposed_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:exposed_copper_shingles" - }, + "ingredient": "create:exposed_copper_shingles", "result": { - "count": 1, "id": "create:exposed_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/exposed_copper_tile_slab.json b/src/generated/resources/data/create/recipe/exposed_copper_tile_slab.json index ecb3423f70..1ba57b822e 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:exposed_copper_tiles" - } + "X": "create:exposed_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json index 366ff4e1d2..1f333bf588 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_tile_slab_from_exposed_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:exposed_copper_tiles" - }, + "ingredient": "create:exposed_copper_tiles", "result": { "count": 2, "id": "create:exposed_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs.json index b42cd70181..071e797051 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:exposed_copper_tiles" - } + "X": "create:exposed_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json index 8dbb419f35..8af329d06f 100644 --- a/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/exposed_copper_tile_stairs_from_exposed_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:exposed_copper_tiles" - }, + "ingredient": "create:exposed_copper_tiles", "result": { - "count": 1, "id": "create:exposed_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/filling/blaze_cake.json b/src/generated/resources/data/create/recipe/filling/blaze_cake.json index 00f955dbe2..42461abdc6 100644 --- a/src/generated/resources/data/create/recipe/filling/blaze_cake.json +++ b/src/generated/resources/data/create/recipe/filling/blaze_cake.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "create:blaze_cake_base", { - "item": "create:blaze_cake_base" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/builders_tea.json b/src/generated/resources/data/create/recipe/filling/builders_tea.json index 011761f271..fa590b0370 100644 --- a/src/generated/resources/data/create/recipe/filling/builders_tea.json +++ b/src/generated/resources/data/create/recipe/filling/builders_tea.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:glass_bottle", { - "item": "minecraft:glass_bottle" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "create:tea" + "ingredient": "create:tea" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/chocolate_glazed_berries.json b/src/generated/resources/data/create/recipe/filling/chocolate_glazed_berries.json index e05f590c5f..c21115f621 100644 --- a/src/generated/resources/data/create/recipe/filling/chocolate_glazed_berries.json +++ b/src/generated/resources/data/create/recipe/filling/chocolate_glazed_berries.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:sweet_berries", { - "item": "minecraft:sweet_berries" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "create:chocolate" + "ingredient": "create:chocolate" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/aether/aether_grass_block.json b/src/generated/resources/data/create/recipe/filling/compat/aether/aether_grass_block.json index d487378d91..892ca48101 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/aether/aether_grass_block.json +++ b/src/generated/resources/data/create/recipe/filling/compat/aether/aether_grass_block.json @@ -8,7 +8,7 @@ "type": "create:filling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "aether:aether_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/alexsmobs/lava_bottle.json b/src/generated/resources/data/create/recipe/filling/compat/alexsmobs/lava_bottle.json index c93bb25996..c09d30b7be 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/alexsmobs/lava_bottle.json +++ b/src/generated/resources/data/create/recipe/filling/compat/alexsmobs/lava_bottle.json @@ -7,13 +7,11 @@ ], "type": "create:filling", "ingredients": [ + "minecraft:glass_bottle", { - "item": "minecraft:glass_bottle" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json b/src/generated/resources/data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json index 87ce2988c1..2d385771ab 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json +++ b/src/generated/resources/data/create/recipe/filling/compat/biomeswevegone/lush_grass_block.json @@ -8,7 +8,7 @@ "type": "create:filling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:lush_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/farmersdelight/milk_bottle.json b/src/generated/resources/data/create/recipe/filling/compat/farmersdelight/milk_bottle.json index 60ed9fa526..411dd9d8a7 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/farmersdelight/milk_bottle.json +++ b/src/generated/resources/data/create/recipe/filling/compat/farmersdelight/milk_bottle.json @@ -7,13 +7,11 @@ ], "type": "create:filling", "ingredients": [ + "minecraft:glass_bottle", { - "item": "minecraft:glass_bottle" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:milk" + "ingredient": "#c:milk" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json b/src/generated/resources/data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json index 7bd6e8e9de..340380df69 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json +++ b/src/generated/resources/data/create/recipe/filling/compat/immersiveengineering/treated_wood_in_spout.json @@ -7,13 +7,11 @@ ], "type": "create:filling", "ingredients": [ + "#minecraft:planks", { - "tag": "minecraft:planks" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 125, - "tag": "c:creosote" + "ingredient": "#c:creosote" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/neapolitan/milk_bottle.json b/src/generated/resources/data/create/recipe/filling/compat/neapolitan/milk_bottle.json index b2e2843c40..250e066495 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/neapolitan/milk_bottle.json +++ b/src/generated/resources/data/create/recipe/filling/compat/neapolitan/milk_bottle.json @@ -7,13 +7,11 @@ ], "type": "create:filling", "ingredients": [ + "minecraft:glass_bottle", { - "item": "minecraft:glass_bottle" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:milk" + "ingredient": "#c:milk" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json b/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json index d4780644fd..b6f157c127 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json +++ b/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/peat_grass_block.json @@ -8,7 +8,7 @@ "type": "create:filling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:peat_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json b/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json index fa4f843238..e1591a20ea 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json +++ b/src/generated/resources/data/create/recipe/filling/compat/regions_unexplored/silt_grass_block.json @@ -8,7 +8,7 @@ "type": "create:filling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silt_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/compat/vampirism/cursed_grass.json b/src/generated/resources/data/create/recipe/filling/compat/vampirism/cursed_grass.json index fe828c9f91..8c82faf7d3 100644 --- a/src/generated/resources/data/create/recipe/filling/compat/vampirism/cursed_grass.json +++ b/src/generated/resources/data/create/recipe/filling/compat/vampirism/cursed_grass.json @@ -8,7 +8,7 @@ "type": "create:filling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "vampirism:cursed_earth" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/glowstone.json b/src/generated/resources/data/create/recipe/filling/glowstone.json index 433a4f138e..3329e13b49 100644 --- a/src/generated/resources/data/create/recipe/filling/glowstone.json +++ b/src/generated/resources/data/create/recipe/filling/glowstone.json @@ -1,19 +1,20 @@ { "type": "create:filling", "ingredients": [ + "create:cinder_flour", { - "item": "create:cinder_flour" - }, - { - "type": "neoforge:components", + "type": "create:components", "amount": 25, - "components": { - "create:potion_fluid_bottle_type": "regular", - "minecraft:potion_contents": { - "potion": "minecraft:night_vision" - } - }, - "fluids": "create:potion" + "ingredient": { + "neoforge:ingredient_type": "create:components", + "components": { + "create:potion_fluid_bottle_type": "regular", + "minecraft:potion_contents": { + "potion": "minecraft:night_vision" + } + }, + "fluids": "create:potion" + } } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/grass_block.json b/src/generated/resources/data/create/recipe/filling/grass_block.json index 42277334b8..c29cecc2d7 100644 --- a/src/generated/resources/data/create/recipe/filling/grass_block.json +++ b/src/generated/resources/data/create/recipe/filling/grass_block.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:dirt", { - "item": "minecraft:dirt" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/gunpowder.json b/src/generated/resources/data/create/recipe/filling/gunpowder.json index ca8c76035e..f7c829b30f 100644 --- a/src/generated/resources/data/create/recipe/filling/gunpowder.json +++ b/src/generated/resources/data/create/recipe/filling/gunpowder.json @@ -1,19 +1,20 @@ { "type": "create:filling", "ingredients": [ + "create:cinder_flour", { - "item": "create:cinder_flour" - }, - { - "type": "neoforge:components", + "type": "create:components", "amount": 25, - "components": { - "create:potion_fluid_bottle_type": "regular", - "minecraft:potion_contents": { - "potion": "minecraft:harming" - } - }, - "fluids": "create:potion" + "ingredient": { + "neoforge:ingredient_type": "create:components", + "components": { + "create:potion_fluid_bottle_type": "regular", + "minecraft:potion_contents": { + "potion": "minecraft:harming" + } + }, + "fluids": "create:potion" + } } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/honey_bottle.json b/src/generated/resources/data/create/recipe/filling/honey_bottle.json index 433e5b6eb8..6767cf46a1 100644 --- a/src/generated/resources/data/create/recipe/filling/honey_bottle.json +++ b/src/generated/resources/data/create/recipe/filling/honey_bottle.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:glass_bottle", { - "item": "minecraft:glass_bottle" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:honey" + "ingredient": "#c:honey" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/honeyed_apple.json b/src/generated/resources/data/create/recipe/filling/honeyed_apple.json index ac597b0527..26414d079b 100644 --- a/src/generated/resources/data/create/recipe/filling/honeyed_apple.json +++ b/src/generated/resources/data/create/recipe/filling/honeyed_apple.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:apple", { - "item": "minecraft:apple" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:honey" + "ingredient": "#c:honey" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/redstone.json b/src/generated/resources/data/create/recipe/filling/redstone.json index fc8386e87d..7a36b2705f 100644 --- a/src/generated/resources/data/create/recipe/filling/redstone.json +++ b/src/generated/resources/data/create/recipe/filling/redstone.json @@ -1,19 +1,20 @@ { "type": "create:filling", "ingredients": [ + "create:cinder_flour", { - "item": "create:cinder_flour" - }, - { - "type": "neoforge:components", + "type": "create:components", "amount": 25, - "components": { - "create:potion_fluid_bottle_type": "regular", - "minecraft:potion_contents": { - "potion": "minecraft:strength" - } - }, - "fluids": "create:potion" + "ingredient": { + "neoforge:ingredient_type": "create:components", + "components": { + "create:potion_fluid_bottle_type": "regular", + "minecraft:potion_contents": { + "potion": "minecraft:strength" + } + }, + "fluids": "create:potion" + } } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/filling/sweet_roll.json b/src/generated/resources/data/create/recipe/filling/sweet_roll.json index 3a0e0d0c39..706d3a06d4 100644 --- a/src/generated/resources/data/create/recipe/filling/sweet_roll.json +++ b/src/generated/resources/data/create/recipe/filling/sweet_roll.json @@ -1,13 +1,11 @@ { "type": "create:filling", "ingredients": [ + "minecraft:bread", { - "item": "minecraft:bread" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:milk" + "ingredient": "#c:milk" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json index 7edaed0edc..6ea18aa6aa 100644 --- a/src/generated/resources/data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/framed_glass_from_glass_blocks_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_blocks/colorless" - }, + "ingredient": "#c:glass_blocks/colorless", "result": { - "count": 1, "id": "create:framed_glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/framed_glass_pane.json b/src/generated/resources/data/create/recipe/framed_glass_pane.json index db300dcfb4..43fb9c4e5a 100644 --- a/src/generated/resources/data/create/recipe/framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/framed_glass_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:framed_glass" - } + "#": "create:framed_glass" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json index bf60c43303..87e7b39faa 100644 --- a/src/generated/resources/data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/framed_glass_pane_from_glass_panes_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_panes/colorless" - }, + "ingredient": "#c:glass_panes/colorless", "result": { - "count": 1, "id": "create:framed_glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/granite_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/granite_from_stone_types_granite_stonecutting.json index ac0e5f463b..d0709b9348 100644 --- a/src/generated/resources/data/create/recipe/granite_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/granite_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "minecraft:granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json index 8a07628ff4..a70eed1a7b 100644 --- a/src/generated/resources/data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/granite_pillar_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:granite_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/haunting/blackstone.json b/src/generated/resources/data/create/recipe/haunting/blackstone.json index f93bb8b924..10b731eeab 100644 --- a/src/generated/resources/data/create/recipe/haunting/blackstone.json +++ b/src/generated/resources/data/create/recipe/haunting/blackstone.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "tag": "c:cobblestones" - } + "#c:cobblestones" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json b/src/generated/resources/data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json index ca26935aa9..f36e6f1247 100644 --- a/src/generated/resources/data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json +++ b/src/generated/resources/data/create/recipe/haunting/compat/farmersdelight/rotten_tomato.json @@ -8,7 +8,7 @@ "type": "create:haunting", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "farmersdelight:tomato" diff --git a/src/generated/resources/data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json b/src/generated/resources/data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json index 8ee22e3aa9..dc52f50e77 100644 --- a/src/generated/resources/data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json +++ b/src/generated/resources/data/create/recipe/haunting/compat/hauntedharvest/rotten_apple.json @@ -7,9 +7,7 @@ ], "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:apple" - } + "minecraft:apple" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/crimson_fungus.json b/src/generated/resources/data/create/recipe/haunting/crimson_fungus.json index 393e6d615e..cd956bcc80 100644 --- a/src/generated/resources/data/create/recipe/haunting/crimson_fungus.json +++ b/src/generated/resources/data/create/recipe/haunting/crimson_fungus.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:red_mushroom" - } + "minecraft:red_mushroom" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/glow_berries.json b/src/generated/resources/data/create/recipe/haunting/glow_berries.json index c640cd9ad6..c76c68f4da 100644 --- a/src/generated/resources/data/create/recipe/haunting/glow_berries.json +++ b/src/generated/resources/data/create/recipe/haunting/glow_berries.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:sweet_berries" - } + "minecraft:sweet_berries" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/glow_ink_sac.json b/src/generated/resources/data/create/recipe/haunting/glow_ink_sac.json index 3f909e357e..6320a6e14d 100644 --- a/src/generated/resources/data/create/recipe/haunting/glow_ink_sac.json +++ b/src/generated/resources/data/create/recipe/haunting/glow_ink_sac.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:ink_sac" - } + "minecraft:ink_sac" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/haunted_bell.json b/src/generated/resources/data/create/recipe/haunting/haunted_bell.json index e733642c67..ebe127d4c6 100644 --- a/src/generated/resources/data/create/recipe/haunting/haunted_bell.json +++ b/src/generated/resources/data/create/recipe/haunting/haunted_bell.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "create:peculiar_bell" - } + "create:peculiar_bell" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_chiseled_stone_bricks.json b/src/generated/resources/data/create/recipe/haunting/infested_chiseled_stone_bricks.json index 68359dbbe0..795ecdb4d9 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_chiseled_stone_bricks.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_chiseled_stone_bricks.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:chiseled_stone_bricks" - } + "minecraft:chiseled_stone_bricks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_cracked_stone_bricks.json b/src/generated/resources/data/create/recipe/haunting/infested_cracked_stone_bricks.json index d9bfc54a14..71ca1b2331 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_cracked_stone_bricks.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_cracked_stone_bricks.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:cracked_stone_bricks" - } + "minecraft:cracked_stone_bricks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_deepslate.json b/src/generated/resources/data/create/recipe/haunting/infested_deepslate.json index 5509240dda..5f0fae68f0 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_deepslate.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_deepslate.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:deepslate" - } + "minecraft:deepslate" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_mossy_stone_bricks.json b/src/generated/resources/data/create/recipe/haunting/infested_mossy_stone_bricks.json index 34d31014a6..7472acb51e 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_mossy_stone_bricks.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_mossy_stone_bricks.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:mossy_stone_bricks" - } + "minecraft:mossy_stone_bricks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_stone.json b/src/generated/resources/data/create/recipe/haunting/infested_stone.json index ca85a0996d..5381676cce 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_stone.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_stone.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:stone" - } + "minecraft:stone" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/infested_stone_bricks.json b/src/generated/resources/data/create/recipe/haunting/infested_stone_bricks.json index 91b0896226..b319551119 100644 --- a/src/generated/resources/data/create/recipe/haunting/infested_stone_bricks.json +++ b/src/generated/resources/data/create/recipe/haunting/infested_stone_bricks.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:stone_bricks" - } + "minecraft:stone_bricks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/lapis_recycling.json b/src/generated/resources/data/create/recipe/haunting/lapis_recycling.json index d470a1d51e..425d3c3968 100644 --- a/src/generated/resources/data/create/recipe/haunting/lapis_recycling.json +++ b/src/generated/resources/data/create/recipe/haunting/lapis_recycling.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "tag": "c:gems/lapis" - } + "#c:gems/lapis" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/nether_brick.json b/src/generated/resources/data/create/recipe/haunting/nether_brick.json index cb49731255..2743be71f3 100644 --- a/src/generated/resources/data/create/recipe/haunting/nether_brick.json +++ b/src/generated/resources/data/create/recipe/haunting/nether_brick.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:brick" - } + "minecraft:brick" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/poisonous_potato.json b/src/generated/resources/data/create/recipe/haunting/poisonous_potato.json index 03ca6a11a5..d5e8fc47da 100644 --- a/src/generated/resources/data/create/recipe/haunting/poisonous_potato.json +++ b/src/generated/resources/data/create/recipe/haunting/poisonous_potato.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:potato" - } + "minecraft:potato" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/soul_campfire.json b/src/generated/resources/data/create/recipe/haunting/soul_campfire.json index e6507d6375..c5af1efbf3 100644 --- a/src/generated/resources/data/create/recipe/haunting/soul_campfire.json +++ b/src/generated/resources/data/create/recipe/haunting/soul_campfire.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:campfire" - } + "minecraft:campfire" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/soul_lantern.json b/src/generated/resources/data/create/recipe/haunting/soul_lantern.json index 43b9b911a0..19727e2f55 100644 --- a/src/generated/resources/data/create/recipe/haunting/soul_lantern.json +++ b/src/generated/resources/data/create/recipe/haunting/soul_lantern.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:lantern" - } + "minecraft:lantern" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/soul_sand.json b/src/generated/resources/data/create/recipe/haunting/soul_sand.json index d302ed326b..9e185c3cac 100644 --- a/src/generated/resources/data/create/recipe/haunting/soul_sand.json +++ b/src/generated/resources/data/create/recipe/haunting/soul_sand.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "tag": "minecraft:sand" - } + "#minecraft:sand" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/soul_soil.json b/src/generated/resources/data/create/recipe/haunting/soul_soil.json index 3d8691c7f7..60f432cf49 100644 --- a/src/generated/resources/data/create/recipe/haunting/soul_soil.json +++ b/src/generated/resources/data/create/recipe/haunting/soul_soil.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "tag": "minecraft:dirt" - } + "#minecraft:dirt" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/soul_torch.json b/src/generated/resources/data/create/recipe/haunting/soul_torch.json index b33a3837dd..6f4d6b5b0a 100644 --- a/src/generated/resources/data/create/recipe/haunting/soul_torch.json +++ b/src/generated/resources/data/create/recipe/haunting/soul_torch.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:torch" - } + "minecraft:torch" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/haunting/warped_fungus.json b/src/generated/resources/data/create/recipe/haunting/warped_fungus.json index fb0f21fe53..f96cf98d15 100644 --- a/src/generated/resources/data/create/recipe/haunting/warped_fungus.json +++ b/src/generated/resources/data/create/recipe/haunting/warped_fungus.json @@ -1,9 +1,7 @@ { "type": "create:haunting", "ingredients": [ - { - "item": "minecraft:brown_mushroom" - } + "minecraft:brown_mushroom" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json index c6f86bf0dd..1f28340e3f 100644 --- a/src/generated/resources/data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/horizontal_framed_glass_from_glass_blocks_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_blocks/colorless" - }, + "ingredient": "#c:glass_blocks/colorless", "result": { - "count": 1, "id": "create:horizontal_framed_glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane.json b/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane.json index 79ddc214f1..63e1be8bc6 100644 --- a/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:horizontal_framed_glass" - } + "#": "create:horizontal_framed_glass" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json index 125336ac54..f50be6dff1 100644 --- a/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/horizontal_framed_glass_pane_from_glass_panes_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_panes/colorless" - }, + "ingredient": "#c:glass_panes/colorless", "result": { - "count": 1, "id": "create:horizontal_framed_glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json b/src/generated/resources/data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json index 916009f8f8..92d100e8fc 100644 --- a/src/generated/resources/data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json +++ b/src/generated/resources/data/create/recipe/industrial_iron_block_from_ingots_iron_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/iron" - }, + "ingredient": "#c:ingots/iron", "result": { "count": 2, "id": "create:industrial_iron_block" diff --git a/src/generated/resources/data/create/recipe/industrial_iron_window.json b/src/generated/resources/data/create/recipe/industrial_iron_window.json index 39cb67a208..cab26a0f46 100644 --- a/src/generated/resources/data/create/recipe/industrial_iron_window.json +++ b/src/generated/resources/data/create/recipe/industrial_iron_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:industrial_iron_block" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "create:industrial_iron_block", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/industrial_iron_window_pane.json b/src/generated/resources/data/create/recipe/industrial_iron_window_pane.json index 4498058b78..0cc3966aeb 100644 --- a/src/generated/resources/data/create/recipe/industrial_iron_window_pane.json +++ b/src/generated/resources/data/create/recipe/industrial_iron_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:industrial_iron_window" - } + "#": "create:industrial_iron_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_log.json b/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_log.json index db505ff644..48a30cdbb4 100644 --- a/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_log.json +++ b/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_log.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_logs" - }, - { - "item": "create:andesite_alloy" - } + "#c:stripped_logs", + "create:andesite_alloy" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_wood.json b/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_wood.json index 4843d883fa..6088a9da68 100644 --- a/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_wood.json +++ b/src/generated/resources/data/create/recipe/item_application/andesite_casing_from_wood.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_woods" - }, - { - "item": "create:andesite_alloy" - } + "#c:stripped_woods", + "create:andesite_alloy" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/bound_cardboard_inworld.json b/src/generated/resources/data/create/recipe/item_application/bound_cardboard_inworld.json index 7cebb6a88f..2206f418e1 100644 --- a/src/generated/resources/data/create/recipe/item_application/bound_cardboard_inworld.json +++ b/src/generated/resources/data/create/recipe/item_application/bound_cardboard_inworld.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "item": "create:cardboard_block" - }, - { - "tag": "c:strings" - } + "create:cardboard_block", + "#c:strings" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/brass_casing_from_log.json b/src/generated/resources/data/create/recipe/item_application/brass_casing_from_log.json index 26df6c5ee2..2835b57bf3 100644 --- a/src/generated/resources/data/create/recipe/item_application/brass_casing_from_log.json +++ b/src/generated/resources/data/create/recipe/item_application/brass_casing_from_log.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_logs" - }, - { - "tag": "c:ingots/brass" - } + "#c:stripped_logs", + "#c:ingots/brass" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/brass_casing_from_wood.json b/src/generated/resources/data/create/recipe/item_application/brass_casing_from_wood.json index d094643737..3f7d68200e 100644 --- a/src/generated/resources/data/create/recipe/item_application/brass_casing_from_wood.json +++ b/src/generated/resources/data/create/recipe/item_application/brass_casing_from_wood.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_woods" - }, - { - "tag": "c:ingots/brass" - } + "#c:stripped_woods", + "#c:ingots/brass" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/copper_casing_from_log.json b/src/generated/resources/data/create/recipe/item_application/copper_casing_from_log.json index 0d5afbf6d1..48793ff476 100644 --- a/src/generated/resources/data/create/recipe/item_application/copper_casing_from_log.json +++ b/src/generated/resources/data/create/recipe/item_application/copper_casing_from_log.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_logs" - }, - { - "tag": "c:ingots/copper" - } + "#c:stripped_logs", + "#c:ingots/copper" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/copper_casing_from_wood.json b/src/generated/resources/data/create/recipe/item_application/copper_casing_from_wood.json index c6da55289b..9c597fd1c6 100644 --- a/src/generated/resources/data/create/recipe/item_application/copper_casing_from_wood.json +++ b/src/generated/resources/data/create/recipe/item_application/copper_casing_from_wood.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "tag": "c:stripped_woods" - }, - { - "tag": "c:ingots/copper" - } + "#c:stripped_woods", + "#c:ingots/copper" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/item_application/railway_casing.json b/src/generated/resources/data/create/recipe/item_application/railway_casing.json index 9dd8834e84..ab956fd222 100644 --- a/src/generated/resources/data/create/recipe/item_application/railway_casing.json +++ b/src/generated/resources/data/create/recipe/item_application/railway_casing.json @@ -1,12 +1,8 @@ { "type": "create:item_application", "ingredients": [ - { - "item": "create:brass_casing" - }, - { - "tag": "c:plates/obsidian" - } + "create:brass_casing", + "#c:plates/obsidian" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/jungle_window.json b/src/generated/resources/data/create/recipe/jungle_window.json index 0efb783a54..2997aaf24e 100644 --- a/src/generated/resources/data/create/recipe/jungle_window.json +++ b/src/generated/resources/data/create/recipe/jungle_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:jungle_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:jungle_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/jungle_window_pane.json b/src/generated/resources/data/create/recipe/jungle_window_pane.json index 86fa5e0ddd..477c9462e9 100644 --- a/src/generated/resources/data/create/recipe/jungle_window_pane.json +++ b/src/generated/resources/data/create/recipe/jungle_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:jungle_window" - } + "#": "create:jungle_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json index e406e4f245..1a91f5df61 100644 --- a/src/generated/resources/data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_andesite_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:layered_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json index 5ae8be3c56..511fd3756e 100644 --- a/src/generated/resources/data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_asurine_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:layered_asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json index e104495507..e536e5f411 100644 --- a/src/generated/resources/data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_calcite_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:layered_calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json index 01ff35c97f..e1ed50997c 100644 --- a/src/generated/resources/data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_crimsite_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:layered_crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json index e27c391e74..8fa9b354f2 100644 --- a/src/generated/resources/data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_deepslate_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:layered_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json index bbcf243c50..a9ecef1bac 100644 --- a/src/generated/resources/data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_diorite_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:layered_diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json index 725e84d1ba..29730f9021 100644 --- a/src/generated/resources/data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_dripstone_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:layered_dripstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json index 07290e74ff..3f42b93868 100644 --- a/src/generated/resources/data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_granite_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:layered_granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json index 7553456134..468860828e 100644 --- a/src/generated/resources/data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_limestone_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:layered_limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json index 3222242ef6..16f73d887f 100644 --- a/src/generated/resources/data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_ochrum_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:layered_ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json index 225b0226cd..bf7d2a709c 100644 --- a/src/generated/resources/data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_scorchia_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:layered_scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json index 6b5b07b523..6af82a17c2 100644 --- a/src/generated/resources/data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_scoria_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:layered_scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json index 0dbbd21cc9..236d1eba29 100644 --- a/src/generated/resources/data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_tuff_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:layered_tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json index a8712f93b9..497a601ba0 100644 --- a/src/generated/resources/data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/layered_veridium_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:layered_veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json index fbabec43da..5f2f9a2ceb 100644 --- a/src/generated/resources/data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/limestone_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json index fa607c1a7c..59fe1cf348 100644 --- a/src/generated/resources/data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/limestone_pillar_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:limestone_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/mangrove_window.json b/src/generated/resources/data/create/recipe/mangrove_window.json index b683c9b397..5b62b8f4eb 100644 --- a/src/generated/resources/data/create/recipe/mangrove_window.json +++ b/src/generated/resources/data/create/recipe/mangrove_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:mangrove_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:mangrove_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/mangrove_window_pane.json b/src/generated/resources/data/create/recipe/mangrove_window_pane.json index 3fbc4f75de..62e3686e5b 100644 --- a/src/generated/resources/data/create/recipe/mangrove_window_pane.json +++ b/src/generated/resources/data/create/recipe/mangrove_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:mangrove_window" - } + "#": "create:mangrove_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/mechanical_crafting/crushing_wheel.json b/src/generated/resources/data/create/recipe/mechanical_crafting/crushing_wheel.json index fce97a7cb3..299b2a63d0 100644 --- a/src/generated/resources/data/create/recipe/mechanical_crafting/crushing_wheel.json +++ b/src/generated/resources/data/create/recipe/mechanical_crafting/crushing_wheel.json @@ -1,17 +1,10 @@ { "type": "create:mechanical_crafting", "accept_mirrored": false, - "category": "misc", "key": { - "A": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "minecraft:planks" - }, - "S": { - "tag": "c:stones" - } + "A": "create:andesite_alloy", + "P": "#minecraft:planks", + "S": "#c:stones" }, "pattern": [ " AAA ", @@ -23,6 +16,5 @@ "result": { "count": 2, "id": "create:crushing_wheel" - }, - "show_notification": false + } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/mechanical_crafting/extendo_grip.json b/src/generated/resources/data/create/recipe/mechanical_crafting/extendo_grip.json index 7a158d4751..75899a54f3 100644 --- a/src/generated/resources/data/create/recipe/mechanical_crafting/extendo_grip.json +++ b/src/generated/resources/data/create/recipe/mechanical_crafting/extendo_grip.json @@ -1,20 +1,11 @@ { "type": "create:mechanical_crafting", "accept_mirrored": false, - "category": "misc", "key": { - "H": { - "item": "create:brass_hand" - }, - "L": { - "tag": "c:ingots/brass" - }, - "R": { - "item": "create:precision_mechanism" - }, - "S": { - "tag": "c:rods/wooden" - } + "H": "create:brass_hand", + "L": "#c:ingots/brass", + "R": "create:precision_mechanism", + "S": "#c:rods/wooden" }, "pattern": [ " L ", @@ -24,8 +15,6 @@ " H " ], "result": { - "count": 1, "id": "create:extendo_grip" - }, - "show_notification": false + } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/mechanical_crafting/potato_cannon.json b/src/generated/resources/data/create/recipe/mechanical_crafting/potato_cannon.json index 3fa01550ae..a7182d5ec0 100644 --- a/src/generated/resources/data/create/recipe/mechanical_crafting/potato_cannon.json +++ b/src/generated/resources/data/create/recipe/mechanical_crafting/potato_cannon.json @@ -1,27 +1,17 @@ { "type": "create:mechanical_crafting", "accept_mirrored": true, - "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "L": { - "item": "create:andesite_alloy" - }, - "R": { - "item": "create:precision_mechanism" - }, - "S": { - "item": "create:fluid_pipe" - } + "C": "#c:ingots/copper", + "L": "create:andesite_alloy", + "R": "create:precision_mechanism", + "S": "create:fluid_pipe" }, "pattern": [ "LRSSS", "CC " ], "result": { - "count": 1, "id": "create:potato_cannon" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/mechanical_crafting/wand_of_symmetry.json b/src/generated/resources/data/create/recipe/mechanical_crafting/wand_of_symmetry.json index cf1983aa62..0ffc1fd0c5 100644 --- a/src/generated/resources/data/create/recipe/mechanical_crafting/wand_of_symmetry.json +++ b/src/generated/resources/data/create/recipe/mechanical_crafting/wand_of_symmetry.json @@ -1,23 +1,12 @@ { "type": "create:mechanical_crafting", "accept_mirrored": true, - "category": "misc", "key": { - "B": { - "tag": "c:ingots/brass" - }, - "E": { - "tag": "c:ender_pearls" - }, - "G": { - "tag": "c:glass_blocks" - }, - "O": { - "tag": "c:obsidians" - }, - "P": { - "item": "create:precision_mechanism" - } + "B": "#c:ingots/brass", + "E": "#c:ender_pearls", + "G": "#c:glass_blocks", + "O": "#c:obsidians", + "P": "create:precision_mechanism" }, "pattern": [ " G ", @@ -27,7 +16,6 @@ " O " ], "result": { - "count": 1, "id": "create:wand_of_symmetry" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/milling/allium.json b/src/generated/resources/data/create/recipe/milling/allium.json index 812edfd9f9..9fcbb32efb 100644 --- a/src/generated/resources/data/create/recipe/milling/allium.json +++ b/src/generated/resources/data/create/recipe/milling/allium.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:allium" - } + "minecraft:allium" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/andesite.json b/src/generated/resources/data/create/recipe/milling/andesite.json index 16320318c0..e7d5fbbea7 100644 --- a/src/generated/resources/data/create/recipe/milling/andesite.json +++ b/src/generated/resources/data/create/recipe/milling/andesite.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:andesite" - } + "minecraft:andesite" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/azure_bluet.json b/src/generated/resources/data/create/recipe/milling/azure_bluet.json index b499bf368d..c787dcd0fd 100644 --- a/src/generated/resources/data/create/recipe/milling/azure_bluet.json +++ b/src/generated/resources/data/create/recipe/milling/azure_bluet.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:azure_bluet" - } + "minecraft:azure_bluet" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/beetroot.json b/src/generated/resources/data/create/recipe/milling/beetroot.json index 865e233651..d6d7d810f9 100644 --- a/src/generated/resources/data/create/recipe/milling/beetroot.json +++ b/src/generated/resources/data/create/recipe/milling/beetroot.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:beetroot" - } + "minecraft:beetroot" ], "processing_time": 70, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/blue_orchid.json b/src/generated/resources/data/create/recipe/milling/blue_orchid.json index d21c845d0f..8d991ea27b 100644 --- a/src/generated/resources/data/create/recipe/milling/blue_orchid.json +++ b/src/generated/resources/data/create/recipe/milling/blue_orchid.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:blue_orchid" - } + "minecraft:blue_orchid" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/bone.json b/src/generated/resources/data/create/recipe/milling/bone.json index 18d99a31bb..e8d96f7711 100644 --- a/src/generated/resources/data/create/recipe/milling/bone.json +++ b/src/generated/resources/data/create/recipe/milling/bone.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:bone" - } + "minecraft:bone" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/bone_meal.json b/src/generated/resources/data/create/recipe/milling/bone_meal.json index f186b52d6c..47d6b0d711 100644 --- a/src/generated/resources/data/create/recipe/milling/bone_meal.json +++ b/src/generated/resources/data/create/recipe/milling/bone_meal.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:bone_meal" - } + "minecraft:bone_meal" ], "processing_time": 70, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/cactus.json b/src/generated/resources/data/create/recipe/milling/cactus.json index 91d956450b..e9adfe99f2 100644 --- a/src/generated/resources/data/create/recipe/milling/cactus.json +++ b/src/generated/resources/data/create/recipe/milling/cactus.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:cactus" - } + "minecraft:cactus" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/calcite.json b/src/generated/resources/data/create/recipe/milling/calcite.json index 02deb181ff..5768ed5c78 100644 --- a/src/generated/resources/data/create/recipe/milling/calcite.json +++ b/src/generated/resources/data/create/recipe/milling/calcite.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:calcite" - } + "minecraft:calcite" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/charcoal.json b/src/generated/resources/data/create/recipe/milling/charcoal.json index 478e5c8b65..d9a2dcd077 100644 --- a/src/generated/resources/data/create/recipe/milling/charcoal.json +++ b/src/generated/resources/data/create/recipe/milling/charcoal.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:charcoal" - } + "minecraft:charcoal" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/clay.json b/src/generated/resources/data/create/recipe/milling/clay.json index 7287f0a6ee..88a4129999 100644 --- a/src/generated/resources/data/create/recipe/milling/clay.json +++ b/src/generated/resources/data/create/recipe/milling/clay.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:clay" - } + "minecraft:clay" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/coal.json b/src/generated/resources/data/create/recipe/milling/coal.json index 3a96dfb56f..667d1cd95b 100644 --- a/src/generated/resources/data/create/recipe/milling/coal.json +++ b/src/generated/resources/data/create/recipe/milling/coal.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:coal" - } + "minecraft:coal" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/cobblestone.json b/src/generated/resources/data/create/recipe/milling/cobblestone.json index 860907f4be..51e7b2dc34 100644 --- a/src/generated/resources/data/create/recipe/milling/cobblestone.json +++ b/src/generated/resources/data/create/recipe/milling/cobblestone.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:cobblestone" - } + "minecraft:cobblestone" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/cocoa_beans.json b/src/generated/resources/data/create/recipe/milling/cocoa_beans.json index 468c249839..f5929b707f 100644 --- a/src/generated/resources/data/create/recipe/milling/cocoa_beans.json +++ b/src/generated/resources/data/create/recipe/milling/cocoa_beans.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:cocoa_beans" - } + "minecraft:cocoa_beans" ], "processing_time": 70, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/ae2/certus_quartz.json b/src/generated/resources/data/create/recipe/milling/compat/ae2/certus_quartz.json index a8cf6ec106..e65f71ad92 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/ae2/certus_quartz.json +++ b/src/generated/resources/data/create/recipe/milling/compat/ae2/certus_quartz.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "c:gems/certus_quartz" - } + "#c:gems/certus_quartz" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/ae2/ender_pearl.json b/src/generated/resources/data/create/recipe/milling/compat/ae2/ender_pearl.json index a2c8337570..20b238b139 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/ae2/ender_pearl.json +++ b/src/generated/resources/data/create/recipe/milling/compat/ae2/ender_pearl.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "c:ender_pearls" - } + "#c:ender_pearls" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/ae2/fluix_crystal.json b/src/generated/resources/data/create/recipe/milling/compat/ae2/fluix_crystal.json index 8223107d40..74041fdf35 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/ae2/fluix_crystal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/ae2/fluix_crystal.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ae2:fluix_crystal" diff --git a/src/generated/resources/data/create/recipe/milling/compat/ae2/sky_stone_block.json b/src/generated/resources/data/create/recipe/milling/compat/ae2/sky_stone_block.json index ffc416e9fd..b7320b32ec 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/ae2/sky_stone_block.json +++ b/src/generated/resources/data/create/recipe/milling/compat/ae2/sky_stone_block.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ae2:sky_stone_block" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/arid_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/arid_sandstone.json index 500acf379f..24a526427e 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/arid_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/arid_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:arid_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/barrel_cactus.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/barrel_cactus.json index 0efe0a803e..a38d59421f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/barrel_cactus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/barrel_cactus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:barrel_cactus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/firethorn.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/firethorn.json index 219ce8540c..b65d2426d4 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/firethorn.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/firethorn.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:firethorn" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/forsythia.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/forsythia.json index 5fddb5674d..3216815ab8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/forsythia.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/forsythia.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:forsythia" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/gilia.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/gilia.json index 48690105d6..8ab0a762d0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/gilia.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/gilia.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:gilia" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json index f818de1abf..9948bbea54 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/hot_monkey_brush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:hot_monkey_brush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json index 02b4eb54af..5b90d2c629 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/red_arid_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:red_arid_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json index 25ca36a94d..a516658dbf 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/scalding_monkey_brush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:scalding_monkey_brush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json index f6cf41de98..65e93e5c8e 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/tall_yucca_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:tall_yucca_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json index 0c0e87b906..d2fd05d7e3 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/warm_monkey_brush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:warm_monkey_brush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/water_hyacinth.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/water_hyacinth.json index cad33c17ef..8837ab1a96 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/water_hyacinth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/water_hyacinth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:water_hyacinth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/yucca_flower.json b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/yucca_flower.json index 93f0d69bd2..cca8649ea0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/atmospheric/yucca_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/atmospheric/yucca_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:yucca_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/autumnity/autumn_crocus.json b/src/generated/resources/data/create/recipe/milling/compat/autumnity/autumn_crocus.json index a595b7e0c8..78c1b683b9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/autumnity/autumn_crocus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/autumnity/autumn_crocus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "autumnity:autumn_crocus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json index 568ffaa4ce..0c524d035d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/black_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:black_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json index 9c699f748c..11ed3978aa 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/blue_hydrangea.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:blue_hydrangea" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json index 809f82a8e4..34302c1cf1 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/burning_blossom.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:burning_blossom" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/cattail.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/cattail.json index 42dff95af3..fc19892377 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/cattail.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/cattail.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:cattail" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/endbloom.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/endbloom.json index 924c5746a8..6a81d36172 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/endbloom.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/endbloom.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:endbloom" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/glowflower.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/glowflower.json index 7244c7494d..7488aaaa85 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/glowflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/glowflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:glowflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/goldenrod.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/goldenrod.json index 4cb3d84eb1..49bd81e7a9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/goldenrod.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/goldenrod.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:goldenrod" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/icy_iris.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/icy_iris.json index 04884da6f3..7fa92f9e22 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/icy_iris.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/icy_iris.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:icy_iris" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/lavender.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/lavender.json index f465d95542..6a318f16f2 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/lavender.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/lavender.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:lavender" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json index 23d889ecf9..e072d6daea 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_cosmos.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:orange_cosmos" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json index 163c59ead8..0b30552737 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/orange_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:orange_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json index 910e640cfe..1ada903b63 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_daffodil.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:pink_daffodil" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json index fa57bb6589..9a595f682d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/pink_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:pink_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/rose.json index b84c505dcb..a6391d025a 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json index f78a687030..37b07ef6de 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_lavender.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:tall_lavender" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json index c32acc8b59..6c6d5d1370 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tall_white_lavender.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:tall_white_lavender" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json index c8d2cbded6..618e62235b 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/tiny_cactus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:tiny_cactus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/violet.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/violet.json index a82cb9c056..ec5c44678f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/violet.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/violet.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:violet" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/waterlily.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/waterlily.json index 57ceb0adf3..bf607ed1a5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/waterlily.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/waterlily.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:waterlily" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_lavender.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_lavender.json index d3518128a7..de52615eed 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_lavender.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_lavender.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:white_lavender" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_petals.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_petals.json index 03ce3de472..5de4040286 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_petals.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_petals.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:white_petals" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json index f90f8d5a22..c775a4eb2f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/white_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:white_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wildflower.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wildflower.json index 74d747468a..24af945fe6 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wildflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wildflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:wildflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json index e8c5cf8865..3c02445e55 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomesoplenty/wilted_lily.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomesoplenty:wilted_lily" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json index 7c42fd60cd..2a0f17b1e4 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/allium_flower_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:allium_flower_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json index faffba5190..10a7d74d9c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/alpine_bellflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:alpine_bellflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/amaranth.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/amaranth.json index fafe79399e..2f9b66ec56 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/amaranth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/amaranth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:amaranth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/angelica.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/angelica.json index b5f9b7ad49..10b861cdaf 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/angelica.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/angelica.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:angelica" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/begonia.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/begonia.json index 6ea55999bc..29ef57c37d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/begonia.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/begonia.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:begonia" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/bistort.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/bistort.json index 0193fde2ec..640253eacb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/bistort.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/bistort.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:bistort" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_rose.json index dc63b27907..e2839a5ec0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:black_rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json index c6ed35537a..02a12984a0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/black_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:black_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json index 3a345513da..63d840029c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_rose_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:blue_rose_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sage.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sage.json index 0ffa3d8d3f..6ef45e4d18 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sage.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sage.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:blue_sage" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json index 88a4035282..ab10e54fab 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/blue_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:blue_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/california_poppy.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/california_poppy.json index e2d4acf613..4e5323329d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/california_poppy.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/california_poppy.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:california_poppy" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/crocus.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/crocus.json index dc0c4d20e4..b94f494419 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/crocus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/crocus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:crocus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json index 3095516cd5..20b229da82 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_amaranth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:cyan_amaranth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json index b39f53099c..90c676ef4b 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:cyan_rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json index 79d74bdb5c..76e08965e5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/cyan_tulip.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:cyan_tulip" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/daffodil.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/daffodil.json index 09f2f0705b..3d1c171640 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/daffodil.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/daffodil.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:daffodil" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/delphinium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/delphinium.json index 8660eee9f8..bf8d64a2e8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/delphinium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/delphinium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:delphinium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json index 2c5d905190..c72cdc7594 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/fairy_slipper.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:fairy_slipper" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json index ee391d309f..6f2cef6e02 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/firecracker_flower_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:firecracker_flower_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/foxglove.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/foxglove.json index 1db476270d..8fc79dcc7b 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/foxglove.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/foxglove.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:foxglove" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json index 820df6ba48..919c23d934 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/golden_spined_cactus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:golden_spined_cactus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/green_tulip.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/green_tulip.json index 371a80a9fe..702e91b0ff 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/green_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/green_tulip.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:green_tulip" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/guzmania.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/guzmania.json index ac45475530..aac002389d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/guzmania.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/guzmania.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:guzmania" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/horseweed.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/horseweed.json index 9e8fa1acff..147686eef3 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/horseweed.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/horseweed.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:horseweed" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json index 4270309696..01fac6e032 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/hydrangea_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:hydrangea_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/incan_lily.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/incan_lily.json index 20ee786835..64ce3c1ad5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/incan_lily.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/incan_lily.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:incan_lily" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/iris.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/iris.json index 0dcd219f22..f52e3c45bb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/iris.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/iris.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:iris" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json index ff5e9918eb..7f94d94f41 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/japanese_orchid.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:japanese_orchid" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json index 0a952d5b7f..e5ef0d1130 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/kovan_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:kovan_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json index 910913a344..f2919718fa 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lazarus_bellflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:lazarus_bellflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json index ab33b80baa..bbfce362dd 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/lollipop_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:lollipop_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json index a078da8e95..f71eeee261 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_amaranth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:magenta_amaranth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json index 745db51749..65db5476f9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/magenta_tulip.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:magenta_tulip" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json index 812b1756b9..26d51d0cdb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/mini_cactus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:mini_cactus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json index 16e0bc7a86..2dda457e0c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_amaranth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:orange_amaranth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json index 1f0ce2bfa8..5c64c6e9a5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/orange_daisy.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:orange_daisy" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json index 8ab95132d4..a4221041be 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/osiria_rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:osiria_rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json index fac5a5dc40..495f8d57cf 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/peach_leather_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:peach_leather_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium.json index 277fe3fbdc..4b5163b1a1 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:pink_allium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json index 36b7302192..2dca1e6b8f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_allium_flower_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:pink_allium_flower_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json index 083fe65cd3..4892a68ce3 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_anemone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:pink_anemone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json index 8eb30288d7..0ae6cace8f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_daffodil.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:pink_daffodil" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json index f8e147f820..716ff9f0d6 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/pink_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:pink_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json index 61dd30fa05..e057c71008 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/prickly_pear_cactus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:prickly_pear_cactus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/protea_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/protea_flower.json index 65ba41fa2a..fb9ed77019 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/protea_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/protea_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:protea_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json index dd15b9ef39..5e62b5f7b9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_amaranth.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:purple_amaranth" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sage.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sage.json index 0353af1a01..bdff29ddc9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sage.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sage.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:purple_sage" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json index ed08339b13..bb8c8031d5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:purple_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json index 104c28af48..53d0015eb5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/purple_tulip.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:purple_tulip" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/richea.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/richea.json index 1a8aacab72..985f762f77 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/richea.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/richea.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:richea" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/rose.json index d7a1e6a686..0b00cb3119 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json index 73e2a60bd9..3e6965bede 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/silver_vase_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:silver_vase_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/snowdrops.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/snowdrops.json index 8208ff4b62..ea62714689 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/snowdrops.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/snowdrops.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:snowdrops" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_allium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_allium.json index f7ae86f7f7..2139c113c5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_allium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_allium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:tall_allium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json index d72fea3b3a..168d92ceba 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_pink_allium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:tall_pink_allium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json index 5957a3881d..0cfb40289c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/tall_white_allium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:tall_white_allium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json index d62f16ef7a..e74fd0bcac 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/violet_leather_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:violet_leather_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium.json index 24eea6931c..71ed7903a0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_allium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json index d8f0d1160a..a2e7dbbad9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_allium_flower_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_allium_flower_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_anemone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_anemone.json index b4250fc693..9c69ba8ab7 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_anemone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_anemone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_anemone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json index 11c83de05d..05a146a5aa 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_puffball_cap.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_puffball_cap" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sage.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sage.json index 2f1736cddc..535ce88d2c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sage.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sage.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_sage" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json index b636817e21..8ea8d46e20 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/white_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:white_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json index 2b14a610aa..b2c85a16b0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/windswept_sandstone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:windswept_sandstone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json index 6e56fa9ac7..0b608dcbaf 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_cyclamen.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:winter_cyclamen" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_rose.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_rose.json index 42e2d958c6..f215bde0ad 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:winter_rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json index 94cd7dd09c..88ee7db186 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_scilla.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:winter_scilla" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json index 77f895717e..40ff66a5d9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/winter_succulent.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:winter_succulent" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json index 2b9b2dac95..e216ed27a8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_daffodil.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:yellow_daffodil" diff --git a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json index c6406b3b0e..518da8369b 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/compat/biomeswevegone/yellow_tulip.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:yellow_tulip" diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/black_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/black_petal.json index ac2e8b291b..2b6e45034d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/black_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/black_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/black" - } + "#botania:petals/black" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/blue_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/blue_petal.json index 53493b4936..5fb685c1a0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/blue_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/blue_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/blue" - } + "#botania:petals/blue" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/brown_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/brown_petal.json index 140071d203..56a08d23c7 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/brown_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/brown_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/brown" - } + "#botania:petals/brown" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/cyan_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/cyan_petal.json index beb2909ff6..ab0782d501 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/cyan_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/cyan_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/cyan" - } + "#botania:petals/cyan" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/gray_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/gray_petal.json index 39f3480a22..8ee41e7592 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/gray_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/gray_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/gray" - } + "#botania:petals/gray" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/green_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/green_petal.json index 1e9467bc2e..a5f188c197 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/green_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/green_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/green" - } + "#botania:petals/green" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/light_blue_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/light_blue_petal.json index eb77702978..2ea5e5d6fb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/light_blue_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/light_blue_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/light_blue" - } + "#botania:petals/light_blue" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/light_gray_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/light_gray_petal.json index d3af3c7d18..3cb110d38f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/light_gray_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/light_gray_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/light_gray" - } + "#botania:petals/light_gray" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/lime_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/lime_petal.json index 5a894c3a9c..008a79efc6 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/lime_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/lime_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/lime" - } + "#botania:petals/lime" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/magenta_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/magenta_petal.json index d46e141980..6c6ec62489 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/magenta_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/magenta_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/magenta" - } + "#botania:petals/magenta" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/orange_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/orange_petal.json index 69aba96508..3c80f7c606 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/orange_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/orange_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/orange" - } + "#botania:petals/orange" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/pink_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/pink_petal.json index 6aff6d2703..b0c5328c75 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/pink_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/pink_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/pink" - } + "#botania:petals/pink" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/purple_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/purple_petal.json index c49da36e3f..823408be1d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/purple_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/purple_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/purple" - } + "#botania:petals/purple" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/red_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/red_petal.json index b656b75fd5..d6a3c4fea8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/red_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/red_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/red" - } + "#botania:petals/red" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/white_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/white_petal.json index 4199f06357..a4411ce424 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/white_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/white_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/white" - } + "#botania:petals/white" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/botania/yellow_petal.json b/src/generated/resources/data/create/recipe/milling/compat/botania/yellow_petal.json index af5fdf1613..fb212c5166 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/botania/yellow_petal.json +++ b/src/generated/resources/data/create/recipe/milling/compat/botania/yellow_petal.json @@ -7,9 +7,7 @@ ], "type": "create:milling", "ingredients": [ - { - "tag": "botania:petals/yellow" - } + "#botania:petals/yellow" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/buttercup.json b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/buttercup.json index 9a85fe9df9..9253d280f5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/buttercup.json +++ b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/buttercup.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "buzzier_bees:buttercup" diff --git a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/pink_clover.json b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/pink_clover.json index 0c9ccb9cb1..b18f988fb8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/pink_clover.json +++ b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/pink_clover.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "buzzier_bees:pink_clover" diff --git a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/white_clover.json b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/white_clover.json index 3f5f6e216b..512d62e49d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/white_clover.json +++ b/src/generated/resources/data/create/recipe/milling/compat/buzzier_bees/white_clover.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "buzzier_bees:white_clover" diff --git a/src/generated/resources/data/create/recipe/milling/compat/druidcraft/lavender.json b/src/generated/resources/data/create/recipe/milling/compat/druidcraft/lavender.json index 9cf608de3d..3fddaa4077 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/druidcraft/lavender.json +++ b/src/generated/resources/data/create/recipe/milling/compat/druidcraft/lavender.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "druidcraft:lavender" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/bird_of_paradise.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/bird_of_paradise.json index 78285c2906..099c477f01 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/bird_of_paradise.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/bird_of_paradise.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:bird_of_paradise" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/blue_delphinium.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/blue_delphinium.json index 444d90b97c..1fc2eef9a9 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/blue_delphinium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/blue_delphinium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:blue_delphinium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/bluebell.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/bluebell.json index 2d586e7598..56a406f5ad 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/bluebell.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/bluebell.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:bluebell" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/cartwheel.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/cartwheel.json index dd3d9f56c2..35a93cd7b3 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/cartwheel.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/cartwheel.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:cartwheel" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/dianthus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/dianthus.json index af4a3a1562..f4023f6ba5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/dianthus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/dianthus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:dianthus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/magenta_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/magenta_hibiscus.json index 5d8705810c..a0db9fb077 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/magenta_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/magenta_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:magenta_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/orange_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/orange_hibiscus.json index f582948516..bfd00e4ae8 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/orange_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/orange_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:orange_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_delphinium.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_delphinium.json index 900ab9dd77..34ec44b0bb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_delphinium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_delphinium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:pink_delphinium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_hibiscus.json index 2d603d7877..ab23a38c8c 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/pink_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:pink_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_delphinium.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_delphinium.json index 6ed5869d80..1396baa481 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_delphinium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_delphinium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:purple_delphinium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_hibiscus.json index 909c5c9f44..09ba7d2275 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/purple_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:purple_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/red_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/red_hibiscus.json index 86515cecfb..516d63467a 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/red_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/red_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:red_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/red_lotus_flower.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/red_lotus_flower.json index f4f7f7cbbb..944c9a2556 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/red_lotus_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/red_lotus_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:red_lotus_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/tasselflower.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/tasselflower.json index 2938da8bbc..2daceee7ea 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/tasselflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/tasselflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:tasselflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/violet.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/violet.json index 6dbe4cf04b..1be518edb7 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/violet.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/violet.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:violet" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/white_delphinium.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/white_delphinium.json index ac23ad3b3b..9911b857dd 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/white_delphinium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/white_delphinium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:white_delphinium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/white_lotus_flower.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/white_lotus_flower.json index 7f263a9057..bb30421236 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/white_lotus_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/white_lotus_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:white_lotus_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/environmental/yellow_hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/environmental/yellow_hibiscus.json index 14b11d6f2b..f68bb71163 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/environmental/yellow_hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/environmental/yellow_hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "environmental:yellow_hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json index ab7375a632..8dd3f45e83 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_dandelion.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:alpha_dandelion" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json index f80800ad57..4854c3a8cb 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/alpha_rose.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:alpha_rose" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/aster.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/aster.json index 2950166bb1..1d0126a205 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/aster.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/aster.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:aster" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json index 1326772f11..f9042fd5af 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/black_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:black_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json index b143073e3c..0462a43755 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/bleeding_heart.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:bleeding_heart" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json index f889758998..f45c660eef 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_lupine.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:blue_lupine" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json index d661700942..793fe084b3 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/blue_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:blue_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json index cc62c8b980..a4ffdd5bc7 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/brown_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:brown_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json index c4e7fc630c..f9c225248d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cactus_flower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:cactus_flower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json index 5e233c59b2..609d5f11ea 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/cyan_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:cyan_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/daisy.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/daisy.json index 574ffa157b..b580d69e09 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/daisy.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/daisy.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:daisy" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/day_lily.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/day_lily.json index ec708043af..d98e6ed077 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/day_lily.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/day_lily.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:day_lily" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/dorcel.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/dorcel.json index fdb22fec5f..ff39bcabad 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/dorcel.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/dorcel.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:dorcel" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json index 500700d645..ecc45cd44d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/felicia_daisy.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:felicia_daisy" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/fireweed.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/fireweed.json index 1fe15a95a9..e8fe12818a 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/fireweed.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/fireweed.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:fireweed" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json index 205309bf3a..4fb3c2dada 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/glistering_bloom.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:glistering_bloom" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json index 12d1dc6ad0..a5227b59c1 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/gray_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:gray_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json index f431a7216a..e1a10b5c13 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/green_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:green_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hibiscus.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hibiscus.json index 37b76d206c..a2a30b5b04 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hibiscus.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hibiscus.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:hibiscus" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hyssop.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hyssop.json index f11a157ad5..e65883df2b 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hyssop.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/hyssop.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:hyssop" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json index c46d8a3b04..53e7e58766 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_blue_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:light_blue_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json index 5d7b8d5729..6431624162 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/light_gray_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:light_gray_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json index 32299dc14c..5efb99d0c5 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/lime_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:lime_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json index ac3848432d..28c644549f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/magenta_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:magenta_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/mallow.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/mallow.json index 03b112d783..3d3d29df2d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/mallow.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/mallow.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:mallow" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json index 0535f89ac7..648cfe0a55 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_coneflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:orange_coneflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json index b360d95544..f94fdfb71d 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/orange_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:orange_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json index 84cf2ecf2b..81e4caeaa7 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_lupine.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:pink_lupine" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json index 516ac387f1..5e0b19c650 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/pink_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:pink_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json index 8c2c56a795..f348a9b712 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/poppy_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:poppy_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json index 555906c9d1..cdf38cc9a2 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_coneflower.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:purple_coneflower" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json index be69d10370..e3c1eb7016 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_lupine.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:purple_lupine" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json index df3c375a2b..ed79f42aee 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/purple_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:purple_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_lupine.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_lupine.json index c875d84d07..004bbc2c7f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_lupine.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_lupine.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:red_lupine" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json index 4a31c2993a..46e40acf02 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/red_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:red_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json index 6b97c759f2..97692b81b4 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/salmon_poppy_bush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:salmon_poppy_bush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tassel.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tassel.json index 8413c9e952..dd5b4af293 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tassel.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tassel.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:tassel" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tsubaki.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tsubaki.json index d19dd0def3..d04a492925 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tsubaki.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/tsubaki.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:tsubaki" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/waratah.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/waratah.json index baaba1857f..1e6a7af30e 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/waratah.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/waratah.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:waratah" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json index f93241518c..685ebe9ac0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:white_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_trillium.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_trillium.json index 325faebc25..20a16e5a1e 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_trillium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/white_trillium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:white_trillium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json index cd90a2f687..d120ac6543 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/wilting_trillium.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:wilting_trillium" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json index 7b4610a422..00244e3ef0 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_lupine.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:yellow_lupine" diff --git a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json index 56b352a8a5..c6454e6a1f 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json +++ b/src/generated/resources/data/create/recipe/milling/compat/regions_unexplored/yellow_snowbelle.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:yellow_snowbelle" diff --git a/src/generated/resources/data/create/recipe/milling/compat/supplementaries/flax.json b/src/generated/resources/data/create/recipe/milling/compat/supplementaries/flax.json index 49e541cd0f..780fe0f16a 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/supplementaries/flax.json +++ b/src/generated/resources/data/create/recipe/milling/compat/supplementaries/flax.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "supplementaries:flax" diff --git a/src/generated/resources/data/create/recipe/milling/compat/tconstruct/nercotic_bone.json b/src/generated/resources/data/create/recipe/milling/compat/tconstruct/nercotic_bone.json index 2133c5c385..ad60a0a69e 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/tconstruct/nercotic_bone.json +++ b/src/generated/resources/data/create/recipe/milling/compat/tconstruct/nercotic_bone.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "tconstruct:necrotic_bone" diff --git a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json index 0de0e2d706..513bcfc156 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json +++ b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/flowering_rush.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "upgrade_aquatic:flowering_rush" diff --git a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json index 221a5bdc06..4510126562 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json +++ b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/pink_searocket.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "upgrade_aquatic:pink_searocket" diff --git a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json index 8e753aaadd..0b016ac910 100644 --- a/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json +++ b/src/generated/resources/data/create/recipe/milling/compat/upgrade_aquatic/white_searocket.json @@ -8,7 +8,7 @@ "type": "create:milling", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "upgrade_aquatic:white_searocket" diff --git a/src/generated/resources/data/create/recipe/milling/cornflower.json b/src/generated/resources/data/create/recipe/milling/cornflower.json index e186ee1817..5c6a155c24 100644 --- a/src/generated/resources/data/create/recipe/milling/cornflower.json +++ b/src/generated/resources/data/create/recipe/milling/cornflower.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:cornflower" - } + "minecraft:cornflower" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/dandelion.json b/src/generated/resources/data/create/recipe/milling/dandelion.json index de4e9ea3f1..924d5ed794 100644 --- a/src/generated/resources/data/create/recipe/milling/dandelion.json +++ b/src/generated/resources/data/create/recipe/milling/dandelion.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:dandelion" - } + "minecraft:dandelion" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/dripstone_block.json b/src/generated/resources/data/create/recipe/milling/dripstone_block.json index ef5cddebee..b1c36cb435 100644 --- a/src/generated/resources/data/create/recipe/milling/dripstone_block.json +++ b/src/generated/resources/data/create/recipe/milling/dripstone_block.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:dripstone_block" - } + "minecraft:dripstone_block" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/fern.json b/src/generated/resources/data/create/recipe/milling/fern.json index 632f278a88..e526cc32e7 100644 --- a/src/generated/resources/data/create/recipe/milling/fern.json +++ b/src/generated/resources/data/create/recipe/milling/fern.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:fern" - } + "minecraft:fern" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/granite.json b/src/generated/resources/data/create/recipe/milling/granite.json index 61c125b652..87290d2b27 100644 --- a/src/generated/resources/data/create/recipe/milling/granite.json +++ b/src/generated/resources/data/create/recipe/milling/granite.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:granite" - } + "minecraft:granite" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/gravel.json b/src/generated/resources/data/create/recipe/milling/gravel.json index 4d23f5a23c..4919974a75 100644 --- a/src/generated/resources/data/create/recipe/milling/gravel.json +++ b/src/generated/resources/data/create/recipe/milling/gravel.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:gravel" - } + "minecraft:gravel" ], "processing_time": 250, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/ink_sac.json b/src/generated/resources/data/create/recipe/milling/ink_sac.json index e00f3e3120..178764e226 100644 --- a/src/generated/resources/data/create/recipe/milling/ink_sac.json +++ b/src/generated/resources/data/create/recipe/milling/ink_sac.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:ink_sac" - } + "minecraft:ink_sac" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/lapis_lazuli.json b/src/generated/resources/data/create/recipe/milling/lapis_lazuli.json index 6ceb335849..1bd14c519f 100644 --- a/src/generated/resources/data/create/recipe/milling/lapis_lazuli.json +++ b/src/generated/resources/data/create/recipe/milling/lapis_lazuli.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - } + "minecraft:lapis_lazuli" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/large_fern.json b/src/generated/resources/data/create/recipe/milling/large_fern.json index d3520a2811..dbad1f5ed0 100644 --- a/src/generated/resources/data/create/recipe/milling/large_fern.json +++ b/src/generated/resources/data/create/recipe/milling/large_fern.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:large_fern" - } + "minecraft:large_fern" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/lilac.json b/src/generated/resources/data/create/recipe/milling/lilac.json index 8025fc820f..6339e3ef91 100644 --- a/src/generated/resources/data/create/recipe/milling/lilac.json +++ b/src/generated/resources/data/create/recipe/milling/lilac.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:lilac" - } + "minecraft:lilac" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/lily_of_the_valley.json b/src/generated/resources/data/create/recipe/milling/lily_of_the_valley.json index 17ac20baf3..4e70ffa063 100644 --- a/src/generated/resources/data/create/recipe/milling/lily_of_the_valley.json +++ b/src/generated/resources/data/create/recipe/milling/lily_of_the_valley.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:lily_of_the_valley" - } + "minecraft:lily_of_the_valley" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/orange_tulip.json b/src/generated/resources/data/create/recipe/milling/orange_tulip.json index 899f691b95..7497362979 100644 --- a/src/generated/resources/data/create/recipe/milling/orange_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/orange_tulip.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:orange_tulip" - } + "minecraft:orange_tulip" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/oxeye_daisy.json b/src/generated/resources/data/create/recipe/milling/oxeye_daisy.json index 3f5819f19f..080cf0ef6d 100644 --- a/src/generated/resources/data/create/recipe/milling/oxeye_daisy.json +++ b/src/generated/resources/data/create/recipe/milling/oxeye_daisy.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:oxeye_daisy" - } + "minecraft:oxeye_daisy" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/peony.json b/src/generated/resources/data/create/recipe/milling/peony.json index ac19450297..4ef16a4465 100644 --- a/src/generated/resources/data/create/recipe/milling/peony.json +++ b/src/generated/resources/data/create/recipe/milling/peony.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:peony" - } + "minecraft:peony" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/pink_petals.json b/src/generated/resources/data/create/recipe/milling/pink_petals.json index 12c976d836..3f4668f884 100644 --- a/src/generated/resources/data/create/recipe/milling/pink_petals.json +++ b/src/generated/resources/data/create/recipe/milling/pink_petals.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:pink_petals" - } + "minecraft:pink_petals" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/pink_tulip.json b/src/generated/resources/data/create/recipe/milling/pink_tulip.json index ae9a247021..e870ab58c0 100644 --- a/src/generated/resources/data/create/recipe/milling/pink_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/pink_tulip.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:pink_tulip" - } + "minecraft:pink_tulip" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/pitcher_plant.json b/src/generated/resources/data/create/recipe/milling/pitcher_plant.json index d3ade92eb6..48c06c9459 100644 --- a/src/generated/resources/data/create/recipe/milling/pitcher_plant.json +++ b/src/generated/resources/data/create/recipe/milling/pitcher_plant.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:pitcher_plant" - } + "minecraft:pitcher_plant" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/poppy.json b/src/generated/resources/data/create/recipe/milling/poppy.json index 257a5e4e04..2f0559a5ec 100644 --- a/src/generated/resources/data/create/recipe/milling/poppy.json +++ b/src/generated/resources/data/create/recipe/milling/poppy.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:poppy" - } + "minecraft:poppy" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/red_tulip.json b/src/generated/resources/data/create/recipe/milling/red_tulip.json index 08fa011ba0..b5a60fad0f 100644 --- a/src/generated/resources/data/create/recipe/milling/red_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/red_tulip.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:red_tulip" - } + "minecraft:red_tulip" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/rose_bush.json b/src/generated/resources/data/create/recipe/milling/rose_bush.json index ea62c1eb0a..21c6ec8bfe 100644 --- a/src/generated/resources/data/create/recipe/milling/rose_bush.json +++ b/src/generated/resources/data/create/recipe/milling/rose_bush.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:rose_bush" - } + "minecraft:rose_bush" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/saddle.json b/src/generated/resources/data/create/recipe/milling/saddle.json index 2e83303b16..006c507893 100644 --- a/src/generated/resources/data/create/recipe/milling/saddle.json +++ b/src/generated/resources/data/create/recipe/milling/saddle.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:saddle" - } + "minecraft:saddle" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/sandstone.json b/src/generated/resources/data/create/recipe/milling/sandstone.json index 4988542de8..d165cedf1b 100644 --- a/src/generated/resources/data/create/recipe/milling/sandstone.json +++ b/src/generated/resources/data/create/recipe/milling/sandstone.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:sandstone" - } + "minecraft:sandstone" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/sea_pickle.json b/src/generated/resources/data/create/recipe/milling/sea_pickle.json index b6d26faf40..25a336f2c1 100644 --- a/src/generated/resources/data/create/recipe/milling/sea_pickle.json +++ b/src/generated/resources/data/create/recipe/milling/sea_pickle.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:sea_pickle" - } + "minecraft:sea_pickle" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/short_grass.json b/src/generated/resources/data/create/recipe/milling/short_grass.json index 9da1c8d014..01ccb9b4a8 100644 --- a/src/generated/resources/data/create/recipe/milling/short_grass.json +++ b/src/generated/resources/data/create/recipe/milling/short_grass.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:short_grass" - } + "minecraft:short_grass" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/sugar_cane.json b/src/generated/resources/data/create/recipe/milling/sugar_cane.json index c5bef097dc..4e76c92ff7 100644 --- a/src/generated/resources/data/create/recipe/milling/sugar_cane.json +++ b/src/generated/resources/data/create/recipe/milling/sugar_cane.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:sugar_cane" - } + "minecraft:sugar_cane" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/sunflower.json b/src/generated/resources/data/create/recipe/milling/sunflower.json index 28e84b8940..3597c5990c 100644 --- a/src/generated/resources/data/create/recipe/milling/sunflower.json +++ b/src/generated/resources/data/create/recipe/milling/sunflower.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:sunflower" - } + "minecraft:sunflower" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/tall_grass.json b/src/generated/resources/data/create/recipe/milling/tall_grass.json index 7508471557..056c4fd19a 100644 --- a/src/generated/resources/data/create/recipe/milling/tall_grass.json +++ b/src/generated/resources/data/create/recipe/milling/tall_grass.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:tall_grass" - } + "minecraft:tall_grass" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/terracotta.json b/src/generated/resources/data/create/recipe/milling/terracotta.json index d7c97ac98e..ef52309da6 100644 --- a/src/generated/resources/data/create/recipe/milling/terracotta.json +++ b/src/generated/resources/data/create/recipe/milling/terracotta.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:terracotta" - } + "minecraft:terracotta" ], "processing_time": 200, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/torchflower.json b/src/generated/resources/data/create/recipe/milling/torchflower.json index 903979b60a..23ce712cf8 100644 --- a/src/generated/resources/data/create/recipe/milling/torchflower.json +++ b/src/generated/resources/data/create/recipe/milling/torchflower.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:torchflower" - } + "minecraft:torchflower" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/wheat.json b/src/generated/resources/data/create/recipe/milling/wheat.json index b00deaff74..e5cf7b29e7 100644 --- a/src/generated/resources/data/create/recipe/milling/wheat.json +++ b/src/generated/resources/data/create/recipe/milling/wheat.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:wheat" - } + "minecraft:wheat" ], "processing_time": 150, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/white_tulip.json b/src/generated/resources/data/create/recipe/milling/white_tulip.json index 4997957999..316ef497ab 100644 --- a/src/generated/resources/data/create/recipe/milling/white_tulip.json +++ b/src/generated/resources/data/create/recipe/milling/white_tulip.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:white_tulip" - } + "minecraft:white_tulip" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/wither_rose.json b/src/generated/resources/data/create/recipe/milling/wither_rose.json index d7143e46f1..cc9646dab2 100644 --- a/src/generated/resources/data/create/recipe/milling/wither_rose.json +++ b/src/generated/resources/data/create/recipe/milling/wither_rose.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "item": "minecraft:wither_rose" - } + "minecraft:wither_rose" ], "processing_time": 50, "results": [ diff --git a/src/generated/resources/data/create/recipe/milling/wool.json b/src/generated/resources/data/create/recipe/milling/wool.json index 32f5e55530..b325137153 100644 --- a/src/generated/resources/data/create/recipe/milling/wool.json +++ b/src/generated/resources/data/create/recipe/milling/wool.json @@ -1,9 +1,7 @@ { "type": "create:milling", "ingredients": [ - { - "tag": "minecraft:wool" - } + "#minecraft:wool" ], "processing_time": 100, "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/andesite_alloy.json b/src/generated/resources/data/create/recipe/mixing/andesite_alloy.json index 76f42f6ad7..63603fef57 100644 --- a/src/generated/resources/data/create/recipe/mixing/andesite_alloy.json +++ b/src/generated/resources/data/create/recipe/mixing/andesite_alloy.json @@ -1,12 +1,8 @@ { "type": "create:mixing", "ingredients": [ - { - "item": "minecraft:andesite" - }, - { - "tag": "c:nuggets/iron" - } + "minecraft:andesite", + "#c:nuggets/iron" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/andesite_alloy_from_zinc.json b/src/generated/resources/data/create/recipe/mixing/andesite_alloy_from_zinc.json index 083d8bab24..b11382718e 100644 --- a/src/generated/resources/data/create/recipe/mixing/andesite_alloy_from_zinc.json +++ b/src/generated/resources/data/create/recipe/mixing/andesite_alloy_from_zinc.json @@ -1,12 +1,8 @@ { "type": "create:mixing", "ingredients": [ - { - "item": "minecraft:andesite" - }, - { - "tag": "c:nuggets/zinc" - } + "minecraft:andesite", + "#c:nuggets/zinc" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/brass_ingot.json b/src/generated/resources/data/create/recipe/mixing/brass_ingot.json index 52caeac0fb..4f00170b63 100644 --- a/src/generated/resources/data/create/recipe/mixing/brass_ingot.json +++ b/src/generated/resources/data/create/recipe/mixing/brass_ingot.json @@ -2,12 +2,8 @@ "type": "create:mixing", "heat_requirement": "heated", "ingredients": [ - { - "tag": "c:ingots/copper" - }, - { - "tag": "c:ingots/zinc" - } + "#c:ingots/copper", + "#c:ingots/zinc" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/cardboard_pulp.json b/src/generated/resources/data/create/recipe/mixing/cardboard_pulp.json index 4c7b70e0f0..8549a39607 100644 --- a/src/generated/resources/data/create/recipe/mixing/cardboard_pulp.json +++ b/src/generated/resources/data/create/recipe/mixing/cardboard_pulp.json @@ -1,22 +1,14 @@ { "type": "create:mixing", "ingredients": [ + "#create:pulpifiable", + "#create:pulpifiable", + "#create:pulpifiable", + "#create:pulpifiable", { - "tag": "create:pulpifiable" - }, - { - "tag": "create:pulpifiable" - }, - { - "tag": "create:pulpifiable" - }, - { - "tag": "create:pulpifiable" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/chocolate.json b/src/generated/resources/data/create/recipe/mixing/chocolate.json index 1b89bab003..a0b2a0563c 100644 --- a/src/generated/resources/data/create/recipe/mixing/chocolate.json +++ b/src/generated/resources/data/create/recipe/mixing/chocolate.json @@ -2,16 +2,12 @@ "type": "create:mixing", "heat_requirement": "heated", "ingredients": [ + "minecraft:sugar", + "minecraft:cocoa_beans", { - "item": "minecraft:sugar" - }, - { - "item": "minecraft:cocoa_beans" - }, - { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:milk" + "ingredient": "#c:milk" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/chocolate_melting.json b/src/generated/resources/data/create/recipe/mixing/chocolate_melting.json index ebabdf2c49..261135a841 100644 --- a/src/generated/resources/data/create/recipe/mixing/chocolate_melting.json +++ b/src/generated/resources/data/create/recipe/mixing/chocolate_melting.json @@ -2,9 +2,7 @@ "type": "create:mixing", "heat_requirement": "heated", "ingredients": [ - { - "item": "create:bar_of_chocolate" - } + "create:bar_of_chocolate" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/compat/ae2/fluix_crystal.json b/src/generated/resources/data/create/recipe/mixing/compat/ae2/fluix_crystal.json index 7c7419c0c7..aa8ba09806 100644 --- a/src/generated/resources/data/create/recipe/mixing/compat/ae2/fluix_crystal.json +++ b/src/generated/resources/data/create/recipe/mixing/compat/ae2/fluix_crystal.json @@ -7,24 +7,20 @@ ], "type": "create:mixing", "ingredients": [ + "#c:dusts/redstone", { - "tag": "c:dusts/redstone" - }, - { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "ae2:charged_certus_quartz_crystal" } ] }, + "#c:gems/quartz", { - "tag": "c:gems/quartz" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json b/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json index 29743783f9..2f996dbdad 100644 --- a/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json +++ b/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/peat_mud.json @@ -8,7 +8,7 @@ "type": "create:mixing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:peat_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json b/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json index 65033137bb..5ddc1ea653 100644 --- a/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json +++ b/src/generated/resources/data/create/recipe/mixing/compat/regions_unexplored/silt_mud.json @@ -8,7 +8,7 @@ "type": "create:mixing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silt_dirt" @@ -16,9 +16,9 @@ ] }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/dough_by_mixing.json b/src/generated/resources/data/create/recipe/mixing/dough_by_mixing.json index 0837475191..95655a3137 100644 --- a/src/generated/resources/data/create/recipe/mixing/dough_by_mixing.json +++ b/src/generated/resources/data/create/recipe/mixing/dough_by_mixing.json @@ -1,13 +1,11 @@ { "type": "create:mixing", "ingredients": [ + "#c:flours/wheat", { - "tag": "c:flours/wheat" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 1000, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/honey.json b/src/generated/resources/data/create/recipe/mixing/honey.json index 64d7cb415e..dce17c75db 100644 --- a/src/generated/resources/data/create/recipe/mixing/honey.json +++ b/src/generated/resources/data/create/recipe/mixing/honey.json @@ -2,9 +2,7 @@ "type": "create:mixing", "heat_requirement": "heated", "ingredients": [ - { - "item": "minecraft:honey_block" - } + "minecraft:honey_block" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/lava_from_cobble.json b/src/generated/resources/data/create/recipe/mixing/lava_from_cobble.json index c05b3eb1b1..7c9b24b2a8 100644 --- a/src/generated/resources/data/create/recipe/mixing/lava_from_cobble.json +++ b/src/generated/resources/data/create/recipe/mixing/lava_from_cobble.json @@ -2,9 +2,7 @@ "type": "create:mixing", "heat_requirement": "superheated", "ingredients": [ - { - "tag": "c:cobblestones" - } + "#c:cobblestones" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/mixing/mud_by_mixing.json b/src/generated/resources/data/create/recipe/mixing/mud_by_mixing.json index 73911305a9..545e7ae079 100644 --- a/src/generated/resources/data/create/recipe/mixing/mud_by_mixing.json +++ b/src/generated/resources/data/create/recipe/mixing/mud_by_mixing.json @@ -2,13 +2,13 @@ "type": "create:mixing", "ingredients": [ { - "type": "neoforge:block_tag", + "neoforge:ingredient_type": "neoforge:block_tag", "tag": "minecraft:convertable_to_mud" }, { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/mixing/tea.json b/src/generated/resources/data/create/recipe/mixing/tea.json index f5974a1131..62d38b8bdf 100644 --- a/src/generated/resources/data/create/recipe/mixing/tea.json +++ b/src/generated/resources/data/create/recipe/mixing/tea.json @@ -2,18 +2,16 @@ "type": "create:mixing", "heat_requirement": "heated", "ingredients": [ + "#minecraft:leaves", { - "tag": "minecraft:leaves" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 250, - "fluid": "minecraft:water" + "ingredient": "minecraft:water" }, { - "type": "neoforge:tag", + "type": "neoforge:simple", "amount": 250, - "tag": "c:milk" + "ingredient": "#c:milk" } ], "results": [ diff --git a/src/generated/resources/data/create/recipe/oak_window.json b/src/generated/resources/data/create/recipe/oak_window.json index a1a717ff86..31cbf56ef5 100644 --- a/src/generated/resources/data/create/recipe/oak_window.json +++ b/src/generated/resources/data/create/recipe/oak_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:oak_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:oak_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/oak_window_pane.json b/src/generated/resources/data/create/recipe/oak_window_pane.json index 355524b1de..0076829cba 100644 --- a/src/generated/resources/data/create/recipe/oak_window_pane.json +++ b/src/generated/resources/data/create/recipe/oak_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:oak_window" - } + "#": "create:oak_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json index e3be92eedb..782176eaca 100644 --- a/src/generated/resources/data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/ochrum_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json index cf95e722e6..51589f3838 100644 --- a/src/generated/resources/data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/ochrum_pillar_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:ochrum_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/ornate_iron_window.json b/src/generated/resources/data/create/recipe/ornate_iron_window.json index cac346d189..637bb2082d 100644 --- a/src/generated/resources/data/create/recipe/ornate_iron_window.json +++ b/src/generated/resources/data/create/recipe/ornate_iron_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:iron_nugget" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:iron_nugget", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/ornate_iron_window_pane.json b/src/generated/resources/data/create/recipe/ornate_iron_window_pane.json index 3cd7fe6995..f50fd00dd9 100644 --- a/src/generated/resources/data/create/recipe/ornate_iron_window_pane.json +++ b/src/generated/resources/data/create/recipe/ornate_iron_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:ornate_iron_window" - } + "#": "create:ornate_iron_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab.json index d8de1ad21d..843ce0ccc8 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:oxidized_copper_shingles" - } + "X": "create:oxidized_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json index 12bfa86230..4fe57628e5 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_slab_from_oxidized_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:oxidized_copper_shingles" - }, + "ingredient": "create:oxidized_copper_shingles", "result": { "count": 2, "id": "create:oxidized_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs.json index 96f346920a..933cd75108 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:oxidized_copper_shingles" - } + "X": "create:oxidized_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json index 9ac2da85b7..3d20aebf4e 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_shingle_stairs_from_oxidized_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:oxidized_copper_shingles" - }, + "ingredient": "create:oxidized_copper_shingles", "result": { - "count": 1, "id": "create:oxidized_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab.json b/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab.json index 0caddbc20d..15923d33f9 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:oxidized_copper_tiles" - } + "X": "create:oxidized_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json index 51a0cdcf23..e78d1a885f 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_tile_slab_from_oxidized_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:oxidized_copper_tiles" - }, + "ingredient": "create:oxidized_copper_tiles", "result": { "count": 2, "id": "create:oxidized_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs.json index e69cd7cb52..ce7860277a 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:oxidized_copper_tiles" - } + "X": "create:oxidized_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json index 7ad087a1fd..0e36bcaf95 100644 --- a/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/oxidized_copper_tile_stairs_from_oxidized_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:oxidized_copper_tiles" - }, + "ingredient": "create:oxidized_copper_tiles", "result": { - "count": 1, "id": "create:oxidized_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json index 44a0759a4b..d0ef643071 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:polished_cut_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab.json index 4427642450..8facd48484 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_andesite_slab", "key": { - "X": { - "item": "create:polished_cut_andesite" - } + "X": "create:polished_cut_andesite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json index ec405a05a6..1fba12dfb2 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_from_stone_types_andesite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { "count": 2, "id": "create:polished_cut_andesite_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_recycling.json index f1c269f7e8..0d33dbf51b 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_andesite_slab" - }, - { - "item": "create:polished_cut_andesite_slab" - } + "create:polished_cut_andesite_slab", + "create:polished_cut_andesite_slab" ], "result": { - "count": 1, "id": "create:polished_cut_andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs.json index 6bbe8ffe0d..8b65301ad3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_andesite_stairs", "key": { - "X": { - "item": "create:polished_cut_andesite" - } + "X": "create:polished_cut_andesite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json index 163b9322ea..43232cbe48 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_stairs_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:polished_cut_andesite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_wall.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_wall.json index 8bf3d86542..90b9adcb52 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_andesite" - } + "X": "create:polished_cut_andesite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json index ccc4c58d75..ba0988fea2 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_andesite_wall_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:polished_cut_andesite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json index e4d604e2b5..f3163bcebb 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:polished_cut_asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab.json index d31b35b828..879c3686cf 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_asurine_slab", "key": { - "X": { - "item": "create:polished_cut_asurine" - } + "X": "create:polished_cut_asurine" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json index 0afe89f2b5..b6907d199d 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_from_stone_types_asurine_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { "count": 2, "id": "create:polished_cut_asurine_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_recycling.json index 4657aba7af..3b1c50808e 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_asurine_slab" - }, - { - "item": "create:polished_cut_asurine_slab" - } + "create:polished_cut_asurine_slab", + "create:polished_cut_asurine_slab" ], "result": { - "count": 1, "id": "create:polished_cut_asurine" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs.json index bda394660d..abff3c8719 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_asurine_stairs", "key": { - "X": { - "item": "create:polished_cut_asurine" - } + "X": "create:polished_cut_asurine" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json index 1f96acb7ed..65dc9f1d55 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_stairs_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:polished_cut_asurine_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_wall.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_wall.json index 32e357bb99..e9d918029e 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_asurine" - } + "X": "create:polished_cut_asurine" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json index b35452753b..5562d5b6d9 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_asurine_wall_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:polished_cut_asurine_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json index e4e855a695..72177b2ee8 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:polished_cut_calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab.json index 0cba0b5980..ed423a9942 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_calcite_slab", "key": { - "X": { - "item": "create:polished_cut_calcite" - } + "X": "create:polished_cut_calcite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json index ef2c13cc7c..5e9d18cdf0 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_from_stone_types_calcite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { "count": 2, "id": "create:polished_cut_calcite_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_recycling.json index 282c1c8d7b..cfc8a572e2 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_calcite_slab" - }, - { - "item": "create:polished_cut_calcite_slab" - } + "create:polished_cut_calcite_slab", + "create:polished_cut_calcite_slab" ], "result": { - "count": 1, "id": "create:polished_cut_calcite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs.json index bb98b39ef6..9e259bf35a 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_calcite_stairs", "key": { - "X": { - "item": "create:polished_cut_calcite" - } + "X": "create:polished_cut_calcite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json index e8a52b1e77..bfdff83395 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_stairs_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:polished_cut_calcite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_wall.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_wall.json index 84f5a25e40..8d1767c27c 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_calcite" - } + "X": "create:polished_cut_calcite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json index 241ca213c7..119726852d 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_calcite_wall_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:polished_cut_calcite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json index 7c5a54f5c3..96609b150a 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:polished_cut_crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab.json index f09ee3eac6..a3e32e7608 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_crimsite_slab", "key": { - "X": { - "item": "create:polished_cut_crimsite" - } + "X": "create:polished_cut_crimsite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json index 951b727f91..7dd25a97be 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_from_stone_types_crimsite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { "count": 2, "id": "create:polished_cut_crimsite_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_recycling.json index 2bfe0e4574..0060aa96c7 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_crimsite_slab" - }, - { - "item": "create:polished_cut_crimsite_slab" - } + "create:polished_cut_crimsite_slab", + "create:polished_cut_crimsite_slab" ], "result": { - "count": 1, "id": "create:polished_cut_crimsite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs.json index 23ed8a9a31..5c002d4811 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_crimsite_stairs", "key": { - "X": { - "item": "create:polished_cut_crimsite" - } + "X": "create:polished_cut_crimsite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json index 380672b8a5..439fec9d6f 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_stairs_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:polished_cut_crimsite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall.json index b05c9d19c8..a92e243b44 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_crimsite" - } + "X": "create:polished_cut_crimsite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json index 61ccfabb0f..452e66a475 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_crimsite_wall_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:polished_cut_crimsite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json index 3748b5589d..a0304b0eb1 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:polished_cut_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab.json index 8bf21d9c02..a95bbaa38c 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_deepslate_slab", "key": { - "X": { - "item": "create:polished_cut_deepslate" - } + "X": "create:polished_cut_deepslate" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json index 023eb40780..a7bd5a5292 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_from_stone_types_deepslate_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { "count": 2, "id": "create:polished_cut_deepslate_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_recycling.json index a45a637ae0..c18546712c 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_deepslate_slab" - }, - { - "item": "create:polished_cut_deepslate_slab" - } + "create:polished_cut_deepslate_slab", + "create:polished_cut_deepslate_slab" ], "result": { - "count": 1, "id": "create:polished_cut_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs.json index 9fba5ebd06..6bc40f0bf4 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_deepslate_stairs", "key": { - "X": { - "item": "create:polished_cut_deepslate" - } + "X": "create:polished_cut_deepslate" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json index 4d70515196..fdb8e744e4 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_stairs_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:polished_cut_deepslate_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall.json index 79d5a850f2..5aa328f4f3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_deepslate" - } + "X": "create:polished_cut_deepslate" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json index c98c85a9af..4208364313 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_deepslate_wall_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:polished_cut_deepslate_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json index c499d8efb4..7c563b8f80 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:polished_cut_diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab.json index bf209a1289..a00fc7a883 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_diorite_slab", "key": { - "X": { - "item": "create:polished_cut_diorite" - } + "X": "create:polished_cut_diorite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json index a79ba3f204..fc3911eeaa 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_from_stone_types_diorite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { "count": 2, "id": "create:polished_cut_diorite_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_recycling.json index 6cbe1a6079..e70b284963 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_diorite_slab" - }, - { - "item": "create:polished_cut_diorite_slab" - } + "create:polished_cut_diorite_slab", + "create:polished_cut_diorite_slab" ], "result": { - "count": 1, "id": "create:polished_cut_diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs.json index 12c6b61678..f3274cf4ff 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_diorite_stairs", "key": { - "X": { - "item": "create:polished_cut_diorite" - } + "X": "create:polished_cut_diorite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json index 0c0f227c26..84c67da2e6 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_stairs_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:polished_cut_diorite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_wall.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_wall.json index de25b354f8..40c3a62988 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_diorite" - } + "X": "create:polished_cut_diorite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json index ed7b145c44..f1c8e44756 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_diorite_wall_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:polished_cut_diorite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json index bde2376880..f9e8da5ed3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:polished_cut_dripstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab.json index 02856a3850..4f2de8ed07 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_dripstone_slab", "key": { - "X": { - "item": "create:polished_cut_dripstone" - } + "X": "create:polished_cut_dripstone" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json index 6ae0cbb2ef..2944fa30b3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_from_stone_types_dripstone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { "count": 2, "id": "create:polished_cut_dripstone_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_recycling.json index 232291afad..3f450d0806 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_dripstone_slab" - }, - { - "item": "create:polished_cut_dripstone_slab" - } + "create:polished_cut_dripstone_slab", + "create:polished_cut_dripstone_slab" ], "result": { - "count": 1, "id": "create:polished_cut_dripstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs.json index a46cabff6c..63fe9691ed 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_dripstone_stairs", "key": { - "X": { - "item": "create:polished_cut_dripstone" - } + "X": "create:polished_cut_dripstone" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json index 348da9c643..c871ca21ea 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_stairs_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:polished_cut_dripstone_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall.json index 6ae5c96945..fd8631ff95 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_dripstone" - } + "X": "create:polished_cut_dripstone" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json index 94c0e78b63..6ef61a82ba 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_dripstone_wall_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:polished_cut_dripstone_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json index 49a86b11e6..6c74e091f3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:polished_cut_granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_slab.json b/src/generated/resources/data/create/recipe/polished_cut_granite_slab.json index 25a26c258d..bca4c8f387 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_granite_slab", "key": { - "X": { - "item": "create:polished_cut_granite" - } + "X": "create:polished_cut_granite" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json index 3514c89e3b..44eeb8e8a6 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_slab_from_stone_types_granite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { "count": 2, "id": "create:polished_cut_granite_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_granite_slab_recycling.json index 855fea8418..1f59a77746 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_granite_slab" - }, - { - "item": "create:polished_cut_granite_slab" - } + "create:polished_cut_granite_slab", + "create:polished_cut_granite_slab" ], "result": { - "count": 1, "id": "create:polished_cut_granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_granite_stairs.json index a09221b35e..a0f832bf9b 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_granite_stairs", "key": { - "X": { - "item": "create:polished_cut_granite" - } + "X": "create:polished_cut_granite" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json index 39f5ec94ec..184084dc35 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_stairs_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:polished_cut_granite_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_wall.json b/src/generated/resources/data/create/recipe/polished_cut_granite_wall.json index ab5c1f478f..cdd90dca40 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_granite" - } + "X": "create:polished_cut_granite" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json index a26725682d..354ba66ee6 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_granite_wall_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:polished_cut_granite_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json index c28477cfe4..de9aec601d 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:polished_cut_limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab.json index a05dee441e..c843e8c6af 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_limestone_slab", "key": { - "X": { - "item": "create:polished_cut_limestone" - } + "X": "create:polished_cut_limestone" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json index 1df0cf949c..0f7325e944 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_from_stone_types_limestone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { "count": 2, "id": "create:polished_cut_limestone_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_recycling.json index 0976720b2f..5ce6013632 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_limestone_slab" - }, - { - "item": "create:polished_cut_limestone_slab" - } + "create:polished_cut_limestone_slab", + "create:polished_cut_limestone_slab" ], "result": { - "count": 1, "id": "create:polished_cut_limestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs.json index 16298f6215..bfdec6124a 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_limestone_stairs", "key": { - "X": { - "item": "create:polished_cut_limestone" - } + "X": "create:polished_cut_limestone" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json index 7b3317f2a9..4059bcec89 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_stairs_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:polished_cut_limestone_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_wall.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_wall.json index 4ccc08332a..b950b32387 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_limestone" - } + "X": "create:polished_cut_limestone" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json index 91ba439872..8dd16985f5 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_limestone_wall_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:polished_cut_limestone_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json index 737505aac9..c9219dbddf 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:polished_cut_ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab.json index ec917b1371..0d8b296ece 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_ochrum_slab", "key": { - "X": { - "item": "create:polished_cut_ochrum" - } + "X": "create:polished_cut_ochrum" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json index 6f05d7bcd8..e2b9265cd7 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_from_stone_types_ochrum_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { "count": 2, "id": "create:polished_cut_ochrum_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_recycling.json index 42639fdc91..0a549a736f 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_ochrum_slab" - }, - { - "item": "create:polished_cut_ochrum_slab" - } + "create:polished_cut_ochrum_slab", + "create:polished_cut_ochrum_slab" ], "result": { - "count": 1, "id": "create:polished_cut_ochrum" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs.json index f63ab47bda..dae2cf541c 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_ochrum_stairs", "key": { - "X": { - "item": "create:polished_cut_ochrum" - } + "X": "create:polished_cut_ochrum" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json index 41cd4002c8..be8d035d49 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_stairs_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:polished_cut_ochrum_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall.json index ef2abc2382..79027221dc 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_ochrum" - } + "X": "create:polished_cut_ochrum" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json index 15ca61065b..e9b4259ad1 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_ochrum_wall_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:polished_cut_ochrum_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json index bc0e1bc67c..a1a459c767 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:polished_cut_scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab.json index 9f77554360..e8a6ee0daa 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_scorchia_slab", "key": { - "X": { - "item": "create:polished_cut_scorchia" - } + "X": "create:polished_cut_scorchia" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json index e66b85cbdf..f7c1be7011 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_from_stone_types_scorchia_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { "count": 2, "id": "create:polished_cut_scorchia_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_recycling.json index 8982b2abd5..48666e2719 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_scorchia_slab" - }, - { - "item": "create:polished_cut_scorchia_slab" - } + "create:polished_cut_scorchia_slab", + "create:polished_cut_scorchia_slab" ], "result": { - "count": 1, "id": "create:polished_cut_scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs.json index 06b8b4f5a5..2704a33bb0 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_scorchia_stairs", "key": { - "X": { - "item": "create:polished_cut_scorchia" - } + "X": "create:polished_cut_scorchia" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json index d7b6fd79bc..9600127cf1 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_stairs_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:polished_cut_scorchia_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall.json index 3030ca0c4d..b87cafd5e0 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_scorchia" - } + "X": "create:polished_cut_scorchia" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json index 14dfc2208a..b33994b859 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scorchia_wall_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:polished_cut_scorchia_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json index 68e2a97e69..647dd93665 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:polished_cut_scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab.json index 8f216e583a..a39675a9c4 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_scoria_slab", "key": { - "X": { - "item": "create:polished_cut_scoria" - } + "X": "create:polished_cut_scoria" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json index e604a50de1..40212766a3 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_from_stone_types_scoria_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { "count": 2, "id": "create:polished_cut_scoria_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_recycling.json index 008acf4201..6f64b77e6d 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_scoria_slab" - }, - { - "item": "create:polished_cut_scoria_slab" - } + "create:polished_cut_scoria_slab", + "create:polished_cut_scoria_slab" ], "result": { - "count": 1, "id": "create:polished_cut_scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs.json index 7f65acd46c..17c61f7050 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_scoria_stairs", "key": { - "X": { - "item": "create:polished_cut_scoria" - } + "X": "create:polished_cut_scoria" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json index 652b2890c9..e05122f2b8 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_stairs_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:polished_cut_scoria_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_wall.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_wall.json index 7023490788..c26ce8106a 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_scoria" - } + "X": "create:polished_cut_scoria" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json index 28b72fcb93..3b60122756 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_scoria_wall_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:polished_cut_scoria_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json index de92fbcc49..8ace98d844 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:polished_cut_tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab.json index d30ae91d99..2b484fdcda 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_tuff_slab", "key": { - "X": { - "item": "create:polished_cut_tuff" - } + "X": "create:polished_cut_tuff" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json index 260361a499..b0555c4557 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_from_stone_types_tuff_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { "count": 2, "id": "create:polished_cut_tuff_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_recycling.json index bce5e31204..158b7795d6 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_tuff_slab" - }, - { - "item": "create:polished_cut_tuff_slab" - } + "create:polished_cut_tuff_slab", + "create:polished_cut_tuff_slab" ], "result": { - "count": 1, "id": "create:polished_cut_tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs.json index 73b9004666..400cc01f4f 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_tuff_stairs", "key": { - "X": { - "item": "create:polished_cut_tuff" - } + "X": "create:polished_cut_tuff" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json index 44c41857f1..7b2b72ed8c 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_stairs_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:polished_cut_tuff_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_wall.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_wall.json index d2e4670a41..676f45df13 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_tuff" - } + "X": "create:polished_cut_tuff" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json index 5385ba2b14..94da217203 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_tuff_wall_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:polished_cut_tuff_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json index 117d2e4a8f..6a474eefbd 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:polished_cut_veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab.json index 98f59427b9..77dc9c7e65 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_veridium_slab", "key": { - "X": { - "item": "create:polished_cut_veridium" - } + "X": "create:polished_cut_veridium" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json index b4831a30c1..b8a2921ec2 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_from_stone_types_veridium_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { "count": 2, "id": "create:polished_cut_veridium_slab" diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_recycling.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_recycling.json index 221b599c68..2ba1b3f900 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:polished_cut_veridium_slab" - }, - { - "item": "create:polished_cut_veridium_slab" - } + "create:polished_cut_veridium_slab", + "create:polished_cut_veridium_slab" ], "result": { - "count": 1, "id": "create:polished_cut_veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs.json index bb374122a5..ebd3c352a6 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "polished_cut_veridium_stairs", "key": { - "X": { - "item": "create:polished_cut_veridium" - } + "X": "create:polished_cut_veridium" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json index a5124b69ca..26cee14194 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_stairs_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:polished_cut_veridium_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_wall.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_wall.json index 8c93f6e55d..73f37bc873 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_wall.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:polished_cut_veridium" - } + "X": "create:polished_cut_veridium" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json index ea25962294..d284f3e694 100644 --- a/src/generated/resources/data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/polished_cut_veridium_wall_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:polished_cut_veridium_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/pressing/aether_dirt_path.json b/src/generated/resources/data/create/recipe/pressing/aether_dirt_path.json index 527ddb9047..e4d27f5980 100644 --- a/src/generated/resources/data/create/recipe/pressing/aether_dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/aether_dirt_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "aether:aether_dirt" diff --git a/src/generated/resources/data/create/recipe/pressing/aether_dirt_path_from_grass.json b/src/generated/resources/data/create/recipe/pressing/aether_dirt_path_from_grass.json index 85cdc3ba64..34cb0a8d28 100644 --- a/src/generated/resources/data/create/recipe/pressing/aether_dirt_path_from_grass.json +++ b/src/generated/resources/data/create/recipe/pressing/aether_dirt_path_from_grass.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "aether:aether_grass_block" diff --git a/src/generated/resources/data/create/recipe/pressing/brass_ingot.json b/src/generated/resources/data/create/recipe/pressing/brass_ingot.json index 7ad81e49a9..267010c62a 100644 --- a/src/generated/resources/data/create/recipe/pressing/brass_ingot.json +++ b/src/generated/resources/data/create/recipe/pressing/brass_ingot.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/brass" - } + "#c:ingots/brass" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/cardboard.json b/src/generated/resources/data/create/recipe/pressing/cardboard.json index af4da7260a..9785e6bdf2 100644 --- a/src/generated/resources/data/create/recipe/pressing/cardboard.json +++ b/src/generated/resources/data/create/recipe/pressing/cardboard.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "create:pulp" - } + "create:pulp" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/atmospheric/crustose_path.json b/src/generated/resources/data/create/recipe/pressing/compat/atmospheric/crustose_path.json index 74d3fb3983..9e41fcae94 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/atmospheric/crustose_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/atmospheric/crustose_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:crustose" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json index 1c13bd472e..2a1c0ff0b1 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/amber_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:amber_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json index 432e333b15..c0a1c80cde 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/cave_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:cave_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json index 8850b0d9e0..7fac40a01f 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/chorus_nylium_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:chorus_nylium" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json index a37eeb2f12..9f7d77b7e7 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/crystal_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:crystal_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_moss_path.json index 3317427a2f..671c515fbb 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:end_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json index 0888b1fafc..ea157b64b2 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/end_mycelium_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:end_mycelium" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json index ef8f7cdbc8..34071cbb5f 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/jungle_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:jungle_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json index bce832059e..066fc53276 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/pink_moss_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:pink_moss" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json index 330104e99d..d00a050d35 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/betterendforge/shadow_grass_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "betterendforge:shadow_grass" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json index 7902a63948..a3cde0ccde 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_dirt_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:lush_dirt" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json index 21cd44c282..4ab6c74a33 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/lush_grass_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:lush_grass_block" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json index ecdd0e2411..e8407fae45 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/biomeswevegone/sandy_dirt_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "biomeswevegone:sandy_dirt" diff --git a/src/generated/resources/data/create/recipe/pressing/compat/environmental/dirt_path.json b/src/generated/resources/data/create/recipe/pressing/compat/environmental/dirt_path.json index addb9cccf4..d69129a128 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/environmental/dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/environmental/dirt_path.json @@ -8,15 +8,9 @@ "type": "create:pressing", "ingredients": [ [ - { - "item": "minecraft:dirt" - }, - { - "item": "minecraft:coarse_dirt" - }, - { - "item": "minecraft:rooted_dirt" - } + "minecraft:dirt", + "minecraft:coarse_dirt", + "minecraft:rooted_dirt" ] ], "results": [ diff --git a/src/generated/resources/data/create/recipe/pressing/compat/environmental/mycelium_path.json b/src/generated/resources/data/create/recipe/pressing/compat/environmental/mycelium_path.json index 661d816660..a3c5108fe2 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/environmental/mycelium_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/environmental/mycelium_path.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:mycelium" - } + "minecraft:mycelium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/environmental/podzol_path.json b/src/generated/resources/data/create/recipe/pressing/compat/environmental/podzol_path.json index c97433b846..e9189f142b 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/environmental/podzol_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/environmental/podzol_path.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:podzol" - } + "minecraft:podzol" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json index f685359d1f..0e144bcb67 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_aluminum.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/aluminum" - } + "#c:ingots/aluminum" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json index 21927ff88d..a0283ed0d8 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_constantan.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/constantan" - } + "#c:ingots/constantan" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json index d44c272d35..314e5eab07 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_electrum.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/electrum" - } + "#c:ingots/electrum" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json index fb358d681e..1b7988fd3f 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_lead.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/lead" - } + "#c:ingots/lead" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json index f01bd68efb..fc11b0abb0 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_nickel.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/nickel" - } + "#c:ingots/nickel" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json index 1f6c34f455..b67251f91a 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_silver.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/silver" - } + "#c:ingots/silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json index 00df53ab92..487c1dfd38 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_steel.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/steel" - } + "#c:ingots/steel" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json index 7bb06a197b..877dfadb85 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/immersiveengineering/plate_uranium.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/uranium" - } + "#c:ingots/uranium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json index 2fe348a49a..4bf9698893 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/crimson_nylium_path.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:crimson_nylium" - } + "minecraft:crimson_nylium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json index a7a4672189..1f35733139 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/soul_soil_path.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:soul_soil" - } + "minecraft:soul_soil" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json index 02b9c0b14b..c555475bce 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/infernalexp/warped_nylium_path.json @@ -7,9 +7,7 @@ ], "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:warped_nylium" - } + "minecraft:warped_nylium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json b/src/generated/resources/data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json index 8c09ace84f..3269587f40 100644 --- a/src/generated/resources/data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json +++ b/src/generated/resources/data/create/recipe/pressing/compat/vampirism/cursed_earth_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "vampirism:cursed_earth" diff --git a/src/generated/resources/data/create/recipe/pressing/copper_ingot.json b/src/generated/resources/data/create/recipe/pressing/copper_ingot.json index b7de2eba83..3b06b2d286 100644 --- a/src/generated/resources/data/create/recipe/pressing/copper_ingot.json +++ b/src/generated/resources/data/create/recipe/pressing/copper_ingot.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/copper" - } + "#c:ingots/copper" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/cursed_earth_path_from_grass.json b/src/generated/resources/data/create/recipe/pressing/cursed_earth_path_from_grass.json index d721ca0134..9c43144bc6 100644 --- a/src/generated/resources/data/create/recipe/pressing/cursed_earth_path_from_grass.json +++ b/src/generated/resources/data/create/recipe/pressing/cursed_earth_path_from_grass.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "vampirism:cursed_grass" diff --git a/src/generated/resources/data/create/recipe/pressing/gold_ingot.json b/src/generated/resources/data/create/recipe/pressing/gold_ingot.json index 68f3a3ff65..f155bd457d 100644 --- a/src/generated/resources/data/create/recipe/pressing/gold_ingot.json +++ b/src/generated/resources/data/create/recipe/pressing/gold_ingot.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/gold" - } + "#c:ingots/gold" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/iron_ingot.json b/src/generated/resources/data/create/recipe/pressing/iron_ingot.json index f17f9a4394..c094a8b870 100644 --- a/src/generated/resources/data/create/recipe/pressing/iron_ingot.json +++ b/src/generated/resources/data/create/recipe/pressing/iron_ingot.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "tag": "c:ingots/iron" - } + "#c:ingots/iron" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/path.json b/src/generated/resources/data/create/recipe/pressing/path.json index 4dce6c1e8a..a42eacd731 100644 --- a/src/generated/resources/data/create/recipe/pressing/path.json +++ b/src/generated/resources/data/create/recipe/pressing/path.json @@ -11,21 +11,11 @@ "type": "create:pressing", "ingredients": [ [ - { - "item": "minecraft:dirt" - }, - { - "item": "minecraft:coarse_dirt" - }, - { - "item": "minecraft:rooted_dirt" - }, - { - "item": "minecraft:mycelium" - }, - { - "item": "minecraft:podzol" - } + "minecraft:dirt", + "minecraft:coarse_dirt", + "minecraft:rooted_dirt", + "minecraft:mycelium", + "minecraft:podzol" ] ], "results": [ diff --git a/src/generated/resources/data/create/recipe/pressing/path_from_grass.json b/src/generated/resources/data/create/recipe/pressing/path_from_grass.json index 321ca74b88..1dacad7827 100644 --- a/src/generated/resources/data/create/recipe/pressing/path_from_grass.json +++ b/src/generated/resources/data/create/recipe/pressing/path_from_grass.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:grass_block" - } + "minecraft:grass_block" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/pressing/peat_dirt_path.json b/src/generated/resources/data/create/recipe/pressing/peat_dirt_path.json index 450356bfd3..3f99cab3a1 100644 --- a/src/generated/resources/data/create/recipe/pressing/peat_dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/peat_dirt_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:peat_dirt" diff --git a/src/generated/resources/data/create/recipe/pressing/peat_dirt_path_from_grass.json b/src/generated/resources/data/create/recipe/pressing/peat_dirt_path_from_grass.json index fa3853db17..06b85b04c7 100644 --- a/src/generated/resources/data/create/recipe/pressing/peat_dirt_path_from_grass.json +++ b/src/generated/resources/data/create/recipe/pressing/peat_dirt_path_from_grass.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:peat_grass_block" diff --git a/src/generated/resources/data/create/recipe/pressing/silt_dirt_path.json b/src/generated/resources/data/create/recipe/pressing/silt_dirt_path.json index b51b336590..3c3bf8a45e 100644 --- a/src/generated/resources/data/create/recipe/pressing/silt_dirt_path.json +++ b/src/generated/resources/data/create/recipe/pressing/silt_dirt_path.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silt_dirt" diff --git a/src/generated/resources/data/create/recipe/pressing/silt_dirt_path_from_grass.json b/src/generated/resources/data/create/recipe/pressing/silt_dirt_path_from_grass.json index c330ba9504..9c55dfc19f 100644 --- a/src/generated/resources/data/create/recipe/pressing/silt_dirt_path_from_grass.json +++ b/src/generated/resources/data/create/recipe/pressing/silt_dirt_path_from_grass.json @@ -8,7 +8,7 @@ "type": "create:pressing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "regions_unexplored:silt_grass_block" diff --git a/src/generated/resources/data/create/recipe/pressing/sugar_cane.json b/src/generated/resources/data/create/recipe/pressing/sugar_cane.json index 336a9b1518..ab13648bd2 100644 --- a/src/generated/resources/data/create/recipe/pressing/sugar_cane.json +++ b/src/generated/resources/data/create/recipe/pressing/sugar_cane.json @@ -1,9 +1,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "minecraft:sugar_cane" - } + "minecraft:sugar_cane" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json b/src/generated/resources/data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json index 0d00b044b3..1302f30afd 100644 --- a/src/generated/resources/data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json +++ b/src/generated/resources/data/create/recipe/rose_quartz_block_from_rose_quartz_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:rose_quartz" - }, + "ingredient": "create:rose_quartz", "result": { "count": 2, "id": "create:rose_quartz_block" diff --git a/src/generated/resources/data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json b/src/generated/resources/data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json index 58b4f75484..4acd5efb41 100644 --- a/src/generated/resources/data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json +++ b/src/generated/resources/data/create/recipe/rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_rose_quartz" - }, + "ingredient": "create:polished_rose_quartz", "result": { "count": 2, "id": "create:rose_quartz_tiles" diff --git a/src/generated/resources/data/create/recipe/sandpaper_polishing/rose_quartz.json b/src/generated/resources/data/create/recipe/sandpaper_polishing/rose_quartz.json index 0139a905da..5f573c4a1f 100644 --- a/src/generated/resources/data/create/recipe/sandpaper_polishing/rose_quartz.json +++ b/src/generated/resources/data/create/recipe/sandpaper_polishing/rose_quartz.json @@ -1,9 +1,7 @@ { "type": "create:sandpaper_polishing", "ingredients": [ - { - "item": "create:rose_quartz" - } + "create:rose_quartz" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json index 971ecbd1b8..5a7b99cd2f 100644 --- a/src/generated/resources/data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/scorchia_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:scorchia" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json index 9506396d34..b068160db1 100644 --- a/src/generated/resources/data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/scorchia_pillar_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:scorchia_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json index e18a7a510d..b99877dd58 100644 --- a/src/generated/resources/data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/scoria_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json index 2bcdd6be9b..c8bc89d4c5 100644 --- a/src/generated/resources/data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/scoria_pillar_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:scoria_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/sequenced_assembly/precision_mechanism.json b/src/generated/resources/data/create/recipe/sequenced_assembly/precision_mechanism.json index 9050d70719..09bca0862e 100644 --- a/src/generated/resources/data/create/recipe/sequenced_assembly/precision_mechanism.json +++ b/src/generated/resources/data/create/recipe/sequenced_assembly/precision_mechanism.json @@ -1,8 +1,6 @@ { "type": "create:sequenced_assembly", - "ingredient": { - "tag": "c:plates/gold" - }, + "ingredient": "#c:plates/gold", "loops": 5, "results": [ { @@ -44,12 +42,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:incomplete_precision_mechanism" - }, - { - "item": "create:cogwheel" - } + "create:incomplete_precision_mechanism", + "create:cogwheel" ], "results": [ { @@ -60,12 +54,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:incomplete_precision_mechanism" - }, - { - "item": "create:large_cogwheel" - } + "create:incomplete_precision_mechanism", + "create:large_cogwheel" ], "results": [ { @@ -76,12 +66,8 @@ { "type": "create:deploying", "ingredients": [ - { - "item": "create:incomplete_precision_mechanism" - }, - { - "tag": "c:nuggets/iron" - } + "create:incomplete_precision_mechanism", + "#c:nuggets/iron" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/sequenced_assembly/sturdy_sheet.json b/src/generated/resources/data/create/recipe/sequenced_assembly/sturdy_sheet.json index 58e37d2ec2..f281dc48fb 100644 --- a/src/generated/resources/data/create/recipe/sequenced_assembly/sturdy_sheet.json +++ b/src/generated/resources/data/create/recipe/sequenced_assembly/sturdy_sheet.json @@ -1,8 +1,6 @@ { "type": "create:sequenced_assembly", - "ingredient": { - "tag": "c:dusts/obsidian" - }, + "ingredient": "#c:dusts/obsidian", "results": [ { "id": "create:sturdy_sheet" @@ -12,13 +10,11 @@ { "type": "create:filling", "ingredients": [ + "create:unprocessed_obsidian_sheet", { - "item": "create:unprocessed_obsidian_sheet" - }, - { - "type": "neoforge:single", + "type": "neoforge:simple", "amount": 500, - "fluid": "minecraft:lava" + "ingredient": "minecraft:lava" } ], "results": [ @@ -30,9 +26,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "create:unprocessed_obsidian_sheet" - } + "create:unprocessed_obsidian_sheet" ], "results": [ { @@ -43,9 +37,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "create:unprocessed_obsidian_sheet" - } + "create:unprocessed_obsidian_sheet" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/sequenced_assembly/track.json b/src/generated/resources/data/create/recipe/sequenced_assembly/track.json index 670e962dd9..559438d5d1 100644 --- a/src/generated/resources/data/create/recipe/sequenced_assembly/track.json +++ b/src/generated/resources/data/create/recipe/sequenced_assembly/track.json @@ -1,8 +1,6 @@ { "type": "create:sequenced_assembly", - "ingredient": { - "tag": "create:sleepers" - }, + "ingredient": "#create:sleepers", "results": [ { "id": "create:track" @@ -12,17 +10,14 @@ { "type": "create:deploying", "ingredients": [ + "create:incomplete_track", { - "item": "create:incomplete_track" - }, - [ - { - "tag": "c:nuggets/iron" - }, - { - "tag": "c:nuggets/zinc" - } - ] + "neoforge:ingredient_type": "neoforge:compound", + "children": [ + "#c:nuggets/iron", + "#c:nuggets/zinc" + ] + } ], "results": [ { @@ -33,17 +28,14 @@ { "type": "create:deploying", "ingredients": [ + "create:incomplete_track", { - "item": "create:incomplete_track" - }, - [ - { - "tag": "c:nuggets/iron" - }, - { - "tag": "c:nuggets/zinc" - } - ] + "neoforge:ingredient_type": "neoforge:compound", + "children": [ + "#c:nuggets/iron", + "#c:nuggets/zinc" + ] + } ], "results": [ { @@ -54,9 +46,7 @@ { "type": "create:pressing", "ingredients": [ - { - "item": "create:incomplete_track" - } + "create:incomplete_track" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_slab.json b/src/generated/resources/data/create/recipe/small_andesite_brick_slab.json index 8802afe28c..e58a66c947 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_andesite_brick_slab", "key": { - "X": { - "item": "create:small_andesite_bricks" - } + "X": "create:small_andesite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json index 0ff023109f..dc21f540f5 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_slab_from_stone_types_andesite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { "count": 2, "id": "create:small_andesite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_andesite_brick_slab_recycling.json index 0ef1acd54c..2c8eed9573 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_andesite_brick_slab" - }, - { - "item": "create:small_andesite_brick_slab" - } + "create:small_andesite_brick_slab", + "create:small_andesite_brick_slab" ], "result": { - "count": 1, "id": "create:small_andesite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_stairs.json b/src/generated/resources/data/create/recipe/small_andesite_brick_stairs.json index b748aecaf9..d579a09ea5 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_andesite_brick_stairs", "key": { - "X": { - "item": "create:small_andesite_bricks" - } + "X": "create:small_andesite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json index e1b3415e47..6e792ace63 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_stairs_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:small_andesite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_wall.json b/src/generated/resources/data/create/recipe/small_andesite_brick_wall.json index fa0cda7d72..0c9846cdeb 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_andesite_bricks" - } + "X": "create:small_andesite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json index 1a25b52b26..b006774741 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_andesite_brick_wall_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:small_andesite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json b/src/generated/resources/data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json index 4287ccca08..986fc22613 100644 --- a/src/generated/resources/data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_andesite_bricks_from_stone_types_andesite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/andesite" - }, + "ingredient": "#create:stone_types/andesite", "result": { - "count": 1, "id": "create:small_andesite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_slab.json b/src/generated/resources/data/create/recipe/small_asurine_brick_slab.json index 984090f540..137fac6212 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_asurine_brick_slab", "key": { - "X": { - "item": "create:small_asurine_bricks" - } + "X": "create:small_asurine_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json index c5ef9d0018..ded195e096 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_slab_from_stone_types_asurine_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { "count": 2, "id": "create:small_asurine_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_asurine_brick_slab_recycling.json index 7b4b13698e..b30770d10c 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_asurine_brick_slab" - }, - { - "item": "create:small_asurine_brick_slab" - } + "create:small_asurine_brick_slab", + "create:small_asurine_brick_slab" ], "result": { - "count": 1, "id": "create:small_asurine_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_stairs.json b/src/generated/resources/data/create/recipe/small_asurine_brick_stairs.json index 257f95b1ca..238a94e6a3 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_asurine_brick_stairs", "key": { - "X": { - "item": "create:small_asurine_bricks" - } + "X": "create:small_asurine_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json index 48ae91bebd..8e13fc9acc 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_stairs_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:small_asurine_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_wall.json b/src/generated/resources/data/create/recipe/small_asurine_brick_wall.json index 2ee2cd05af..ee5c13fa68 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_asurine_bricks" - } + "X": "create:small_asurine_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json index 4ee7409a7f..1c92d7190c 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_asurine_brick_wall_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:small_asurine_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json b/src/generated/resources/data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json index 308f2a16a8..dd387e8532 100644 --- a/src/generated/resources/data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_asurine_bricks_from_stone_types_asurine_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/asurine" - }, + "ingredient": "#create:stone_types/asurine", "result": { - "count": 1, "id": "create:small_asurine_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_slab.json b/src/generated/resources/data/create/recipe/small_calcite_brick_slab.json index fac56535ad..aaed668786 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_calcite_brick_slab", "key": { - "X": { - "item": "create:small_calcite_bricks" - } + "X": "create:small_calcite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json index 6e2ab83942..4fd461f7a3 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_slab_from_stone_types_calcite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { "count": 2, "id": "create:small_calcite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_calcite_brick_slab_recycling.json index d332cef621..6c784b6f59 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_calcite_brick_slab" - }, - { - "item": "create:small_calcite_brick_slab" - } + "create:small_calcite_brick_slab", + "create:small_calcite_brick_slab" ], "result": { - "count": 1, "id": "create:small_calcite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_stairs.json b/src/generated/resources/data/create/recipe/small_calcite_brick_stairs.json index 9b1c82fa69..97e4ff5ad3 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_calcite_brick_stairs", "key": { - "X": { - "item": "create:small_calcite_bricks" - } + "X": "create:small_calcite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json index bf1244e31a..f7bc8addf9 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_stairs_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:small_calcite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_wall.json b/src/generated/resources/data/create/recipe/small_calcite_brick_wall.json index a02a8dde5f..14141c1f5b 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_calcite_bricks" - } + "X": "create:small_calcite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json index ce03cab1a2..5b0d235d01 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_calcite_brick_wall_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:small_calcite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json b/src/generated/resources/data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json index ce9d4fe274..ec9dbeabfd 100644 --- a/src/generated/resources/data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_calcite_bricks_from_stone_types_calcite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/calcite" - }, + "ingredient": "#create:stone_types/calcite", "result": { - "count": 1, "id": "create:small_calcite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab.json index 865d1dd165..970cecd06c 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_crimsite_brick_slab", "key": { - "X": { - "item": "create:small_crimsite_bricks" - } + "X": "create:small_crimsite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json index bfe5508c84..eafb96b8e0 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_from_stone_types_crimsite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { "count": 2, "id": "create:small_crimsite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_recycling.json index 56a90bad45..592b474e29 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_crimsite_brick_slab" - }, - { - "item": "create:small_crimsite_brick_slab" - } + "create:small_crimsite_brick_slab", + "create:small_crimsite_brick_slab" ], "result": { - "count": 1, "id": "create:small_crimsite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs.json index e9c709d5a4..a61d63a8e7 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_crimsite_brick_stairs", "key": { - "X": { - "item": "create:small_crimsite_bricks" - } + "X": "create:small_crimsite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json index fc047aa01e..614edb194c 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_stairs_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:small_crimsite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_wall.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_wall.json index f8538588f9..d1b18cf793 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_crimsite_bricks" - } + "X": "create:small_crimsite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json index 21d7b2b3bd..bd4876f20f 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_brick_wall_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:small_crimsite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json b/src/generated/resources/data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json index 7067fe610f..e033296321 100644 --- a/src/generated/resources/data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_crimsite_bricks_from_stone_types_crimsite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/crimsite" - }, + "ingredient": "#create:stone_types/crimsite", "result": { - "count": 1, "id": "create:small_crimsite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab.json index a160023eff..25134a2cef 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_deepslate_brick_slab", "key": { - "X": { - "item": "create:small_deepslate_bricks" - } + "X": "create:small_deepslate_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json index 8b0fb555f5..30d01fca04 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_from_stone_types_deepslate_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { "count": 2, "id": "create:small_deepslate_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_recycling.json index 1f926df3ff..118266c8e7 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_deepslate_brick_slab" - }, - { - "item": "create:small_deepslate_brick_slab" - } + "create:small_deepslate_brick_slab", + "create:small_deepslate_brick_slab" ], "result": { - "count": 1, "id": "create:small_deepslate_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs.json index d72c407fcf..7a94806a00 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_deepslate_brick_stairs", "key": { - "X": { - "item": "create:small_deepslate_bricks" - } + "X": "create:small_deepslate_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json index 24f97a7816..fc60f02f8c 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_stairs_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:small_deepslate_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_wall.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_wall.json index 574b42d30b..5b716230bc 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_deepslate_bricks" - } + "X": "create:small_deepslate_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json index 52ac7b2815..a23665b000 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_brick_wall_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:small_deepslate_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json b/src/generated/resources/data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json index ec834e27c8..ecb22f2276 100644 --- a/src/generated/resources/data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_deepslate_bricks_from_stone_types_deepslate_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/deepslate" - }, + "ingredient": "#create:stone_types/deepslate", "result": { - "count": 1, "id": "create:small_deepslate_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_slab.json b/src/generated/resources/data/create/recipe/small_diorite_brick_slab.json index 3e2322e1fb..0710d6d634 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_diorite_brick_slab", "key": { - "X": { - "item": "create:small_diorite_bricks" - } + "X": "create:small_diorite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json index 82eac6a563..226c691614 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_slab_from_stone_types_diorite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { "count": 2, "id": "create:small_diorite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_diorite_brick_slab_recycling.json index 6046bd16e4..4e0ec0af97 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_diorite_brick_slab" - }, - { - "item": "create:small_diorite_brick_slab" - } + "create:small_diorite_brick_slab", + "create:small_diorite_brick_slab" ], "result": { - "count": 1, "id": "create:small_diorite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_stairs.json b/src/generated/resources/data/create/recipe/small_diorite_brick_stairs.json index c783c8a878..b083608fd1 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_diorite_brick_stairs", "key": { - "X": { - "item": "create:small_diorite_bricks" - } + "X": "create:small_diorite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json index 28b50bd824..4e24adec30 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_stairs_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:small_diorite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_wall.json b/src/generated/resources/data/create/recipe/small_diorite_brick_wall.json index adc5f5ed30..281e8aa66b 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_diorite_bricks" - } + "X": "create:small_diorite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json index dc694ed14d..46b621e1a6 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_diorite_brick_wall_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:small_diorite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json b/src/generated/resources/data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json index 6ca9136a2f..8cb3f952df 100644 --- a/src/generated/resources/data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_diorite_bricks_from_stone_types_diorite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/diorite" - }, + "ingredient": "#create:stone_types/diorite", "result": { - "count": 1, "id": "create:small_diorite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab.json index 9dba978c85..0f8f5a85ef 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_dripstone_brick_slab", "key": { - "X": { - "item": "create:small_dripstone_bricks" - } + "X": "create:small_dripstone_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json index f059e62119..1cd9bd1676 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_from_stone_types_dripstone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { "count": 2, "id": "create:small_dripstone_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_recycling.json index fd43fe10f9..5868e21815 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_dripstone_brick_slab" - }, - { - "item": "create:small_dripstone_brick_slab" - } + "create:small_dripstone_brick_slab", + "create:small_dripstone_brick_slab" ], "result": { - "count": 1, "id": "create:small_dripstone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs.json index 2ae2ccb96f..62a1c08465 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_dripstone_brick_stairs", "key": { - "X": { - "item": "create:small_dripstone_bricks" - } + "X": "create:small_dripstone_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json index 49cbb77ef2..737307bed6 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_stairs_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:small_dripstone_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_wall.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_wall.json index 7e7a92ff4b..e83e4b5897 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_dripstone_bricks" - } + "X": "create:small_dripstone_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json index 73691eedab..aa67574b08 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_brick_wall_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:small_dripstone_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json b/src/generated/resources/data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json index 150e9db01b..8f4fb0f537 100644 --- a/src/generated/resources/data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_dripstone_bricks_from_stone_types_dripstone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/dripstone" - }, + "ingredient": "#create:stone_types/dripstone", "result": { - "count": 1, "id": "create:small_dripstone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_slab.json b/src/generated/resources/data/create/recipe/small_granite_brick_slab.json index fa1132f2e9..54b5a5e9d3 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_granite_brick_slab", "key": { - "X": { - "item": "create:small_granite_bricks" - } + "X": "create:small_granite_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json index fa6d072558..3179faf9c4 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_slab_from_stone_types_granite_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { "count": 2, "id": "create:small_granite_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_granite_brick_slab_recycling.json index d51f40e7ef..79061df7f2 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_granite_brick_slab" - }, - { - "item": "create:small_granite_brick_slab" - } + "create:small_granite_brick_slab", + "create:small_granite_brick_slab" ], "result": { - "count": 1, "id": "create:small_granite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_stairs.json b/src/generated/resources/data/create/recipe/small_granite_brick_stairs.json index f71aeb9cae..9608ae740b 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_granite_brick_stairs", "key": { - "X": { - "item": "create:small_granite_bricks" - } + "X": "create:small_granite_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json index 74964f8613..61648d7480 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_stairs_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:small_granite_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_wall.json b/src/generated/resources/data/create/recipe/small_granite_brick_wall.json index 0ff6835b7f..1ab5104f66 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_granite_bricks" - } + "X": "create:small_granite_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json index e7105ea779..1434542523 100644 --- a/src/generated/resources/data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_granite_brick_wall_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:small_granite_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json b/src/generated/resources/data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json index 6a4d805258..c91765dd7a 100644 --- a/src/generated/resources/data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_granite_bricks_from_stone_types_granite_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/granite" - }, + "ingredient": "#create:stone_types/granite", "result": { - "count": 1, "id": "create:small_granite_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_slab.json b/src/generated/resources/data/create/recipe/small_limestone_brick_slab.json index 08a46debf2..d7d067035e 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_limestone_brick_slab", "key": { - "X": { - "item": "create:small_limestone_bricks" - } + "X": "create:small_limestone_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json index f93e504d93..1715f0648f 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_slab_from_stone_types_limestone_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { "count": 2, "id": "create:small_limestone_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_limestone_brick_slab_recycling.json index b388edf4eb..ba718f4288 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_limestone_brick_slab" - }, - { - "item": "create:small_limestone_brick_slab" - } + "create:small_limestone_brick_slab", + "create:small_limestone_brick_slab" ], "result": { - "count": 1, "id": "create:small_limestone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_stairs.json b/src/generated/resources/data/create/recipe/small_limestone_brick_stairs.json index 31c32f7b71..64dcb3f3f8 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_limestone_brick_stairs", "key": { - "X": { - "item": "create:small_limestone_bricks" - } + "X": "create:small_limestone_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json index 68602503e9..9dd6111dab 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_stairs_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:small_limestone_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_wall.json b/src/generated/resources/data/create/recipe/small_limestone_brick_wall.json index 2375dea815..7ca516a1b3 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_limestone_bricks" - } + "X": "create:small_limestone_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json index 8e8df71a6a..ab53350932 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_limestone_brick_wall_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:small_limestone_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json b/src/generated/resources/data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json index efe6fd70b2..bf7d6ea339 100644 --- a/src/generated/resources/data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_limestone_bricks_from_stone_types_limestone_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/limestone" - }, + "ingredient": "#create:stone_types/limestone", "result": { - "count": 1, "id": "create:small_limestone_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab.json index 90ceb41625..0dc909269e 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_ochrum_brick_slab", "key": { - "X": { - "item": "create:small_ochrum_bricks" - } + "X": "create:small_ochrum_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json index 0b2f26f61a..b89a3d4169 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_from_stone_types_ochrum_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { "count": 2, "id": "create:small_ochrum_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_recycling.json index cf2ff80b1a..40e2a33860 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_ochrum_brick_slab" - }, - { - "item": "create:small_ochrum_brick_slab" - } + "create:small_ochrum_brick_slab", + "create:small_ochrum_brick_slab" ], "result": { - "count": 1, "id": "create:small_ochrum_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs.json index 008304db7a..52c1944dc8 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_ochrum_brick_stairs", "key": { - "X": { - "item": "create:small_ochrum_bricks" - } + "X": "create:small_ochrum_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json index f7dcb1870a..45ecf88c35 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_stairs_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:small_ochrum_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_wall.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_wall.json index bfee6ef9fc..7ee867bf14 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_ochrum_bricks" - } + "X": "create:small_ochrum_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json index 00a2cfe81d..6acc2a67a6 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_brick_wall_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:small_ochrum_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json b/src/generated/resources/data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json index 8a849eb66e..c8a08de306 100644 --- a/src/generated/resources/data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_ochrum_bricks_from_stone_types_ochrum_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/ochrum" - }, + "ingredient": "#create:stone_types/ochrum", "result": { - "count": 1, "id": "create:small_ochrum_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json b/src/generated/resources/data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json index 6a77e88ab1..3752289878 100644 --- a/src/generated/resources/data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_rose_quartz_tiles_from_polished_rose_quartz_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_rose_quartz" - }, + "ingredient": "create:polished_rose_quartz", "result": { "count": 2, "id": "create:small_rose_quartz_tiles" diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab.json index 47cc406f59..e49ef218e7 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_scorchia_brick_slab", "key": { - "X": { - "item": "create:small_scorchia_bricks" - } + "X": "create:small_scorchia_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json index 1fd31edebe..8fcd3e413d 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_from_stone_types_scorchia_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { "count": 2, "id": "create:small_scorchia_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_recycling.json index 66562e23a4..22899e5972 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_scorchia_brick_slab" - }, - { - "item": "create:small_scorchia_brick_slab" - } + "create:small_scorchia_brick_slab", + "create:small_scorchia_brick_slab" ], "result": { - "count": 1, "id": "create:small_scorchia_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs.json index c1eebe523c..f5eb5dd805 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_scorchia_brick_stairs", "key": { - "X": { - "item": "create:small_scorchia_bricks" - } + "X": "create:small_scorchia_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json index 878967263b..e9a47247fd 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_stairs_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:small_scorchia_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_wall.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_wall.json index 7eeb255369..ae0e05e2ea 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_scorchia_bricks" - } + "X": "create:small_scorchia_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json index e7570a2753..f45f105308 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_brick_wall_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:small_scorchia_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json b/src/generated/resources/data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json index 4eef4ed4d8..3e50e657a6 100644 --- a/src/generated/resources/data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scorchia_bricks_from_stone_types_scorchia_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scorchia" - }, + "ingredient": "#create:stone_types/scorchia", "result": { - "count": 1, "id": "create:small_scorchia_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_slab.json b/src/generated/resources/data/create/recipe/small_scoria_brick_slab.json index 7e65e2c60e..ea984587a8 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_scoria_brick_slab", "key": { - "X": { - "item": "create:small_scoria_bricks" - } + "X": "create:small_scoria_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json index a9e2d2ed39..a6b4a90764 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_slab_from_stone_types_scoria_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { "count": 2, "id": "create:small_scoria_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_scoria_brick_slab_recycling.json index 4c8393a69f..c728c865fa 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_scoria_brick_slab" - }, - { - "item": "create:small_scoria_brick_slab" - } + "create:small_scoria_brick_slab", + "create:small_scoria_brick_slab" ], "result": { - "count": 1, "id": "create:small_scoria_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_stairs.json b/src/generated/resources/data/create/recipe/small_scoria_brick_stairs.json index ee3846bc43..893cef7cad 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_scoria_brick_stairs", "key": { - "X": { - "item": "create:small_scoria_bricks" - } + "X": "create:small_scoria_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json index ef069073cf..39264da5d4 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_stairs_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:small_scoria_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_wall.json b/src/generated/resources/data/create/recipe/small_scoria_brick_wall.json index 31cb2f6779..90673dbd1a 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_scoria_bricks" - } + "X": "create:small_scoria_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json index 944b0c38c3..2fe0bba78c 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scoria_brick_wall_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:small_scoria_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json b/src/generated/resources/data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json index b5c510fd52..1714e0dbea 100644 --- a/src/generated/resources/data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_scoria_bricks_from_stone_types_scoria_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/scoria" - }, + "ingredient": "#create:stone_types/scoria", "result": { - "count": 1, "id": "create:small_scoria_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_slab.json b/src/generated/resources/data/create/recipe/small_tuff_brick_slab.json index b4ace1afc6..22bb96fad9 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_tuff_brick_slab", "key": { - "X": { - "item": "create:small_tuff_bricks" - } + "X": "create:small_tuff_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json index 2083cb78b6..0990bd1777 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_slab_from_stone_types_tuff_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { "count": 2, "id": "create:small_tuff_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_tuff_brick_slab_recycling.json index 7efc247fc3..6fa6f11c9a 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_tuff_brick_slab" - }, - { - "item": "create:small_tuff_brick_slab" - } + "create:small_tuff_brick_slab", + "create:small_tuff_brick_slab" ], "result": { - "count": 1, "id": "create:small_tuff_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_stairs.json b/src/generated/resources/data/create/recipe/small_tuff_brick_stairs.json index 6ac2ad838d..d73b008e83 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_tuff_brick_stairs", "key": { - "X": { - "item": "create:small_tuff_bricks" - } + "X": "create:small_tuff_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json index 1c1ab7b967..6189f43b2c 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_stairs_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:small_tuff_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_wall.json b/src/generated/resources/data/create/recipe/small_tuff_brick_wall.json index c2bd6037d9..d142b3a97d 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_tuff_bricks" - } + "X": "create:small_tuff_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json index 0e86df7906..5ae94157de 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_tuff_brick_wall_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:small_tuff_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json index d9d02bc0ce..6e34d97e5f 100644 --- a/src/generated/resources/data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_tuff_bricks_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:small_tuff_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_slab.json b/src/generated/resources/data/create/recipe/small_veridium_brick_slab.json index ed99758d69..ded2083dd9 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_slab.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_slab.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_veridium_brick_slab", "key": { - "X": { - "item": "create:small_veridium_bricks" - } + "X": "create:small_veridium_bricks" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json index 92c89b812a..4a5148fadd 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_slab_from_stone_types_veridium_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { "count": 2, "id": "create:small_veridium_brick_slab" diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_slab_recycling.json b/src/generated/resources/data/create/recipe/small_veridium_brick_slab_recycling.json index 9b662ab636..913a220ad6 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_slab_recycling.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_slab_recycling.json @@ -2,15 +2,10 @@ "type": "minecraft:crafting_shapeless", "category": "building", "ingredients": [ - { - "item": "create:small_veridium_brick_slab" - }, - { - "item": "create:small_veridium_brick_slab" - } + "create:small_veridium_brick_slab", + "create:small_veridium_brick_slab" ], "result": { - "count": 1, "id": "create:small_veridium_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_stairs.json b/src/generated/resources/data/create/recipe/small_veridium_brick_stairs.json index b901b10b86..fb43a4737b 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_stairs.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_stairs.json @@ -3,9 +3,7 @@ "category": "building", "group": "small_veridium_brick_stairs", "key": { - "X": { - "item": "create:small_veridium_bricks" - } + "X": "create:small_veridium_bricks" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json index cd0f39a458..99e70e8ce7 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_stairs_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:small_veridium_brick_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_wall.json b/src/generated/resources/data/create/recipe/small_veridium_brick_wall.json index 1b0ef5cec5..2d328e8875 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_wall.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_wall.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:small_veridium_bricks" - } + "X": "create:small_veridium_bricks" }, "pattern": [ "XXX", diff --git a/src/generated/resources/data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json index 910f1b1ef8..7687b6d28b 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_veridium_brick_wall_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:small_veridium_brick_wall" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json index a11a04bf1b..5a5a5c7c6e 100644 --- a/src/generated/resources/data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/small_veridium_bricks_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:small_veridium_bricks" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/bread.json b/src/generated/resources/data/create/recipe/smelting/bread.json index 3d221569b1..4b2a31313c 100644 --- a/src/generated/resources/data/create/recipe/smelting/bread.json +++ b/src/generated/resources/data/create/recipe/smelting/bread.json @@ -1,13 +1,7 @@ { "type": "minecraft:smelting", - "category": "food", - "cookingtime": 200, - "experience": 0.0, - "ingredient": { - "item": "create:dough" - }, + "ingredient": "create:dough", "result": { - "count": 1, "id": "minecraft:bread" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/smelting/copper_ingot_from_crushed.json index 7eac72c9f1..241b37dbfc 100644 --- a/src/generated/resources/data/create/recipe/smelting/copper_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/smelting/copper_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_copper" - }, + "ingredient": "create:crushed_raw_copper", "result": { - "count": 1, "id": "minecraft:copper_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_from_framed_glass.json b/src/generated/resources/data/create/recipe/smelting/glass_from_framed_glass.json index 7fd66471be..a7efaedf4e 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_from_framed_glass.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_from_framed_glass.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:framed_glass" - }, + "ingredient": "create:framed_glass", "result": { - "count": 1, "id": "minecraft:glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_from_horizontal_framed_glass.json b/src/generated/resources/data/create/recipe/smelting/glass_from_horizontal_framed_glass.json index 5d67887a39..fa6203c46e 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_from_horizontal_framed_glass.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_from_horizontal_framed_glass.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:horizontal_framed_glass" - }, + "ingredient": "create:horizontal_framed_glass", "result": { - "count": 1, "id": "minecraft:glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_from_tiled_glass.json b/src/generated/resources/data/create/recipe/smelting/glass_from_tiled_glass.json index ab9af52adc..9e6e4cdaac 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_from_tiled_glass.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_from_tiled_glass.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:tiled_glass" - }, + "ingredient": "create:tiled_glass", "result": { - "count": 1, "id": "minecraft:glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_from_vertical_framed_glass.json b/src/generated/resources/data/create/recipe/smelting/glass_from_vertical_framed_glass.json index 4ac67fd89d..d5051757ad 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_from_vertical_framed_glass.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_from_vertical_framed_glass.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:vertical_framed_glass" - }, + "ingredient": "create:vertical_framed_glass", "result": { - "count": 1, "id": "minecraft:glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json index 6ff7a7af45..3b54990e64 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_framed_glass_pane.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:framed_glass_pane" - }, + "ingredient": "create:framed_glass_pane", "result": { - "count": 1, "id": "minecraft:glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json index 0565bf3669..c6307cd773 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_horizontal_framed_glass_pane.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:horizontal_framed_glass_pane" - }, + "ingredient": "create:horizontal_framed_glass_pane", "result": { - "count": 1, "id": "minecraft:glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json index 15e8198179..a783f2a9e6 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_tiled_glass_pane.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:tiled_glass_pane" - }, + "ingredient": "create:tiled_glass_pane", "result": { - "count": 1, "id": "minecraft:glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json index 6b059c2281..e24cd94851 100644 --- a/src/generated/resources/data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/smelting/glass_pane_from_vertical_framed_glass_pane.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "blocks", "cookingtime": 50, - "experience": 0.0, - "ingredient": { - "item": "create:vertical_framed_glass_pane" - }, + "ingredient": "create:vertical_framed_glass_pane", "result": { - "count": 1, "id": "minecraft:glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/smelting/gold_ingot_from_crushed.json index 7d0fc66095..6c51f1c56a 100644 --- a/src/generated/resources/data/create/recipe/smelting/gold_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/smelting/gold_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_gold" - }, + "ingredient": "create:crushed_raw_gold", "result": { - "count": 1, "id": "minecraft:gold_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_aluminium_compat_ic2.json b/src/generated/resources/data/create/recipe/smelting/ingot_aluminium_compat_ic2.json index ec5b1f98b5..b6559ccbd0 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_aluminium_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_aluminium_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_aluminum" - }, + "ingredient": "create:crushed_raw_aluminum", "result": { "id": "ic2:ingot_aluminium" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json index 0b1b44a007..9bc14921d3 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_aluminum_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_aluminum" - }, + "ingredient": "create:crushed_raw_aluminum", "result": { "id": "immersiveengineering:ingot_aluminum" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json index c0728f8f4e..64f41df10e 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "immersiveengineering:ingot_lead" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_mekanism.json index 73d9996e2f..725f51f7b5 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_lead_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "mekanism:ingot_lead" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json index 6a0b58232a..f09e55155c 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_nickel_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_nickel" - }, + "ingredient": "create:crushed_raw_nickel", "result": { "id": "immersiveengineering:ingot_nickel" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/recipe/smelting/ingot_osmium_compat_mekanism.json index 409ea26f4b..033b15f980 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_osmium_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_osmium_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_osmium" - }, + "ingredient": "create:crushed_raw_osmium", "result": { "id": "mekanism:ingot_osmium" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_ic2.json b/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_ic2.json index 0caff00198..f0be3a3230 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "ic2:ingot_silver" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json index 6da9fab71e..d1a6af4f0d 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_silver_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "immersiveengineering:ingot_silver" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_ic2.json b/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_ic2.json index 0ed71b11b5..ad119ee7b9 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "ic2:ingot_tin" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_mekanism.json index 3f1c9d6525..27e57bebd1 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_tin_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "mekanism:ingot_tin" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_ic2.json b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_ic2.json index 40512a30a1..00f0f87978 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_ic2.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_ic2.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "ic2:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json index ba2306d98c..9ab843a153 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_immersiveengineering.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "immersiveengineering:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_mekanism.json index 6698487906..17d3c2fbb0 100644 --- a/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_mekanism.json +++ b/src/generated/resources/data/create/recipe/smelting/ingot_uranium_compat_mekanism.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_uranium" - }, + "ingredient": "create:crushed_raw_uranium", "result": { "id": "mekanism:ingot_uranium" } diff --git a/src/generated/resources/data/create/recipe/smelting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/smelting/iron_ingot_from_crushed.json index 95d209fe36..72db94af4e 100644 --- a/src/generated/resources/data/create/recipe/smelting/iron_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/smelting/iron_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_iron" - }, + "ingredient": "create:crushed_raw_iron", "result": { - "count": 1, "id": "minecraft:iron_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_oreganized.json index 358190990d..71ad89d565 100644 --- a/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_oreganized.json +++ b/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_oreganized.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "oreganized:lead_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_thermal.json index 5cc77fed4d..4e970f396e 100644 --- a/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/smelting/lead_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_lead" - }, + "ingredient": "create:crushed_raw_lead", "result": { "id": "thermal:lead_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/smelting/nickel_ingot_compat_thermal.json index 362c5cae87..1f516bf34c 100644 --- a/src/generated/resources/data/create/recipe/smelting/nickel_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/smelting/nickel_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_nickel" - }, + "ingredient": "create:crushed_raw_nickel", "result": { "id": "thermal:nickel_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/scoria.json b/src/generated/resources/data/create/recipe/smelting/scoria.json index 4ce105ac69..1cbb581316 100644 --- a/src/generated/resources/data/create/recipe/smelting/scoria.json +++ b/src/generated/resources/data/create/recipe/smelting/scoria.json @@ -1,13 +1,7 @@ { "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, - "experience": 0.0, - "ingredient": { - "item": "minecraft:soul_sand" - }, + "ingredient": "minecraft:soul_sand", "result": { - "count": 1, "id": "create:scoria" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_galosphere.json b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_galosphere.json index b15e9582fc..b57994d5d8 100644 --- a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_galosphere.json +++ b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_galosphere.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "galosphere:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_iceandfire.json index 564e913a00..f1e52f1392 100644 --- a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_iceandfire.json +++ b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_iceandfire.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "iceandfire:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_oreganized.json b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_oreganized.json index 41abeddf44..6ea108c10f 100644 --- a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_oreganized.json +++ b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_oreganized.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "oreganized:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_thermal.json index 38b1b2d7cc..1964b3de5a 100644 --- a/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/smelting/silver_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_silver" - }, + "ingredient": "create:crushed_raw_silver", "result": { "id": "thermal:silver_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/recipe/smelting/tin_ingot_compat_thermal.json index 1754ec4508..f211f5f547 100644 --- a/src/generated/resources/data/create/recipe/smelting/tin_ingot_compat_thermal.json +++ b/src/generated/resources/data/create/recipe/smelting/tin_ingot_compat_thermal.json @@ -6,12 +6,8 @@ } ], "type": "minecraft:smelting", - "category": "blocks", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_tin" - }, + "ingredient": "create:crushed_raw_tin", "result": { "id": "thermal:tin_ingot" } diff --git a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_crushed.json index 17cc1b090c..1677f207b1 100644 --- a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_crushed.json +++ b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_crushed.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 0.1, - "ingredient": { - "item": "create:crushed_raw_zinc" - }, + "ingredient": "create:crushed_raw_zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_ore.json index a09cfb22ac..3e7282a635 100644 --- a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_ore.json +++ b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_ore.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 1.0, - "ingredient": { - "tag": "c:ores/zinc" - }, + "ingredient": "#c:ores/zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_raw_ore.json b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_raw_ore.json index 3a6af5ee36..cd7535efd9 100644 --- a/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_raw_ore.json +++ b/src/generated/resources/data/create/recipe/smelting/zinc_ingot_from_raw_ore.json @@ -1,13 +1,8 @@ { "type": "minecraft:smelting", - "category": "misc", - "cookingtime": 200, "experience": 0.7, - "ingredient": { - "tag": "c:raw_materials/zinc" - }, + "ingredient": "#c:raw_materials/zinc", "result": { - "count": 1, "id": "create:zinc_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/smoking/bread.json b/src/generated/resources/data/create/recipe/smoking/bread.json index f4c4b75f12..4ca118eaae 100644 --- a/src/generated/resources/data/create/recipe/smoking/bread.json +++ b/src/generated/resources/data/create/recipe/smoking/bread.json @@ -1,13 +1,7 @@ { "type": "minecraft:smoking", - "category": "food", - "cookingtime": 100, - "experience": 0.0, - "ingredient": { - "item": "create:dough" - }, + "ingredient": "create:dough", "result": { - "count": 1, "id": "minecraft:bread" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/splashing/atmospheric/arid_sand.json b/src/generated/resources/data/create/recipe/splashing/atmospheric/arid_sand.json index f04db70843..2eadb41004 100644 --- a/src/generated/resources/data/create/recipe/splashing/atmospheric/arid_sand.json +++ b/src/generated/resources/data/create/recipe/splashing/atmospheric/arid_sand.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:arid_sand" diff --git a/src/generated/resources/data/create/recipe/splashing/atmospheric/red_arid_sand.json b/src/generated/resources/data/create/recipe/splashing/atmospheric/red_arid_sand.json index 9d84b434b9..a16b45796e 100644 --- a/src/generated/resources/data/create/recipe/splashing/atmospheric/red_arid_sand.json +++ b/src/generated/resources/data/create/recipe/splashing/atmospheric/red_arid_sand.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "atmospheric:red_arid_sand" diff --git a/src/generated/resources/data/create/recipe/splashing/crushed_raw_copper.json b/src/generated/resources/data/create/recipe/splashing/crushed_raw_copper.json index 200ba9b130..d60989ce52 100644 --- a/src/generated/resources/data/create/recipe/splashing/crushed_raw_copper.json +++ b/src/generated/resources/data/create/recipe/splashing/crushed_raw_copper.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_copper" - } + "create:crushed_raw_copper" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/crushed_raw_gold.json b/src/generated/resources/data/create/recipe/splashing/crushed_raw_gold.json index 76d50fc5a1..7ab9e89c87 100644 --- a/src/generated/resources/data/create/recipe/splashing/crushed_raw_gold.json +++ b/src/generated/resources/data/create/recipe/splashing/crushed_raw_gold.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_gold" - } + "create:crushed_raw_gold" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/crushed_raw_iron.json b/src/generated/resources/data/create/recipe/splashing/crushed_raw_iron.json index bb5c8a56c8..26faa9d9c3 100644 --- a/src/generated/resources/data/create/recipe/splashing/crushed_raw_iron.json +++ b/src/generated/resources/data/create/recipe/splashing/crushed_raw_iron.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_iron" - } + "create:crushed_raw_iron" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/crushed_raw_zinc.json b/src/generated/resources/data/create/recipe/splashing/crushed_raw_zinc.json index b71c2f805d..6580c576bc 100644 --- a/src/generated/resources/data/create/recipe/splashing/crushed_raw_zinc.json +++ b/src/generated/resources/data/create/recipe/splashing/crushed_raw_zinc.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_zinc" - } + "create:crushed_raw_zinc" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock.json index e71bc631dd..c356ff113a 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:end_corrock" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json index a48d1e5d01..84c1e7b1e6 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_block.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:end_corrock_block" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json index 1af796bc85..fca9de7a2a 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_end_corrock_crown.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:end_corrock_crown" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock.json index 10b02f5e1c..e81881d4b4 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:nether_corrock" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json index 50a328c9ee..da597250f4 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_block.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:nether_corrock_block" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json index 809151dfc9..da4ea223f8 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_nether_corrock_crown.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:nether_corrock_crown" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json index c473a65c11..16110f666d 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:overworld_corrock" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json index 57e2f00bb2..56e8b59fb3 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_block.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:overworld_corrock_block" diff --git a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json index dc1733593b..c28e1f488d 100644 --- a/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json +++ b/src/generated/resources/data/create/recipe/splashing/endergetic/petrified_overworld_corrock_crown.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "endergetic:overworld_corrock_crown" diff --git a/src/generated/resources/data/create/recipe/splashing/galosphere/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/galosphere/crushed_raw_silver.json index a2583c10e7..d4840a91f6 100644 --- a/src/generated/resources/data/create/recipe/splashing/galosphere/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/galosphere/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/gravel.json b/src/generated/resources/data/create/recipe/splashing/gravel.json index d7ba7dbdd3..9e7a21a991 100644 --- a/src/generated/resources/data/create/recipe/splashing/gravel.json +++ b/src/generated/resources/data/create/recipe/splashing/gravel.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:gravel" - } + "minecraft:gravel" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_aluminum.json b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_aluminum.json index 0b1cc57f26..2ac5553986 100644 --- a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_aluminum.json +++ b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_aluminum.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_aluminum" - } + "create:crushed_raw_aluminum" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_silver.json index f2cc81bd58..4536d3b0f5 100644 --- a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_tin.json b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_tin.json index 92f57f3c1a..5713e48119 100644 --- a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_tin.json +++ b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_tin.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_tin" - } + "create:crushed_raw_tin" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_uranium.json b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_uranium.json index 9b316f4ef5..50e2d9860d 100644 --- a/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_uranium.json +++ b/src/generated/resources/data/create/recipe/splashing/ic2/crushed_raw_uranium.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_uranium" - } + "create:crushed_raw_uranium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/ice.json b/src/generated/resources/data/create/recipe/splashing/ice.json index 77d6530e2d..719b84b8b6 100644 --- a/src/generated/resources/data/create/recipe/splashing/ice.json +++ b/src/generated/resources/data/create/recipe/splashing/ice.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:ice" - } + "minecraft:ice" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/iceandfire/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/iceandfire/crushed_raw_silver.json index 86c9ffc4d2..3157bf166d 100644 --- a/src/generated/resources/data/create/recipe/splashing/iceandfire/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/iceandfire/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json index c8af328d88..f4ba388919 100644 --- a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json +++ b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_aluminum.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_aluminum" - } + "create:crushed_raw_aluminum" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json index 1bb18c9314..9e57748211 100644 --- a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json +++ b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_lead.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_lead" - } + "create:crushed_raw_lead" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json index f95e386474..c0a7ab7ad7 100644 --- a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json +++ b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_nickel.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_nickel" - } + "create:crushed_raw_nickel" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json index 1515699c80..2bb1e4de5b 100644 --- a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json index 955e296b1f..1300fe8845 100644 --- a/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json +++ b/src/generated/resources/data/create/recipe/splashing/immersiveengineering/crushed_raw_uranium.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_uranium" - } + "create:crushed_raw_uranium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/industrial_iron_block.json b/src/generated/resources/data/create/recipe/splashing/industrial_iron_block.json index f6f287c0c0..3c7ee17ea6 100644 --- a/src/generated/resources/data/create/recipe/splashing/industrial_iron_block.json +++ b/src/generated/resources/data/create/recipe/splashing/industrial_iron_block.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:industrial_iron_block" - } + "create:industrial_iron_block" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/industrial_iron_window.json b/src/generated/resources/data/create/recipe/splashing/industrial_iron_window.json index d439b1c821..0d596f3acd 100644 --- a/src/generated/resources/data/create/recipe/splashing/industrial_iron_window.json +++ b/src/generated/resources/data/create/recipe/splashing/industrial_iron_window.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:industrial_iron_window" - } + "create:industrial_iron_window" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/industrial_iron_window_pane.json b/src/generated/resources/data/create/recipe/splashing/industrial_iron_window_pane.json index 965045f189..ac84dbf441 100644 --- a/src/generated/resources/data/create/recipe/splashing/industrial_iron_window_pane.json +++ b/src/generated/resources/data/create/recipe/splashing/industrial_iron_window_pane.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "create:industrial_iron_window_pane" - } + "create:industrial_iron_window_pane" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/magma_block.json b/src/generated/resources/data/create/recipe/splashing/magma_block.json index 4b52230684..84b2caef82 100644 --- a/src/generated/resources/data/create/recipe/splashing/magma_block.json +++ b/src/generated/resources/data/create/recipe/splashing/magma_block.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:magma_block" - } + "minecraft:magma_block" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_lead.json b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_lead.json index 28d566954c..275fd167a1 100644 --- a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_lead.json +++ b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_lead.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_lead" - } + "create:crushed_raw_lead" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_osmium.json b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_osmium.json index a7513203e4..7b8dcd9ffe 100644 --- a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_osmium.json +++ b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_osmium.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_osmium" - } + "create:crushed_raw_osmium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_tin.json b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_tin.json index 7b5242d5dc..ae765383d2 100644 --- a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_tin.json +++ b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_tin.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_tin" - } + "create:crushed_raw_tin" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_uranium.json b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_uranium.json index c4398bae02..4360b94025 100644 --- a/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_uranium.json +++ b/src/generated/resources/data/create/recipe/splashing/mekanism/crushed_raw_uranium.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_uranium" - } + "create:crushed_raw_uranium" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_lead.json b/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_lead.json index 549a79ad84..97feba956c 100644 --- a/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_lead.json +++ b/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_lead.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_lead" - } + "create:crushed_raw_lead" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_silver.json index dff7e8a7dc..bc8ce4edc0 100644 --- a/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/oreganized/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/quark/rusty_iron_plate.json b/src/generated/resources/data/create/recipe/splashing/quark/rusty_iron_plate.json index cfc450439b..a3280d651d 100644 --- a/src/generated/resources/data/create/recipe/splashing/quark/rusty_iron_plate.json +++ b/src/generated/resources/data/create/recipe/splashing/quark/rusty_iron_plate.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "quark:iron_plate" diff --git a/src/generated/resources/data/create/recipe/splashing/red_sand.json b/src/generated/resources/data/create/recipe/splashing/red_sand.json index 4dc327a699..b0765fb378 100644 --- a/src/generated/resources/data/create/recipe/splashing/red_sand.json +++ b/src/generated/resources/data/create/recipe/splashing/red_sand.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:red_sand" - } + "minecraft:red_sand" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/sand.json b/src/generated/resources/data/create/recipe/splashing/sand.json index 22a4b8e001..93204b6690 100644 --- a/src/generated/resources/data/create/recipe/splashing/sand.json +++ b/src/generated/resources/data/create/recipe/splashing/sand.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:sand" - } + "minecraft:sand" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/soul_sand.json b/src/generated/resources/data/create/recipe/splashing/soul_sand.json index 7a55a9578d..5a8bbe5fa8 100644 --- a/src/generated/resources/data/create/recipe/splashing/soul_sand.json +++ b/src/generated/resources/data/create/recipe/splashing/soul_sand.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "item": "minecraft:soul_sand" - } + "minecraft:soul_sand" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/stained_glass.json b/src/generated/resources/data/create/recipe/splashing/stained_glass.json index 60093f35f6..c2e03c8bf2 100644 --- a/src/generated/resources/data/create/recipe/splashing/stained_glass.json +++ b/src/generated/resources/data/create/recipe/splashing/stained_glass.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "tag": "c:glass_blocks" - } + "#c:glass_blocks" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/stained_glass_pane.json b/src/generated/resources/data/create/recipe/splashing/stained_glass_pane.json index f83541146e..02ffcbecd1 100644 --- a/src/generated/resources/data/create/recipe/splashing/stained_glass_pane.json +++ b/src/generated/resources/data/create/recipe/splashing/stained_glass_pane.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "tag": "c:glass_panes" - } + "#c:glass_panes" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/supplementaries/blackboard.json b/src/generated/resources/data/create/recipe/splashing/supplementaries/blackboard.json index ba0adfc9d9..a8153a51c9 100644 --- a/src/generated/resources/data/create/recipe/splashing/supplementaries/blackboard.json +++ b/src/generated/resources/data/create/recipe/splashing/supplementaries/blackboard.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "supplementaries:blackboard" diff --git a/src/generated/resources/data/create/recipe/splashing/the_vault/ornate_chain_rusty.json b/src/generated/resources/data/create/recipe/splashing/the_vault/ornate_chain_rusty.json index 350565975d..4cb7794fb5 100644 --- a/src/generated/resources/data/create/recipe/splashing/the_vault/ornate_chain_rusty.json +++ b/src/generated/resources/data/create/recipe/splashing/the_vault/ornate_chain_rusty.json @@ -8,7 +8,7 @@ "type": "create:splashing", "ingredients": [ { - "type": "neoforge:compound", + "neoforge:ingredient_type": "neoforge:compound", "ingredients": [ { "item": "the_vault:ornate_chain" diff --git a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_lead.json b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_lead.json index 66aaabf6ad..ceaad2c19b 100644 --- a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_lead.json +++ b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_lead.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_lead" - } + "create:crushed_raw_lead" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_nickel.json b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_nickel.json index 02b7ed743f..ecdb1dfecf 100644 --- a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_nickel.json +++ b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_nickel.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_nickel" - } + "create:crushed_raw_nickel" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_silver.json b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_silver.json index 1eb0226c82..5a196fd985 100644 --- a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_silver.json +++ b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_silver.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_silver" - } + "create:crushed_raw_silver" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_tin.json b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_tin.json index 82ea858d61..b760f71396 100644 --- a/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_tin.json +++ b/src/generated/resources/data/create/recipe/splashing/thermal/crushed_raw_tin.json @@ -7,9 +7,7 @@ ], "type": "create:splashing", "ingredients": [ - { - "item": "create:crushed_raw_tin" - } + "create:crushed_raw_tin" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/wheat_flour.json b/src/generated/resources/data/create/recipe/splashing/wheat_flour.json index 16ba083133..caf58b9f75 100644 --- a/src/generated/resources/data/create/recipe/splashing/wheat_flour.json +++ b/src/generated/resources/data/create/recipe/splashing/wheat_flour.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "tag": "c:flours/wheat" - } + "#c:flours/wheat" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/splashing/wool.json b/src/generated/resources/data/create/recipe/splashing/wool.json index 8b08da967d..efcabae31f 100644 --- a/src/generated/resources/data/create/recipe/splashing/wool.json +++ b/src/generated/resources/data/create/recipe/splashing/wool.json @@ -1,9 +1,7 @@ { "type": "create:splashing", "ingredients": [ - { - "tag": "minecraft:wool" - } + "#minecraft:wool" ], "results": [ { diff --git a/src/generated/resources/data/create/recipe/spruce_window.json b/src/generated/resources/data/create/recipe/spruce_window.json index d13512c917..8e65c071fa 100644 --- a/src/generated/resources/data/create/recipe/spruce_window.json +++ b/src/generated/resources/data/create/recipe/spruce_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:spruce_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:spruce_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/spruce_window_pane.json b/src/generated/resources/data/create/recipe/spruce_window_pane.json index a75eaf1f79..4f9ba2c75d 100644 --- a/src/generated/resources/data/create/recipe/spruce_window_pane.json +++ b/src/generated/resources/data/create/recipe/spruce_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:spruce_window" - } + "#": "create:spruce_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json index 2a3d95e39d..9d264794a0 100644 --- a/src/generated/resources/data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/tiled_glass_from_glass_blocks_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_blocks/colorless" - }, + "ingredient": "#c:glass_blocks/colorless", "result": { - "count": 1, "id": "create:tiled_glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/tiled_glass_pane.json b/src/generated/resources/data/create/recipe/tiled_glass_pane.json index 21ce35e99d..7aee13d20d 100644 --- a/src/generated/resources/data/create/recipe/tiled_glass_pane.json +++ b/src/generated/resources/data/create/recipe/tiled_glass_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:tiled_glass" - } + "#": "create:tiled_glass" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json index 5cdb7b77d7..9719d70305 100644 --- a/src/generated/resources/data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/tiled_glass_pane_from_glass_panes_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_panes/colorless" - }, + "ingredient": "#c:glass_panes/colorless", "result": { - "count": 1, "id": "create:tiled_glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json index 44ffefdde0..0ad21810ef 100644 --- a/src/generated/resources/data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/tuff_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "minecraft:tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json b/src/generated/resources/data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json index b181d74b82..059829e322 100644 --- a/src/generated/resources/data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json +++ b/src/generated/resources/data/create/recipe/tuff_pillar_from_stone_types_tuff_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/tuff" - }, + "ingredient": "#create:stone_types/tuff", "result": { - "count": 1, "id": "create:tuff_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json index 44724f04f5..ff9ec0a227 100644 --- a/src/generated/resources/data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/veridium_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:veridium" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json b/src/generated/resources/data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json index 2ed47c2124..6549bc4af2 100644 --- a/src/generated/resources/data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json +++ b/src/generated/resources/data/create/recipe/veridium_pillar_from_stone_types_veridium_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "create:stone_types/veridium" - }, + "ingredient": "#create:stone_types/veridium", "result": { - "count": 1, "id": "create:veridium_pillar" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json index 4d679659f2..1de06cbef8 100644 --- a/src/generated/resources/data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/vertical_framed_glass_from_glass_blocks_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_blocks/colorless" - }, + "ingredient": "#c:glass_blocks/colorless", "result": { - "count": 1, "id": "create:vertical_framed_glass" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/vertical_framed_glass_pane.json b/src/generated/resources/data/create/recipe/vertical_framed_glass_pane.json index c4848c5a84..8d59beb7ad 100644 --- a/src/generated/resources/data/create/recipe/vertical_framed_glass_pane.json +++ b/src/generated/resources/data/create/recipe/vertical_framed_glass_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:vertical_framed_glass" - } + "#": "create:vertical_framed_glass" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json b/src/generated/resources/data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json index abe59c8a00..47ab2db831 100644 --- a/src/generated/resources/data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json +++ b/src/generated/resources/data/create/recipe/vertical_framed_glass_pane_from_glass_panes_colorless_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:glass_panes/colorless" - }, + "ingredient": "#c:glass_panes/colorless", "result": { - "count": 1, "id": "create:vertical_framed_glass_pane" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/warped_window.json b/src/generated/resources/data/create/recipe/warped_window.json index 5514ec0cb0..953e12a160 100644 --- a/src/generated/resources/data/create/recipe/warped_window.json +++ b/src/generated/resources/data/create/recipe/warped_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "minecraft:warped_planks" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "minecraft:warped_planks", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/warped_window_pane.json b/src/generated/resources/data/create/recipe/warped_window_pane.json index c8de80ecac..9e911c74e6 100644 --- a/src/generated/resources/data/create/recipe/warped_window_pane.json +++ b/src/generated/resources/data/create/recipe/warped_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:warped_window" - } + "#": "create:warped_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab.json index bdca9d5812..32185db26d 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_copper_shingles" - } + "X": "create:waxed_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json index da708d75bb..c1050ee80d 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_shingle_slab_from_waxed_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_copper_shingles" - }, + "ingredient": "create:waxed_copper_shingles", "result": { "count": 2, "id": "create:waxed_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs.json index 7a4ffd3721..6dffb65071 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_copper_shingles" - } + "X": "create:waxed_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json index 8450b261d0..1d88cc6118 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_shingle_stairs_from_waxed_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_copper_shingles" - }, + "ingredient": "create:waxed_copper_shingles", "result": { - "count": 1, "id": "create:waxed_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_copper_tile_slab.json b/src/generated/resources/data/create/recipe/waxed_copper_tile_slab.json index 1bc9ef0638..988d202032 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_copper_tiles" - } + "X": "create:waxed_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json index 6a19b7b4ed..e700e2fc98 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_tile_slab_from_waxed_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_copper_tiles" - }, + "ingredient": "create:waxed_copper_tiles", "result": { "count": 2, "id": "create:waxed_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs.json index 344297b110..d8bb1db7a4 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_copper_tiles" - } + "X": "create:waxed_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json index 197996bf66..d3d651c1d7 100644 --- a/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_copper_tile_stairs_from_waxed_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_copper_tiles" - }, + "ingredient": "create:waxed_copper_tiles", "result": { - "count": 1, "id": "create:waxed_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab.json index 9bb77a4b53..209e605d2b 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_exposed_copper_shingles" - } + "X": "create:waxed_exposed_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json index c80f942ff7..2b89773ac5 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_slab_from_waxed_exposed_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_exposed_copper_shingles" - }, + "ingredient": "create:waxed_exposed_copper_shingles", "result": { "count": 2, "id": "create:waxed_exposed_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs.json index ace84fba8c..9781036072 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_exposed_copper_shingles" - } + "X": "create:waxed_exposed_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json index d5ec5777f0..355c61baf7 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_shingle_stairs_from_waxed_exposed_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_exposed_copper_shingles" - }, + "ingredient": "create:waxed_exposed_copper_shingles", "result": { - "count": 1, "id": "create:waxed_exposed_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab.json index 91fa970b55..1d429bf56c 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_exposed_copper_tiles" - } + "X": "create:waxed_exposed_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json index 8a40af5cfa..397c2ea8d2 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_slab_from_waxed_exposed_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_exposed_copper_tiles" - }, + "ingredient": "create:waxed_exposed_copper_tiles", "result": { "count": 2, "id": "create:waxed_exposed_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs.json index 41623f8389..a887a38259 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_exposed_copper_tiles" - } + "X": "create:waxed_exposed_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json index 4fcf02f912..00835f285f 100644 --- a/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_exposed_copper_tile_stairs_from_waxed_exposed_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_exposed_copper_tiles" - }, + "ingredient": "create:waxed_exposed_copper_tiles", "result": { - "count": 1, "id": "create:waxed_exposed_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab.json index 4e614ba752..e963034452 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_oxidized_copper_shingles" - } + "X": "create:waxed_oxidized_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json index 40ef48ce53..7e5704bf5b 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_slab_from_waxed_oxidized_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_oxidized_copper_shingles" - }, + "ingredient": "create:waxed_oxidized_copper_shingles", "result": { "count": 2, "id": "create:waxed_oxidized_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs.json index 73ea03e37b..6672ba5b0c 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_oxidized_copper_shingles" - } + "X": "create:waxed_oxidized_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json index afe1b8bf14..4d1f4f2b0c 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_shingle_stairs_from_waxed_oxidized_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_oxidized_copper_shingles" - }, + "ingredient": "create:waxed_oxidized_copper_shingles", "result": { - "count": 1, "id": "create:waxed_oxidized_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab.json index c4691c957a..fe7edad321 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_oxidized_copper_tiles" - } + "X": "create:waxed_oxidized_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json index 367fff4790..b946c51e52 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_slab_from_waxed_oxidized_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_oxidized_copper_tiles" - }, + "ingredient": "create:waxed_oxidized_copper_tiles", "result": { "count": 2, "id": "create:waxed_oxidized_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs.json index a6b7f5dd4d..274a47a84f 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_oxidized_copper_tiles" - } + "X": "create:waxed_oxidized_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json index b9e1c70f16..89782a1830 100644 --- a/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_oxidized_copper_tile_stairs_from_waxed_oxidized_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_oxidized_copper_tiles" - }, + "ingredient": "create:waxed_oxidized_copper_tiles", "result": { - "count": 1, "id": "create:waxed_oxidized_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab.json index 0ee9efd868..52f9502378 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_weathered_copper_shingles" - } + "X": "create:waxed_weathered_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json index 46ebdc084b..ea80d43e2d 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_slab_from_waxed_weathered_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_weathered_copper_shingles" - }, + "ingredient": "create:waxed_weathered_copper_shingles", "result": { "count": 2, "id": "create:waxed_weathered_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs.json index a5271f2062..67c65cc04b 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_weathered_copper_shingles" - } + "X": "create:waxed_weathered_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json index 6e2cd2f5ae..71f6d804c4 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_shingle_stairs_from_waxed_weathered_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_weathered_copper_shingles" - }, + "ingredient": "create:waxed_weathered_copper_shingles", "result": { - "count": 1, "id": "create:waxed_weathered_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab.json index da79b29c9a..9fa1c312b9 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_weathered_copper_tiles" - } + "X": "create:waxed_weathered_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json index 842251fe31..67c0ee2899 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_slab_from_waxed_weathered_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_weathered_copper_tiles" - }, + "ingredient": "create:waxed_weathered_copper_tiles", "result": { "count": 2, "id": "create:waxed_weathered_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs.json index 50ebcfa77b..8979b2fb55 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:waxed_weathered_copper_tiles" - } + "X": "create:waxed_weathered_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json index 526cf02913..f4bf5064fa 100644 --- a/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/waxed_weathered_copper_tile_stairs_from_waxed_weathered_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:waxed_weathered_copper_tiles" - }, + "ingredient": "create:waxed_weathered_copper_tiles", "result": { - "count": 1, "id": "create:waxed_weathered_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab.json b/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab.json index 73e889a637..8d7284dc9f 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:weathered_copper_shingles" - } + "X": "create:weathered_copper_shingles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json index 43f011620e..6fb25dc199 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_shingle_slab_from_weathered_copper_shingles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_copper_shingles" - }, + "ingredient": "create:weathered_copper_shingles", "result": { "count": 2, "id": "create:weathered_copper_shingle_slab" diff --git a/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs.json b/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs.json index 72748f8e80..71d74755b5 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:weathered_copper_shingles" - } + "X": "create:weathered_copper_shingles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json b/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json index 2960dc58cf..f9e67b6e52 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_shingle_stairs_from_weathered_copper_shingles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_copper_shingles" - }, + "ingredient": "create:weathered_copper_shingles", "result": { - "count": 1, "id": "create:weathered_copper_shingle_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/weathered_copper_tile_slab.json b/src/generated/resources/data/create/recipe/weathered_copper_tile_slab.json index 1427c3f947..12884df503 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_tile_slab.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_tile_slab.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:weathered_copper_tiles" - } + "X": "create:weathered_copper_tiles" }, "pattern": [ "XXX" diff --git a/src/generated/resources/data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json index da7c82d756..ef9ef4eb5b 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_tile_slab_from_weathered_copper_tiles_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_copper_tiles" - }, + "ingredient": "create:weathered_copper_tiles", "result": { "count": 2, "id": "create:weathered_copper_tile_slab" diff --git a/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs.json b/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs.json index 0218c1e0f9..71c81a743d 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "X": { - "item": "create:weathered_copper_tiles" - } + "X": "create:weathered_copper_tiles" }, "pattern": [ "X ", diff --git a/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json b/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json index 1eabc5cf76..d2e70a7a53 100644 --- a/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json +++ b/src/generated/resources/data/create/recipe/weathered_copper_tile_stairs_from_weathered_copper_tiles_stonecutting.json @@ -1,10 +1,7 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_copper_tiles" - }, + "ingredient": "create:weathered_copper_tiles", "result": { - "count": 1, "id": "create:weathered_copper_tile_stairs" } } \ No newline at end of file diff --git a/src/generated/resources/data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json b/src/generated/resources/data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json index 1e1c7b931f..335742f266 100644 --- a/src/generated/resources/data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json +++ b/src/generated/resources/data/create/recipe/weathered_iron_block_from_ingots_iron_stonecutting.json @@ -1,8 +1,6 @@ { "type": "minecraft:stonecutting", - "ingredient": { - "tag": "c:ingots/iron" - }, + "ingredient": "#c:ingots/iron", "result": { "count": 2, "id": "create:weathered_iron_block" diff --git a/src/generated/resources/data/create/recipe/weathered_iron_window.json b/src/generated/resources/data/create/recipe/weathered_iron_window.json index afaf591c59..91711711c1 100644 --- a/src/generated/resources/data/create/recipe/weathered_iron_window.json +++ b/src/generated/resources/data/create/recipe/weathered_iron_window.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:weathered_iron_block" - }, - "X": { - "tag": "c:glass_blocks/colorless" - } + "#": "create:weathered_iron_block", + "X": "#c:glass_blocks/colorless" }, "pattern": [ " # ", diff --git a/src/generated/resources/data/create/recipe/weathered_iron_window_pane.json b/src/generated/resources/data/create/recipe/weathered_iron_window_pane.json index 37696c7fb7..e1cce124f3 100644 --- a/src/generated/resources/data/create/recipe/weathered_iron_window_pane.json +++ b/src/generated/resources/data/create/recipe/weathered_iron_window_pane.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "building", "key": { - "#": { - "item": "create:weathered_iron_window" - } + "#": "create:weathered_iron_window" }, "pattern": [ "###", diff --git a/src/generated/resources/data/minecraft/tags/item/doors.json b/src/generated/resources/data/minecraft/tags/item/wooden_doors.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/item/doors.json rename to src/generated/resources/data/minecraft/tags/item/wooden_doors.json diff --git a/src/generated/resources/data/minecraft/tags/item/trapdoors.json b/src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json similarity index 100% rename from src/generated/resources/data/minecraft/tags/item/trapdoors.json rename to src/generated/resources/data/minecraft/tags/item/wooden_trapdoors.json diff --git a/src/main/java/com/simibubi/create/AllBlockSpoutingBehaviours.java b/src/main/java/com/simibubi/create/AllBlockSpoutingBehaviours.java index 555ed9ad3a..5d5712fbe8 100644 --- a/src/main/java/com/simibubi/create/AllBlockSpoutingBehaviours.java +++ b/src/main/java/com/simibubi/create/AllBlockSpoutingBehaviours.java @@ -10,12 +10,11 @@ import com.simibubi.create.compat.tconstruct.SpoutCasting; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.FarmBlock; +import net.minecraft.world.level.block.FarmlandBlock; import net.minecraft.world.level.block.LayeredCauldronBlock; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; @@ -30,7 +29,7 @@ static void registerDefaults() { BlockSpoutingBehaviour.BY_BLOCK.register(dirt, toMud); } - BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.FARMLAND, StateChangingBehavior.incrementingState(100, isWater, FarmBlock.MOISTURE)); + BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.FARMLAND, StateChangingBehavior.incrementingState(100, isWater, FarmlandBlock.MOISTURE)); BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.WATER_CAULDRON, StateChangingBehavior.incrementingState(250, isWater, LayeredCauldronBlock.LEVEL)); BlockSpoutingBehaviour.BY_BLOCK.register(Blocks.CAULDRON, CauldronSpoutingBehavior.INSTANCE); @@ -38,13 +37,10 @@ static void registerDefaults() { return; for (String name : List.of("table", "basin")) { - ResourceLocation id = Mods.TCONSTRUCT.rl(name); - if (BuiltInRegistries.BLOCK_ENTITY_TYPE.containsKey(id)) { - BlockEntityType table = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id); - BlockSpoutingBehaviour.BY_BLOCK_ENTITY.register(table, SpoutCasting.INSTANCE); - } else { - Create.LOGGER.warn("Block entity {} wasn't found. Outdated compat?", id); - } + Identifier id = Mods.TCONSTRUCT.rl(name); + BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id).ifPresentOrElse(table -> { + BlockSpoutingBehaviour.BY_BLOCK_ENTITY.register(table.value(), SpoutCasting.INSTANCE); + }, () -> Create.LOGGER.warn("Block entity {} wasn't found. Outdated compat?", id)); } } } diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 4335fb2c74..536a9e1021 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -15,6 +15,7 @@ import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly; import static com.simibubi.create.foundation.data.TagGen.tagBlockAndItem; +import java.util.List; import java.util.Map; import com.simibubi.create.AllTags.AllBlockTags; @@ -273,12 +274,12 @@ import com.simibubi.create.foundation.mixin.accessor.BlockLootSubProviderAccessor; import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.infrastructure.config.CStress; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; -import net.createmod.catnip.data.Couple; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.data.Couple; +import net.minecraft.client.color.block.BlockTintSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.HolderLookup; @@ -287,7 +288,7 @@ import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -308,18 +309,20 @@ import net.minecraft.world.level.material.MapColor; import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.LootTable.Builder; import net.minecraft.world.level.storage.loot.entries.LootItem; import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; import net.minecraft.world.level.storage.loot.functions.CopyNameFunction; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.neoforged.neoforge.client.model.generators.ConfiguredModel; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ConfiguredModel; +import com.tterrag.registrate.providers.generators.ModelFile; import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.util.DeferredSoundType; @@ -338,7 +341,7 @@ public class AllBlocks { .initialProperties(() -> Blocks.DISPENSER) .properties(p -> p.mapColor(MapColor.COLOR_GRAY)) .transform(pickaxeOnly()) - .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) + .blockstate(() -> (ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) .loot((lt, block) -> { Builder builder = LootTable.lootTable(); LootItemCondition.Builder survivesExplosion = ExplosionCondition.survivesExplosion(); @@ -347,7 +350,7 @@ public class AllBlocks { .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(AllBlocks.SCHEMATICANNON.get() .asItem()) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + .apply(CopyComponentsFunction.copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) .include(AllDataComponents.SCHEMATICANNON_OPTIONS))))); }) .item() @@ -360,7 +363,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL) .forceSolidOn()) .transform(axeOrPickaxe()) - .blockstate((ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models() + .blockstate(() -> (ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models() .getExistingFile(ctx.getId()), 0)) .simpleItem() .register(); @@ -372,7 +375,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.METAL).forceSolidOff()) .transform(CStress.setNoImpact()) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.axisBlockProvider(false)) + .blockstate(() -> BlockStateGen.axisBlockProvider(false)) .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) .simpleItem() .register(); @@ -383,7 +386,7 @@ public class AllBlocks { .mapColor(MapColor.DIRT)) .transform(CStress.setNoImpact()) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.axisBlockProvider(false)) + .blockstate(() -> BlockStateGen.axisBlockProvider(false)) .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) .item(CogwheelBlockItem::new) .build() @@ -396,7 +399,7 @@ public class AllBlocks { .mapColor(MapColor.DIRT)) .transform(axeOrPickaxe()) .transform(CStress.setNoImpact()) - .blockstate(BlockStateGen.axisBlockProvider(false)) + .blockstate(() -> BlockStateGen.axisBlockProvider(false)) .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) .item(CogwheelBlockItem::new) .build() @@ -466,7 +469,7 @@ public class AllBlocks { .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.ANDESITE_CASING, (s, f) -> f.getAxis() == s.getValue(GearboxBlock.AXIS)))) - .blockstate((c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) + .blockstate(() -> (c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) .item() .transform(customItemModel()) .register(); @@ -475,10 +478,10 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.noOcclusion() .mapColor(MapColor.PODZOL)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setNoImpact()) .transform(axeOrPickaxe()) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) .item() .transform(customItemModel()) .register(); @@ -487,10 +490,10 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.noOcclusion() .mapColor(MapColor.PODZOL)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setNoImpact()) .transform(axeOrPickaxe()) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) .item() .transform(customItemModel()) .register(); @@ -502,7 +505,7 @@ public class AllBlocks { .mapColor(MapColor.PODZOL)) .transform(CStress.setNoImpact()) .transform(axeOrPickaxe()) - .blockstate((c, p) -> new ChainDriveGenerator((state, suffix) -> p.models() + .blockstate(() -> (c, p) -> new ChainDriveGenerator((state, suffix) -> p.models() .getExistingFile(p.modLoc("block/" + c.getName() + "/" + suffix))).generate(c, p)) .item() .transform(customItemModel()) @@ -515,15 +518,18 @@ public class AllBlocks { .mapColor(MapColor.NETHER)) .transform(CStress.setNoImpact()) .transform(axeOrPickaxe()) - .blockstate((c, p) -> new ChainDriveGenerator((state, suffix) -> { - String powered = state.getValue(ChainGearshiftBlock.POWERED) ? "_powered" : ""; - return p.models() - .withExistingParent(c.getName() + "_" + suffix + powered, - p.modLoc("block/encased_chain_drive/" + suffix)) - .texture("side", p.modLoc("block/" + c.getName() + powered)); - }).generate(c, p)) + .blockstate(() -> (c, p) -> { + Map models = new java.util.HashMap<>(); + new ChainDriveGenerator((state, suffix) -> { + String powered = state.getValue(ChainGearshiftBlock.POWERED) ? "_powered" : ""; + String modelName = c.getName() + "_" + suffix + powered; + return models.computeIfAbsent(modelName, key -> p.models() + .withExistingParent(key, p.modLoc("block/encased_chain_drive/" + suffix)) + .texture("side", p.modLoc("block/" + c.getName() + powered))); + }).generate(c, p); + }) .item() - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_chain_drive/item")) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_chain_drive/item")) .texture("side", p.modLoc("block/" + c.getName()))) .build() .register(); @@ -532,9 +538,9 @@ public class AllBlocks { .properties(p -> p.sound(SoundType.WOOL) .strength(0.8f) .mapColor(MapColor.COLOR_GRAY)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(axeOrPickaxe()) - .blockstate(new BeltGenerator()::generate) + .blockstate(() -> new BeltGenerator()::generate) .transform(CStress.setNoImpact()) .transform(displaySource(AllDisplaySources.ITEM_NAMES)) .onRegister(CreateRegistrate.blockModel(() -> BeltModel::new)) @@ -549,7 +555,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .transform(CStress.setImpact(1)) .transform(CStress.setImpact(1)) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .item() .transform(customItemModel()) .register(); @@ -561,7 +567,7 @@ public class AllBlocks { .forceSolidOn()) .tag(AllBlockTags.SAFE_NBT.tag) .transform(pickaxeOnly()) - .blockstate(new CreativeMotorGenerator()::generate) + .blockstate(() -> new CreativeMotorGenerator()::generate) .transform(CStress.setCapacity(16384.0)) .onRegister(BlockStressValues.setGeneratorSpeed(256, true)) .item() @@ -575,8 +581,8 @@ public class AllBlocks { .mapColor(MapColor.DIRT)) .transform(axeOrPickaxe()) .blockstate( - (c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, s -> AssetLookup.partialBaseModel(c, p))) - .addLayer(() -> RenderType::cutoutMipped) + () -> (c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, s -> AssetLookup.partialBaseModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setCapacity(32)) .onRegister(BlockStressValues.setGeneratorSpeed(8)) .item() @@ -589,7 +595,7 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.DIRT)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> axisBlock(c, p, + .blockstate(() -> (c, p) -> axisBlock(c, p, s -> s.getValue(LargeWaterWheelBlock.EXTENSION) ? AssetLookup.partialBaseModel(c, p, "extension") : AssetLookup.partialBaseModel(c, p))) .transform(CStress.setCapacity(128.0)) @@ -602,7 +608,7 @@ public class AllBlocks { REGISTRATE.block("water_wheel_structure", WaterWheelStructuralBlock::new) .initialProperties(SharedProperties::wooden) .clientExtension(() -> () -> new WaterWheelStructuralBlock.RenderProperties()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStatesExcept(BlockStateGen.mapToAir(p), WaterWheelStructuralBlock.FACING)) .properties(p -> p.noOcclusion() .mapColor(MapColor.DIRT)) @@ -613,8 +619,8 @@ public class AllBlocks { public static final BlockEntry ENCASED_FAN = REGISTRATE.block("encased_fan", EncasedFanBlock::new) .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> BlockStateGen.directionalBlockProvider(true)) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(axeOrPickaxe()) .transform(CStress.setImpact(2.0)) .item() @@ -626,8 +632,8 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_LIGHT_GRAY)) .tag(AllBlockTags.BRITTLE.tag) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> BlockStateGen.directionalBlockProvider(true)) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .transform(customItemModel()) .register(); @@ -636,7 +642,7 @@ public class AllBlocks { .initialProperties(SharedProperties::wooden) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.standardModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.standardModel(c, p))) .transform(CStress.setImpact(4.0)) .simpleItem() .register(); @@ -645,7 +651,7 @@ public class AllBlocks { .initialProperties(SharedProperties::wooden) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalBlockProvider(true)) + .blockstate(() -> BlockStateGen.directionalBlockProvider(true)) .transform(CStress.setCapacity(8.0)) .onRegister(BlockStressValues.setGeneratorSpeed(32)) .tag(AllBlockTags.BRITTLE.tag) @@ -676,7 +682,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.METAL)) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(CStress.setImpact(4.0)) .item() .transform(customItemModel()) @@ -688,8 +694,8 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(BlockBehaviour.Properties::noOcclusion) .transform(pickaxeOnly()) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, s -> AssetLookup.partialBaseModel(c, p))) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> (c, p) -> BlockStateGen.axisBlock(c, p, s -> AssetLookup.partialBaseModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setImpact(8.0)) .item() .transform(customItemModel()) @@ -701,9 +707,9 @@ public class AllBlocks { .noOcclusion() .noLootTable() .air() - .noCollission() + .noCollision() .pushReaction(PushReaction.BLOCK)) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStatesExcept(BlockStateGen.mapToAir(p), CrushingWheelControllerBlock.FACING)) .register(); @@ -713,7 +719,7 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) .transform(CStress.setImpact(8.0)) .item(AssemblyOperatorBlockItem::new) .transform(customItemModel()) @@ -725,8 +731,8 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.STONE)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setImpact(4.0)) .item(AssemblyOperatorBlockItem::new) .transform(customItemModel()) @@ -737,8 +743,8 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_GRAY) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate(new BasinGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new BasinGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .onRegister(movementBehaviour(new BasinMovementBehaviour())) .item() .transform(customItemModel("_", "block")) @@ -750,15 +756,15 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_GRAY) .lightLevel(BlazeBurnerBlock::getLight)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_BLASTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .loot((lt, block) -> lt.add(block, BlazeBurnerBlock.buildLootTable())) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new BlazeBurnerMovementBehaviour())) .onRegister(interactionBehaviour(new ConductorBlockInteractionBehavior.BlazeBurner())) .item(BlazeBurnerBlockItem::withBlaze) - .model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) + .model(() -> AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) .build() .register(); @@ -768,11 +774,11 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_LIGHT_GRAY) .lightLevel(LitBlazeBurnerBlock::getLight)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag, AllBlockTags.FAN_PROCESSING_CATALYSTS_SMOKING.tag, AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.PASSIVE_BOILER_HEATERS.tag) .loot((lt, block) -> lt.dropOther(block, AllItems.EMPTY_BLAZE_BURNER.get())) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStates(state -> ConfiguredModel.builder() .modelFile(p.models() .getExistingFile(p.modLoc("block/blaze_burner/" @@ -786,7 +792,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.COLOR_GRAY)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(displaySource(AllDisplaySources.ITEM_NAMES)) .onRegister(interactionBehaviour(new MountedDepotInteractionBehaviour())) .transform(mountedItemStorage(AllMountedStorageTypes.DEPOT)) @@ -800,7 +806,7 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.COLOR_GRAY)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180)) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180)) .transform(CStress.setImpact(2.0)) .transform(displaySource(AllDisplaySources.ITEM_NAMES)) .item(EjectorItem::new) @@ -814,9 +820,9 @@ public class AllBlocks { .noOcclusion() .isSuffocating((state, level, pos) -> false)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .clientExtension(() -> () -> new ReducedDestroyEffects()) - .blockstate(new ChuteGenerator()::generate) + .blockstate(() -> new ChuteGenerator()::generate) .item(ChuteItem::new) .transform(customItemModel("_", "block")) .register(); @@ -828,10 +834,10 @@ public class AllBlocks { .noOcclusion() .isSuffocating((state, level, pos) -> false) .isRedstoneConductor((state, level, pos) -> false)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .clientExtension(() -> () -> new ReducedDestroyEffects()) .transform(pickaxeOnly()) - .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) .item() .transform(customItemModel("_", "block")) .register(); @@ -841,7 +847,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) .transform(CStress.setNoImpact()) - .blockstate(new GaugeGenerator()::generate) + .blockstate(() -> new GaugeGenerator()::generate) .transform(displaySource(AllDisplaySources.KINETIC_SPEED)) .item() .transform(ModelGen.customItemModel("gauge", "_", "item")) @@ -852,14 +858,14 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) .transform(CStress.setNoImpact()) - .blockstate(new GaugeGenerator()::generate) + .blockstate(() -> new GaugeGenerator()::generate) .transform(displaySource(AllDisplaySources.KINETIC_STRESS)) .item() .transform(ModelGen.customItemModel("gauge", "_", "item")) .register(); public static final BlockEntry WOODEN_BRACKET = REGISTRATE.block("wooden_bracket", BracketBlock::new) - .blockstate(new BracketGenerator("wooden")::generate) + .blockstate(() -> new BracketGenerator("wooden")::generate) .properties(p -> p.sound(SoundType.SCAFFOLDING)) .transform(axeOrPickaxe()) .item(BracketBlockItem::new) @@ -868,7 +874,7 @@ public class AllBlocks { .register(); public static final BlockEntry METAL_BRACKET = REGISTRATE.block("metal_bracket", BracketBlock::new) - .blockstate(new BracketGenerator("metal")::generate) + .blockstate(() -> new BracketGenerator("metal")::generate) .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) .item(BracketBlockItem::new) @@ -882,7 +888,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .properties(p -> p.forceSolidOff()) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.pipe()) + .blockstate(() -> BlockStateGen.pipe()) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO)) .item() .transform(customItemModel()) @@ -894,7 +900,7 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.encasedPipe()) + .blockstate(() -> BlockStateGen.encasedPipe()) .onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, (s, f) -> !s.getValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) @@ -907,9 +913,9 @@ public class AllBlocks { REGISTRATE.block("glass_fluid_pipe", GlassFluidPipeBlock::new) .initialProperties(SharedProperties::copperMetal) .properties(p -> p.noOcclusion()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { p.getVariantBuilder(c.getEntry()) .forAllStatesExcept(state -> { Axis axis = state.getValue(BlockStateProperties.AXIS); @@ -930,7 +936,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .properties(p -> p.mapColor(MapColor.STONE)) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) + .blockstate(() -> BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO)) .transform(CStress.setImpact(4.0)) .item() @@ -942,7 +948,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) - .blockstate(new SmartFluidPipeGenerator()::generate) + .blockstate(() -> new SmartFluidPipeGenerator()::generate) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO)) .item() .transform(customItemModel()) @@ -951,8 +957,8 @@ public class AllBlocks { public static final BlockEntry FLUID_VALVE = REGISTRATE.block("fluid_valve", FluidValveBlock::new) .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> BlockStateGen.directionalAxisBlock(c, p, (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed"))) .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::withAO)) @@ -973,11 +979,11 @@ public class AllBlocks { .properties(p -> p.mapColor(colour.getMapColor())) .transform(pickaxeOnly()) .transform(BuilderTransformers.valveHandle(colour)) - .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, c.get()) + .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.MISC, c.get()) .requires(colour.getTag()) .requires(AllItemTags.VALVE_HANDLES.tag) - .unlockedBy("has_valve", RegistrateRecipeProvider.has(AllItemTags.VALVE_HANDLES.tag)) - .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle"))) + .unlockedBy("has_valve", p.has(AllItemTags.VALVE_HANDLES.tag)) + .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle").toString())) .register(); }); @@ -986,14 +992,14 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .isRedstoneConductor((p1, p2, p3) -> true)) .transform(pickaxeOnly()) - .blockstate(new FluidTankGenerator()::generate) + .blockstate(() -> new FluidTankGenerator()::generate) .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard)) .transform(displaySource(AllDisplaySources.BOILER)) .transform(mountedFluidStorage(AllMountedStorageTypes.FLUID_TANK)) .onRegister(movementBehaviour(new FluidTankMovementBehavior())) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item(FluidTankItem::new) - .model(AssetLookup.customBlockItemModel("_", "block_single_window")) + .model(() -> AssetLookup.customBlockItemModel("_", "block_single_window")) .build() .register(); @@ -1004,13 +1010,13 @@ public class AllBlocks { .mapColor(MapColor.COLOR_PURPLE)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new FluidTankGenerator("creative_")::generate) + .blockstate(() -> new FluidTankGenerator("creative_")::generate) .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::creative)) .transform(mountedFluidStorage(AllMountedStorageTypes.CREATIVE_FLUID_TANK)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item(FluidTankItem::new) .properties(p -> p.rarity(Rarity.EPIC)) - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/fluid_tank/block_single_window")) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/fluid_tank/block_single_window")) .texture("5", p.modLoc("block/creative_fluid_tank_window_single")) .texture("1", p.modLoc("block/creative_fluid_tank")) .texture("particle", p.modLoc("block/creative_fluid_tank")) @@ -1022,9 +1028,9 @@ public class AllBlocks { public static final BlockEntry HOSE_PULLEY = REGISTRATE.block("hose_pulley", HosePulleyBlock::new) .initialProperties(SharedProperties::copperMetal) .properties(BlockBehaviour.Properties::noOcclusion) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) .transform(CStress.setImpact(4.0)) .item() .transform(customItemModel()) @@ -1033,16 +1039,16 @@ public class AllBlocks { public static final BlockEntry ITEM_DRAIN = REGISTRATE.block("item_drain", ItemDrainBlock::new) .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) .simpleItem() .register(); public static final BlockEntry SPOUT = REGISTRATE.block("spout", SpoutBlock::new) .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) - .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> (ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item(AssemblyOperatorBlockItem::new) .transform(customItemModel()) .register(); @@ -1052,7 +1058,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_LIGHT_GRAY)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new PortableStorageInterfaceMovement())) .item() .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) @@ -1063,7 +1069,7 @@ public class AllBlocks { REGISTRATE.block("steam_engine", SteamEngineBlock::new) .initialProperties(SharedProperties::copperMetal) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .transform(CStress.setCapacity(1024.0)) .onRegister(BlockStressValues.setGeneratorSpeed(64, true)) .item() @@ -1074,7 +1080,7 @@ public class AllBlocks { .initialProperties(SharedProperties::copperMetal) .properties(p -> p.mapColor(MapColor.GOLD)) .transform(pickaxeOnly()) - .blockstate(new WhistleGenerator()::generate) + .blockstate(() -> new WhistleGenerator()::generate) .item() .transform(customItemModel()) .register(); @@ -1085,7 +1091,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.GOLD) .forceSolidOn()) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.whistleExtender()) + .blockstate(() -> BlockStateGen.whistleExtender()) .register(); public static final BlockEntry POWERED_SHAFT = @@ -1094,7 +1100,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.METAL) .forceSolidOn()) .transform(pickaxeOnly()) - .blockstate(BlockStateGen.axisBlockProvider(false)) + .blockstate(() -> BlockStateGen.axisBlockProvider(false)) .loot((lt, block) -> lt.dropOther(block, AllBlocks.SHAFT.get())) .register(); @@ -1123,7 +1129,7 @@ public class AllBlocks { .mapColor(MapColor.DIRT) .forceSolidOn()) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) + .blockstate(() -> BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) .simpleItem() .register(); @@ -1133,7 +1139,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.DIRT)) .transform(axeOrPickaxe()) .loot((p, b) -> p.dropOther(b, PISTON_EXTENSION_POLE.get())) - .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() + .blockstate(() -> (c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() .getExistingFile(p.modLoc("block/mechanical_piston/" + state.getValue(MechanicalPistonHeadBlock.TYPE) .getSerializedName() + "/head")))) .register(); @@ -1144,7 +1150,7 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalAxisBlockProvider()) + .blockstate(() -> BlockStateGen.directionalAxisBlockProvider()) .item() .transform(customItemModel()) .register(); @@ -1155,22 +1161,25 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.NETHER) .forceSolidOn()) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.directionalBlock(c.get(), s -> { - boolean isPowered = s.getValue(GantryShaftBlock.POWERED); - boolean isFlipped = s.getValue(GantryShaftBlock.FACING) - .getAxisDirection() == AxisDirection.NEGATIVE; - String partName = s.getValue(GantryShaftBlock.PART) - .getSerializedName(); - String flipped = isFlipped ? "_flipped" : ""; - String powered = isPowered ? "_powered" : ""; - ModelFile existing = AssetLookup.partialBaseModel(c, p, partName); - if (!isPowered && !isFlipped) - return existing; - return p.models() - .withExistingParent("block/" + c.getName() + "_" + partName + powered + flipped, - existing.getLocation()) - .texture("2", p.modLoc("block/" + c.getName() + powered + flipped)); - })) + .blockstate(() -> (c, p) -> { + Map models = new java.util.HashMap<>(); + p.directionalBlock(c.get(), s -> { + boolean isPowered = s.getValue(GantryShaftBlock.POWERED); + boolean isFlipped = s.getValue(GantryShaftBlock.FACING) + .getAxisDirection() == AxisDirection.NEGATIVE; + String partName = s.getValue(GantryShaftBlock.PART) + .getSerializedName(); + String flipped = isFlipped ? "_flipped" : ""; + String powered = isPowered ? "_powered" : ""; + ModelFile existing = AssetLookup.partialBaseModel(c, p, partName); + if (!isPowered && !isFlipped) + return existing; + String modelName = "block/" + c.getName() + "_" + partName + powered + flipped; + return models.computeIfAbsent(modelName, $ -> p.models() + .withExistingParent(modelName, existing.getLocation()) + .texture("2", p.modLoc("block/" + c.getName() + powered + flipped))); + }); + }) .transform(CStress.setNoImpact()) .item() .transform(customItemModel("_", "block_single")) @@ -1209,10 +1218,10 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) .properties(p -> p.noOcclusion()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalAxisBlockProvider(true)) .transform(CStress.setImpact(4.0)) .item() .transform(customItemModel()) @@ -1223,7 +1232,7 @@ public class AllBlocks { .mapColor(MapColor.COLOR_BROWN)) .tag(AllBlockTags.BRITTLE.tag) .tag(BlockTags.CLIMBABLE) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) .register(); @@ -1232,7 +1241,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .tag(AllBlockTags.BRITTLE.tag) .tag(BlockTags.CLIMBABLE) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) .register(); @@ -1241,7 +1250,7 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_BROWN)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) .transform(CStress.setImpact(4.0)) .item() .transform(customItemModel()) @@ -1253,8 +1262,8 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.COLOR_GRAY)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.cartAssembler()) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> BlockStateGen.cartAssembler()) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .tag(BlockTags.RAILS, AllBlockTags.SAFE_NBT.tag) .item(CartAssemblerBlockItem::new) .transform(customItemModel()) @@ -1264,20 +1273,20 @@ public class AllBlocks { REGISTRATE.block("controller_rail", ControllerRailBlock::new) .initialProperties(() -> Blocks.POWERED_RAIL) .transform(pickaxeOnly()) - .blockstate(new ControllerRailGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) - .color(() -> () -> (state, world, pos, layer) -> RedStoneWireBlock - .getColorForPower(pos != null && world != null ? state.getValue(BlockStateProperties.POWER) : 0)) + .blockstate(() -> new ControllerRailGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .color(() -> () -> List.of((BlockTintSource) state -> RedStoneWireBlock + .getColorForPower(state.getValue(BlockStateProperties.POWER)))) .tag(BlockTags.RAILS) .item() - .model((c, p) -> p.generated(c, Create.asResource("block/" + c.getName()))) + .model(() -> (c, p) -> p.generated(c, Create.asResource("block/" + c.getName()))) .build() .register(); public static final BlockEntry MINECART_ANCHOR = REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new) .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/cart_assembler/" + c.getName())))) .register(); @@ -1287,7 +1296,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_BROWN)) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.linearChassis()) + .blockstate(() -> BlockStateGen.linearChassis()) .onRegister(connectedTextures(ChassisCTBehaviour::new)) .lang("Linear Chassis") .simpleItem() @@ -1299,7 +1308,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.linearChassis()) + .blockstate(() -> BlockStateGen.linearChassis()) .onRegister(connectedTextures(ChassisCTBehaviour::new)) .simpleItem() .register(); @@ -1310,9 +1319,9 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.DIRT)) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.radialChassis()) + .blockstate(() -> BlockStateGen.radialChassis()) .item() - .model((c, p) -> { + .model(() -> (c, p) -> { String path = "block/" + c.getName(); p.cubeColumn(c.getName(), p.modLoc(path + "_side"), p.modLoc(path + "_end")); }) @@ -1323,8 +1332,8 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .item() .transform(customItemModel()) .register(); @@ -1333,9 +1342,9 @@ public class AllBlocks { REGISTRATE.block("contraption_controls", ContraptionControlsBlock::new) .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.horizontalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new ContraptionControlsMovement())) .onRegister(interactionBehaviour(new ContraptionControlsMovingInteraction())) .item() @@ -1346,7 +1355,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalBlockProvider(true)) + .blockstate(() -> BlockStateGen.directionalBlockProvider(true)) .transform(CStress.setImpact(4.0)) .onRegister(movementBehaviour(new DrillMovementBehaviour())) .item() @@ -1356,13 +1365,13 @@ public class AllBlocks { public static final BlockEntry MECHANICAL_SAW = REGISTRATE.block("mechanical_saw", SawBlock::new) .initialProperties(SharedProperties::stone) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(new SawGenerator()::generate) + .blockstate(() -> new SawGenerator()::generate) .transform(CStress.setImpact(4.0)) .onRegister(movementBehaviour(new SawMovementBehaviour())) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .transform(customItemModel()) @@ -1372,7 +1381,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.directionalAxisBlockProvider()) + .blockstate(() -> BlockStateGen.directionalAxisBlockProvider()) .transform(CStress.setImpact(4.0)) .onRegister(movementBehaviour(new DeployerMovementBehaviour())) .onRegister(interactionBehaviour(new DeployerMovingInteraction())) @@ -1386,7 +1395,7 @@ public class AllBlocks { .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.PODZOL)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .onRegister(movementBehaviour(new PortableStorageInterfaceMovement())) .item() .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) @@ -1399,7 +1408,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_GRAY)) .transform(axeOrPickaxe()) .onRegister(movementBehaviour(new ContactMovementBehaviour())) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .item(RedstoneContactItem::new) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .transform(customItemModel("_", "block")) @@ -1411,7 +1420,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW) .lightLevel(ElevatorContactBlock::getLight)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.directionalBlock(c.get(), state -> { + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), state -> { Boolean calling = state.getValue(ElevatorContactBlock.CALLING); Boolean powering = state.getValue(ElevatorContactBlock.POWERING); return powering ? AssetLookup.partialBaseModel(c, p, "powered") @@ -1430,8 +1439,8 @@ public class AllBlocks { .forceSolidOn()) .transform(axeOrPickaxe()) .onRegister(movementBehaviour(new HarvesterMovementBehaviour())) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .transform(customItemModel()) @@ -1444,7 +1453,7 @@ public class AllBlocks { .forceSolidOn()) .transform(axeOrPickaxe()) .onRegister(movementBehaviour(new PloughMovementBehaviour())) - .blockstate(BlockStateGen.horizontalBlockProvider(false)) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(false)) .item() .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .build() @@ -1457,8 +1466,8 @@ public class AllBlocks { .noOcclusion()) .transform(axeOrPickaxe()) .onRegister(movementBehaviour(new RollerMovementBehaviour())) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item(RollerBlockItem::new) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .transform(customItemModel()) @@ -1470,7 +1479,7 @@ public class AllBlocks { .sound(SoundType.SCAFFOLDING) .noOcclusion()) .transform(axeOnly()) - .blockstate(BlockStateGen.directionalBlockProvider(false)) + .blockstate(() -> BlockStateGen.directionalBlockProvider(false)) .lang("Windmill Sail Frame") .tag(AllBlockTags.WINDMILL_SAILS.tag) .tag(AllBlockTags.FAN_TRANSPARENT.tag) @@ -1484,7 +1493,7 @@ public class AllBlocks { .sound(SoundType.SCAFFOLDING) .noOcclusion()) .transform(axeOnly()) - .blockstate(BlockStateGen.directionalBlockProvider(false)) + .blockstate(() -> BlockStateGen.directionalBlockProvider(false)) .lang("Windmill Sail") .tag(AllBlockTags.WINDMILL_SAILS.tag) .item(BlankSailBlockItem::new) @@ -1502,7 +1511,7 @@ public class AllBlocks { .sound(SoundType.SCAFFOLDING) .noOcclusion()) .transform(axeOnly()) - .blockstate((c, p) -> p.directionalBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), p.models() .withExistingParent(colourName + "_sail", p.modLoc("block/white_sail")) .texture("0", p.modLoc("block/sail/canvas_" + colourName)))) .tag(AllBlockTags.WINDMILL_SAILS.tag) @@ -1547,10 +1556,10 @@ public class AllBlocks { .properties(p -> p.noOcclusion() .mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(axeOrPickaxe()) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalBlockProvider(true)) .transform(CStress.setImpact(2.0)) .onRegister(CreateRegistrate.connectedTextures(CrafterCTBehaviour::new)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .transform(customItemModel()) .register(); @@ -1563,7 +1572,7 @@ public class AllBlocks { .tag(AllBlockTags.SAFE_NBT.tag) .properties(BlockBehaviour.Properties::noOcclusion) .transform(CStress.setNoImpact()) - .blockstate(new SequencedGearshiftGenerator()::generate) + .blockstate(() -> new SequencedGearshiftGenerator()::generate) .item() .transform(customItemModel()) .register(); @@ -1574,7 +1583,7 @@ public class AllBlocks { .mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(axeOrPickaxe()) .transform(CStress.setNoImpact()) - .blockstate(BlockStateGen.axisBlockProvider(true)) + .blockstate(() -> BlockStateGen.axisBlockProvider(true)) .item() .transform(customItemModel()) .register(); @@ -1586,7 +1595,7 @@ public class AllBlocks { .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) .transform(CStress.setNoImpact()) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(true)) + .blockstate(() -> BlockStateGen.horizontalAxisBlockProvider(true)) .item() .transform(customItemModel()) .register(); @@ -1597,7 +1606,7 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStates(s -> ConfiguredModel.builder() .modelFile(AssetLookup.partialBaseModel(c, p)) .rotationX(s.getValue(ArmBlock.CEILING) ? 180 : 0) @@ -1614,27 +1623,27 @@ public class AllBlocks { .sound(SoundType.METAL) .noOcclusion() .forceSolidOn()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) .clientExtension(() -> () -> new TrackBlock.RenderProperties()) .onRegister(CreateRegistrate.blockModel(() -> TrackModel::new)) - .blockstate(new TrackBlockStateGenerator()::generate) + .blockstate(() -> new TrackBlockStateGenerator()::generate) .tag(Tags.Blocks.RELOCATION_NOT_SUPPORTED) .tag(AllBlockTags.TRACKS.tag) .tag(AllBlockTags.GIRDABLE_TRACKS.tag) .lang("Train Track") .item(TrackBlockItem::new) .tag(AllItemTags.TRACKS.tag) - .model((c, p) -> p.generated(c, Create.asResource("item/" + c.getName()))) + .model(() -> (c, p) -> p.generated(c, Create.asResource("item/" + c.getName()))) .build() .register(); public static final BlockEntry FAKE_TRACK = REGISTRATE.block("fake_track", FakeTrackBlock::new) .properties(p -> p.mapColor(MapColor.METAL) - .noCollission() + .noCollision() .noOcclusion() .replaceable()) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .withExistingParent(c.getName(), p.mcLoc("block/air")))) .lang("Track Marker for Maps") .register(); @@ -1652,7 +1661,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .transform(displaySource(AllDisplaySources.STATION_SUMMARY)) .transform(displaySource(AllDisplaySources.TRAIN_STATUS)) .lang("Train Station") @@ -1666,7 +1675,7 @@ public class AllBlocks { .noOcclusion() .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStates(state -> ConfiguredModel.builder() .modelFile(AssetLookup.partialBaseModel(c, p, state.getValue(SignalBlock.TYPE) .getSerializedName())) @@ -1682,7 +1691,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.PODZOL) .noOcclusion() .sound(SoundType.NETHERITE_BLOCK)) - .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) .transform(pickaxeOnly()) .transform(displaySource(AllDisplaySources.OBSERVED_TRAIN_NAME)) .lang("Train Observer") @@ -1706,9 +1715,9 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_BROWN) .sound(SoundType.NETHERITE_BLOCK)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.horizontalBlock(c.get(), + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p, s.getValue(ControlsBlock.VIRTUAL) ? "virtual" : s.getValue(ControlsBlock.OPEN) ? "open" : "closed"))) .onRegister(movementBehaviour(new ControlsMovementBehaviour())) @@ -1720,64 +1729,64 @@ public class AllBlocks { public static final BlockEntry ANDESITE_FUNNEL = REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.STONE)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) .clientExtension(() -> () -> new ReducedDestroyEffects()) .onRegister(movementBehaviour(FunnelMovementBehaviour.andesite())) - .blockstate(new FunnelGenerator("andesite", false)::generate) + .blockstate(() -> new FunnelGenerator("andesite", false)::generate) .item(FunnelItem::new) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) - .model(FunnelGenerator.itemModel("andesite")) + .model(() -> FunnelGenerator.itemModel("andesite")) .build() .register(); public static final BlockEntry ANDESITE_BELT_FUNNEL = REGISTRATE.block("andesite_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.ANDESITE_FUNNEL, p)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(SharedProperties::stone) .properties(p -> p.mapColor(MapColor.STONE)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) .clientExtension(() -> () -> new ReducedDestroyEffects()) - .blockstate(new BeltFunnelGenerator("andesite")::generate) + .blockstate(() -> new BeltFunnelGenerator("andesite")::generate) .loot((p, b) -> p.dropOther(b, ANDESITE_FUNNEL.get())) .register(); public static final BlockEntry BRASS_FUNNEL = REGISTRATE.block("brass_funnel", BrassFunnelBlock::new) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) .clientExtension(() -> () -> new ReducedDestroyEffects()) .onRegister(movementBehaviour(FunnelMovementBehaviour.brass())) - .blockstate(new FunnelGenerator("brass", true)::generate) + .blockstate(() -> new FunnelGenerator("brass", true)::generate) .item(FunnelItem::new) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) - .model(FunnelGenerator.itemModel("brass")) + .model(() -> FunnelGenerator.itemModel("brass")) .build() .register(); public static final BlockEntry BRASS_BELT_FUNNEL = REGISTRATE.block("brass_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.BRASS_FUNNEL, p)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW)) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) .clientExtension(() -> () -> new ReducedDestroyEffects()) - .blockstate(new BeltFunnelGenerator("brass")::generate) + .blockstate(() -> new BeltFunnelGenerator("brass")::generate) .loot((p, b) -> p.dropOther(b, BRASS_FUNNEL.get())) .register(); public static final BlockEntry ANDESITE_TUNNEL = REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new) .properties(p -> p.mapColor(MapColor.STONE)) - .transform(BuilderTransformers.beltTunnel("andesite", ResourceLocation.withDefaultNamespace("block/polished_andesite"))) + .transform(BuilderTransformers.beltTunnel("andesite", Identifier.withDefaultNamespace("block/polished_andesite"))) .transform(displaySource(AllDisplaySources.ACCUMULATE_ITEMS)) .transform(displaySource(AllDisplaySources.ITEM_THROUGHPUT)) .register(); @@ -1798,7 +1807,7 @@ public class AllBlocks { .noOcclusion()) .properties(p -> p.isRedstoneConductor(($1, $2, $3) -> false)) .transform(axeOrPickaxe()) - .blockstate(new SmartObserverGenerator()::generate) + .blockstate(() -> new SmartObserverGenerator()::generate) .transform(displaySource(AllDisplaySources.COUNT_ITEMS)) .transform(displaySource(AllDisplaySources.LIST_ITEMS)) .transform(displaySource(AllDisplaySources.COUNT_FLUIDS)) @@ -1816,7 +1825,7 @@ public class AllBlocks { .noOcclusion()) .properties(p -> p.isRedstoneConductor(($1, $2, $3) -> false)) .transform(axeOrPickaxe()) - .blockstate(new ThresholdSwitchGenerator()::generate) + .blockstate(() -> new ThresholdSwitchGenerator()::generate) .transform(displaySource(AllDisplaySources.FILL_LEVEL)) .lang("Threshold Switch") .item() @@ -1836,7 +1845,7 @@ public class AllBlocks { .sound(SoundType.NETHERITE_BLOCK) .explosionResistance(1200)) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) + .blockstate(() -> (c, p) -> p.getVariantBuilder(c.get()) .forAllStates(s -> ConfiguredModel.builder() .modelFile(AssetLookup.standardModel(c, p)) .rotationY(s.getValue(ItemVaultBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0) @@ -1852,8 +1861,8 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_BLUE) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.horizontalBlock(c.get(), + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p, s.getValue(ItemHatchBlock.OPEN) ? "open" : "closed"))) .item() .transform(customItemModel("_", "block_closed")) @@ -1875,10 +1884,10 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_BLUE) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .item(PackagePortItem::new) - .model(AssetLookup::customItemModel) + .model(() -> AssetLookup::customItemModel) .build() .register(); @@ -1888,36 +1897,38 @@ public class AllBlocks { .initialProperties(SharedProperties::wooden) .properties(p -> p.mapColor(colour)) .transform(axeOnly()) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { + Map models = new java.util.HashMap<>(); p.horizontalBlock(c.get(), s -> { String suffix = s.getValue(PostboxBlock.OPEN) ? "open" : "closed"; - return p.models() - .withExistingParent(colourName + "_postbox_" + suffix, + String modelName = colourName + "_postbox_" + suffix; + return models.computeIfAbsent(modelName, $ -> p.models() + .withExistingParent(modelName, p.modLoc("block/package_postbox/block_" + suffix)) .texture("0", p.modLoc("block/post_box/post_box_" + colourName)) - .texture("1", p.modLoc("block/post_box/post_box_" + colourName + "_" + suffix)); + .texture("1", p.modLoc("block/post_box/post_box_" + colourName + "_" + suffix))); }); }) .tag(AllBlockTags.POSTBOXES.tag) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "block.create.package_postbox")) .item(PackagePortItem::new) .recipe((c, p) -> { - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, c.get()) + ShapedRecipeBuilder.shaped(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get()) .define('D', colour.getTag()) .define('B', Items.BARREL) .define('A', AllItems.ANDESITE_ALLOY) .pattern("D") .pattern("B") .pattern("A") - .unlockedBy("has_barrel", RegistrateRecipeProvider.has(Items.BARREL)) - .save(p, Create.asResource("crafting/logistics/" + c.getName())); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, c.get()) + .unlockedBy("has_barrel", p.has(Items.BARREL)) + .save(p, Create.asResource("crafting/logistics/" + c.getName()).toString()); + ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get()) .requires(colour.getTag()) .requires(AllItemTags.POSTBOXES.tag) - .unlockedBy("has_postbox", RegistrateRecipeProvider.has(AllItemTags.POSTBOXES.tag)) - .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_from_other_postbox")); + .unlockedBy("has_postbox", p.has(AllItemTags.POSTBOXES.tag)) + .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_from_other_postbox").toString()); }) - .model((c, p) -> p.withExistingParent(colourName + "_postbox", p.modLoc("block/package_postbox/item")) + .model(() -> (c, p) -> p.withExistingParent(colourName + "_postbox", p.modLoc("block/package_postbox/item")) .texture("0", p.modLoc("block/post_box/post_box_" + colourName)) .texture("1", p.modLoc("block/post_box/post_box_" + colourName + "_closed"))) .tag(AllItemTags.POSTBOXES.tag) @@ -1931,7 +1942,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_BLUE) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate(new PackagerLinkGenerator()::generate) + .blockstate(() -> new PackagerLinkGenerator()::generate) .item(LogisticallyLinkedBlockItem::new) .transform(customItemModel("_", "block_vertical")) .register(); @@ -1941,8 +1952,8 @@ public class AllBlocks { .initialProperties(SharedProperties::softMetal) .properties(p -> p.sound(SoundType.GLASS)) .transform(axeOrPickaxe()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.standardModel(c, p))) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), AssetLookup.standardModel(c, p))) .item(LogisticallyLinkedBlockItem::new) .build() .register(); @@ -1953,42 +1964,42 @@ public class AllBlocks { .properties(p -> p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.noOcclusion()) .transform(pickaxeOnly()) - .blockstate((c, p) -> BlockStateGen.horizontalAxisBlock(c, p, AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> BlockStateGen.horizontalAxisBlock(c, p, AssetLookup.forPowered(c, p))) .item(RedstoneRequesterBlockItem::new) .transform(customItemModel("_", "block")) .register(); public static final BlockEntry FACTORY_GAUGE = REGISTRATE.block("factory_gauge", FactoryPanelBlock::new) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(SharedProperties::copperMetal) .properties(p -> p.noOcclusion()) .properties(p -> p.forceSolidOn()) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .onRegister(CreateRegistrate.blockModel(() -> FactoryPanelModel::new)) .transform(displaySource(AllDisplaySources.GAUGE_STATUS)) .item(FactoryPanelBlockItem::new) - .model(AssetLookup::customItemModel) + .model(() -> AssetLookup::customItemModel) .build() .register(); public static final DyedBlockList TABLE_CLOTHS = new DyedBlockList<>(colour -> { String colourName = colour.getSerializedName(); return REGISTRATE.block(colourName + "_table_cloth", p -> new TableClothBlock(p, colour)) - .transform(BuilderTransformers.tableCloth(colourName, () -> Blocks.BLACK_CARPET, true)) + .transform(BuilderTransformers.tableCloth(colourName, () -> Blocks.CARPET.black(), true)) .properties(p -> p.mapColor(colour)) .recipe((c, p) -> { - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, c.get(), 2) + ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get(), 2) .requires(DyeHelper.getWoolOfDye(colour)) .requires(AllItems.ANDESITE_ALLOY) - .unlockedBy("has_wool", RegistrateRecipeProvider.has(ItemTags.WOOL)) - .save(p, Create.asResource("crafting/logistics/" + c.getName())); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, c.get()) + .unlockedBy("has_wool", p.has(ItemTags.WOOL)) + .save(p, Create.asResource("crafting/logistics/" + c.getName()).toString()); + ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get()) .requires(colour.getTag()) .requires(AllItemTags.DYED_TABLE_CLOTHS.tag) - .unlockedBy("has_postbox", RegistrateRecipeProvider.has(AllItemTags.DYED_TABLE_CLOTHS.tag)) - .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_from_other_table_cloth")); + .unlockedBy("has_postbox", p.has(AllItemTags.DYED_TABLE_CLOTHS.tag)) + .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_from_other_table_cloth").toString()); }) .register(); }); @@ -2029,9 +2040,9 @@ public class AllBlocks { REGISTRATE.block("display_link", DisplayLinkBlock::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.TERRACOTTA_BROWN)) - .addLayer(() -> RenderType::translucent) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .item(DisplayLinkBlockItem::new) .transform(customItemModel("_", "block")) .register(); @@ -2040,10 +2051,10 @@ public class AllBlocks { REGISTRATE.block("display_board", FlapDisplayBlock::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.COLOR_GRAY)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) .transform(CStress.setNoImpact()) - .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .transform(displayTarget(AllDisplayTargets.DISPLAY_BOARD)) .lang("Display Board") .item() @@ -2057,8 +2068,8 @@ public class AllBlocks { .mapColor(DyeColor.ORANGE) .forceSolidOn()) .transform(pickaxeOnly()) - .blockstate(new NixieTubeGenerator()::generate) - .addLayer(() -> RenderType::translucent) + .blockstate(() -> new NixieTubeGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent) .item() .transform(customItemModel()) .register(); @@ -2073,9 +2084,9 @@ public class AllBlocks { .mapColor(colour) .forceSolidOn()) .transform(pickaxeOnly()) - .blockstate(new NixieTubeGenerator()::generate) + .blockstate(() -> new NixieTubeGenerator()::generate) .loot((p, b) -> p.dropOther(b, ORANGE_NIXIE_TUBE.get())) - .addLayer(() -> RenderType::translucent) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent) .register(); }); @@ -2084,12 +2095,15 @@ public class AllBlocks { .initialProperties(() -> Blocks.REDSTONE_LAMP) .properties(p -> p.mapColor(MapColor.TERRACOTTA_PINK) .lightLevel(s -> s.getValue(RoseQuartzLampBlock.POWERING) ? 15 : 0)) - .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, s -> { - boolean powered = s.getValue(RoseQuartzLampBlock.POWERING); - String name = c.getName() + (powered ? "_powered" : ""); - return p.models() - .cubeAll(name, p.modLoc("block/" + name)); - })) + .blockstate(() -> (c, p) -> { + Map models = new java.util.HashMap<>(); + BlockStateGen.simpleBlock(c, p, s -> { + boolean powered = s.getValue(RoseQuartzLampBlock.POWERING); + String name = c.getName() + (powered ? "_powered" : ""); + return models.computeIfAbsent(name, $ -> p.models() + .cubeAll(name, p.modLoc("block/" + name))); + }); + }) .transform(pickaxeOnly()) .simpleItem() .register(); @@ -2101,8 +2115,8 @@ public class AllBlocks { .forceSolidOn()) .transform(axeOrPickaxe()) .tag(AllBlockTags.BRITTLE.tag, AllBlockTags.SAFE_NBT.tag) - .blockstate(new RedstoneLinkGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new RedstoneLinkGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .transform(customItemModel("_", "transmitter")) .register(); @@ -2112,7 +2126,7 @@ public class AllBlocks { .initialProperties(() -> Blocks.LEVER) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .onRegister(ItemUseOverrides::addBlock) .item() .transform(customItemModel()) @@ -2123,7 +2137,7 @@ public class AllBlocks { .properties(p -> p.forceSolidOn()) .transform(pickaxeOnly()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.standardModel(c, p))) + .blockstate(() -> (c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.standardModel(c, p))) .simpleItem() .register(); @@ -2131,10 +2145,10 @@ public class AllBlocks { REGISTRATE.block("pulse_repeater", BrassDiodeBlock::new) .initialProperties(() -> Blocks.REPEATER) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BrassDiodeGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new BrassDiodeGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() - .model(AbstractDiodeGenerator::diodeItemModel) + .model(() -> AbstractDiodeGenerator::diodeItemModel) .build() .register(); @@ -2142,36 +2156,36 @@ public class AllBlocks { REGISTRATE.block("pulse_extender", BrassDiodeBlock::new) .initialProperties(() -> Blocks.REPEATER) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BrassDiodeGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new BrassDiodeGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() - .model(AbstractDiodeGenerator::diodeItemModel) + .model(() -> AbstractDiodeGenerator::diodeItemModel) .build() .register(); public static final BlockEntry PULSE_TIMER = REGISTRATE.block("pulse_timer", BrassDiodeBlock::new) .initialProperties(() -> Blocks.REPEATER) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BrassDiodeGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new BrassDiodeGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() - .model(AbstractDiodeGenerator::diodeItemModel) + .model(() -> AbstractDiodeGenerator::diodeItemModel) .build() .register(); public static final BlockEntry POWERED_LATCH = REGISTRATE.block("powered_latch", PoweredLatchBlock::new) .initialProperties(() -> Blocks.REPEATER) - .blockstate(new PoweredLatchGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new PoweredLatchGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .simpleItem() .register(); public static final BlockEntry POWERED_TOGGLE_LATCH = REGISTRATE.block("powered_toggle_latch", ToggleLatchBlock::new) .initialProperties(() -> Blocks.REPEATER) - .blockstate(new ToggleLatchGenerator()::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new ToggleLatchGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .item() .transform(customItemModel("diodes", "latch_off")) .register(); @@ -2180,7 +2194,7 @@ public class AllBlocks { REGISTRATE.block("lectern_controller", LecternControllerBlock::new) .initialProperties(() -> Blocks.LECTERN) .transform(axeOnly()) - .blockstate((c, p) -> p.horizontalBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), p.models() .getExistingFile(p.mcLoc("block/lectern")))) .loot((lt, block) -> lt.dropOther(block, Blocks.LECTERN)) .register(); @@ -2217,7 +2231,7 @@ public class AllBlocks { public static final BlockEntry DESK_BELL = REGISTRATE.block("desk_bell", DeskBellBlock::new) .properties(p -> p.mapColor(MapColor.SAND)) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) .item() .transform(customItemModel("_", "block")) .onRegister(movementBehaviour(new BellMovementBehaviour())) @@ -2230,21 +2244,21 @@ public class AllBlocks { .properties(p -> p.sound(SoundType.WOOD) .mapColor(colour) .forceSolidOn()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .loot((lt, block) -> { lt.add(block, LootTable.lootTable().withPool(LootPool.lootPool() .when(ExplosionCondition.survivesExplosion()) .setRolls(ConstantValue.exactly(1)) - .add(LootItem.lootTableItem(block) - .apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + .add(LootItem.lootTableItem(block) + .apply(CopyNameFunction.copyName(LootContext.BlockEntityTarget.BLOCK_ENTITY)) + .apply(CopyComponentsFunction.copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) .include(AllDataComponents.TOOLBOX_UUID) .include(AllDataComponents.TOOLBOX_INVENTORY) ) ) )); }) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { p.horizontalBlock(c.get(), p.models() .withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/block")) .texture("0", p.modLoc("block/toolbox/" + colourName))); @@ -2253,7 +2267,7 @@ public class AllBlocks { .transform(mountedItemStorage(AllMountedStorageTypes.TOOLBOX)) .tag(AllBlockTags.TOOLBOXES.tag) .item(UncontainableBlockItem::new) - .model((c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item")) + .model(() -> (c, p) -> p.withExistingParent(colourName + "_toolbox", p.modLoc("block/toolbox/item")) .texture("0", p.modLoc("block/toolbox/" + colourName))) .tag(AllItemTags.TOOLBOXES.tag) .build() @@ -2265,12 +2279,12 @@ public class AllBlocks { .properties(p -> p.forceSolidOn()) .transform(axeOrPickaxe()) .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), + .blockstate(() -> (c, p) -> p.horizontalFaceBlock(c.get(), s -> AssetLookup.partialBaseModel(c, p, s.getValue(ClipboardBlock.WRITTEN) ? "written" : "empty"))) .loot((lt, b) -> lt.add(b, BlockLootSubProvider.noDrop())) .item(ClipboardBlockItem::new) .onRegister(ClipboardBlockItem::registerModelOverrides) - .model((c, p) -> ClipboardOverrides.addOverrideModels(c, p)) + .model(() -> (c, p) -> ClipboardOverrides.addOverrideModels(c, p)) .build() .register(); @@ -2331,7 +2345,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_GRAY) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate(GirderBlockStateGenerator::blockState) + .blockstate(() -> GirderBlockStateGenerator::blockState) .onRegister(CreateRegistrate.blockModel(() -> ConnectedGirderModel::new)) .item() .transform(customItemModel()) @@ -2343,7 +2357,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.COLOR_GRAY) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .blockstate(GirderBlockStateGenerator::blockStateWithShaft) + .blockstate(() -> GirderBlockStateGenerator::blockStateWithShaft) .loot((p, b) -> p.add(b, p.createSingleItemTable(METAL_GIRDER.get()) .withPool(p.applyExplosionCondition(SHAFT.get(), LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) @@ -2354,10 +2368,10 @@ public class AllBlocks { public static final BlockEntry COPYCAT_BASE = REGISTRATE.block("copycat_base", Block::new) .initialProperties(SharedProperties::softMetal) .properties(p -> p.mapColor(MapColor.GLOW_LICHEN)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .tag(AllBlockTags.FAN_TRANSPARENT.tag) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p))) .register(); public static final BlockEntry COPYCAT_STEP = @@ -2383,7 +2397,7 @@ public class AllBlocks { public static final BlockEntry COPYCAT_BARS = REGISTRATE.block("copycat_bars", WrenchableDirectionalBlock::new) - .blockstate(new SpecialCopycatPanelBlockState("bars")::generate) + .blockstate(() -> new SpecialCopycatPanelBlockState("bars")::generate) .onRegister(CreateRegistrate.blockModel(() -> CopycatBarsModel::new)) .register(); @@ -2398,23 +2412,23 @@ public class AllBlocks { .onRegister(movementBehaviour(movementBehaviour)) .onRegister(interactionBehaviour(interactionBehaviour)) .transform(displaySource(AllDisplaySources.ENTITY_NAME)) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { p.simpleBlock(c.get(), p.models() .withExistingParent(colourName + "_seat", p.modLoc("block/seat")) .texture("1", p.modLoc("block/seat/top_" + colourName)) .texture("2", p.modLoc("block/seat/side_" + colourName))); }) .recipe((c, p) -> { - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, c.get()) + ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get()) .requires(DyeHelper.getWoolOfDye(colour)) .requires(ItemTags.WOODEN_SLABS) - .unlockedBy("has_wool", RegistrateRecipeProvider.has(ItemTags.WOOL)) - .save(p, Create.asResource("crafting/kinetics/" + c.getName())); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, c.get()) + .unlockedBy("has_wool", p.has(ItemTags.WOOL)) + .save(p, Create.asResource("crafting/kinetics/" + c.getName()).toString()); + ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get()) .requires(colour.getTag()) .requires(AllItemTags.SEATS.tag) - .unlockedBy("has_seat", RegistrateRecipeProvider.has(AllItemTags.SEATS.tag)) - .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); + .unlockedBy("has_seat", p.has(AllItemTags.SEATS.tag)) + .save(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat").toString()); }) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "block.create.seat")) .tag(AllBlockTags.SEATS.tag) @@ -2473,7 +2487,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.NONE) .noOcclusion()) .onRegister(connectedTextures(TrapdoorCTBehaviour::new)) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .register(); public static final BlockEntry ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new) @@ -2556,7 +2570,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.STONE) .requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate(simpleCubeAll("andesite_block")) + .blockstate(() -> simpleCubeAll("andesite_block")) .tag(Tags.Blocks.STORAGE_BLOCKS) .transform(tagBlockAndItem(AllBlockTags.ANDESITE_ALLOY_STORAGE_BLOCKS.tag, AllItemTags.ANDESITE_ALLOY_STORAGE_BLOCKS.tag)) .tag(Tags.Items.STORAGE_BLOCKS) @@ -2579,7 +2593,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_YELLOW) .requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate(simpleCubeAll("brass_block")) + .blockstate(() -> simpleCubeAll("brass_block")) .tag(BlockTags.NEEDS_IRON_TOOL) .tag(Tags.Blocks.STORAGE_BLOCKS) .tag(BlockTags.BEACON_BASE_BLOCKS) @@ -2596,7 +2610,7 @@ public class AllBlocks { .sound(SoundType.CHISELED_BOOKSHELF) .ignitedByLava()) .transform(axeOnly()) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(false)) + .blockstate(() -> BlockStateGen.horizontalAxisBlockProvider(false)) .tag(Tags.Blocks.STORAGE_BLOCKS) .tag(AllBlockTags.CARDBOARD_STORAGE_BLOCKS.tag) .item() @@ -2614,7 +2628,7 @@ public class AllBlocks { .sound(SoundType.CHISELED_BOOKSHELF) .ignitedByLava()) .transform(axeOnly()) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(false)) + .blockstate(() -> BlockStateGen.horizontalAxisBlockProvider(false)) .loot((r, b) -> r.add(b, LootTable.lootTable() .withPool(LootPool.lootPool() .setRolls(ConstantValue.exactly(1.0F)) @@ -2640,7 +2654,7 @@ public class AllBlocks { () -> SoundEvents.AMETHYST_BLOCK_HIT, () -> SoundEvents.AMETHYST_BLOCK_FALL)) .requiresCorrectToolForDrops() .lightLevel(s -> 15)) - .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) .transform(pickaxeOnly()) .lang("Block of Experience") .tag(Tags.Blocks.STORAGE_BLOCKS) @@ -2658,7 +2672,7 @@ public class AllBlocks { .requiresCorrectToolForDrops() .sound(SoundType.DEEPSLATE)) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.axisBlock(c.get(), p.modLoc("block/palettes/rose_quartz_side"), + .blockstate(() -> (c, p) -> p.axisBlock(c.get(), p.modLoc("block/palettes/rose_quartz_side"), p.modLoc("block/palettes/rose_quartz_top"))) .recipe((c, p) -> p.stonecutting(DataIngredient.items(AllItems.ROSE_QUARTZ.get()), RecipeCategory.BUILDING_BLOCKS, c::get, 2)) @@ -2671,7 +2685,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_PINK) .requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate(simpleCubeAll("palettes/rose_quartz_tiles")) + .blockstate(() -> simpleCubeAll("palettes/rose_quartz_tiles")) .recipe((c, p) -> p.stonecutting(DataIngredient.items(AllItems.POLISHED_ROSE_QUARTZ.get()), RecipeCategory.BUILDING_BLOCKS, c::get, 2)) .simpleItem() @@ -2683,7 +2697,7 @@ public class AllBlocks { .properties(p -> p.mapColor(MapColor.TERRACOTTA_PINK) .requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate(simpleCubeAll("palettes/small_rose_quartz_tiles")) + .blockstate(() -> simpleCubeAll("palettes/small_rose_quartz_tiles")) .recipe((c, p) -> p.stonecutting(DataIngredient.items(AllItems.POLISHED_ROSE_QUARTZ.get()), RecipeCategory.BUILDING_BLOCKS, c::get, 2)) .simpleItem() diff --git a/src/main/java/com/simibubi/create/AllBogeyStyles.java b/src/main/java/com/simibubi/create/AllBogeyStyles.java index 4d536cd5e9..ca30624797 100644 --- a/src/main/java/com/simibubi/create/AllBogeyStyles.java +++ b/src/main/java/com/simibubi/create/AllBogeyStyles.java @@ -14,14 +14,14 @@ import com.simibubi.create.content.trains.bogey.StandardBogeyRenderer; import com.simibubi.create.content.trains.bogey.StandardBogeyVisual; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class AllBogeyStyles { - public static final Map BOGEY_STYLES = new HashMap<>(); - public static final Map> CYCLE_GROUPS = new HashMap<>(); - private static final Map EMPTY_GROUP = Collections.emptyMap(); + public static final Map BOGEY_STYLES = new HashMap<>(); + public static final Map> CYCLE_GROUPS = new HashMap<>(); + private static final Map EMPTY_GROUP = Collections.emptyMap(); - public static final ResourceLocation STANDARD_CYCLE_GROUP = Create.asResource("standard"); + public static final Identifier STANDARD_CYCLE_GROUP = Create.asResource("standard"); public static final BogeyStyle STANDARD = builder("standard", STANDARD_CYCLE_GROUP).displayName(Component.translatable("create.bogey.style.standard")) @@ -29,11 +29,11 @@ public class AllBogeyStyles { .size(BogeySizes.LARGE, AllBlocks.LARGE_BOGEY, () -> () -> new SizeRenderer(new StandardBogeyRenderer.Large(), StandardBogeyVisual.Large::new)) .build(); - public static Map getCycleGroup(ResourceLocation cycleGroup) { + public static Map getCycleGroup(Identifier cycleGroup) { return CYCLE_GROUPS.getOrDefault(cycleGroup, EMPTY_GROUP); } - private static BogeyStyle.Builder builder(String name, ResourceLocation cycleGroup) { + private static BogeyStyle.Builder builder(String name, Identifier cycleGroup) { return new BogeyStyle.Builder(Create.asResource(name), cycleGroup); } diff --git a/src/main/java/com/simibubi/create/AllCreativeModeTabs.java b/src/main/java/com/simibubi/create/AllCreativeModeTabs.java index a3fe24cd62..69c1b0652a 100644 --- a/src/main/java/com/simibubi/create/AllCreativeModeTabs.java +++ b/src/main/java/com/simibubi/create/AllCreativeModeTabs.java @@ -7,11 +7,10 @@ import java.util.function.Function; import java.util.function.Predicate; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.item.ItemStackRenderState; import net.minecraft.network.chat.Component; import net.neoforged.neoforge.registries.DeferredHolder; @@ -47,6 +46,7 @@ import net.minecraft.world.item.CreativeModeTab.TabVisibility; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -89,10 +89,11 @@ private static class RegistrateDisplayItemsGenerator implements DisplayItemsGene MutableObject> isItem3d = new MutableObject<>(item -> false); if (CatnipServices.PLATFORM.getEnv().isClient()) isItem3d.setValue(item -> { - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - BakedModel model = itemRenderer.getModel(new ItemStack(item), null, null, 0); - return model.isGui3d(); + ItemStackRenderState renderState = new ItemStackRenderState(); + Minecraft.getInstance() + .getItemModelResolver() + .updateForTopItem(renderState, new ItemStack(item), ItemDisplayContext.GUI, null, null, 0); + return renderState.usesBlockLight() || renderState.isOversizedInGui(); }); IS_ITEM_3D_PREDICATE = isItem3d.getValue(); } diff --git a/src/main/java/com/simibubi/create/AllDataComponents.java b/src/main/java/com/simibubi/create/AllDataComponents.java index 8e1e851476..b126403972 100644 --- a/src/main/java/com/simibubi/create/AllDataComponents.java +++ b/src/main/java/com/simibubi/create/AllDataComponents.java @@ -31,8 +31,8 @@ import com.simibubi.create.content.trains.track.BezierTrackPointLocation; import com.simibubi.create.content.trains.track.TrackPlacement.ConnectingFrom; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.minecraft.core.BlockPos; import net.minecraft.core.UUIDUtil; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/AllDisplaySources.java b/src/main/java/com/simibubi/create/AllDisplaySources.java index 76349b738d..f4dc8322b8 100644 --- a/src/main/java/com/simibubi/create/AllDisplaySources.java +++ b/src/main/java/com/simibubi/create/AllDisplaySources.java @@ -36,13 +36,13 @@ import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.RegistryEntry; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.BlockEntityTypes; public class AllDisplaySources { private static final CreateRegistrate REGISTRATE = Create.registrate(); @@ -51,10 +51,10 @@ public class AllDisplaySources { .associate(Blocks.RESPAWN_ANCHOR) .register(); public static final RegistryEntry SCOREBOARD = REGISTRATE.displaySource("scoreboard", ScoreboardDisplaySource::new) - .associate(BlockEntityType.COMMAND_BLOCK) + .associate(BlockEntityTypes.COMMAND_BLOCK) .register(); public static final RegistryEntry ENCHANT_POWER = REGISTRATE.displaySource("enchant_power", EnchantPowerDisplaySource::new) - .associate(BlockEntityType.ENCHANTING_TABLE) + .associate(BlockEntityTypes.ENCHANTING_TABLE) .register(); public static final RegistryEntry REDSTONE_POWER = REGISTRATE.displaySource("redstone_power", RedstonePowerDisplaySource::new) .associate(Blocks.TARGET) @@ -94,13 +94,10 @@ public class AllDisplaySources { List types = List.of("wired_modem_full", "computer_normal", "computer_advanced", "computer_command"); for (String name : types) { - ResourceLocation id = Mods.COMPUTERCRAFT.rl(name); - if (BuiltInRegistries.BLOCK_ENTITY_TYPE.containsKey(id)) { - BlockEntityType type = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id); - DisplaySource.BY_BLOCK_ENTITY.add(type, source); - } else { - Create.LOGGER.warn("Could not find block entity type {}. Outdated compat?", id); - } + Identifier id = Mods.COMPUTERCRAFT.rl(name); + BuiltInRegistries.BLOCK_ENTITY_TYPE.get(id).ifPresentOrElse(type -> { + DisplaySource.BY_BLOCK_ENTITY.add(type.value(), source); + }, () -> Create.LOGGER.warn("Could not find block entity type {}. Outdated compat?", id)); } }) .register(); diff --git a/src/main/java/com/simibubi/create/AllDisplayTargets.java b/src/main/java/com/simibubi/create/AllDisplayTargets.java index c4eea65e2a..30ca18de64 100644 --- a/src/main/java/com/simibubi/create/AllDisplayTargets.java +++ b/src/main/java/com/simibubi/create/AllDisplayTargets.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.redstone.displayLink.target.SignDisplayTarget; import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.entry.RegistryEntry; -import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.entity.BlockEntityTypes; import java.util.Map; import java.util.function.Supplier; @@ -16,10 +16,10 @@ public class AllDisplayTargets { private static final CreateRegistrate REGISTRATE = Create.registrate(); public static final RegistryEntry SIGN = REGISTRATE.displayTarget("sign", SignDisplayTarget::new) - .associate(BlockEntityType.SIGN) + .associate(BlockEntityTypes.SIGN) .register(); public static final RegistryEntry LECTERN = REGISTRATE.displayTarget("lectern", LecternDisplayTarget::new) - .associate(BlockEntityType.LECTERN) + .associate(BlockEntityTypes.LECTERN) .register(); public static final RegistryEntry DISPLAY_BOARD = simple("display_board", DisplayBoardTarget::new); diff --git a/src/main/java/com/simibubi/create/AllEnchantments.java b/src/main/java/com/simibubi/create/AllEnchantments.java index ff7c605780..1c95107bd6 100644 --- a/src/main/java/com/simibubi/create/AllEnchantments.java +++ b/src/main/java/com/simibubi/create/AllEnchantments.java @@ -1,6 +1,6 @@ package com.simibubi.create; -import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.predicates.ItemPredicate; import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; @@ -43,7 +43,7 @@ public static void bootstrap(BootstrapContext context) { EnchantmentEffectComponents.AMMO_USE, new SetValue(LevelBasedValue.perLevel(0.0F, 33.3333333333F)), MatchTool.toolMatches( - ItemPredicate.Builder.item().of() // TODO - Fix potato recovery + ItemPredicate.Builder.item().of(itemHolderGetter, AllItems.POTATO_CANNON.get()) ) ) ); @@ -66,7 +66,7 @@ public static void bootstrap(BootstrapContext context) { } private static void register(BootstrapContext context, ResourceKey key, Enchantment.Builder builder) { - context.register(key, builder.build(key.location())); + context.register(key, builder.build(key.identifier())); } } diff --git a/src/main/java/com/simibubi/create/AllEntityDataSerializers.java b/src/main/java/com/simibubi/create/AllEntityDataSerializers.java index 28e2df918d..3d76434382 100644 --- a/src/main/java/com/simibubi/create/AllEntityDataSerializers.java +++ b/src/main/java/com/simibubi/create/AllEntityDataSerializers.java @@ -1,7 +1,12 @@ package com.simibubi.create; +import java.util.Optional; +import java.util.UUID; + import com.simibubi.create.content.trains.entity.CarriageSyncDataSerializer; +import net.minecraft.core.UUIDUtil; +import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.syncher.EntityDataSerializer; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; @@ -14,8 +19,12 @@ public class AllEntityDataSerializers { private static final DeferredRegister> REGISTER = DeferredRegister.create(NeoForgeRegistries.Keys.ENTITY_DATA_SERIALIZERS, Create.ID); public static final CarriageSyncDataSerializer CARRIAGE_DATA = new CarriageSyncDataSerializer(); + public static final EntityDataSerializer> OPTIONAL_UUID = + EntityDataSerializer.forValueType(ByteBufCodecs.optional(UUIDUtil.STREAM_CODEC)); public static final DeferredHolder, CarriageSyncDataSerializer> CARRIAGE_DATA_ENTRY = REGISTER.register("carriage_data", () -> CARRIAGE_DATA); + public static final DeferredHolder, EntityDataSerializer>> OPTIONAL_UUID_ENTRY = + REGISTER.register("optional_uuid", () -> OPTIONAL_UUID); @Internal public static void register(IEventBus modEventBus) { diff --git a/src/main/java/com/simibubi/create/AllEntityTypes.java b/src/main/java/com/simibubi/create/AllEntityTypes.java index f7fa2bd6c9..8287b78bc9 100644 --- a/src/main/java/com/simibubi/create/AllEntityTypes.java +++ b/src/main/java/com/simibubi/create/AllEntityTypes.java @@ -26,7 +26,7 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.world.entity.Entity; @@ -81,7 +81,7 @@ public class AllEntityTypes { // private static CreateEntityBuilder contraption(String name, EntityFactory factory, - NonNullSupplier>> renderer, int range, + NonNullSupplier>> renderer, int range, int updateFrequency, boolean sendVelocity) { return (CreateEntityBuilder) register(name, factory, renderer, MobCategory.MISC, range, updateFrequency, sendVelocity, true, AbstractContraptionEntity::build) @@ -89,7 +89,7 @@ public class AllEntityTypes { } private static CreateEntityBuilder register(String name, EntityFactory factory, - NonNullSupplier>> renderer, + NonNullSupplier>> renderer, MobCategory group, int range, int updateFrequency, boolean sendVelocity, boolean immuneToFire, NonNullConsumer> propertyBuilder) { String id = Lang.asId(name); @@ -98,6 +98,7 @@ public class AllEntityTypes { .properties(b -> b.setTrackingRange(range) .setUpdateInterval(updateFrequency) .setShouldReceiveVelocityUpdates(sendVelocity)) + .properties(EntityType.Builder::noLootTable) .properties(propertyBuilder) .properties(b -> { if (immuneToFire) diff --git a/src/main/java/com/simibubi/create/AllFluids.java b/src/main/java/com/simibubi/create/AllFluids.java index 1a2fb017d0..2ce2c81d04 100644 --- a/src/main/java/com/simibubi/create/AllFluids.java +++ b/src/main/java/com/simibubi/create/AllFluids.java @@ -3,12 +3,10 @@ import java.util.function.Consumer; import java.util.function.Supplier; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; +import org.joml.Vector4f; -import com.mojang.blaze3d.shaders.FogShape; -import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllTags.AllFluidTags; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.decoration.palettes.AllPaletteStoneTypes; @@ -20,20 +18,21 @@ import com.tterrag.registrate.builders.FluidBuilder.FluidTypeFactory; import com.tterrag.registrate.util.entry.FluidEntry; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.FogRenderer.FogMode; +import net.minecraft.client.renderer.fog.FogData; +import net.minecraft.client.renderer.fog.environment.FogEnvironment; import net.minecraft.core.BlockPos; import net.minecraft.core.dispenser.BlockSource; import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; import net.minecraft.core.dispenser.DispenseItemBehavior; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.DispensibleContainerItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DispenserBlock; @@ -58,8 +57,13 @@ public class AllFluids { REGISTRATE.setCreativeTab(AllCreativeModeTabs.BASE_CREATIVE_TAB); } + private static final Identifier POTION_STILL_TEXTURE = Identifier.fromNamespaceAndPath(Create.ID, "fluid/potion_still"); + private static final Identifier POTION_FLOW_TEXTURE = Identifier.fromNamespaceAndPath(Create.ID, "fluid/potion_flow"); + public static final FluidEntry POTION = - REGISTRATE.virtualFluid("potion", PotionFluidType::new, PotionFluid::createSource, PotionFluid::createFlowing) + REGISTRATE.virtualFluid("potion", POTION_STILL_TEXTURE, POTION_FLOW_TEXTURE, + PotionFluidType::new, + PotionFluid::createSource, PotionFluid::createFlowing) .lang("Potion") .register(); @@ -180,64 +184,41 @@ private static void registerFluidDispenseBehavior(BucketItem bucket) { public static abstract class TintedFluidType extends FluidType { protected static final int NO_TINT = 0xffffffff; - private final ResourceLocation stillTexture; - private final ResourceLocation flowingTexture; - public TintedFluidType(Properties properties, ResourceLocation stillTexture, ResourceLocation flowingTexture) { + public TintedFluidType(Properties properties) { super(properties); - this.stillTexture = stillTexture; - this.flowingTexture = flowingTexture; } - @Override public void initializeClient(Consumer consumer) { consumer.accept(new IClientFluidTypeExtensions() { @Override - public ResourceLocation getStillTexture() { - return stillTexture; - } - - @Override - public ResourceLocation getFlowingTexture() { - return flowingTexture; - } - - @Override - public int getTintColor(FluidStack stack) { - return TintedFluidType.this.getTintColor(stack); - } - - @Override - public int getTintColor(FluidState state, BlockAndTintGetter getter, BlockPos pos) { - return TintedFluidType.this.getTintColor(state, getter, pos); - } - - @Override - public @NotNull Vector3f modifyFogColor(Camera camera, float partialTick, ClientLevel level, - int renderDistance, float darkenWorldAmount, Vector3f fluidFogColor) { + public void modifyFogColor(Camera camera, float partialTick, ClientLevel level, + int renderDistance, float darkenWorldAmount, Vector4f fluidFogColor) { Vector3f customFogColor = TintedFluidType.this.getCustomFogColor(); - return customFogColor == null ? fluidFogColor : customFogColor; + if (customFogColor != null) + fluidFogColor.set(customFogColor.x(), customFogColor.y(), customFogColor.z(), fluidFogColor.w()); } @Override - public void modifyFogRender(Camera camera, FogMode mode, float renderDistance, float partialTick, - float nearDistance, float farDistance, FogShape shape) { + public void modifyFogRender(Camera camera, @Nullable FogEnvironment environment, float renderDistance, + float partialTick, FogData fogData) { float modifier = TintedFluidType.this.getFogDistanceModifier(); float baseWaterFog = 96.0f; if (modifier != 1f) { - RenderSystem.setShaderFogShape(FogShape.CYLINDER); - RenderSystem.setShaderFogStart(-8); - RenderSystem.setShaderFogEnd(baseWaterFog * modifier); + fogData.environmentalStart = -8; + fogData.environmentalEnd = baseWaterFog * modifier; + fogData.skyEnd = fogData.environmentalEnd; + fogData.cloudEnd = fogData.environmentalEnd; } } }); } - protected abstract int getTintColor(FluidStack stack); + public abstract int getTintColor(FluidStack stack); - protected abstract int getTintColor(FluidState state, BlockAndTintGetter getter, BlockPos pos); + public abstract int getTintColor(FluidState state, BlockAndTintGetter getter, BlockPos pos); protected Vector3f getCustomFogColor() { return null; @@ -255,21 +236,20 @@ private static class SolidRenderedPlaceableFluidType extends TintedFluidType { private Supplier fogDistance; public static FluidTypeFactory create(int fogColor, Supplier fogDistance) { - return (p, s, f) -> { - SolidRenderedPlaceableFluidType fluidType = new SolidRenderedPlaceableFluidType(p, s, f); + return properties -> { + SolidRenderedPlaceableFluidType fluidType = new SolidRenderedPlaceableFluidType(properties); fluidType.fogColor = new Color(fogColor, false).asVectorF(); fluidType.fogDistance = fogDistance; return fluidType; }; } - private SolidRenderedPlaceableFluidType(Properties properties, ResourceLocation stillTexture, - ResourceLocation flowingTexture) { - super(properties, stillTexture, flowingTexture); + private SolidRenderedPlaceableFluidType(Properties properties) { + super(properties); } @Override - protected int getTintColor(FluidStack stack) { + public int getTintColor(FluidStack stack) { return NO_TINT; } diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 61d0b34b28..c0b2cf2897 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -79,12 +79,12 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorItem.Type; -import net.minecraft.world.item.ArmorMaterials; +import net.minecraft.world.item.component.Consumables; +import net.minecraft.world.item.consume_effects.ApplyStatusEffectsConsumeEffect; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; -import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.equipment.ArmorMaterials; +import net.minecraft.world.item.equipment.ArmorType; import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.Tags.Items; @@ -172,8 +172,11 @@ public class AllItems { .nutrition(1) .saturationModifier(.6F) .alwaysEdible() - .effect(() -> new MobEffectInstance(MobEffects.DIG_SPEED, 3 * 60 * 20, 0, false, false, false), 1F) - .build() + .build(), + Consumables.defaultDrink() + .onConsume(new ApplyStatusEffectsConsumeEffect( + new MobEffectInstance(MobEffects.HASTE, 3 * 60 * 20, 0, false, false, false), 1F)) + .build() ) ) .lang("Builder's Tea") @@ -183,8 +186,8 @@ public class AllItems { REGISTRATE.item("cardboard_sword", CardboardSwordItem::new) .burnTime(1000) .properties(p -> p.stacksTo(1)) - .properties(p -> p.attributes(SwordItem.createAttributes(AllToolMaterials.CARDBOARD, 3, 1))) - .model(AssetLookup.itemModelWithPartials()) + .properties(p -> p.sword(AllToolMaterials.CARDBOARD, 3, 1)) + .model(() -> AssetLookup.itemModelWithPartials()) .register(); public static final ItemEntry RAW_ZINC = @@ -197,8 +200,7 @@ public class AllItems { public static final ItemEntry CHROMATIC_COMPOUND = REGISTRATE.item("chromatic_compound", ChromaticCompoundItem::new) .properties(p -> p.rarity(Rarity.UNCOMMON)) - .model(AssetLookup.existingItemModel()) - .color(() -> ChromaticCompoundColor::new) + .model(() -> AssetLookup.existingItemModel()) .register(); public static final ItemEntry SHADOW_STEEL = REGISTRATE.item("shadow_steel", ShadowSteelItem::new) @@ -248,12 +250,12 @@ public class AllItems { public static final ItemEntry VERTICAL_GEARBOX = REGISTRATE.item("vertical_gearbox", VerticalGearboxItem::new) - .model(AssetLookup.customBlockItemModel("gearbox", "item_vertical")) + .model(() -> AssetLookup.customBlockItemModel("gearbox", "item_vertical")) .register(); public static final ItemEntry EMPTY_BLAZE_BURNER = REGISTRATE.item("empty_blaze_burner", BlazeBurnerBlockItem::empty) - .model(AssetLookup.customBlockItemModel("blaze_burner", "block")) + .model(() -> AssetLookup.customBlockItemModel("blaze_burner", "block")) .register(); public static final ItemEntry GOGGLES = REGISTRATE.item("goggles", GogglesItem::new) @@ -281,7 +283,7 @@ public class AllItems { public static final ItemEntry COPPER_BACKTANK_PLACEABLE = REGISTRATE .item("copper_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.COPPER_BACKTANK.get(), AllItems.COPPER_BACKTANK::get, p)) - .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); // wrapped by NETHERITE_BACKTANK for block placement uses. @@ -289,7 +291,7 @@ public class AllItems { public static final ItemEntry NETHERITE_BACKTANK_PLACEABLE = REGISTRATE .item("netherite_backtank_placeable", p -> new BacktankBlockItem(AllBlocks.NETHERITE_BACKTANK.get(), AllItems.NETHERITE_BACKTANK::get, p)) - .model((c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.mcLoc("item/barrier"))) .register(); public static final ItemEntry @@ -299,7 +301,7 @@ public class AllItems { .item("copper_backtank", p -> new BacktankItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"), COPPER_BACKTANK_PLACEABLE)) - .model(AssetLookup.customGenericItemModel("_", "item")) + .model(() -> AssetLookup.customGenericItemModel("_", "item")) .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) .tag(ItemTags.CHEST_ARMOR) .register(), @@ -308,7 +310,7 @@ public class AllItems { .item("netherite_backtank", p -> new BacktankItem.Layered(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"), NETHERITE_BACKTANK_PLACEABLE)) - .model(AssetLookup.customGenericItemModel("_", "item")) + .model(() -> AssetLookup.customGenericItemModel("_", "item")) .properties(p -> p.fireResistant()) .tag(AllItemTags.PRESSURIZED_AIR_SOURCES.tag) .tag(ItemTags.CHEST_ARMOR) @@ -318,14 +320,14 @@ public class AllItems { COPPER_DIVING_HELMET = REGISTRATE .item("copper_diving_helmet", p -> new DivingHelmetItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) - .properties(p -> p.durability(Type.HELMET.getDurability(7))) + .properties(p -> p.durability(ArmorType.HELMET.getDurability(7))) .tag(ItemTags.HEAD_ARMOR) .register(), NETHERITE_DIVING_HELMET = REGISTRATE .item("netherite_diving_helmet", p -> new DivingHelmetItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) - .properties(p -> p.fireResistant().durability(Type.HELMET.getDurability(37))) + .properties(p -> p.fireResistant().durability(ArmorType.HELMET.getDurability(37))) .tag(ItemTags.HEAD_ARMOR) .register(); @@ -333,52 +335,52 @@ public class AllItems { COPPER_DIVING_BOOTS = REGISTRATE .item("copper_diving_boots", p -> new DivingBootsItem(AllArmorMaterials.COPPER, p, Create.asResource("copper_diving"))) - .properties(p -> p.durability(Type.BOOTS.getDurability(7))) + .properties(p -> p.durability(ArmorType.BOOTS.getDurability(7))) .tag(ItemTags.FOOT_ARMOR) .register(), NETHERITE_DIVING_BOOTS = REGISTRATE .item("netherite_diving_boots", p -> new DivingBootsItem(ArmorMaterials.NETHERITE, p, Create.asResource("netherite_diving"))) - .properties(p -> p.fireResistant().durability(Type.BOOTS.getDurability(37))) + .properties(p -> p.fireResistant().durability(ArmorType.BOOTS.getDurability(37))) .tag(ItemTags.FOOT_ARMOR) .register(); public static final ItemEntry - CARDBOARD_HELMET = REGISTRATE.item("cardboard_helmet", p -> new CardboardArmorItem(ArmorItem.Type.HELMET, p)) - .properties(p -> p.durability(Type.HELMET.getDurability(4))) + CARDBOARD_HELMET = REGISTRATE.item("cardboard_helmet", p -> new CardboardArmorItem(ArmorType.HELMET, p)) + .properties(p -> p.durability(ArmorType.HELMET.getDurability(4))) .tag(ItemTags.HEAD_ARMOR) .burnTime(1000) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor")) - .model(TrimmableArmorModelGenerator::generate) + .model(() -> TrimmableArmorModelGenerator::generate) .clientExtension(() -> () -> new CardboardArmorStealthOverlay()) .register(), CARDBOARD_CHESTPLATE = - REGISTRATE.item("cardboard_chestplate", p -> new CardboardArmorItem(ArmorItem.Type.CHESTPLATE, p)) - .properties(p -> p.durability(Type.CHESTPLATE.getDurability(4))) + REGISTRATE.item("cardboard_chestplate", p -> new CardboardArmorItem(ArmorType.CHESTPLATE, p)) + .properties(p -> p.durability(ArmorType.CHESTPLATE.getDurability(4))) .tag(ItemTags.CHEST_ARMOR) .burnTime(1000) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor")) - .model(TrimmableArmorModelGenerator::generate) + .model(() -> TrimmableArmorModelGenerator::generate) .register(), CARDBOARD_LEGGINGS = - REGISTRATE.item("cardboard_leggings", p -> new CardboardArmorItem(ArmorItem.Type.LEGGINGS, p)) - .properties(p -> p.durability(Type.LEGGINGS.getDurability(4))) + REGISTRATE.item("cardboard_leggings", p -> new CardboardArmorItem(ArmorType.LEGGINGS, p)) + .properties(p -> p.durability(ArmorType.LEGGINGS.getDurability(4))) .tag(ItemTags.LEG_ARMOR) .burnTime(1000) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor")) - .model(TrimmableArmorModelGenerator::generate) + .model(() -> TrimmableArmorModelGenerator::generate) .register(), - CARDBOARD_BOOTS = REGISTRATE.item("cardboard_boots", p -> new CardboardArmorItem(ArmorItem.Type.BOOTS, p)) - .properties(p -> p.durability(Type.BOOTS.getDurability(4))) + CARDBOARD_BOOTS = REGISTRATE.item("cardboard_boots", p -> new CardboardArmorItem(ArmorType.BOOTS, p)) + .properties(p -> p.durability(ArmorType.BOOTS.getDurability(4))) .tag(ItemTags.FOOT_ARMOR) .burnTime(1000) .onRegisterAfter(Registries.ITEM, v -> ItemDescription.useKey(v, "item.create.cardboard_armor")) - .model(TrimmableArmorModelGenerator::generate) + .model(() -> TrimmableArmorModelGenerator::generate) .register(); public static final ItemEntry SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new) @@ -392,7 +394,7 @@ public class AllItems { public static final ItemEntry WRENCH = REGISTRATE.item("wrench", WrenchItem::new) .properties(p -> p.stacksTo(1)) - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .tag(Items.TOOLS_WRENCH) .register(); @@ -413,34 +415,34 @@ public class AllItems { public static final ItemEntry LINKED_CONTROLLER = REGISTRATE.item("linked_controller", LinkedControllerItem::new) .properties(p -> p.stacksTo(1)) - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .register(); public static final ItemEntry POTATO_CANNON = REGISTRATE.item("potato_cannon", PotatoCannonItem::new) .properties(p -> p.durability(100)) - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .tag(Tags.Items.ENCHANTABLES, ItemTags.DURABILITY_ENCHANTABLE, ItemTags.BOW_ENCHANTABLE) .register(); public static final ItemEntry EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new) .properties(p -> p.rarity(Rarity.UNCOMMON)) .tag(ItemTags.DURABILITY_ENCHANTABLE) - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .register(); public static final ItemEntry WAND_OF_SYMMETRY = REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) .properties(p -> p.stacksTo(1) .rarity(Rarity.UNCOMMON)) - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .register(); public static final ItemEntry WORLDSHAPER = REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) .properties(p -> p.rarity(Rarity.EPIC)) .lang("Creative Worldshaper") - .model(AssetLookup.itemModelWithPartials()) + .model(() -> AssetLookup.itemModelWithPartials()) .register(); public static final ItemEntry TREE_FERTILIZER = diff --git a/src/main/java/com/simibubi/create/AllKeys.java b/src/main/java/com/simibubi/create/AllKeys.java index 7f30d4c8ce..ef587caaa8 100644 --- a/src/main/java/com/simibubi/create/AllKeys.java +++ b/src/main/java/com/simibubi/create/AllKeys.java @@ -6,7 +6,7 @@ import com.mojang.blaze3d.platform.InputConstants; -import net.createmod.catnip.client.ConflictSafeKeyMapping; +import net.createmod.catnip.api.client.ConflictSafeKeyMapping; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -29,6 +29,8 @@ public enum AllKeys { ALT_MODIFIER("alt_modifier", GLFW.GLFW_KEY_LEFT_ALT, "Alt Modifier", true), ; + private static final KeyMapping.Category CREATE_CATEGORY = KeyMapping.Category.register(Create.asResource("main")); + private KeyMapping keybind; private final String description; private final String translation; @@ -53,6 +55,7 @@ public enum AllKeys { } public static void provideLang(BiConsumer consumer) { + consumer.accept("key.category.create.main", Create.NAME); for (AllKeys key : values()) if (key.modifiable) consumer.accept(key.description, key.translation); @@ -64,7 +67,7 @@ public static void register(RegisterKeyMappingsEvent event) { if (key.conflictSafe) { key.keybind = new ConflictSafeKeyMapping(key.description, key.key, Create.NAME); } else { - key.keybind = new KeyMapping(key.description, key.key, Create.NAME); + key.keybind = new KeyMapping(key.description, key.key, CREATE_CATEGORY); } if (!key.modifiable) continue; @@ -105,14 +108,13 @@ public boolean doesModifierAndCodeMatch(int code) { public static boolean isKeyDown(int key) { return InputConstants.isKeyDown(Minecraft.getInstance() - .getWindow() .getWindow(), key); } public static boolean isMouseButtonDown(int button) { return GLFW.glfwGetMouseButton(Minecraft.getInstance() .getWindow() - .getWindow(), button) == 1; + .handle(), button) == 1; } public static boolean ctrlDown() { diff --git a/src/main/java/com/simibubi/create/AllMountedDispenseItemBehaviors.java b/src/main/java/com/simibubi/create/AllMountedDispenseItemBehaviors.java index e6e9c57b00..ce39af7418 100644 --- a/src/main/java/com/simibubi/create/AllMountedDispenseItemBehaviors.java +++ b/src/main/java/com/simibubi/create/AllMountedDispenseItemBehaviors.java @@ -18,12 +18,14 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.item.PrimedTnt; import net.minecraft.world.entity.projectile.FireworkRocketEntity; import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.entity.projectile.SmallFireball; -import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.hurtingprojectile.SmallFireball; +import net.minecraft.world.entity.projectile.throwableitemprojectile.AbstractThrownPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownLingeringPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownSplashPotion; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.SpawnEggItem; @@ -49,7 +51,7 @@ protected ItemStack execute(ItemStack stack, MovementContext context, BlockPos p if (context.world instanceof ServerLevel serverLevel) { EntityType type = egg.getType(stack); BlockPos offset = BlockPos.containing(facing.x + .7, facing.y + .7, facing.z + .7); - Entity entity = type.spawn(serverLevel, stack, null, pos.offset(offset), MobSpawnType.DISPENSER, facing.y < .5, false); + Entity entity = type.spawn(serverLevel, stack, null, pos.offset(offset), EntitySpawnReason.DISPENSER, facing.y < .5, false); if (entity != null) { entity.setDeltaMovement(context.motion.scale(2)); } @@ -94,7 +96,7 @@ protected void playSound(LevelAccessor level, BlockPos pos) { private static final MountedDispenseBehavior FIRE_CHARGE = new DefaultMountedDispenseBehavior() { @Override protected ItemStack execute(ItemStack stack, MovementContext context, BlockPos pos, Vec3 facing) { - RandomSource random = context.world.random; + RandomSource random = context.world.getRandom(); double x = pos.getX() + facing.x * .7 + .5; double y = pos.getY() + facing.y * .7 + .5; double z = pos.getZ() + facing.z * .7 + .5; @@ -134,7 +136,9 @@ protected ItemStack execute(ItemStack stack, MovementContext context, BlockPos p private static final MountedDispenseBehavior POTIONS = new MountedProjectileDispenseBehavior() { @Override protected Projectile getProjectile(Level level, double x, double y, double z, ItemStack stack, Direction facing) { - ThrownPotion potion = new ThrownPotion(level, x, y, z); + AbstractThrownPotion potion = stack.is(Items.LINGERING_POTION) + ? new ThrownLingeringPotion(level, x, y, z, stack) + : new ThrownSplashPotion(level, x, y, z, stack); potion.setItem(stack); // copies item return potion; } diff --git a/src/main/java/com/simibubi/create/AllPartialModels.java b/src/main/java/com/simibubi/create/AllPartialModels.java index 0155db342b..aa9df48375 100644 --- a/src/main/java/com/simibubi/create/AllPartialModels.java +++ b/src/main/java/com/simibubi/create/AllPartialModels.java @@ -12,11 +12,11 @@ import com.simibubi.create.content.logistics.box.PackageStyles.PackageStyle; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; public class AllPartialModels { @@ -245,12 +245,12 @@ public class AllPartialModels { public static final Map METAL_GIRDER_BRACKETS = new EnumMap<>(Direction.class); public static final Map TOOLBOX_LIDS = new EnumMap<>(DyeColor.class); public static final Map DYED_VALVE_HANDLES = new EnumMap<>(DyeColor.class); - public static final Map> FOLDING_DOORS = new HashMap<>(); + public static final Map> FOLDING_DOORS = new HashMap<>(); public static final List CONTRAPTION_CONTROLS_INDICATOR = new ArrayList<>(); - public static final Map PACKAGES = new HashMap<>(); + public static final Map PACKAGES = new HashMap<>(); public static final List PACKAGES_TO_HIDE_AS = new ArrayList<>(); - public static final Map PACKAGE_RIGGING = new HashMap<>(); + public static final Map PACKAGE_RIGGING = new HashMap<>(); public static final Map GANTRY_SHAFTS = new HashMap<>(); @@ -281,7 +281,7 @@ public class AllPartialModels { putFoldingDoor("copper_door"); for (PackageStyle style : PackageStyles.STYLES) { - ResourceLocation key = style.getItemId(); + Identifier key = style.getItemId(); PartialModel model = PartialModel.of(Create.asResource("item/" + key.getPath())); PACKAGES.put(key, model); if (!style.rare()) @@ -300,7 +300,7 @@ public class AllPartialModels { } public record GantryShaftKey(GantryShaftBlock.Part part, boolean powered, boolean flipped) { - private ResourceLocation name() { + private Identifier name() { String partName = part.getSerializedName(); if (!(flipped || powered)) { diff --git a/src/main/java/com/simibubi/create/AllParticleTypes.java b/src/main/java/com/simibubi/create/AllParticleTypes.java index 8ae26c63da..a01074970d 100644 --- a/src/main/java/com/simibubi/create/AllParticleTypes.java +++ b/src/main/java/com/simibubi/create/AllParticleTypes.java @@ -13,14 +13,12 @@ import com.simibubi.create.foundation.particle.AirParticleData; import com.simibubi.create.foundation.particle.ICustomParticleData; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.core.registries.Registries; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -53,12 +51,6 @@ public static void register(IEventBus modEventBus) { ParticleEntry.REGISTER.register(modEventBus); } - @OnlyIn(Dist.CLIENT) - public static void registerFactories(RegisterParticleProvidersEvent event) { - for (AllParticleTypes particle : values()) - particle.entry.registerFactory(event); - } - public ParticleType get() { return entry.object.get(); } @@ -81,11 +73,5 @@ public ParticleEntry(String name, Supplier> typ object = REGISTER.register(name, () -> this.typeFactory.get().createType()); } - @OnlyIn(Dist.CLIENT) - public void registerFactory(RegisterParticleProvidersEvent event) { - typeFactory.get() - .register(object.get(), event); - } - } } diff --git a/src/main/java/com/simibubi/create/AllParticleTypesClient.java b/src/main/java/com/simibubi/create/AllParticleTypesClient.java new file mode 100644 index 0000000000..ac5ed87b99 --- /dev/null +++ b/src/main/java/com/simibubi/create/AllParticleTypesClient.java @@ -0,0 +1,57 @@ +package com.simibubi.create; + +import com.simibubi.create.content.equipment.bell.SoulBaseParticle; +import com.simibubi.create.content.equipment.bell.SoulParticle; +import com.simibubi.create.content.fluids.particle.FluidParticleData; +import com.simibubi.create.content.fluids.particle.FluidStackParticle; +import com.simibubi.create.content.kinetics.base.RotationIndicatorParticle; +import com.simibubi.create.content.kinetics.base.RotationIndicatorParticleData; +import com.simibubi.create.content.kinetics.fan.AirFlowParticle; +import com.simibubi.create.content.kinetics.fan.AirFlowParticleData; +import com.simibubi.create.content.kinetics.steamEngine.SteamJetParticle; +import com.simibubi.create.content.kinetics.steamEngine.SteamJetParticleData; +import com.simibubi.create.content.logistics.packagerLink.WiFiParticle; +import com.simibubi.create.content.trains.CubeParticle; +import com.simibubi.create.content.trains.CubeParticleData; +import com.simibubi.create.foundation.particle.AirParticle; +import com.simibubi.create.foundation.particle.AirParticleData; + +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; +import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; + +public class AllParticleTypesClient { + + public static void registerFactories(RegisterParticleProvidersEvent event) { + event.registerSpriteSet(type(AllParticleTypes.ROTATION_INDICATOR), RotationIndicatorParticle.Factory::new); + event.registerSpriteSet(type(AllParticleTypes.AIR_FLOW), AirFlowParticle.Factory::new); + event.registerSpriteSet(type(AllParticleTypes.AIR), AirParticle.Factory::new); + event.registerSpriteSet(type(AllParticleTypes.STEAM_JET), SteamJetParticle.Factory::new); + event.registerSpecial(type(AllParticleTypes.CUBE), new CubeParticle.Factory()); + registerFluidParticle(event, AllParticleTypes.FLUID_PARTICLE); + registerFluidParticle(event, AllParticleTypes.BASIN_FLUID); + registerFluidParticle(event, AllParticleTypes.FLUID_DRIP); + event.registerSpriteSet(type(AllParticleTypes.WIFI), sprite -> (data, world, x, y, z, vx, vy, vz, random) -> + new WiFiParticle(world, x, y, z, vx, vy, vz, sprite)); + event.registerSpriteSet(type(AllParticleTypes.SOUL), sprite -> (data, world, x, y, z, vx, vy, vz, random) -> + new SoulParticle(world, x, y, z, vx, vy, vz, sprite, data)); + event.registerSpriteSet(type(AllParticleTypes.SOUL_BASE), sprite -> (data, world, x, y, z, vx, vy, vz, random) -> + new SoulBaseParticle(world, x, y, z, vx, vy, vz, sprite)); + event.registerSpriteSet(type(AllParticleTypes.SOUL_PERIMETER), sprite -> (data, world, x, y, z, vx, vy, vz, random) -> + new SoulParticle(world, x, y, z, vx, vy, vz, sprite, data)); + event.registerSpriteSet(type(AllParticleTypes.SOUL_EXPANDING_PERIMETER), sprite -> (data, world, x, y, z, vx, vy, vz, random) -> + new SoulParticle(world, x, y, z, vx, vy, vz, sprite, data)); + } + + private static void registerFluidParticle(RegisterParticleProvidersEvent event, AllParticleTypes type) { + ParticleType particleType = type(type); + event.registerSpecial(particleType, (data, world, x, y, z, vx, vy, vz, random) -> + FluidStackParticle.create(particleType, world, data.getFluid(), x, y, z, vx, vy, vz)); + } + + @SuppressWarnings("unchecked") + private static ParticleType type(AllParticleTypes type) { + return (ParticleType) type.get(); + } + +} diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java index 481b2785a1..548a4e32df 100644 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ b/src/main/java/com/simibubi/create/AllRecipeTypes.java @@ -31,15 +31,15 @@ import com.simibubi.create.content.processing.basin.BasinRecipe; import com.simibubi.create.content.processing.recipe.ProcessingRecipe; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; -import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe.Serializer; import com.simibubi.create.content.processing.sequenced.SequencedAssemblyRecipeSerializer; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.recipe.ItemCopyingRecipe; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; @@ -47,7 +47,6 @@ import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapedRecipePattern; -import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; import net.minecraft.world.level.Level; import net.neoforged.bus.api.IEventBus; @@ -72,17 +71,18 @@ public enum AllRecipeTypes implements IRecipeTypeInfo, StringRepresentable { EMPTYING(EmptyingRecipe::new), ITEM_APPLICATION(ManualApplicationRecipe::new), - MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), - SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::new), + MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::create), + SEQUENCED_ASSEMBLY(SequencedAssemblyRecipeSerializer::create), - TOOLBOX_DYEING(() -> new SimpleCraftingRecipeSerializer<>(ToolboxDyeingRecipe::new), () -> RecipeType.CRAFTING, false), - ITEM_COPYING(() -> new SimpleCraftingRecipeSerializer<>(ItemCopyingRecipe::new), () -> RecipeType.CRAFTING, false); + TOOLBOX_DYEING(() -> ToolboxDyeingRecipe.SERIALIZER, () -> RecipeType.CRAFTING, false), + ITEM_COPYING(() -> ItemCopyingRecipe.SERIALIZER, () -> RecipeType.CRAFTING, false); public static final Predicate> CAN_BE_AUTOMATED = r -> !r.id() + .identifier() .getPath() .endsWith("_manual_only"); - public final ResourceLocation id; + public final Identifier id; public final Supplier> serializerSupplier; private final DeferredHolder, RecipeSerializer> serializerObject; @Nullable @@ -119,12 +119,12 @@ public enum AllRecipeTypes implements IRecipeTypeInfo, StringRepresentable { } AllRecipeTypes(StandardProcessingRecipe.Factory processingFactory) { - this(() -> new Serializer<>(processingFactory)); + this(() -> StandardProcessingRecipe.Serializer.create(processingFactory)); isProcessingRecipe = true; } AllRecipeTypes(ProcessingRecipe.Factory itemApplicationFactory) { - this(() -> new ItemApplicationRecipe.Serializer<>(itemApplicationFactory)); + this(() -> ItemApplicationRecipe.Serializer.create(itemApplicationFactory)); isProcessingRecipe = true; } @@ -136,7 +136,7 @@ public static void register(IEventBus modEventBus) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return id; } @@ -153,7 +153,10 @@ public > RecipeType getType() { } public > Optional> find(I inv, Level world) { - return world.getRecipeManager() + MinecraftServer server = world.getServer(); + if (server == null) + return Optional.empty(); + return server.getRecipeManager() .getRecipeFor(getType(), inv, world); } diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index fe4c9c48d3..05c27ddf78 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.logistics.chute.ChuteShapes; import com.simibubi.create.content.trains.track.TrackVoxelShapes; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java index 7ae71ac494..df2534b059 100644 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ b/src/main/java/com/simibubi/create/AllSoundEvents.java @@ -19,7 +19,7 @@ import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -32,7 +32,7 @@ public class AllSoundEvents { - public static final Map ALL = new HashMap<>(); + public static final Map ALL = new HashMap<>(); public static final SoundEntry SCHEMATICANNON_LAUNCH_BLOCK = create("schematicannon_launch_block").subtitle("Schematicannon fires") @@ -379,7 +379,7 @@ private static SoundEntryBuilder create(String name) { return create(Create.asResource(name)); } - public static SoundEntryBuilder create(ResourceLocation id) { + public static SoundEntryBuilder create(Identifier id) { return new SoundEntryBuilder(id); } @@ -408,12 +408,14 @@ public static SoundEntryProvider provider(DataGenerator generator) { public static void playItemPickup(Player player) { player.level() .playSound(null, player.blockPosition(), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, - 1f + player.level().random.nextFloat()); + 1f + player.level() + .getRandom() + .nextFloat()); } // @SubscribeEvent // public static void cancelSubtitlesOfCompoundedSounds(PlaySoundEvent event) { -// ResourceLocation soundLocation = event.getSound().getSoundLocation(); +// Identifier soundLocation = event.getSound().getSoundLocation(); // if (!soundLocation.getNamespace().equals(Create.ID)) // return; // if (soundLocation.getPath().contains("_compounded_") @@ -458,14 +460,14 @@ public record ConfiguredSoundEvent(Supplier event, float volume, flo public static class SoundEntryBuilder { - protected ResourceLocation id; + protected Identifier id; protected String subtitle = "unregistered"; protected SoundSource category = SoundSource.BLOCKS; protected List wrappedEvents; - protected List variants; + protected List variants; protected int attenuationDistance; - public SoundEntryBuilder(ResourceLocation id) { + public SoundEntryBuilder(Identifier id) { wrappedEvents = new ArrayList<>(); variants = new ArrayList<>(); this.id = id; @@ -495,7 +497,7 @@ public SoundEntryBuilder addVariant(String name) { return addVariant(Create.asResource(name)); } - public SoundEntryBuilder addVariant(ResourceLocation id) { + public SoundEntryBuilder addVariant(Identifier id) { variants.add(id); return this; } @@ -509,6 +511,10 @@ public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitc return playExisting(() -> event, volume, pitch); } + public SoundEntryBuilder playExisting(Holder event, float volume, float pitch) { + return playExisting(event::value, volume, pitch); + } + public SoundEntryBuilder playExisting(SoundEvent event) { return playExisting(event, 1, 1); } @@ -529,12 +535,12 @@ public SoundEntry build() { public static abstract class SoundEntry { - protected ResourceLocation id; + protected Identifier id; protected String subtitle; protected SoundSource category; protected int attenuationDistance; - public SoundEntry(ResourceLocation id, String subtitle, SoundSource category, int attenuationDistance) { + public SoundEntry(Identifier id, String subtitle, SoundSource category, int attenuationDistance) { this.id = id; this.subtitle = subtitle; this.category = category; @@ -555,7 +561,7 @@ public String getSubtitleKey() { return id.getNamespace() + ".subtitle." + id.getPath(); } - public ResourceLocation getId() { + public Identifier getId() { return id; } @@ -615,7 +621,7 @@ private static class WrappedSoundEntry extends SoundEntry { private List wrappedEvents; private List compiledEvents; - public WrappedSoundEntry(ResourceLocation id, String subtitle, + public WrappedSoundEntry(Identifier id, String subtitle, List wrappedEvents, SoundSource category, int attenuationDistance) { super(id, subtitle, category, attenuationDistance); this.wrappedEvents = wrappedEvents; @@ -626,7 +632,7 @@ public WrappedSoundEntry(ResourceLocation id, String subtitle, public void prepare() { for (int i = 0; i < wrappedEvents.size(); i++) { ConfiguredSoundEvent wrapped = wrappedEvents.get(i); - ResourceLocation location = getIdOf(i); + Identifier location = getIdOf(i); DeferredHolder event = DeferredHolder.create(Registries.SOUND_EVENT, location); compiledEvents.add(new CompiledSoundEvent(event, wrapped.volume(), wrapped.pitch())); } @@ -635,7 +641,7 @@ public void prepare() { @Override public void register(RegisterEvent.RegisterHelper helper) { for (CompiledSoundEvent compiledEvent : compiledEvents) { - ResourceLocation location = compiledEvent.event().getId(); + Identifier location = compiledEvent.event().getId(); helper.register(location, SoundEvent.createVariableRangeEvent(location)); } } @@ -650,8 +656,8 @@ public SoundEvent getMainEvent() { return compiledEvents.getFirst().event().get(); } - protected ResourceLocation getIdOf(int i) { - return ResourceLocation.fromNamespaceAndPath(id.getNamespace(), i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i); + protected Identifier getIdOf(int i) { + return Identifier.fromNamespaceAndPath(id.getNamespace(), i == 0 ? id.getPath() : id.getPath() + "_compounded_" + i); } @Override @@ -663,7 +669,7 @@ public void write(JsonObject json) { JsonObject s = new JsonObject(); s.addProperty("name", event.event() .get() - .getLocation() + .location() .toString()); s.addProperty("type", "event"); if (attenuationDistance != 0) @@ -699,10 +705,10 @@ private record CompiledSoundEvent(DeferredHolder event, private static class CustomSoundEntry extends SoundEntry { - protected List variants; + protected List variants; protected DeferredHolder event; - public CustomSoundEntry(ResourceLocation id, List variants, String subtitle, + public CustomSoundEntry(Identifier id, List variants, String subtitle, SoundSource category, int attenuationDistance) { super(id, subtitle, category, attenuationDistance); this.variants = variants; @@ -715,7 +721,7 @@ public void prepare() { @Override public void register(RegisterEvent.RegisterHelper helper) { - ResourceLocation location = event.getId(); + Identifier location = event.getId(); helper.register(location, SoundEvent.createVariableRangeEvent(location)); } @@ -741,7 +747,7 @@ public void write(JsonObject json) { s.addProperty("attenuation_distance", attenuationDistance); list.add(s); - for (ResourceLocation variant : variants) { + for (Identifier variant : variants) { s = new JsonObject(); s.addProperty("name", variant.toString()); s.addProperty("type", "file"); diff --git a/src/main/java/com/simibubi/create/AllSpecialTextures.java b/src/main/java/com/simibubi/create/AllSpecialTextures.java index 03a1424053..13c822d2a8 100644 --- a/src/main/java/com/simibubi/create/AllSpecialTextures.java +++ b/src/main/java/com/simibubi/create/AllSpecialTextures.java @@ -1,7 +1,7 @@ package com.simibubi.create; -import net.createmod.catnip.render.BindableTexture; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.client.render.BindableTexture; +import net.minecraft.resources.Identifier; public enum AllSpecialTextures implements BindableTexture { @@ -15,14 +15,19 @@ public enum AllSpecialTextures implements BindableTexture { ; public static final String ASSET_PATH = "textures/special/"; - private final ResourceLocation location; + private final Identifier location; AllSpecialTextures(String filename) { location = Create.asResource(ASSET_PATH + filename); } - public ResourceLocation getLocation() { + @Override + public Identifier getId() { return location; } + public Identifier getLocation() { + return getId(); + } + } diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java index b319e12559..53af7ed035 100644 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ b/src/main/java/com/simibubi/create/AllSpriteShifts.java @@ -10,10 +10,10 @@ import com.simibubi.create.foundation.block.connected.CTSpriteShifter; import com.simibubi.create.foundation.block.connected.CTType; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SpriteShifter; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShifter; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.WeatheringCopper.WeatherState; import net.minecraft.world.level.block.state.properties.WoodType; diff --git a/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java b/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java index 05a0b6dfc3..6f2a858dd9 100644 --- a/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java +++ b/src/main/java/com/simibubi/create/AllStructureProcessorTypes.java @@ -1,9 +1,10 @@ package com.simibubi.create; +import com.mojang.serialization.MapCodec; import com.simibubi.create.content.schematics.SchematicProcessor; import net.minecraft.core.registries.Registries; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -11,9 +12,11 @@ import org.jetbrains.annotations.ApiStatus.Internal; public class AllStructureProcessorTypes { - private static final DeferredRegister> REGISTER = DeferredRegister.create(Registries.STRUCTURE_PROCESSOR, Create.ID); + private static final DeferredRegister> REGISTER = + DeferredRegister.create(Registries.STRUCTURE_PROCESSOR, Create.ID); - public static final DeferredHolder, StructureProcessorType> SCHEMATIC = REGISTER.register("schematic", () -> () -> SchematicProcessor.CODEC); + public static final DeferredHolder, MapCodec> SCHEMATIC = + REGISTER.register("schematic", () -> SchematicProcessor.CODEC); @Internal public static void register(IEventBus modEventBus) { diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index ec1d81eaa5..bbc933b0e5 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -17,12 +17,12 @@ import com.simibubi.create.content.decoration.palettes.AllPaletteStoneTypes; import com.simibubi.create.foundation.data.recipe.CommonMetal; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -40,14 +40,14 @@ public class AllTags { @ScheduledForRemoval(inVersion = "1.21.1+ Port") @Deprecated(since = "6.0.7", forRemoval = true) - public static TagKey optionalTag(Registry registry, ResourceLocation id) { + public static TagKey optionalTag(Registry registry, Identifier id) { return TagKey.create(registry.key(), id); } @ScheduledForRemoval(inVersion = "1.21.1+ Port") @Deprecated(since = "6.0.7", forRemoval = true) public static TagKey commonTag(Registry registry, String path) { - return optionalTag(registry, ResourceLocation.fromNamespaceAndPath("c", path)); + return optionalTag(registry, Identifier.fromNamespaceAndPath("c", path)); } @ScheduledForRemoval(inVersion = "1.21.1+ Port") @@ -82,11 +82,11 @@ public enum NameSpace { this.id = id; } - public ResourceLocation id(String path) { - return ResourceLocation.fromNamespaceAndPath(this.id, path); + public Identifier id(String path) { + return Identifier.fromNamespaceAndPath(this.id, path); } - public ResourceLocation id(Enum entry, @Nullable String pathOverride) { + public Identifier id(Enum entry, @Nullable String pathOverride) { return this.id(pathOverride != null ? pathOverride : Lang.asId(entry.name())); } } @@ -323,7 +323,8 @@ public enum AllEntityTags { } public boolean matches(EntityType type) { - return type.is(tag); + return BuiltInRegistries.ENTITY_TYPE.wrapAsHolder(type) + .is(tag); } public boolean matches(Entity entity) { @@ -349,8 +350,8 @@ public enum AllRecipeSerializerTags { } public boolean matches(RecipeSerializer recipeSerializer) { - ResourceKey> key = BuiltInRegistries.RECIPE_SERIALIZER.getResourceKey(recipeSerializer).orElseThrow(); - return BuiltInRegistries.RECIPE_SERIALIZER.getHolder(key).orElseThrow().is(tag); + return BuiltInRegistries.RECIPE_SERIALIZER.wrapAsHolder(recipeSerializer) + .is(tag); } } diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java index 3cd90c3662..ad283b34f0 100644 --- a/src/main/java/com/simibubi/create/Create.java +++ b/src/main/java/com/simibubi/create/Create.java @@ -10,7 +10,6 @@ import com.simibubi.create.api.registrate.CreateRegistrateRegistrationCallback; import com.simibubi.create.compat.Mods; import com.simibubi.create.compat.computercraft.ComputerCraftProxy; -import com.simibubi.create.compat.curios.Curios; import com.simibubi.create.compat.inventorySorter.InventorySorterCompat; import com.simibubi.create.content.decoration.palettes.AllPaletteBlocks; import com.simibubi.create.content.equipment.armor.AllArmorMaterials; @@ -45,11 +44,11 @@ import com.simibubi.create.infrastructure.worldgen.AllFeatures; import com.simibubi.create.infrastructure.worldgen.AllPlacementModifiers; -import net.createmod.catnip.lang.FontHelper; -import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.api.client.lang.FontHelper; +import net.createmod.catnip.api.lang.LangBuilder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.level.Level; @@ -161,7 +160,6 @@ public static void onCtor(IEventBus modEventBus, ModContainer modContainer) { modEventBus.addListener(AllSoundEvents::register); // FIXME: this is not thread-safe - Mods.CURIOS.executeIfInstalled(() -> () -> Curios.init(modEventBus)); Mods.INVENTORYSORTER.executeIfInstalled(() -> () -> InventorySorterCompat.init(modEventBus)); } @@ -206,8 +204,8 @@ public static LangBuilder lang() { return new LangBuilder(ID); } - public static ResourceLocation asResource(String path) { - return ResourceLocation.fromNamespaceAndPath(ID, path); + public static Identifier asResource(String path) { + return Identifier.fromNamespaceAndPath(ID, path); } public static CreateRegistrate registrate() { diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index b9f432c389..d6e773f0e6 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -1,9 +1,8 @@ package com.simibubi.create; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.GlStateManager; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.compat.Mods; -import com.simibubi.create.compat.ftb.FTBIntegration; import com.simibubi.create.compat.pojav.PojavChecker; import com.simibubi.create.compat.sodium.SodiumCompat; import com.simibubi.create.content.contraptions.glue.SuperGlueSelectionHandler; @@ -27,14 +26,15 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.gui.CreateMainMenuScreen; -import net.createmod.catnip.config.ui.BaseConfigScreen; -import net.createmod.catnip.config.ui.ConfigScreen; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBufferCache; -import net.createmod.ponder.foundation.PonderIndex; +import net.createmod.catnip.api.client.config.BaseConfigScreen; +import net.createmod.catnip.api.client.config.ConfigScreen; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; +import net.createmod.ponder.api.client.PonderIndex; import net.minecraft.ChatFormatting; -import net.minecraft.client.GraphicsStatus; +import net.minecraft.client.GraphicsPreset; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.core.Direction; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; @@ -75,7 +75,7 @@ public static void onCtorClient(IEventBus modEventBus) { IEventBus neoEventBus = NeoForge.EVENT_BUS; modEventBus.addListener(CreateClient::clientInit); - modEventBus.addListener(AllParticleTypes::registerFactories); + modEventBus.addListener(AllParticleTypesClient::registerFactories); AllInstanceTypes.init(); @@ -84,7 +84,6 @@ public static void onCtorClient(IEventBus modEventBus) { ZAPPER_RENDER_HANDLER.registerListeners(neoEventBus); POTATO_CANNON_RENDER_HANDLER.registerListeners(neoEventBus); - Mods.FTBLIBRARY.executeIfInstalled(() -> () -> FTBIntegration.init(modEventBus, neoEventBus)); Mods.SODIUM.executeIfInstalled(() -> () -> SodiumCompat.init(modEventBus, neoEventBus)); PojavChecker.init(); } @@ -118,10 +117,11 @@ private static void setupConfigUIBackground() { ConfigScreen.backgrounds.put(Create.ID, (screen, graphics, partialTicks) -> { CreateMainMenuScreen.PANORAMA.render(graphics, screen.width, screen.height, 1, partialTicks); - //RenderSystem.setShaderTexture(0, CreateMainMenuScreen.PANORAMA_OVERLAY_TEXTURES); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - graphics.blit(CreateMainMenuScreen.PANORAMA_OVERLAY_TEXTURES, 0, 0, screen.width, screen.height, 0.0F, 0.0F, 16, 128, 16, 128); + //LegacyRenderSystemBridge.setShaderTexture(0, CreateMainMenuScreen.PANORAMA_OVERLAY_TEXTURES); + LegacyRenderSystemBridge.enableBlend(); + LegacyRenderSystemBridge.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); + graphics.blit(RenderPipelines.GUI_TEXTURED, CreateMainMenuScreen.PANORAMA_OVERLAY_TEXTURES, 0, 0, + 0.0F, 0.0F, screen.width, screen.height, 16, 128, 16, 128); graphics.fill(0, 0, screen.width, screen.height, 0x90_282c34); }); @@ -143,7 +143,7 @@ public static void checkGraphicsFanciness() { if (mc.player == null) return; - if (mc.options.graphicsMode().get() != GraphicsStatus.FABULOUS) + if (mc.options.graphicsPreset().get() != GraphicsPreset.FABULOUS) return; if (AllConfigs.client().ignoreFabulousWarning.get()) @@ -154,12 +154,11 @@ public static void checkGraphicsFanciness() { .append(Component.literal(" Some of Create's visual features will not be available while Fabulous graphics are enabled!")) .withStyle(style -> { return style - .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning")) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - Component.literal("Click here to disable this warning"))); + .withClickEvent(new ClickEvent.RunCommand("/create dismissFabulousWarning")) + .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click here to disable this warning"))); }); - mc.player.displayClientMessage(text, false); + mc.player.sendSystemMessage(text); } } diff --git a/src/main/java/com/simibubi/create/api/behaviour/display/DisplaySource.java b/src/main/java/com/simibubi/create/api/behaviour/display/DisplaySource.java index d1c0d9f73b..0d8fc539ce 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/display/DisplaySource.java +++ b/src/main/java/com/simibubi/create/api/behaviour/display/DisplaySource.java @@ -22,12 +22,13 @@ import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.nbt.NBTProcessors; +import net.minecraft.core.Holder; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; @@ -35,7 +36,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class DisplaySource { public static final SimpleRegistry.Multi BY_BLOCK = SimpleRegistry.Multi.create(); @@ -81,7 +81,7 @@ public boolean shouldPassiveReset() { return true; } - protected final ResourceLocation getId() { + protected final Identifier getId() { return CreateBuiltInRegistries.DISPLAY_SOURCE.getKey(this); } @@ -109,7 +109,6 @@ public List> provideFlapDisplayText(DisplayLinkContext co .toList(); } - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { } @@ -126,7 +125,7 @@ public static NonNullUnaryOperator> disp * Get the DisplaySource with the given ID, accounting for legacy names. */ @Nullable - public static DisplaySource get(@Nullable ResourceLocation id) { + public static DisplaySource get(@Nullable Identifier id) { if (id == null) return null; @@ -134,7 +133,9 @@ public static DisplaySource get(@Nullable ResourceLocation id) { return AllDisplaySources.LEGACY_NAMES.get(id.getPath()).get(); } - return CreateBuiltInRegistries.DISPLAY_SOURCE.get(id); + return CreateBuiltInRegistries.DISPLAY_SOURCE.get(id) + .map(Holder::value) + .orElse(null); } /** diff --git a/src/main/java/com/simibubi/create/api/behaviour/display/DisplayTarget.java b/src/main/java/com/simibubi/create/api/behaviour/display/DisplayTarget.java index daa1bc6c8c..c9847a6c42 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/display/DisplayTarget.java +++ b/src/main/java/com/simibubi/create/api/behaviour/display/DisplayTarget.java @@ -17,11 +17,12 @@ import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; +import net.minecraft.core.Holder; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; @@ -57,7 +58,7 @@ public static void reserve(int line, BlockEntity target, DisplayLinkContext cont return; CompoundTag tag = target.getPersistentData(); - CompoundTag compound = tag.getCompound("DisplayLink"); + CompoundTag compound = tag.getCompoundOrEmpty("DisplayLink"); compound.putLong("Line" + line, context.blockEntity() .getBlockPos() .asLong()); @@ -66,12 +67,12 @@ public static void reserve(int line, BlockEntity target, DisplayLinkContext cont public boolean isReserved(int line, BlockEntity target, DisplayLinkContext context) { CompoundTag tag = target.getPersistentData(); - CompoundTag compound = tag.getCompound("DisplayLink"); + CompoundTag compound = tag.getCompoundOrEmpty("DisplayLink"); if (!compound.contains("Line" + line)) return false; - long l = compound.getLong("Line" + line); + long l = compound.getLongOr("Line" + line, 0L); BlockPos reserved = BlockPos.of(l); if (!reserved.equals(context.blockEntity() @@ -101,7 +102,7 @@ public static NonNullUnaryOperator> disp * Get the DisplayTarget with the given ID, accounting for legacy names. */ @Nullable - public static DisplayTarget get(@Nullable ResourceLocation id) { + public static DisplayTarget get(@Nullable Identifier id) { if (id == null) return null; @@ -109,7 +110,9 @@ public static DisplayTarget get(@Nullable ResourceLocation id) { return AllDisplayTargets.LEGACY_NAMES.get(id.getPath()).get(); } - return CreateBuiltInRegistries.DISPLAY_TARGET.get(id); + return CreateBuiltInRegistries.DISPLAY_TARGET.get(id) + .map(Holder::value) + .orElse(null); } /** diff --git a/src/main/java/com/simibubi/create/api/behaviour/interaction/ConductorBlockInteractionBehavior.java b/src/main/java/com/simibubi/create/api/behaviour/interaction/ConductorBlockInteractionBehavior.java index 5b1ac9e476..e205116d0f 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/interaction/ConductorBlockInteractionBehavior.java +++ b/src/main/java/com/simibubi/create/api/behaviour/interaction/ConductorBlockInteractionBehavior.java @@ -15,7 +15,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -69,27 +69,26 @@ public final boolean handlePlayerInteraction(Player player, InteractionHand acti Train train = carriageEntity.getCarriage().train; if (train == null) return false; - if (player.level().isClientSide) + if (player.level().isClientSide()) return true; if (train.runtime.getSchedule() != null) { if (train.runtime.paused && !train.runtime.completed) { train.runtime.paused = false; AllSoundEvents.CONFIRM.playOnServer(player.level(), player.blockPosition(), 1, 1); - player.displayClientMessage(CreateLang.translateDirect("schedule.continued"), true); + player.sendOverlayMessage(CreateLang.translateDirect("schedule.continued")); return true; } if (!itemInHand.isEmpty()) { AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); - player.displayClientMessage(CreateLang.translateDirect("schedule.remove_with_empty_hand"), true); + player.sendOverlayMessage(CreateLang.translateDirect("schedule.remove_with_empty_hand")); return true; } AllSoundEvents.playItemPickup(player); - player.displayClientMessage(CreateLang.translateDirect( - train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train"), - true); + player.sendOverlayMessage(CreateLang.translateDirect( + train.runtime.isAutoSchedule ? "schedule.auto_removed_from_train" : "schedule.removed_from_train")); player.setItemInHand(activeHand, train.runtime.returnSchedule(player.registryAccess())); this.onScheduleUpdate(false, info.state(), newBlockState -> setBlockState(localPos, contraptionEntity, newBlockState)); return true; @@ -104,21 +103,21 @@ public final boolean handlePlayerInteraction(Player player, InteractionHand acti if (schedule.entries.isEmpty()) { AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); - player.displayClientMessage(CreateLang.translateDirect("schedule.no_stops"), true); + player.sendOverlayMessage(CreateLang.translateDirect("schedule.no_stops")); return true; } this.onScheduleUpdate(true, info.state(), newBlockState -> setBlockState(localPos, contraptionEntity, newBlockState)); train.runtime.setSchedule(schedule, false); AllAdvancements.CONDUCTOR.awardTo(player); AllSoundEvents.CONFIRM.playOnServer(player.level(), player.blockPosition(), 1, 1); - player.displayClientMessage(CreateLang.translateDirect("schedule.applied_to_train") - .withStyle(ChatFormatting.GREEN), true); + player.sendOverlayMessage(CreateLang.translateDirect("schedule.applied_to_train") + .withStyle(ChatFormatting.GREEN)); itemInHand.shrink(1); player.setItemInHand(activeHand, itemInHand.isEmpty() ? ItemStack.EMPTY : itemInHand); return true; } - player.displayClientMessage(CreateLang.translateDirect("schedule.non_controlling_seat"), true); + player.sendOverlayMessage(CreateLang.translateDirect("schedule.non_controlling_seat")); AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); return true; } diff --git a/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java b/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java index b6f941b9dc..ad2fca59f4 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/api/behaviour/interaction/MovingInteractionBehaviour.java @@ -32,7 +32,7 @@ protected void setContraptionActorData(AbstractContraptionEntity contraptionEnti StructureBlockInfo info, MovementContext ctx) { contraptionEntity.getContraption().getActors().remove(index); contraptionEntity.getContraption().getActors().add(index, MutablePair.of(info, ctx)); - if (contraptionEntity.level().isClientSide) + if (contraptionEntity.level().isClientSide()) contraptionEntity.getContraption() .invalidateClientContraptionChildren(); } diff --git a/src/main/java/com/simibubi/create/api/behaviour/movement/MovementBehaviour.java b/src/main/java/com/simibubi/create/api/behaviour/movement/MovementBehaviour.java index 5ca5646932..4c8044aed4 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/movement/MovementBehaviour.java +++ b/src/main/java/com/simibubi/create/api/behaviour/movement/MovementBehaviour.java @@ -12,7 +12,7 @@ import com.tterrag.registrate.util.nullness.NonNullConsumer; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; @@ -20,7 +20,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.ItemHandlerHelper; /** @@ -94,7 +93,7 @@ default void collectOrDropItem(MovementContext context, ItemStack stack) { ItemEntity itemEntity = new ItemEntity(context.world, vec.x, vec.y, vec.z, remainder); itemEntity.setDeltaMovement(context.motion.add(0, 0.5f, 0) - .scale(context.world.random.nextFloat() * .3f)); + .scale(context.world.getRandom().nextFloat() * .3f)); context.world.addFreshEntity(itemEntity); } @@ -112,11 +111,9 @@ default boolean disableBlockEntityRendering() { return false; } - @OnlyIn(Dist.CLIENT) default void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) {} - @OnlyIn(Dist.CLIENT) @Nullable default ActorVisual createVisual(VisualizationContext visualizationContext, VirtualRenderWorld simulationWorld, MovementContext movementContext) { diff --git a/src/main/java/com/simibubi/create/api/behaviour/spouting/CauldronSpoutingBehavior.java b/src/main/java/com/simibubi/create/api/behaviour/spouting/CauldronSpoutingBehavior.java index a15e2298a6..cc3f984b8d 100644 --- a/src/main/java/com/simibubi/create/api/behaviour/spouting/CauldronSpoutingBehavior.java +++ b/src/main/java/com/simibubi/create/api/behaviour/spouting/CauldronSpoutingBehavior.java @@ -3,7 +3,7 @@ import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.fluids.spout.SpoutBlockEntity; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/api/connectivity/ConnectivityHandler.java b/src/main/java/com/simibubi/create/api/connectivity/ConnectivityHandler.java index 2b24e54de2..5e0f9dab86 100644 --- a/src/main/java/com/simibubi/create/api/connectivity/ConnectivityHandler.java +++ b/src/main/java/com/simibubi/create/api/connectivity/ConnectivityHandler.java @@ -16,7 +16,7 @@ import com.simibubi.create.content.fluids.tank.CreativeFluidTankBlockEntity; import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockGetter; diff --git a/src/main/java/com/simibubi/create/api/contraption/ContraptionType.java b/src/main/java/com/simibubi/create/api/contraption/ContraptionType.java index 8339b4f59e..3c74dce592 100644 --- a/src/main/java/com/simibubi/create/api/contraption/ContraptionType.java +++ b/src/main/java/com/simibubi/create/api/contraption/ContraptionType.java @@ -9,7 +9,7 @@ import com.simibubi.create.content.contraptions.Contraption; import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; public final class ContraptionType { @@ -35,8 +35,10 @@ public static Contraption fromType(String typeId) { return legacy.factory.get(); } - ResourceLocation id = ResourceLocation.tryParse(typeId); - ContraptionType type = CreateBuiltInRegistries.CONTRAPTION_TYPE.get(id); + Identifier id = Identifier.tryParse(typeId); + ContraptionType type = CreateBuiltInRegistries.CONTRAPTION_TYPE.get(id) + .map(Holder::value) + .orElse(null); return type == null ? null : type.factory.get(); } } diff --git a/src/main/java/com/simibubi/create/api/contraption/dispenser/DefaultMountedDispenseBehavior.java b/src/main/java/com/simibubi/create/api/contraption/dispenser/DefaultMountedDispenseBehavior.java index 5f8469cd39..d950538277 100644 --- a/src/main/java/com/simibubi/create/api/contraption/dispenser/DefaultMountedDispenseBehavior.java +++ b/src/main/java/com/simibubi/create/api/contraption/dispenser/DefaultMountedDispenseBehavior.java @@ -77,11 +77,11 @@ public static void spawnItem(Level level, ItemStack stack, int speed, Vec3 facin } ItemEntity entity = new ItemEntity(level, x, y, z, stack); - double d3 = level.random.nextDouble() * 0.1 + 0.2; + double d3 = level.getRandom().nextDouble() * 0.1 + 0.2; entity.setDeltaMovement( - level.random.nextGaussian() * 0.0075 * speed + facing.x() * d3 + context.motion.x, - level.random.nextGaussian() * 0.0075 * speed + facing.y() * d3 + context.motion.y, - level.random.nextGaussian() * 0.0075 * speed + facing.z() * d3 + context.motion.z + level.getRandom().nextGaussian() * 0.0075 * speed + facing.x() * d3 + context.motion.x, + level.getRandom().nextGaussian() * 0.0075 * speed + facing.y() * d3 + context.motion.y, + level.getRandom().nextGaussian() * 0.0075 * speed + facing.z() * d3 + context.motion.z ); level.addFreshEntity(entity); } diff --git a/src/main/java/com/simibubi/create/api/contraption/dispenser/MountedDispenseBehavior.java b/src/main/java/com/simibubi/create/api/contraption/dispenser/MountedDispenseBehavior.java index 5d3da14425..ed0e52c364 100644 --- a/src/main/java/com/simibubi/create/api/contraption/dispenser/MountedDispenseBehavior.java +++ b/src/main/java/com/simibubi/create/api/contraption/dispenser/MountedDispenseBehavior.java @@ -3,8 +3,9 @@ import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.impl.contraption.dispenser.DispenserBehaviorConverter; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.dispenser.DispenseItemBehavior; @@ -44,12 +45,12 @@ public interface MountedDispenseBehavior { static Vec3 getDispenserNormal(MovementContext ctx) { Direction facing = ctx.state.getValue(DispenserBlock.FACING); - Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 normal = Vec3.atLowerCornerOf(facing.getUnitVec3i()); return ctx.rotation.apply(normal).normalize(); } static Direction getClosestFacingDirection(Vec3 facing) { - return Direction.getNearest(facing.x, facing.y, facing.z); + return LegacyDirectionBridge.nearest(facing.x, facing.y, facing.z, Direction.NORTH); } /** diff --git a/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorage.java b/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorage.java index 51f1437eaf..4a660a7e7c 100644 --- a/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorage.java +++ b/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorage.java @@ -63,7 +63,7 @@ protected MountedItemStorage(MountedItemStorageType type) { * @return true if the interaction was successful */ public boolean handleInteraction(ServerPlayer player, Contraption contraption, StructureBlockInfo info) { - ServerLevel level = player.serverLevel(); + ServerLevel level = player.level(); BlockPos localPos = info.pos(); Vec3 localPosVec = Vec3.atCenterOf(localPos); Predicate stillValid = p -> { diff --git a/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorageType.java b/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorageType.java index 8b6610d7f1..2063657def 100644 --- a/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorageType.java +++ b/src/main/java/com/simibubi/create/api/contraption/storage/item/MountedItemStorageType.java @@ -13,7 +13,7 @@ import com.tterrag.registrate.util.entry.RegistryEntry; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.tags.TagKey; diff --git a/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorage.java b/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorage.java index 117c371ad7..9f0b33c4f6 100644 --- a/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorage.java +++ b/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorage.java @@ -11,13 +11,14 @@ import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType; import com.simibubi.create.api.contraption.storage.item.WrapperMountedItemStorage; import com.simibubi.create.foundation.codec.CreateCodecs; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.IItemHandlerModifiable; import net.neoforged.neoforge.items.ItemStackHandler; @@ -49,7 +50,7 @@ public void unmount(Level level, BlockState state, BlockPos pos, @Nullable Block if (be == null) return; - IItemHandler cap = level.getCapability(ItemHandler.BLOCK, pos, null); + IItemHandler cap = LegacyItemHandlerAdapter.modifiable(level.getCapability(Item.BLOCK, pos, null)); if (cap != null) { validate(cap).ifPresent(handler -> { for (int i = 0; i < handler.getSlots(); i++) { diff --git a/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorageType.java b/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorageType.java index 9bb4b0f6dd..7a35fb091a 100644 --- a/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorageType.java +++ b/src/main/java/com/simibubi/create/api/contraption/storage/item/simple/SimpleMountedStorageType.java @@ -8,13 +8,14 @@ import com.mojang.serialization.Codec; import com.simibubi.create.api.contraption.storage.item.MountedItemStorageType; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.IItemHandlerModifiable; @@ -33,7 +34,7 @@ public SimpleMountedStorage mount(Level level, BlockState state, BlockPos pos, @ } protected IItemHandler getHandler(Level level, BlockEntity be) { - IItemHandler handler = level.getCapability(ItemHandler.BLOCK, be.getBlockPos(), null); + IItemHandler handler = LegacyItemHandlerAdapter.modifiable(level.getCapability(Item.BLOCK, be.getBlockPos(), null)); // make sure the handler is modifiable so new contents can be moved over on disassembly return handler instanceof IItemHandlerModifiable modifiable ? modifiable : null; } diff --git a/src/main/java/com/simibubi/create/api/contraption/train/PortalTrackProvider.java b/src/main/java/com/simibubi/create/api/contraption/train/PortalTrackProvider.java index ffb45140da..629cf218ae 100644 --- a/src/main/java/com/simibubi/create/api/contraption/train/PortalTrackProvider.java +++ b/src/main/java/com/simibubi/create/api/contraption/train/PortalTrackProvider.java @@ -5,7 +5,7 @@ import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.trains.track.AllPortalTracks; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; diff --git a/src/main/java/com/simibubi/create/api/data/TrainHatInfoProvider.java b/src/main/java/com/simibubi/create/api/data/TrainHatInfoProvider.java index e3384e4ede..7fa2368d55 100644 --- a/src/main/java/com/simibubi/create/api/data/TrainHatInfoProvider.java +++ b/src/main/java/com/simibubi/create/api/data/TrainHatInfoProvider.java @@ -14,12 +14,12 @@ import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.EntityType; import net.minecraft.world.phys.Vec3; public abstract class TrainHatInfoProvider implements DataProvider { - protected final Map trainHatOffsets = new HashMap<>(); + protected final Map trainHatOffsets = new HashMap<>(); private final PackOutput.PathProvider path; public TrainHatInfoProvider(PackOutput output, CompletableFuture registries) { diff --git a/src/main/java/com/simibubi/create/api/data/recipe/BaseRecipeProvider.java b/src/main/java/com/simibubi/create/api/data/recipe/BaseRecipeProvider.java index 95d3ebcdc8..4aa521b84f 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/BaseRecipeProvider.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/BaseRecipeProvider.java @@ -6,11 +6,21 @@ import com.simibubi.create.Create; +import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeBuilder; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStackTemplate; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; /** * A class containing some basic setup for other recipe generators to use. @@ -18,17 +28,18 @@ * a processing recipe type and want to use Create's helpers. * For processing recipes extend {@link StandardProcessingRecipeGen}. */ -public abstract class BaseRecipeProvider extends RecipeProvider { +public abstract class BaseRecipeProvider extends RecipeProvider.Runner { protected final String modid; protected final List all = new ArrayList<>(); + private ActiveProvider activeProvider; public BaseRecipeProvider(PackOutput output, CompletableFuture registries, String defaultNamespace) { super(output, registries); this.modid = defaultNamespace; } - protected ResourceLocation asResource(String path) { - return ResourceLocation.fromNamespaceAndPath(modid, path); + protected Identifier asResource(String path) { + return Identifier.fromNamespaceAndPath(modid, path); } protected GeneratedRecipe register(GeneratedRecipe recipe) { @@ -37,11 +48,101 @@ protected GeneratedRecipe register(GeneratedRecipe recipe) { } @Override - public void buildRecipes(RecipeOutput recipeOutput) { + protected RecipeProvider createRecipeProvider(HolderLookup.Provider registries, RecipeOutput output) { + return new ActiveProvider(registries, output) { + @Override + protected void buildRecipes() { + activeProvider = this; + try { + BaseRecipeProvider.this.buildRecipes(output); + } finally { + activeProvider = null; + } + } + }; + } + + protected void buildRecipes(RecipeOutput recipeOutput) { all.forEach(c -> c.register(recipeOutput)); Create.LOGGER.info("{} registered {} recipe{}", getName(), all.size(), all.size() == 1 ? "" : "s"); } + protected ShapedRecipeBuilder shaped(RecipeCategory category, ItemStackTemplate stack) { + return provider().shapedDelegate(category, stack); + } + + protected ShapedRecipeBuilder shaped(RecipeCategory category, ItemLike item) { + return provider().shapedDelegate(category, item); + } + + protected ShapedRecipeBuilder shaped(RecipeCategory category, ItemLike item, int count) { + return provider().shapedDelegate(category, item, count); + } + + protected ShapelessRecipeBuilder shapeless(RecipeCategory category, ItemStackTemplate stack) { + return provider().shapelessDelegate(category, stack); + } + + protected ShapelessRecipeBuilder shapeless(RecipeCategory category, ItemLike item) { + return provider().shapelessDelegate(category, item); + } + + protected ShapelessRecipeBuilder shapeless(RecipeCategory category, ItemLike item, int count) { + return provider().shapelessDelegate(category, item, count); + } + + protected Ingredient tag(TagKey id) { + return provider().tagDelegate(id); + } + + protected HolderGetter itemLookup() { + return provider().itemLookupDelegate(); + } + + private ActiveProvider provider() { + if (activeProvider == null) + throw new IllegalStateException("Recipe helpers can only be used while recipes are being generated"); + return activeProvider; + } + + private static abstract class ActiveProvider extends RecipeProvider { + protected ActiveProvider(HolderLookup.Provider registries, RecipeOutput output) { + super(registries, output); + } + + ShapedRecipeBuilder shapedDelegate(RecipeCategory category, ItemStackTemplate stack) { + return shaped(category, stack); + } + + ShapedRecipeBuilder shapedDelegate(RecipeCategory category, ItemLike item) { + return shaped(category, item); + } + + ShapedRecipeBuilder shapedDelegate(RecipeCategory category, ItemLike item, int count) { + return shaped(category, item, count); + } + + ShapelessRecipeBuilder shapelessDelegate(RecipeCategory category, ItemStackTemplate stack) { + return shapeless(category, stack); + } + + ShapelessRecipeBuilder shapelessDelegate(RecipeCategory category, ItemLike item) { + return shapeless(category, item); + } + + ShapelessRecipeBuilder shapelessDelegate(RecipeCategory category, ItemLike item, int count) { + return shapeless(category, item, count); + } + + Ingredient tagDelegate(TagKey id) { + return tag(id); + } + + HolderGetter itemLookupDelegate() { + return items; + } + } + @FunctionalInterface public interface GeneratedRecipe { void register(RecipeOutput recipeOutput); diff --git a/src/main/java/com/simibubi/create/api/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/CrushingRecipeGen.java index 0779949762..b79e8a8b79 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/CrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/CrushingRecipeGen.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; import com.simibubi.create.foundation.data.recipe.CommonMetal; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.TagKey; @@ -75,7 +75,7 @@ protected GeneratedRecipe moddedOre(CommonMetal metal, Supplier result TagKey tag = metal.ores.items(); return create(metal + "_ore", b -> { return b.duration(400) - .withCondition(new NotCondition(new TagEmptyCondition(tag.location()))) + .withCondition(new NotCondition(new TagEmptyCondition(tag))) .require(tag) .output(result.get(), 1) .output(.75f, result.get(), 1) @@ -114,7 +114,7 @@ protected GeneratedRecipe moddedRawOre(CommonMetal metal, Supplier res int amount = block ? 9 : 1; TagKey material = block ? metal.rawStorageBlocks.items() : metal.rawOres; return b.duration(400) - .withCondition(new NotCondition(new TagEmptyCondition(material.location()))) + .withCondition(new NotCondition(new TagEmptyCondition(material))) .require(material) .output(result.get(), amount) .output(.75f, AllItems.EXP_NUGGET.get(), amount); diff --git a/src/main/java/com/simibubi/create/api/data/recipe/DatagenMod.java b/src/main/java/com/simibubi/create/api/data/recipe/DatagenMod.java index d8870fd45f..52e493dae5 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/DatagenMod.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/DatagenMod.java @@ -1,10 +1,10 @@ package com.simibubi.create.api.data.recipe; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public interface DatagenMod { - default ResourceLocation asResource(String id) { - return ResourceLocation.fromNamespaceAndPath(getId(), id); + default Identifier asResource(String id) { + return Identifier.fromNamespaceAndPath(getId(), id); } default String recipeId(String id) { @@ -13,20 +13,20 @@ default String recipeId(String id) { String getId(); - default ResourceLocation ingotOf(String type) { - return ResourceLocation.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "ingot_" + type : type + "_ingot"); + default Identifier ingotOf(String type) { + return Identifier.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "ingot_" + type : type + "_ingot"); } - default ResourceLocation nuggetOf(String type) { - return ResourceLocation.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "nugget_" + type : type + "_nugget"); + default Identifier nuggetOf(String type) { + return Identifier.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "nugget_" + type : type + "_nugget"); } - default ResourceLocation oreOf(String type) { - return ResourceLocation.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "ore_" + type : type + "_ore"); + default Identifier oreOf(String type) { + return Identifier.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "ore_" + type : type + "_ore"); } - default ResourceLocation deepslateOreOf(String type) { - return ResourceLocation.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "deepslate_ore_" + type : "deepslate_" + type + "_ore"); + default Identifier deepslateOreOf(String type) { + return Identifier.fromNamespaceAndPath(getId(), reversedMetalPrefix() ? "deepslate_ore_" + type : "deepslate_" + type + "_ore"); } /** diff --git a/src/main/java/com/simibubi/create/api/data/recipe/DeployingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/DeployingRecipeGen.java index 9650214dda..25179560e6 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/DeployingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/DeployingRecipeGen.java @@ -15,7 +15,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -83,7 +83,7 @@ protected AllRecipeTypes getRecipeType() { } @Override - protected Builder getBuilder(ResourceLocation id) { + protected Builder getBuilder(Identifier id) { return new Builder<>(DeployerApplicationRecipe::new, id); } } diff --git a/src/main/java/com/simibubi/create/api/data/recipe/HauntingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/HauntingRecipeGen.java index c9cd10cc71..056d2c1fb3 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/HauntingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/HauntingRecipeGen.java @@ -6,7 +6,7 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.kinetics.fan.processing.HauntingRecipe; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.world.item.crafting.Ingredient; diff --git a/src/main/java/com/simibubi/create/api/data/recipe/ItemApplicationRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/ItemApplicationRecipeGen.java index c0d8e51ed3..7f50610a0d 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/ItemApplicationRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/ItemApplicationRecipeGen.java @@ -12,7 +12,7 @@ import com.simibubi.create.content.kinetics.deployer.ManualApplicationRecipe; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.crafting.Ingredient; @@ -33,7 +33,7 @@ protected GeneratedRecipe woodCasing(String type, Supplier ingredient, } protected GeneratedRecipe woodCasingTag(String type, Supplier> ingredient, Supplier output) { - return woodCasingIngredient(type, () -> Ingredient.of(ingredient.get()), output); + return woodCasingIngredient(type, () -> tag(ingredient.get()), output); } protected GeneratedRecipe woodCasingIngredient(String type, Supplier ingredient, @@ -56,7 +56,7 @@ protected AllRecipeTypes getRecipeType() { } @Override - protected Builder getBuilder(ResourceLocation id) { + protected Builder getBuilder(Identifier id) { return new Builder<>(ManualApplicationRecipe::new, id); } } diff --git a/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeBuilder.java b/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeBuilder.java index add6fbd425..1d448d3f53 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeBuilder.java @@ -10,9 +10,13 @@ import com.google.common.collect.Sets; import com.simibubi.create.content.kinetics.crafter.MechanicalCraftingRecipe; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.minecraft.core.HolderSet; import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -63,7 +67,7 @@ public static MechanicalCraftingRecipeBuilder shapedRecipe(ItemLike result, int * Adds a new unique key to the recipe key for use in the pattern */ public MechanicalCraftingRecipeBuilder key(Character c, TagKey tag) { - return this.key(c, Ingredient.of(tag)); + return this.key(c, Ingredient.of(HolderSet.emptyNamed(BuiltInRegistries.ITEM, tag))); } /** @@ -122,8 +126,8 @@ public void build(RecipeOutput output) { * {@link #build(RecipeOutput)} if the recipe id is the same as the result item id */ public void build(RecipeOutput output, String id) { - ResourceLocation resourcelocation = RegisteredObjectsHelper.getKeyOrThrow(this.result); - ResourceLocation idRs = ResourceLocation.parse(id); + Identifier resourcelocation = RegisteredObjectsHelper.getKeyOrThrow(this.result); + Identifier idRs = Identifier.parse(id); if (idRs.equals(resourcelocation)) { throw new IllegalStateException("Shaped Recipe " + id + " should remove its 'id' argument"); } else { @@ -134,7 +138,7 @@ public void build(RecipeOutput output, String id) { /** * Builds this recipe into a {@link RecipeOutput}. */ - public void build(RecipeOutput output, ResourceLocation id) { + public void build(RecipeOutput output, Identifier id) { validate(id); MechanicalCraftingRecipe recipe = new MechanicalCraftingRecipe( "", @@ -143,14 +147,14 @@ public void build(RecipeOutput output, ResourceLocation id) { new ItemStack(result, count), acceptMirrored ); - output.accept(id, recipe, null, recipeConditions.toArray(ICondition[]::new)); + output.accept(ResourceKey.create(Registries.RECIPE, id), recipe, null, recipeConditions.toArray(ICondition[]::new)); } /** * Makes sure that this recipe is valid. * @param recipeId The id of this recipe, only used for error messages. */ - private void validate(ResourceLocation recipeId) { + private void validate(Identifier recipeId) { if (pattern.isEmpty()) { throw new IllegalStateException("No pattern is defined for shaped recipe " + recipeId + "!"); } else { diff --git a/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeGen.java index 524f33c3cc..e3ee1cf9c6 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/MechanicalCraftingRecipeGen.java @@ -6,11 +6,11 @@ import com.google.common.base.Supplier; import com.simibubi.create.Create; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.ItemLike; /** @@ -62,7 +62,7 @@ public GeneratedRecipe recipe(UnaryOperator bui return register(consumer -> { MechanicalCraftingRecipeBuilder b = builder.apply(MechanicalCraftingRecipeBuilder.shapedRecipe(result.get(), amount)); - ResourceLocation location = asResource("mechanical_crafting/" + RegisteredObjectsHelper.getKeyOrThrow(result.get() + Identifier location = asResource("mechanical_crafting/" + RegisteredObjectsHelper.getKeyOrThrow(result.get() .asItem()) .getPath() + suffix); b.build(consumer, location); diff --git a/src/main/java/com/simibubi/create/api/data/recipe/MillingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/MillingRecipeGen.java index 67ecabd130..d8c5227c67 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/MillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/MillingRecipeGen.java @@ -32,7 +32,7 @@ public abstract class MillingRecipeGen extends StandardProcessingRecipeGen crushed, int duration) { return create(name + "_ore", b -> b.duration(duration) - .withCondition(new NotCondition(new TagEmptyCondition("c", "ores/" + name))) + .withCondition(new NotCondition(new TagEmptyCondition(AllTags.commonItemTag("ores/" + name)))) .require(AllTags.commonItemTag("ores/" + name)) .output(crushed.get())); } diff --git a/src/main/java/com/simibubi/create/api/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/ProcessingRecipeGen.java index 12a5c1d9a4..8f5150e68a 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/ProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/ProcessingRecipeGen.java @@ -14,10 +14,10 @@ import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; @@ -28,7 +28,7 @@ * Addons should usually extend {@link StandardProcessingRecipeGen} instead if the processing recipe uses * the base {@link ProcessingRecipeParams}. * For processing recipes that uses CUSTOM {@link ProcessingRecipeParams} like {@link ItemApplicationRecipe}, - * extend this class and override {@link #getRecipeType()} and {@link #getBuilder(ResourceLocation)}, + * extend this class and override {@link #getRecipeType()} and {@link #getBuilder(Identifier)}, * returning the corresponding recipe type and recipe builder. */ public abstract class ProcessingRecipeGen

, B extends ProcessingRecipeBuilder> extends BaseRecipeProvider { @@ -45,7 +45,7 @@ protected GeneratedRecipe create(String namespace, Supplier singleIngr GeneratedRecipe generatedRecipe = c -> { ItemLike itemLike = singleIngredient.get(); transform - .apply(getBuilder(ResourceLocation.fromNamespaceAndPath(namespace, RegisteredObjectsHelper.getKeyOrThrow(itemLike.asItem()).getPath())).withItemIngredients(Ingredient.of(itemLike))) + .apply(getBuilder(Identifier.fromNamespaceAndPath(namespace, RegisteredObjectsHelper.getKeyOrThrow(itemLike.asItem()).getPath())).withItemIngredients(Ingredient.of(itemLike))) .build(c); }; all.add(generatedRecipe); @@ -60,7 +60,7 @@ protected GeneratedRecipe create(Supplier singleIngredient, UnaryOpera return create(Create.ID, singleIngredient, transform); } - protected GeneratedRecipe createWithDeferredId(Supplier name, UnaryOperator transform) { + protected GeneratedRecipe createWithDeferredId(Supplier name, UnaryOperator transform) { GeneratedRecipe generatedRecipe = c -> transform.apply(getBuilder(name.get())) .build(c); @@ -72,7 +72,7 @@ protected GeneratedRecipe createWithDeferredId(Supplier name, * Create a new processing recipe, with recipe definitions provided by the * function */ - protected GeneratedRecipe create(ResourceLocation name, UnaryOperator transform) { + protected GeneratedRecipe create(Identifier name, UnaryOperator transform) { return createWithDeferredId(() -> name, transform); } @@ -86,11 +86,11 @@ protected GeneratedRecipe create(String name, UnaryOperator transform) { protected abstract IRecipeTypeInfo getRecipeType(); - protected abstract B getBuilder(ResourceLocation id); + protected abstract B getBuilder(Identifier id); - protected Supplier idWithSuffix(Supplier item, String suffix) { + protected Supplier idWithSuffix(Supplier item, String suffix) { return () -> { - ResourceLocation registryName = RegisteredObjectsHelper.getKeyOrThrow(item.get() + Identifier registryName = RegisteredObjectsHelper.getKeyOrThrow(item.get() .asItem()); return asResource(registryName.getPath() + suffix); }; diff --git a/src/main/java/com/simibubi/create/api/data/recipe/StandardProcessingRecipeGen.java b/src/main/java/com/simibubi/create/api/data/recipe/StandardProcessingRecipeGen.java index eeeca65856..e7a9928448 100644 --- a/src/main/java/com/simibubi/create/api/data/recipe/StandardProcessingRecipeGen.java +++ b/src/main/java/com/simibubi/create/api/data/recipe/StandardProcessingRecipeGen.java @@ -10,7 +10,7 @@ import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * A base class for {@link StandardProcessingRecipe}, containing helper methods @@ -24,12 +24,12 @@ public StandardProcessingRecipeGen(PackOutput output, CompletableFuture getSerializer() { - return getRecipeType().getSerializer(); + protected StandardProcessingRecipe.Factory getFactory() { + return StandardProcessingRecipe.Serializer.factory(getRecipeType().getSerializer()); } @Override - protected Builder getBuilder(ResourceLocation id) { - return new StandardProcessingRecipe.Builder<>(getSerializer().factory(), id); + protected Builder getBuilder(Identifier id) { + return new StandardProcessingRecipe.Builder<>(getFactory(), id); } } diff --git a/src/main/java/com/simibubi/create/api/equipment/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/api/equipment/goggles/IHaveGoggleInformation.java index 4e234fa183..5cc9002ccb 100644 --- a/src/main/java/com/simibubi/create/api/equipment/goggles/IHaveGoggleInformation.java +++ b/src/main/java/com/simibubi/create/api/equipment/goggles/IHaveGoggleInformation.java @@ -4,13 +4,15 @@ import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.api.lang.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.fluid.FluidResource; // TODO: 1.21.1+ - Move into api package /** @@ -81,4 +83,60 @@ default boolean containedFluidTooltip(List tooltip, boolean isPlayerS return true; } + default boolean containedFluidTooltip(List tooltip, boolean isPlayerSneaking, + ResourceHandler handler) { + if (handler == null) + return false; + + if (handler.size() == 0) + return false; + + LangBuilder mb = CreateLang.translate("generic.unit.millibuckets"); + CreateLang.translate("gui.goggles.fluid_container") + .forGoggles(tooltip); + + boolean isEmpty = true; + for (int i = 0; i < handler.size(); i++) { + FluidResource resource = handler.getResource(i); + if (resource.isEmpty()) + continue; + + int amount = handler.getAmountAsInt(i); + FluidStack fluidStack = resource.toStack(amount); + CreateLang.fluidName(fluidStack) + .style(ChatFormatting.GRAY) + .forGoggles(tooltip, 1); + + CreateLang.builder() + .add(CreateLang.number(amount) + .add(mb) + .style(ChatFormatting.GOLD)) + .text(ChatFormatting.GRAY, " / ") + .add(CreateLang.number(handler.getCapacityAsInt(i, resource)) + .add(mb) + .style(ChatFormatting.DARK_GRAY)) + .forGoggles(tooltip, 1); + + isEmpty = false; + } + + if (handler.size() > 1) { + if (isEmpty) + tooltip.remove(tooltip.size() - 1); + return true; + } + + if (!isEmpty) + return true; + + CreateLang.translate("gui.goggles.fluid_container.capacity") + .add(CreateLang.number(handler.getCapacityAsInt(0, FluidResource.EMPTY)) + .add(mb) + .style(ChatFormatting.GOLD)) + .style(ChatFormatting.GRAY) + .forGoggles(tooltip, 1); + + return true; + } + } diff --git a/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoCannonProjectileType.java b/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoCannonProjectileType.java index 0a424f9f27..abc3918ff1 100644 --- a/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoCannonProjectileType.java +++ b/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoCannonProjectileType.java @@ -17,6 +17,7 @@ import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryCodecs; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -28,7 +29,7 @@ // TODO: 1.21.1+ - Move into api package public record PotatoCannonProjectileType(HolderSet items, int reloadTicks, int damage, int split, float knockback, float drag, float velocityMultiplier, float gravityMultiplier, - float soundPitch, boolean sticky, ItemStack dropStack, + float soundPitch, boolean sticky, Optional drop, PotatoProjectileRenderMode renderMode, Optional preEntityHit, Optional onEntityHit, @@ -44,7 +45,7 @@ public record PotatoCannonProjectileType(HolderSet items, int reloadTicks, Codec.FLOAT.optionalFieldOf("gravity_multiplier", 1f).forGetter(PotatoCannonProjectileType::gravityMultiplier), Codec.FLOAT.optionalFieldOf("sound_pitch", 1f).forGetter(PotatoCannonProjectileType::soundPitch), Codec.BOOL.optionalFieldOf("sticky", false).forGetter(PotatoCannonProjectileType::sticky), - ItemStack.CODEC.optionalFieldOf("drop_stack", ItemStack.EMPTY).forGetter(PotatoCannonProjectileType::dropStack), + DropStack.CODEC.optionalFieldOf("drop_stack").forGetter(PotatoCannonProjectileType::drop), PotatoProjectileRenderMode.CODEC.optionalFieldOf("render_mode", Billboard.INSTANCE).forGetter(PotatoCannonProjectileType::renderMode), PotatoProjectileEntityHitAction.CODEC.optionalFieldOf("pre_entity_hit").forGetter(p -> p.preEntityHit), PotatoProjectileEntityHitAction.CODEC.optionalFieldOf("on_entity_hit").forGetter(p -> p.onEntityHit), @@ -72,9 +73,20 @@ public boolean onBlockHit(LevelAccessor level, ItemStack stack, BlockHitResult r } // Copy the stack so it's not mutated and lost - @Override public ItemStack dropStack() { - return dropStack.copy(); + return drop.map(DropStack::asStack) + .orElse(ItemStack.EMPTY); + } + + public record DropStack(Holder item, int count) { + public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( + BuiltInRegistries.ITEM.holderByNameCodec().fieldOf("id").forGetter(DropStack::item), + Codec.INT.optionalFieldOf("count", 1).forGetter(DropStack::count) + ).apply(i, DropStack::new)); + + public ItemStack asStack() { + return new ItemStack(item, count); + } } public static class Builder { @@ -88,7 +100,7 @@ public static class Builder { private float gravityMultiplier = 1f; private float soundPitch = 1f; private boolean sticky = false; - private ItemStack dropStack = ItemStack.EMPTY; + private DropStack drop = null; private PotatoProjectileRenderMode renderMode = Billboard.INSTANCE; private PotatoProjectileEntityHitAction preEntityHit = null; private PotatoProjectileEntityHitAction onEntityHit = null; @@ -140,7 +152,16 @@ public Builder sticky() { } public Builder dropStack(ItemStack stack) { - this.dropStack = stack; + this.drop = stack.isEmpty() ? null : new DropStack(stack.getItem().builtInRegistryHolder(), stack.getCount()); + return this; + } + + public Builder dropItem(ItemLike item) { + return dropItem(item, 1); + } + + public Builder dropItem(ItemLike item, int count) { + this.drop = new DropStack(item.asItem().builtInRegistryHolder(), count); return this; } @@ -197,7 +218,7 @@ public PotatoCannonProjectileType build() { gravityMultiplier, soundPitch, sticky, - dropStack, + Optional.ofNullable(drop), renderMode, Optional.ofNullable(preEntityHit), Optional.ofNullable(onEntityHit), diff --git a/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoProjectileRenderMode.java b/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoProjectileRenderMode.java index 1bc57b19c0..f6003e16c6 100644 --- a/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoProjectileRenderMode.java +++ b/src/main/java/com/simibubi/create/api/equipment/potatoCannon/PotatoProjectileRenderMode.java @@ -9,14 +9,12 @@ import com.simibubi.create.content.equipment.potatoCannon.PotatoProjectileEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; // TODO: 1.21.1+ - Move into api package public interface PotatoProjectileRenderMode { Codec CODEC = CreateBuiltInRegistries.POTATO_PROJECTILE_RENDER_MODE.byNameCodec() .dispatch(PotatoProjectileRenderMode::codec, Function.identity()); - @OnlyIn(Dist.CLIENT) void transform(PoseStack ms, PotatoProjectileEntity entity, float pt); MapCodec codec(); diff --git a/src/main/java/com/simibubi/create/api/packager/InventoryIdentifier.java b/src/main/java/com/simibubi/create/api/packager/InventoryIdentifier.java index 62a29a34d8..c1494fd07c 100644 --- a/src/main/java/com/simibubi/create/api/packager/InventoryIdentifier.java +++ b/src/main/java/com/simibubi/create/api/packager/InventoryIdentifier.java @@ -7,7 +7,7 @@ import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.logistics.packager.AllInventoryIdentifiers; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/simibubi/create/api/registrate/CreateRegistrateRegistrationCallback.java b/src/main/java/com/simibubi/create/api/registrate/CreateRegistrateRegistrationCallback.java index 89d8acaf80..b72a137cab 100644 --- a/src/main/java/com/simibubi/create/api/registrate/CreateRegistrateRegistrationCallback.java +++ b/src/main/java/com/simibubi/create/api/registrate/CreateRegistrateRegistrationCallback.java @@ -6,13 +6,13 @@ import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Register a callback for when an entry is added to any {@link CreateRegistrate} instance */ public class CreateRegistrateRegistrationCallback { - public static void register(ResourceKey> registry, ResourceLocation id, NonNullConsumer callback) { + public static void register(ResourceKey> registry, Identifier id, NonNullConsumer callback) { CreateRegistrateRegistrationCallbackImpl.register(registry, id, callback); } diff --git a/src/main/java/com/simibubi/create/compat/Mods.java b/src/main/java/com/simibubi/create/compat/Mods.java index e4c13922cd..806f59e78f 100644 --- a/src/main/java/com/simibubi/create/compat/Mods.java +++ b/src/main/java/com/simibubi/create/compat/Mods.java @@ -3,13 +3,15 @@ import java.util.Optional; import java.util.function.Supplier; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.neoforged.fml.loading.LoadingModList; @@ -57,16 +59,20 @@ public String id() { return id; } - public ResourceLocation rl(String path) { - return ResourceLocation.fromNamespaceAndPath(id, path); + public Identifier rl(String path) { + return Identifier.fromNamespaceAndPath(id, path); } public Block getBlock(String id) { - return BuiltInRegistries.BLOCK.get(rl(id)); + return BuiltInRegistries.BLOCK.get(rl(id)) + .map(holder -> holder.value()) + .orElse(Blocks.AIR); } public Item getItem(String id) { - return BuiltInRegistries.ITEM.get(rl(id)); + return BuiltInRegistries.ITEM.get(rl(id)) + .map(holder -> holder.value()) + .orElse(Items.AIR); } public boolean contains(ItemLike entry) { diff --git a/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java b/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java index 7ef5dd8180..8ac97cc71f 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/AbstractComputerBehaviour.java @@ -25,7 +25,7 @@ public AbstractComputerBehaviour(SmartBlockEntity te) { @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - hasAttachedComputer = nbt.getBoolean("HasAttachedComputer"); + hasAttachedComputer = nbt.getBooleanOr("HasAttachedComputer", false); super.read(nbt, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/ComputerScreen.java b/src/main/java/com/simibubi/create/compat/computercraft/ComputerScreen.java index b41a6fe7a5..06233ea7f8 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/ComputerScreen.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/ComputerScreen.java @@ -5,11 +5,11 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.createmod.catnip.gui.widget.ElementWidget; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.createmod.catnip.api.client.gui.widget.ElementWidget; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -43,18 +43,17 @@ public ComputerScreen(Component title, Supplier displayTitle, @Nullab @Override public void tick() { if (!hasAttachedComputer.get()) - minecraft.setScreen(previousScreen); + minecraft.setScreenAndShow(previousScreen); super.tick(); } @Override protected void init() { - setWindowSize(background.getWidth(), background.getHeight()); super.init(); - int x = guiLeft; - int y = guiTop; + int x = left(); + int y = top(); Mods.COMPUTERCRAFT.executeIfInstalled(() -> () -> { computerWidget = new ElementWidget(x + 33, y + 38) @@ -67,29 +66,36 @@ protected void init() { confirmButton.withCallback(this::onClose); addRenderableWidget(confirmButton); } - - - @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - int x = guiLeft; - int y = guiTop; + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + int x = left(); + int y = top(); background.render(graphics, x, y); - graphics.drawString(font, displayTitle.get(), + graphics.text(font, displayTitle.get(), Math.round(x + background.getWidth() / 2.0F - font.width(displayTitle.get()) / 2.0F), y + 4, 0x442000, false); - graphics.drawWordWrap(font, CreateLang.translate("gui.attached_computer.controlled") + graphics.textWithWordWrap(font, CreateLang.translate("gui.attached_computer.controlled") .component(), x + 55, y + 32, 111, 0x7A7A7A); if (additional != null) additional.render(graphics, mouseX, mouseY, partialTicks, x, y, background); + + super.extractRenderState(graphics, mouseX, mouseY, partialTicks); + } + + private int left() { + return (width - background.getWidth()) / 2; + } + + private int top() { + return (height - background.getHeight()) / 2; } @FunctionalInterface public interface RenderWindowFunction { - void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, AllGuiTextures background); + void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, AllGuiTextures background); } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerUtil.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerUtil.java index d92dc62051..7d4930933d 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerUtil.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/ComputerUtil.java @@ -11,17 +11,40 @@ import com.simibubi.create.compat.computercraft.implementation.luaObjects.LuaComparable; import com.simibubi.create.content.logistics.BigItemStack; import com.simibubi.create.content.logistics.packager.InventorySummary; +import com.simibubi.create.foundation.utility.GlobalRegistryAccess; import dan200.computercraft.api.detail.VanillaDetailRegistries; import dan200.computercraft.api.lua.LuaException; -import net.createmod.catnip.data.Glob; +import net.createmod.catnip.api.data.Glob; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; import net.neoforged.neoforge.items.IItemHandler; public class ComputerUtil { + public static Map getBasicDetails(ItemStack stack) { + return VanillaDetailRegistries.ITEM_STACK.getBasicDetails(GlobalRegistryAccess.getOrThrow(), stack); + } + + public static Map getDetails(ItemStack stack) { + return VanillaDetailRegistries.ITEM_STACK.getDetails(GlobalRegistryAccess.getOrThrow(), stack); + } + + public static ItemLike getItemOrThrow(Identifier id) throws LuaException { + if (id == null) + throw new LuaException("Invalid item id"); + var holder = BuiltInRegistries.ITEM.get(id); + if (holder.isEmpty()) + throw new LuaException("Unknown item: " + id); + return holder.get() + .value(); + } + public static int bigItemStackToLuaTableFilter(BigItemStack entry, Map filter) throws LuaException { - Map details = VanillaDetailRegistries.ITEM_STACK.getDetails(entry.stack); + Map details = getDetails(entry.stack); // Count needs to be replaced because BigItemStack can have a different count than the stack details.put("count", entry.count); @@ -292,7 +315,7 @@ private static List toOrderedList(Map m) { var size = inventory.getSlots(); for (var i = 0; i < size; i++) { var stack = inventory.getStackInSlot(i); - if (!stack.isEmpty()) result.put(i + 1, VanillaDetailRegistries.ITEM_STACK.getBasicDetails(stack)); + if (!stack.isEmpty()) result.put(i + 1, getBasicDetails(stack)); } return result; @@ -304,7 +327,7 @@ private static List toOrderedList(Map m) { if (slot < 1 || slot > maxSlots) throw new LuaException(String.format("Slot " + slot + " out of range, available slots between " + 1 + " and " + maxSlots)); var stack = inventory.getStackInSlot(slot - 1); - return stack.isEmpty() ? null : VanillaDetailRegistries.ITEM_STACK.getDetails(stack); + return stack.isEmpty() ? null : getDetails(stack); } public static Map getItemDetail(InventorySummary inventorySummary, int slot) throws LuaException { @@ -313,7 +336,7 @@ private static List toOrderedList(Map m) { if (slot < 1 || slot > maxSlots) throw new LuaException(String.format("Slot " + slot + " out of range, available slots between " + 1 + " and " + maxSlots)); BigItemStack entry = stacks.get(slot - 1); - Map details = new HashMap<>(VanillaDetailRegistries.ITEM_STACK.getDetails(entry.stack)); + Map details = new HashMap<>(getDetails(entry.stack)); details.put("count", entry.count); return diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaBigItemStack.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaBigItemStack.java index 43ff8f409f..e0ae8e91f1 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaBigItemStack.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaBigItemStack.java @@ -2,10 +2,9 @@ import java.util.Map; +import com.simibubi.create.compat.computercraft.implementation.ComputerUtil; import com.simibubi.create.content.logistics.BigItemStack; -import dan200.computercraft.api.detail.VanillaDetailRegistries; - public class LuaBigItemStack implements LuaComparable { private final BigItemStack stack; @@ -15,7 +14,7 @@ public LuaBigItemStack(BigItemStack stack) { @Override public Map getTableRepresentation() { - Map details = VanillaDetailRegistries.ITEM_STACK.getDetails(stack.stack); + Map details = ComputerUtil.getDetails(stack.stack); // Add count to the details details.put("count", stack.count); return details; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaItemStack.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaItemStack.java index 9d059ec6f5..1dd84ef19a 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaItemStack.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/LuaItemStack.java @@ -2,7 +2,7 @@ import java.util.Map; -import dan200.computercraft.api.detail.VanillaDetailRegistries; +import com.simibubi.create.compat.computercraft.implementation.ComputerUtil; import net.minecraft.world.item.ItemStack; public class LuaItemStack implements LuaComparable { @@ -14,6 +14,6 @@ public LuaItemStack(ItemStack stack) { @Override public Map getTableRepresentation() { - return VanillaDetailRegistries.ITEM_STACK.getDetails(stack); + return ComputerUtil.getDetails(stack); } } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/PackageOrderLuaObject.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/PackageOrderLuaObject.java index 9f0f4d9e6f..1df04863f1 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/PackageOrderLuaObject.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/luaObjects/PackageOrderLuaObject.java @@ -5,13 +5,13 @@ import java.util.List; import java.util.Map; +import com.simibubi.create.compat.computercraft.implementation.ComputerUtil; import com.simibubi.create.compat.computercraft.implementation.CreateLuaTable; import com.simibubi.create.content.logistics.BigItemStack; import com.simibubi.create.content.logistics.box.PackageItem; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts.CraftingEntry; -import dan200.computercraft.api.detail.VanillaDetailRegistries; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import net.minecraft.world.item.ItemStack; @@ -64,7 +64,7 @@ public final CreateLuaTable list() throws LuaException { for (BigItemStack bis : context.stacks()) { i++; Map details = new HashMap<>( - VanillaDetailRegistries.ITEM_STACK.getBasicDetails(bis.stack)); + ComputerUtil.getBasicDetails(bis.stack)); details.put("count", bis.count); // Use bis count stacks.put(i, details); } @@ -89,7 +89,7 @@ public final CreateLuaTable getItemDetail(int slot) throws LuaException { BigItemStack bis = stacks.get(slot - 1); Map details = new HashMap<>( - VanillaDetailRegistries.ITEM_STACK.getDetails(bis.stack)); + ComputerUtil.getDetails(bis.stack)); details.put("count", bis.count); // Use bis count return new CreateLuaTable(details); @@ -113,7 +113,7 @@ public final CreateLuaTable getCrafts() throws LuaException { for (BigItemStack bis : entry.pattern().stacks()) { j++; // Not sure if this is the best way to get the in game ID for the item, if there is please let me know - String name = VanillaDetailRegistries.ITEM_STACK.getBasicDetails(bis.stack).get("name").toString(); + String name = ComputerUtil.getBasicDetails(bis.stack).get("name").toString(); recipe.put(j, name.equals("minecraft:air") ? null : name); } i++; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java index dc8a2965d8..2dafa9a5bb 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/DisplayLinkPeripheral.java @@ -84,7 +84,7 @@ public final void writeBytes(IArguments args) throws LuaException { } protected final void writeImpl(String text) { - ListTag tag = blockEntity.getSourceConfig().getList(TAG_KEY, Tag.TAG_STRING); + ListTag tag = blockEntity.getSourceConfig().getListOrEmpty(TAG_KEY); int x = cursorX.get(); int y = cursorY.get(); @@ -93,7 +93,7 @@ protected final void writeImpl(String text) { tag.add(StringTag.valueOf("")); } - StringBuilder builder = new StringBuilder(tag.getString(y)); + StringBuilder builder = new StringBuilder(tag.getStringOr(y, "")); builder.append(" ".repeat(Math.max(0, x - builder.length()))); builder.replace(x, x + text.length(), text); @@ -109,7 +109,7 @@ protected final void writeImpl(String text) { @LuaFunction public final void clearLine() { - ListTag tag = blockEntity.getSourceConfig().getList(TAG_KEY, Tag.TAG_STRING); + ListTag tag = blockEntity.getSourceConfig().getListOrEmpty(TAG_KEY); if (tag.size() > cursorY.get()) tag.set(cursorY.get(), StringTag.valueOf("")); diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/NixieTubePeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/NixieTubePeripheral.java index f067fbbc86..71be2152bb 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/NixieTubePeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/NixieTubePeripheral.java @@ -7,6 +7,7 @@ import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlock; import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlockEntity; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; @@ -66,7 +67,7 @@ public void setText(IArguments arguments) throws LuaException { return; blockEntity.computerSignal = null; - String tagElement = Component.Serializer.toJson(Component.literal(arguments.getString(0)), level.registryAccess()); + String tagElement = LegacyComponentSerializationBridge.toJson(Component.literal(arguments.getString(0)), level.registryAccess()); @Nullable String colour = arguments.optString(1, null); BlockState state = null; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/RedstoneRequesterPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/RedstoneRequesterPeripheral.java index baab264bfc..2bfacaf658 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/RedstoneRequesterPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/RedstoneRequesterPeripheral.java @@ -12,13 +12,12 @@ import com.simibubi.create.content.logistics.stockTicker.PackageOrder; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts.CraftingEntry; +import com.simibubi.create.compat.computercraft.implementation.ComputerUtil; -import dan200.computercraft.api.detail.VanillaDetailRegistries; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; @@ -64,7 +63,7 @@ public final void setCraftingRequest(IArguments arguments) throws LuaException { for (int i = 0; i < stacks.size(); i++) { ItemStack stack = stacks.get(i).stack; Map details = new HashMap<>( - VanillaDetailRegistries.ITEM_STACK.getDetails(stack)); + ComputerUtil.getDetails(stack)); if (!details.get("name").equals("minecraft:air")) { details.put("count", stacks.get(i).count); result.put(i + 1, details); // +1 because lua @@ -123,8 +122,8 @@ private List generateOrder(IArguments arguments) throws LuaExcepti } else { Object arg = arguments.get(i); if (arg instanceof String itemName) { - ResourceLocation resourceLocation = ResourceLocation.tryParse(itemName); - ItemLike item = BuiltInRegistries.ITEM.get(resourceLocation); + Identifier resourceLocation = Identifier.tryParse(itemName); + ItemLike item = ComputerUtil.getItemOrThrow(resourceLocation); list.add(new BigItemStack(new ItemStack(item), 1)); } else if (arg instanceof Map itemData) { String itemName = "minecraft:air"; @@ -138,8 +137,8 @@ private List generateOrder(IArguments arguments) throws LuaExcepti if (count > 256) throw new LuaException("Count for item " + itemName + " exceeds 256"); } - ResourceLocation resourceLocation = ResourceLocation.tryParse(itemName); - ItemLike item = BuiltInRegistries.ITEM.get(resourceLocation); + Identifier resourceLocation = Identifier.tryParse(itemName); + ItemLike item = ComputerUtil.getItemOrThrow(resourceLocation); list.add(new BigItemStack(new ItemStack(item), count)); } } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SignalPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SignalPeripheral.java index 138cbbfa7d..ec74cb1dc0 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SignalPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SignalPeripheral.java @@ -18,7 +18,7 @@ import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java index 4232dacfe2..a4562328e3 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StationPeripheral.java @@ -17,15 +17,15 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.content.trains.station.StationBlockEntity; import com.simibubi.create.content.trains.station.TrainEditPacket; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.StringHelper; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.lua.MethodResult; -import net.createmod.catnip.data.Glob; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Glob; +import net.createmod.catnip.api.data.Pair; import net.minecraft.nbt.ByteTag; import net.minecraft.nbt.CollectionTag; import net.minecraft.nbt.CompoundTag; @@ -230,18 +230,19 @@ public MethodResult distanceTo(String destinationFilter) throws LuaException { byte type = tag.getId(); if (type == Tag.TAG_BYTE && key != null && key.equals("Count")) - return ((NumericTag) tag).getAsByte(); + return ((NumericTag) tag).byteValue(); else if (type == Tag.TAG_BYTE) - return ((NumericTag) tag).getAsByte() != 0; + return ((NumericTag) tag).byteValue() != 0; else if (type == Tag.TAG_SHORT || type == Tag.TAG_INT || type == Tag.TAG_LONG) - return ((NumericTag) tag).getAsLong(); + return ((NumericTag) tag).longValue(); else if (type == Tag.TAG_FLOAT || type == Tag.TAG_DOUBLE) - return ((NumericTag) tag).getAsDouble(); + return ((NumericTag) tag).doubleValue(); else if (type == Tag.TAG_STRING) - return tag.getAsString(); + return tag.asString() + .orElse(""); else if (type == Tag.TAG_LIST || type == Tag.TAG_BYTE_ARRAY || type == Tag.TAG_INT_ARRAY || type == Tag.TAG_LONG_ARRAY) { CreateLuaTable list = new CreateLuaTable(); - CollectionTag listTag = (CollectionTag) tag; + CollectionTag listTag = (CollectionTag) tag; for (int i = 0; i < listTag.size(); i++) { list.put(i + 1, fromNBTTag(null, listTag.get(i))); @@ -253,7 +254,7 @@ else if (type == Tag.TAG_LIST || type == Tag.TAG_BYTE_ARRAY || type == Tag.TAG_I CreateLuaTable table = new CreateLuaTable(); CompoundTag compoundTag = (CompoundTag) tag; - for (String compoundKey : compoundTag.getAllKeys()) { + for (String compoundKey : compoundTag.keySet()) { table.put( StringHelper.camelCaseToSnakeCase(compoundKey), fromNBTTag(compoundKey, compoundTag.get(compoundKey)) diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StockTickerPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StockTickerPeripheral.java index 6fcbc29b20..f14a6eb73a 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StockTickerPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/StockTickerPeripheral.java @@ -15,7 +15,6 @@ import com.simibubi.create.content.logistics.stockTicker.PackageOrder; import com.simibubi.create.content.logistics.stockTicker.StockTickerBlockEntity; -import dan200.computercraft.api.detail.VanillaDetailRegistries; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; @@ -34,8 +33,8 @@ public StockTickerPeripheral(StockTickerBlockEntity blockEntity) { i++; Map details = new HashMap<>( detailed.isPresent() && detailed.get() - ? VanillaDetailRegistries.ITEM_STACK.getDetails(entry.stack) - : VanillaDetailRegistries.ITEM_STACK.getBasicDetails(entry.stack)); + ? ComputerUtil.getDetails(entry.stack) + : ComputerUtil.getBasicDetails(entry.stack)); details.put("count", entry.count); result.put(i, details); } diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java index 481e86aba8..791e153566 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/SyncedPeripheral.java @@ -10,7 +10,7 @@ import com.simibubi.create.compat.computercraft.events.ComputerEvent; import com.simibubi.create.compat.computercraft.implementation.ComputerBehaviour; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; diff --git a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/TableClothShopPeripheral.java b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/TableClothShopPeripheral.java index 86bc58c5a4..90b8a2c7f2 100644 --- a/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/TableClothShopPeripheral.java +++ b/src/main/java/com/simibubi/create/compat/computercraft/implementation/peripherals/TableClothShopPeripheral.java @@ -11,13 +11,12 @@ import com.simibubi.create.content.logistics.redstoneRequester.AutoRequestData.Mutable; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; import com.simibubi.create.content.logistics.tableCloth.TableClothBlockEntity; +import com.simibubi.create.compat.computercraft.implementation.ComputerUtil; -import dan200.computercraft.api.detail.VanillaDetailRegistries; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaFunction; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; @@ -54,16 +53,16 @@ public final void setAddress(String address) throws LuaException { @LuaFunction(mainThread = true) public final Map getPriceTagItem() throws LuaException { assertShop(); - return VanillaDetailRegistries.ITEM_STACK.getDetails(blockEntity.priceTag.getFilter()); + return ComputerUtil.getDetails(blockEntity.priceTag.getFilter()); } @LuaFunction(mainThread = true) public final void setPriceTagItem(Optional itemName) throws LuaException { assertShop(); - ResourceLocation resourceLocation = ResourceLocation.tryParse("minecraft:air"); + Identifier resourceLocation = Identifier.tryParse("minecraft:air"); if (itemName.isPresent()) - resourceLocation = ResourceLocation.tryParse(itemName.get()); - ItemLike item = BuiltInRegistries.ITEM.get(resourceLocation); + resourceLocation = Identifier.tryParse(itemName.get()); + ItemLike item = ComputerUtil.getItemOrThrow(resourceLocation); blockEntity.priceTag.setFilter(new ItemStack(item)); } @@ -91,7 +90,7 @@ public final void setPriceTagCount(Optional argument) throws LuaExceptio for (int i = 0; i < wares.size(); i++) { ItemStack stack = wares.get(i).stack; Map details = new HashMap<>( - VanillaDetailRegistries.ITEM_STACK.getDetails(stack)); + ComputerUtil.getDetails(stack)); details.put("count", wares.get(i).count); result.put(i + 1, details); // +1 because lua } @@ -129,8 +128,8 @@ public final void setWares(IArguments arguments) throws LuaException { if (count > 256) throw new LuaException("Count for item " + itemName + " exceeds 256"); } - ResourceLocation resourceLocation = ResourceLocation.tryParse(itemName); - ItemLike item = BuiltInRegistries.ITEM.get(resourceLocation); + Identifier resourceLocation = Identifier.tryParse(itemName); + ItemLike item = ComputerUtil.getItemOrThrow(resourceLocation); ItemStack itemStack = new ItemStack(item); if (itemStack.isEmpty()) throw new LuaException("Invalid item at index: " + (i + 1)); diff --git a/src/main/java/com/simibubi/create/compat/curios/Curios.java b/src/main/java/com/simibubi/create/compat/curios/Curios.java index 703dd3c053..51e9513b93 100644 --- a/src/main/java/com/simibubi/create/compat/curios/Curios.java +++ b/src/main/java/com/simibubi/create/compat/curios/Curios.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.equipment.armor.BacktankUtil; import com.simibubi.create.content.equipment.goggles.GogglesItem; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.CuriosCapability; diff --git a/src/main/java/com/simibubi/create/compat/curios/CuriosDataGenerator.java b/src/main/java/com/simibubi/create/compat/curios/CuriosDataGenerator.java deleted file mode 100644 index 065c9a385f..0000000000 --- a/src/main/java/com/simibubi/create/compat/curios/CuriosDataGenerator.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.compat.curios; - -import java.util.concurrent.CompletableFuture; - -import com.simibubi.create.Create; - -import net.minecraft.core.HolderLookup; -import net.minecraft.core.HolderLookup.Provider; -import net.minecraft.data.PackOutput; -import top.theillusivec4.curios.api.CuriosDataProvider; - -import net.neoforged.neoforge.common.data.ExistingFileHelper; - -public class CuriosDataGenerator extends CuriosDataProvider { - public CuriosDataGenerator(PackOutput output, CompletableFuture registries, ExistingFileHelper fileHelper) { - super(Create.ID, output, fileHelper, registries); - } - - @Override - public void generate(Provider registries, ExistingFileHelper fileHelper) { - createEntities("players") - .addPlayer() - .addSlots("head"); - } -} diff --git a/src/main/java/com/simibubi/create/compat/curios/CuriosRenderers.java b/src/main/java/com/simibubi/create/compat/curios/CuriosRenderers.java index 745ad694d3..96ee7ff193 100644 --- a/src/main/java/com/simibubi/create/compat/curios/CuriosRenderers.java +++ b/src/main/java/com/simibubi/create/compat/curios/CuriosRenderers.java @@ -5,11 +5,9 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.event.EntityRenderersEvent; import top.theillusivec4.curios.api.client.CuriosRendererRegistry; -@OnlyIn(Dist.CLIENT) public class CuriosRenderers { public static void register() { CuriosRendererRegistry.register(AllItems.GOGGLES.get(), () -> new GogglesCurioRenderer(Minecraft.getInstance().getEntityModels().bakeLayer(GogglesCurioRenderer.LAYER))); diff --git a/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java b/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java index 64c5a39cf3..f26adaf92b 100644 --- a/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java +++ b/src/main/java/com/simibubi/create/compat/curios/GogglesCurioRenderer.java @@ -12,20 +12,18 @@ import net.minecraft.client.model.geom.builders.CubeDeformation; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.MeshDefinition; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.client.ICurioRenderer; -@OnlyIn(Dist.CLIENT) public class GogglesCurioRenderer implements ICurioRenderer { public static final ModelLayerLocation LAYER = new ModelLayerLocation(Create.asResource("goggles"), "goggles"); @@ -61,7 +59,7 @@ public > void render(ItemStack // Render Minecraft mc = Minecraft.getInstance(); - mc.getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(stack, ItemDisplayContext.HEAD, light, OverlayTexture.NO_OVERLAY, matrixStack, renderTypeBuffer, mc.level, 0); matrixStack.popPose(); diff --git a/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java b/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java index 6ce80d6f31..69294e5972 100644 --- a/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java +++ b/src/main/java/com/simibubi/create/compat/framedblocks/FramedBlocksInSchematics.java @@ -31,17 +31,17 @@ public static CompoundTag prepareBlockEntityData(BlockState blockState, BlockEnt data = blockEntity.saveWithFullMetadata(blockEntity.getLevel().registryAccess()); List keysToRemove = new ArrayList<>(); - for (String key : data.getAllKeys()) + for (String key : data.keySet()) if (!KEYS_TO_RETAIN.contains(key)) keysToRemove.add(key); for (String key : keysToRemove) data.remove(key); - if (data.getCompound("camo") + if (data.getCompoundOrEmpty("camo") .contains("fluid")) data.remove("camo"); - if (data.getCompound("camo_two") + if (data.getCompoundOrEmpty("camo_two") .contains("fluid")) data.remove("camo_two"); @@ -55,21 +55,21 @@ public static ItemRequirement getRequiredItems(BlockState blockState, BlockEntit CompoundTag data = blockEntity.saveWithFullMetadata(blockEntity.getLevel().registryAccess()); List list = new ArrayList<>(); - if (data.getBoolean("intangible")) + if (data.getBooleanOr("intangible", false)) list.add(new StackRequirement(new ItemStack(Items.PHANTOM_MEMBRANE), ItemUseType.CONSUME)); - if (data.getBoolean("glowing")) + if (data.getBooleanOr("glowing", false)) list.add(new StackRequirement(new ItemStack(Items.GLOWSTONE_DUST), ItemUseType.CONSUME)); - if (data.getBoolean("reinforced")) + if (data.getBooleanOr("reinforced", false)) list.add(new StackRequirement(new ItemStack(Mods.FRAMEDBLOCKS.getItem("framed_reinforcement")), ItemUseType.CONSUME)); if (data.contains("camo")) - addCamoStack(blockEntity.getLevel().holderLookup(Registries.BLOCK), data.getCompound("camo"), list); + addCamoStack(blockEntity.getLevel().holderLookup(Registries.BLOCK), data.getCompoundOrEmpty("camo"), list); if (data.contains("camo_two")) - addCamoStack(blockEntity.getLevel().holderLookup(Registries.BLOCK), data.getCompound("camo_two"), list); + addCamoStack(blockEntity.getLevel().holderLookup(Registries.BLOCK), data.getCompoundOrEmpty("camo_two"), list); return new ItemRequirement(list); } @@ -77,7 +77,7 @@ public static ItemRequirement getRequiredItems(BlockState blockState, BlockEntit private static void addCamoStack(HolderGetter level, CompoundTag tag, List list) { if (!tag.contains("state")) return; - BlockState blockState = NbtUtils.readBlockState(level, tag.getCompound("state")); + BlockState blockState = NbtUtils.readBlockState(level, tag.getCompoundOrEmpty("state")); ItemStack itemStack = new ItemStack(blockState.getBlock()); if (!itemStack.isEmpty()) list.add(new StackRequirement(itemStack, ItemUseType.CONSUME)); diff --git a/src/main/java/com/simibubi/create/compat/ftb/FTBIntegration.java b/src/main/java/com/simibubi/create/compat/ftb/FTBIntegration.java index 5c7114470e..e536bf5e7d 100644 --- a/src/main/java/com/simibubi/create/compat/ftb/FTBIntegration.java +++ b/src/main/java/com/simibubi/create/compat/ftb/FTBIntegration.java @@ -2,7 +2,7 @@ import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen; -import net.createmod.catnip.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; import net.minecraft.client.gui.screens.Screen; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.client.event.ScreenEvent; diff --git a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java b/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java index 932cbf2277..f38a1e7130 100644 --- a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java +++ b/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java @@ -8,21 +8,19 @@ import com.simibubi.create.content.equipment.blueprint.BlueprintAssignCompleteRecipePacket; import com.simibubi.create.content.equipment.blueprint.BlueprintMenu; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import mezz.jei.api.constants.RecipeTypes; import mezz.jei.api.gui.ingredient.IRecipeSlotsView; -import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.types.IRecipeType; import mezz.jei.api.recipe.transfer.IRecipeTransferError; import mezz.jei.api.recipe.transfer.IRecipeTransferHandler; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.RecipeHolder; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class BlueprintTransferHandler implements IRecipeTransferHandler> { @Override @@ -36,7 +34,7 @@ public Optional> getMenuType() { } @Override - public RecipeType> getRecipeType() { + public IRecipeType> getRecipeType() { return RecipeTypes.CRAFTING; } @@ -45,7 +43,8 @@ public RecipeType> getRecipeType() { if (!doTransfer) return null; - CatnipServices.NETWORK.sendToServer(new BlueprintAssignCompleteRecipePacket(craftingRecipe.id())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new BlueprintAssignCompleteRecipePacket(craftingRecipe.id() + .identifier())); return null; } diff --git a/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java b/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java index f61a6a0b5a..8174c7cc79 100644 --- a/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java +++ b/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java @@ -4,15 +4,17 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.Create; +import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.content.processing.recipe.ProcessingRecipeParams; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.Level; +import net.neoforged.neoforge.common.crafting.DataComponentIngredient; import net.neoforged.neoforge.items.wrapper.RecipeWrapper; /** @@ -24,12 +26,12 @@ public class ConversionRecipe extends StandardProcessingRecipe { static int counter = 0; public static RecipeHolder create(ItemStack from, ItemStack to) { - ResourceLocation recipeId = Create.asResource("conversion_" + counter++); + Identifier recipeId = Create.asResource("conversion_" + counter++); ConversionRecipe recipe = new Builder<>(ConversionRecipe::new, recipeId) - .withItemIngredients(Ingredient.of(from)) + .withItemIngredients(DataComponentIngredient.of(false, from)) .withSingleItemOutput(to) .build(); - return new RecipeHolder<>(recipeId, recipe); + return new RecipeHolder<>(CreateRecipeCategory.recipeKey(recipeId), recipe); } public ConversionRecipe(ProcessingRecipeParams params) { diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java index 28dc433111..96b06b528e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java @@ -90,7 +90,7 @@ import net.minecraft.core.Holder.Reference; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -98,6 +98,7 @@ import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.item.crafting.AbstractCookingRecipe; import net.minecraft.world.item.crafting.CraftingRecipe; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; @@ -113,7 +114,7 @@ @ParametersAreNonnullByDefault public class CreateJEI implements IModPlugin { - private static final ResourceLocation ID = Create.asResource("jei_plugin"); + private static final Identifier ID = Create.asResource("jei_plugin"); private final List> allCategories = new ArrayList<>(); private IIngredientManager ingredientManager; @@ -190,7 +191,7 @@ private void loadCategories() { autoShapeless = builder(BasinRecipe.class) .enableWhen(AllConfigs.server().recipes.allowShapelessInMixer) .addAllRecipesIf(r -> r.value() instanceof CraftingRecipe && !(r.value() instanceof ShapedRecipe) - && r.value().getIngredients() + && CreateRecipeCategory.getIngredients(r.value()) .size() > 1 && !MechanicalPressBlockEntity.canCompress(r.value()) && !AllRecipeTypes.shouldIgnoreInAutomation(r), BasinRecipe::convertShapeless) @@ -290,7 +291,7 @@ private void loadCategories() { autoShaped = builder(CraftingRecipe.class) .enableWhen(AllConfigs.server().recipes.allowRegularCraftingInCrafter) .addAllRecipesIf(r -> r.value() instanceof CraftingRecipe && !(r.value() instanceof ShapedRecipe) - && r.value().getIngredients() + && CreateRecipeCategory.getIngredients(r.value()) .size() == 1 && !AllRecipeTypes.shouldIgnoreInAutomation(r)) .addTypedRecipesIf(() -> RecipeType.CRAFTING, @@ -327,7 +328,7 @@ private > CategoryBuilder builder(Cla @Override @NotNull - public ResourceLocation getPluginUid() { + public Identifier getPluginUid() { return ID; } @@ -387,7 +388,7 @@ public void registerExtraIngredients(IExtraIngredientRegistration registration) if (potionContents.hasEffects()) { Set> effectSet = new HashSet<>(); - potionContents.forEachEffect(mei -> effectSet.add(mei.getEffect())); + potionContents.forEachEffect(mei -> effectSet.add(mei.getEffect()), 1); if (!visitedEffects.add(effectSet)) continue; } @@ -418,7 +419,7 @@ public CategoryBuilder(Class recipeClass) { } @Override - public CreateRecipeCategory build(ResourceLocation id, Factory factory) { + public CreateRecipeCategory build(Identifier id, Factory factory) { CreateRecipeCategory category = super.build(id, factory); allCategories.add(category); return category; @@ -426,8 +427,10 @@ public CreateRecipeCategory build(ResourceLocation id, Factory factory) { } public static void consumeAllRecipes(Consumer> consumer) { + if (Minecraft.getInstance().getSingleplayerServer() == null) + return; Minecraft.getInstance() - .getConnection() + .getSingleplayerServer() .getRecipeManager() .getRecipes() .forEach(consumer); @@ -435,9 +438,13 @@ public static void consumeAllRecipes(Consumer> consumer) @SuppressWarnings({"unchecked", "rawtypes"}) public static > void consumeTypedRecipes(Consumer> consumer, RecipeType type) { - List> map = Minecraft.getInstance() - .getConnection() - .getRecipeManager().getAllRecipesFor((RecipeType) type); + if (Minecraft.getInstance().getSingleplayerServer() == null) + return; + List> map = List.copyOf(Minecraft.getInstance() + .getSingleplayerServer() + .getRecipeManager() + .recipeMap() + .byType((RecipeType) type)); if (!map.isEmpty()) map.forEach(consumer); } @@ -455,26 +462,25 @@ public static List> getTypedRecipesExcluding(RecipeType type, } public static boolean doInputsMatch(Recipe recipe1, Recipe recipe2) { - if (recipe1.getIngredients() + List recipe1Ingredients = CreateRecipeCategory.getIngredients(recipe1); + List recipe2Ingredients = CreateRecipeCategory.getIngredients(recipe2); + if (recipe1Ingredients .isEmpty() - || recipe2.getIngredients() + || recipe2Ingredients .isEmpty()) { return false; } - ItemStack[] matchingStacks = recipe1.getIngredients() - .getFirst() - .getItems(); - if (matchingStacks.length == 0) { + List matchingStacks = CreateRecipeCategory.getItemStacks(recipe1Ingredients.getFirst()); + if (matchingStacks.isEmpty()) { return false; } - return recipe2.getIngredients() + return recipe2Ingredients .getFirst() - .test(matchingStacks[0]); + .test(matchingStacks.getFirst()); } public static boolean doOutputsMatch(Recipe recipe1, Recipe recipe2) { - RegistryAccess registryAccess = Minecraft.getInstance().level.registryAccess(); - return ItemHelper.sameItem(recipe1.getResultItem(registryAccess), recipe2.getResultItem(registryAccess)); + return ItemHelper.sameItem(CreateRecipeCategory.getResultItem(recipe1), CreateRecipeCategory.getResultItem(recipe2)); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java b/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java index 288bef8978..4958750cd4 100644 --- a/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java +++ b/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java @@ -1,12 +1,13 @@ package com.simibubi.create.compat.jei; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import mezz.jei.api.gui.drawable.IDrawable; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3x2fStack; + import java.util.function.Supplier; public class DoubleItemIcon implements IDrawable { @@ -32,31 +33,31 @@ public int getHeight() { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); if (primaryStack == null) { primaryStack = primarySupplier.get(); secondaryStack = secondarySupplier.get(); } - RenderSystem.enableDepthTest(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 0); + LegacyRenderSystemBridge.enableDepthTest(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); - matrixStack.pushPose(); - matrixStack.translate(1, 1, 0); + matrixStack.pushMatrix(); + matrixStack.translate(1, 1); GuiGameElement.of(primaryStack) - .render(graphics); - matrixStack.popPose(); + .render(graphics, 0, 0, 0); + matrixStack.popMatrix(); - matrixStack.pushPose(); - matrixStack.translate(10, 10, 100); - matrixStack.scale(.5f, .5f, .5f); + matrixStack.pushMatrix(); + matrixStack.translate(10, 10); + matrixStack.scale(.5f, .5f); GuiGameElement.of(secondaryStack) - .render(graphics); - matrixStack.popPose(); + .render(graphics, 0, 0, 0); + matrixStack.popMatrix(); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java b/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java index 6d4f319bca..74e98e1b8b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java +++ b/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java @@ -1,7 +1,7 @@ package com.simibubi.create.compat.jei; import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; public class EmptyBackground implements IDrawable { @@ -24,6 +24,6 @@ public int getHeight() { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) {} + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) {} } diff --git a/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java b/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java index 214bc0c664..4d0ad09564 100644 --- a/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java +++ b/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java @@ -13,13 +13,11 @@ import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.handlers.IGhostIngredientHandler; import mezz.jei.api.ingredients.ITypedIngredient; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.renderer.Rect2i; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GhostIngredientHandler> implements IGhostIngredientHandler> { @@ -85,7 +83,7 @@ public void accept(I ingredient) { return; // sync new filter contents with server - CatnipServices.NETWORK.sendToServer(new GhostItemSubmitPacket(stack, slotIndex)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GhostItemSubmitPacket(stack, slotIndex)); } } } diff --git a/src/main/java/com/simibubi/create/compat/jei/ItemIcon.java b/src/main/java/com/simibubi/create/compat/jei/ItemIcon.java index 29212fca45..dc20337c4e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/ItemIcon.java +++ b/src/main/java/com/simibubi/create/compat/jei/ItemIcon.java @@ -1,12 +1,13 @@ package com.simibubi.create.compat.jei; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import mezz.jei.api.gui.drawable.IDrawable; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; +import org.joml.Matrix3x2fStack; + import java.util.function.Supplier; public class ItemIcon implements IDrawable { @@ -29,20 +30,20 @@ public int getHeight() { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); if (stack == null) { stack = supplier.get(); } - RenderSystem.enableDepthTest(); - matrixStack.pushPose(); - matrixStack.translate(xOffset + 1, yOffset + 1, 0); + LegacyRenderSystemBridge.enableDepthTest(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset + 1, yOffset + 1); GuiGameElement.of(stack) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } diff --git a/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java index aa71a6ea16..b4268f04eb 100644 --- a/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java +++ b/src/main/java/com/simibubi/create/compat/jei/PotionFluidSubtypeInterpreter.java @@ -41,9 +41,4 @@ public class PotionFluidSubtypeInterpreter implements ISubtypeInterpreter { private IJeiHelpers helpers; @@ -83,7 +82,7 @@ public Optional> getMenuType() { Recipe recipe = recipeHolder.value(); - if (recipe.getIngredients().size() > 9) + if (CreateRecipeCategory.getIngredients(recipe).size() > 9) return RecipeTransferErrorInternal.INSTANCE; for (CraftableBigItemStack cbis : screen.recipesToOrder) @@ -124,7 +123,7 @@ public Optional> getMenuType() { if (!doTransfer) return null; - ItemStack result = recipe.getResultItem(player.level().registryAccess()); + ItemStack result = CreateRecipeCategory.getResultItem(recipe); if (result.isEmpty()) return new RecipeTransferErrorTooltip(CreateLang.translate("gui.stock_keeper.recipe_result_empty").component()); diff --git a/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java index c504122ba9..6490ab35ea 100644 --- a/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java +++ b/src/main/java/com/simibubi/create/compat/jei/ToolboxColoringRecipeMaker.java @@ -2,20 +2,23 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; -import net.minecraft.core.NonNullList; +import com.simibubi.create.compat.jei.category.CreateRecipeCategory; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeColor; -import net.minecraft.world.item.DyeItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.ShapelessRecipe; import net.minecraft.world.level.block.Block; import java.util.Arrays; +import java.util.List; import java.util.stream.Stream; public final class ToolboxColoringRecipeMaker { @@ -25,25 +28,21 @@ public static Stream> createRecipes() { String group = "create.toolbox.color"; ItemStack baseShulkerStack = AllBlocks.TOOLBOXES.get(DyeColor.BROWN) .asStack(); - Ingredient baseShulkerIngredient = Ingredient.of(baseShulkerStack); + Ingredient baseShulkerIngredient = Ingredient.of(baseShulkerStack.getItem()); return Arrays.stream(DyeColor.values()) .filter(dc -> dc != DyeColor.BROWN) .map(color -> { - DyeItem dye = DyeItem.byColor(color); - ItemStack dyeStack = new ItemStack(dye); TagKey colorTag = color.getTag(); - Ingredient.Value dyeList = new Ingredient.ItemValue(dyeStack); - Ingredient.Value colorList = new Ingredient.TagValue(colorTag); - Stream colorIngredientStream = Stream.of(dyeList, colorList); - Ingredient colorIngredient = Ingredient.fromValues(colorIngredientStream); - NonNullList inputs = - NonNullList.of(Ingredient.EMPTY, baseShulkerIngredient, colorIngredient); + Ingredient colorIngredient = Ingredient.of(BuiltInRegistries.ITEM.getOrThrow(colorTag)); + List inputs = List.of(baseShulkerIngredient, colorIngredient); Block coloredShulkerBox = AllBlocks.TOOLBOXES.get(color) .get(); ItemStack output = new ItemStack(coloredShulkerBox); - ShapelessRecipe recipe = new ShapelessRecipe(group, CraftingBookCategory.MISC, output, inputs); - return new RecipeHolder<>(Create.asResource(group + "/" + color), recipe); + ShapelessRecipe recipe = new ShapelessRecipe(new Recipe.CommonInfo(false), + new CraftingRecipe.CraftingBookInfo(CraftingBookCategory.MISC, group), + ItemStackTemplate.fromStack(output), inputs); + return new RecipeHolder<>(CreateRecipeCategory.recipeKey(Create.asResource(group + "/" + color)), recipe); }); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java index b1fc93a5b1..ffae416a63 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java @@ -21,9 +21,9 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; @@ -50,7 +50,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, BasinRecipe recipe, IFocusGr for (Pair pair : condensedIngredients) { List stacks = new ArrayList<>(); - for (ItemStack itemStack : pair.getFirst().getItems()) { + for (ItemStack itemStack : getItemStacks(pair.getFirst())) { ItemStack copy = itemStack.copy(); copy.setCount(pair.getSecond().getValue()); stacks.add(copy); @@ -99,13 +99,13 @@ public void setRecipe(IRecipeLayoutBuilder builder, BasinRecipe recipe, IFocusGr } if (!requiredHeat.testBlazeBurner(HeatLevel.KINDLED)) { builder - .addSlot(RecipeIngredientRole.CATALYST, 153, 81) + .addSlot(RecipeIngredientRole.CRAFTING_STATION, 153, 81) .addItemStack(AllItems.BLAZE_CAKE.asStack()); } } @Override - public void draw(BasinRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(BasinRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { HeatCondition requiredHeat = recipe.getRequiredHeat(); boolean noHeat = requiredHeat == HeatCondition.NONE; @@ -123,7 +123,7 @@ public void draw(BasinRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphi AllGuiTextures heatBar = noHeat ? AllGuiTextures.JEI_NO_HEAT_BAR : AllGuiTextures.JEI_HEAT_BAR; heatBar.render(graphics, 4, 80); - graphics.drawString(Minecraft.getInstance().font, CreateLang.translateDirect(requiredHeat.getTranslationKey()), 9, + graphics.text(Minecraft.getInstance().font, CreateLang.translateDirect(requiredHeat.getTranslationKey()), 9, 86, requiredHeat.getColor(), false); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java index 0987069ffc..2e26c8a293 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java @@ -8,15 +8,16 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.StonecutterRecipe; import javax.annotation.ParametersAreNonnullByDefault; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; @ParametersAreNonnullByDefault @@ -35,7 +36,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, CondensedBlockCuttingRecipe builder .addSlot(RecipeIngredientRole.INPUT, 5, 5) .setBackground(getRenderedSlot(), -1 , -1) - .addItemStacks(Arrays.asList(recipe.getIngredients().get(0).getItems())); + .addItemStacks(getItemStacks(getIngredients(recipe).get(0))); int i = 0; for (List itemStacks : results) { @@ -51,7 +52,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, CondensedBlockCuttingRecipe } @Override - public void draw(CondensedBlockCuttingRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(CondensedBlockCuttingRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 31, 6); AllGuiTextures.JEI_SHADOW.render(graphics, 33 - 17, 37 + 13); saw.draw(graphics, 33, 37); @@ -62,7 +63,7 @@ public static class CondensedBlockCuttingRecipe extends StonecutterRecipe { List outputs = new ArrayList<>(); public CondensedBlockCuttingRecipe(Ingredient ingredient) { - super("", ingredient, ItemStack.EMPTY); + super(new Recipe.CommonInfo(false), ingredient, ItemStackTemplate.fromStack(ItemStack.EMPTY)); } public void addOutput(ItemStack stack) { @@ -100,9 +101,9 @@ public boolean isSpecial() { public static List> condenseRecipes(List> stoneCuttingRecipes) { List> condensed = new ArrayList<>(); Recipes: for (RecipeHolder recipe : stoneCuttingRecipes) { - Ingredient i1 = recipe.value().getIngredients().get(0); + Ingredient i1 = getIngredients(recipe.value()).get(0); for (RecipeHolder condensedRecipe : condensed) { - if (ItemHelper.matchIngredients(i1, condensedRecipe.value().getIngredients().get(0))) { + if (ItemHelper.matchIngredients(i1, getIngredients(condensedRecipe.value()).get(0))) { condensedRecipe.value().addOutput(getResultItem(recipe.value())); continue Recipes; } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java index 5acbd26b37..6997396a7b 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java @@ -26,12 +26,14 @@ import com.simibubi.create.compat.jei.ItemIcon; import com.simibubi.create.content.fluids.potion.PotionFluidHandler; import com.simibubi.create.content.processing.recipe.ProcessingOutput; +import com.simibubi.create.foundation.fluid.LegacyFluidIngredientBridge; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; import com.simibubi.create.foundation.utility.CreateLang; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.builder.IRecipeSlotBuilder; +import mezz.jei.api.gui.builder.ITooltipBuilder; import mezz.jei.api.gui.drawable.IDrawable; import mezz.jei.api.gui.ingredient.IRecipeSlotRichTooltipCallback; import mezz.jei.api.gui.ingredient.IRecipeSlotView; @@ -43,25 +45,26 @@ import mezz.jei.api.recipe.category.IRecipeCategory; import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeRegistration; -import net.createmod.catnip.config.ConfigBase.ConfigBool; +import net.createmod.catnip.api.config.ConfigBase.ConfigBool; import net.minecraft.ChatFormatting; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; +import net.minecraft.world.item.crafting.display.SlotDisplayContext; import net.minecraft.world.level.ItemLike; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public abstract class CreateRecipeCategory> implements IRecipeCategory> { private static final IDrawable BASIC_SLOT = asDrawable(AllGuiTextures.JEI_SLOT); private static final IDrawable CHANCE_SLOT = asDrawable(AllGuiTextures.JEI_CHANCE_SLOT); @@ -94,11 +97,20 @@ public Component getTitle() { return title; } - @Override public IDrawable getBackground() { return background; } + @Override + public int getWidth() { + return background.getWidth(); + } + + @Override + public int getHeight() { + return background.getHeight(); + } + @Override public IDrawable getIcon() { return icon; @@ -110,18 +122,18 @@ public void setRecipe(IRecipeLayoutBuilder builder, RecipeHolder holder, IFoc } @Override - public void draw(RecipeHolder holder, IRecipeSlotsView recipeSlotsView, GuiGraphics gui, double mouseX, double mouseY) { + public void draw(RecipeHolder holder, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor gui, double mouseX, double mouseY) { draw(holder.value(), recipeSlotsView, gui, mouseX, mouseY); } @Override - public List getTooltipStrings(RecipeHolder holder, IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) { - return getTooltipStrings(holder.value(), recipeSlotsView, mouseX, mouseY); + public void getTooltip(ITooltipBuilder tooltip, RecipeHolder holder, IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) { + tooltip.addAll(getTooltipStrings(holder.value(), recipeSlotsView, mouseX, mouseY)); } protected abstract void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuses); - protected abstract void draw(T recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics gui, double mouseX, double mouseY); + protected abstract void draw(T recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor gui, double mouseX, double mouseY); protected List getTooltipStrings(T recipe, IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) { return List.of(); @@ -154,7 +166,31 @@ public static ItemStack getResultItem(Recipe recipe) { ClientLevel level = Minecraft.getInstance().level; if (level == null) return ItemStack.EMPTY; - return recipe.getResultItem(level.registryAccess()); + if (recipe instanceof com.simibubi.create.content.processing.recipe.ProcessingRecipe processingRecipe) + return processingRecipe.getResultItem(level.registryAccess()); + return recipe.display() + .stream() + .findFirst() + .map(display -> display.result() + .resolveForFirstStack(SlotDisplayContext.fromLevel(level))) + .orElse(ItemStack.EMPTY); + } + + public static List getIngredients(Recipe recipe) { + if (recipe instanceof com.simibubi.create.content.processing.recipe.ProcessingRecipe processingRecipe) + return processingRecipe.getIngredients(); + return recipe.placementInfo() + .ingredients(); + } + + public static List getItemStacks(net.minecraft.world.item.crafting.Ingredient ingredient) { + return ingredient.items() + .map(holder -> new ItemStack(holder.value())) + .toList(); + } + + public static ResourceKey> recipeKey(Identifier id) { + return ResourceKey.create(Registries.RECIPE, id); } public static IRecipeSlotRichTooltipCallback addStochasticTooltip(ProcessingOutput output) { @@ -171,9 +207,9 @@ public static IRecipeSlotBuilder addFluidSlot(IRecipeLayoutBuilder builder, int int amount = ingredient.amount(); return builder.addSlot(RecipeIngredientRole.INPUT, x, y) .setBackground(getRenderedSlot(), -1, -1) - .addIngredients(NeoForgeTypes.FLUID_STACK, Arrays.asList(ingredient.getFluids())) + .addIngredients(NeoForgeTypes.FLUID_STACK, LegacyFluidIngredientBridge.getFluids(ingredient)) .setFluidRenderer(amount, false, 16, 16) // make fluid take up the full slot - .addTooltipCallback(CreateRecipeCategory::addPotionTooltip); + .addRichTooltipCallback(CreateRecipeCategory::addPotionTooltip); } @SuppressWarnings("removal") // see below @@ -182,13 +218,13 @@ public static IRecipeSlotBuilder addFluidSlot(IRecipeLayoutBuilder builder, int .setBackground(getRenderedSlot(), -1, -1) .addIngredient(NeoForgeTypes.FLUID_STACK, stack) .setFluidRenderer(stack.getAmount(), false, 16, 16) // make fluid take up the full slot - .addTooltipCallback(CreateRecipeCategory::addPotionTooltip); + .addRichTooltipCallback(CreateRecipeCategory::addPotionTooltip); } // IRecipeSlotTooltipCallback is deprecated, but the replacement requires that all tooltip lines // get added to the bottom. This looks terrible for potion fluids, and doesn't match how potion items look. // https://github.com/mezz/JustEnoughItems/issues/3931 - private static void addPotionTooltip(IRecipeSlotView view, List tooltip) { + private static void addPotionTooltip(IRecipeSlotView view, ITooltipBuilder tooltip) { Optional displayed = view.getDisplayedIngredient(NeoForgeTypes.FLUID_STACK); if (displayed.isEmpty()) return; @@ -198,8 +234,7 @@ private static void addPotionTooltip(IRecipeSlotView view, List toolt if (fluidStack.getFluid().isSame(AllFluids.POTION.get())) { List potionTooltip = new ArrayList<>(); PotionFluidHandler.addPotionTooltip(fluidStack, potionTooltip::add, 1); - // append after item name - tooltip.addAll(1, potionTooltip.stream().toList()); + tooltip.addAll(potionTooltip); } } @@ -216,7 +251,7 @@ public int getHeight() { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { texture.render(graphics, xOffset, yOffset); } }; @@ -374,7 +409,7 @@ public CreateRecipeCategory build(String name, Factory factory) { return build(Create.asResource(name), factory); } - public CreateRecipeCategory build(ResourceLocation id, Factory factory) { + public CreateRecipeCategory build(Identifier id, Factory factory) { Supplier>> recipesSupplier; if (config.get()) { recipesSupplier = () -> { diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java index 9b9084b1ae..eb56817008 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java @@ -15,8 +15,8 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.createmod.catnip.layout.LayoutHelper; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.layout.LayoutHelper; +import net.minecraft.client.gui.GuiGraphicsExtractor; @ParametersAreNonnullByDefault public class CrushingCategory extends CreateRecipeCategory { @@ -65,7 +65,7 @@ private record LayoutEntry( ) {} @Override - public void draw(AbstractCrushingRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(AbstractCrushingRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 72, 7); crushingWheels.draw(graphics, 62, 59); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java index eafc555976..2d25510499 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java @@ -11,7 +11,7 @@ import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; @@ -49,12 +49,13 @@ public void setRecipe(IRecipeLayoutBuilder builder, DeployerApplicationRecipe re } if (recipe.shouldKeepHeldItem()) - handItemSlot.addTooltipCallback((recipeSlotView, tooltip) -> tooltip.add(1, CreateLang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD))); + handItemSlot.addRichTooltipCallback((recipeSlotView, tooltip) -> tooltip.add(CreateLang.translateDirect("recipe.deploying.not_consumed") + .withStyle(ChatFormatting.GOLD))); } @Override - public void draw(DeployerApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(DeployerApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 62, 57); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 126, 29 + (recipe.getRollableResults().size() > 2 ? -19 : 0)); deployer.draw(graphics, getBackground().getWidth() / 2 - 13, 22); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java index b524c8d10f..c1df4e01de 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java @@ -2,8 +2,8 @@ import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.crafting.AbstractCookingRecipe; import net.minecraft.world.level.material.Fluids; @@ -19,12 +19,12 @@ protected AllGuiTextures getBlockShadow() { } @Override - protected void renderAttachedBlock(GuiGraphics graphics) { + protected void renderAttachedBlock(GuiGraphicsExtractor graphics) { GuiGameElement.of(Fluids.LAVA) .scale(SCALE) .atLocal(0, 0, 2) .lighting(AnimatedKinetics.DEFAULT_LIGHTING) - .render(graphics); + .render(graphics, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanHauntingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanHauntingCategory.java index 14e7849a5f..98ee23a2bd 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanHauntingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/FanHauntingCategory.java @@ -3,8 +3,8 @@ import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.content.kinetics.fan.processing.HauntingRecipe; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.level.block.Blocks; public class FanHauntingCategory extends ProcessingViaFanCategory.MultiOutput { @@ -19,12 +19,12 @@ protected AllGuiTextures getBlockShadow() { } @Override - protected void renderAttachedBlock(GuiGraphics graphics) { + protected void renderAttachedBlock(GuiGraphicsExtractor graphics) { GuiGameElement.of(Blocks.SOUL_FIRE.defaultBlockState()) .scale(SCALE) .atLocal(0, 0, 2) .lighting(AnimatedKinetics.DEFAULT_LIGHTING) - .render(graphics); + .render(graphics, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java index 41a98987f0..fd35840a0c 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java @@ -2,8 +2,8 @@ import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.crafting.SmokingRecipe; import net.minecraft.world.level.block.Blocks; @@ -19,12 +19,12 @@ protected AllGuiTextures getBlockShadow() { } @Override - protected void renderAttachedBlock(GuiGraphics graphics) { + protected void renderAttachedBlock(GuiGraphicsExtractor graphics) { GuiGameElement.of(Blocks.FIRE.defaultBlockState()) .scale(SCALE) .atLocal(0, 0, 2) .lighting(AnimatedKinetics.DEFAULT_LIGHTING) - .render(graphics); + .render(graphics, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java index bfb09f3621..c30f7afe91 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java @@ -2,8 +2,8 @@ import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.content.kinetics.fan.processing.SplashingRecipe; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.level.material.Fluids; public class FanWashingCategory extends ProcessingViaFanCategory.MultiOutput { @@ -13,12 +13,12 @@ public FanWashingCategory(Info info) { } @Override - protected void renderAttachedBlock(GuiGraphics graphics) { + protected void renderAttachedBlock(GuiGraphicsExtractor graphics) { GuiGameElement.of(Fluids.WATER) .scale(SCALE) .atLocal(0, 0, 2) .lighting(AnimatedKinetics.DEFAULT_LIGHTING) - .render(graphics); + .render(graphics, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java index 235fe03575..88594867b6 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemApplicationCategory.java @@ -1,7 +1,5 @@ package com.simibubi.create.compat.jei.category; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; import com.simibubi.create.content.kinetics.deployer.ItemApplicationRecipe; import com.simibubi.create.content.processing.recipe.ProcessingOutput; @@ -12,14 +10,16 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; +import org.joml.Matrix3x2fStack; + import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; import java.util.Optional; @@ -40,9 +40,9 @@ public void setRecipe(IRecipeLayoutBuilder builder, ItemApplicationRecipe recipe builder.addSlot(RecipeIngredientRole.INPUT, 51, 5) .setBackground(getRenderedSlot(), -1, -1) .addIngredients(recipe.getRequiredHeldItem()) - .addTooltipCallback( + .addRichTooltipCallback( recipe.shouldKeepHeldItem() - ? (view, tooltip) -> tooltip.add(1, CreateLang.translateDirect("recipe.deploying.not_consumed") + ? (view, tooltip) -> tooltip.add(CreateLang.translateDirect("recipe.deploying.not_consumed") .withStyle(ChatFormatting.GOLD)) : (view, tooltip) -> {} ); @@ -61,7 +61,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, ItemApplicationRecipe recipe } @Override - public void draw(ItemApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(ItemApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 62, 47); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 74, 10); @@ -79,19 +79,17 @@ public void draw(ItemApplicationRecipe recipe, IRecipeSlotsView recipeSlotsView, BlockState state = blockItem.getBlock() .defaultBlockState(); - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(74, 51, 100); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(74, 51); int scale = 20; GuiGameElement.of(state) .lighting(AnimatedKinetics.DEFAULT_LIGHTING) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java index 3c2ce4b95a..a3c349f63c 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.fluids.transfer.EmptyingRecipe; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe.Builder; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.item.ItemHelper; @@ -20,16 +21,16 @@ import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.runtime.IIngredientManager; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStackLinkedSet; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; -import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.common.crafting.DataComponentIngredient; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; @@ -48,23 +49,23 @@ public static void consumeRecipes(Consumer> consume for (ItemStack stack : ingredientManager.getAllIngredients(VanillaTypes.ITEM_STACK)) { if (PotionFluidHandler.isPotionItem(stack)) { FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); - Ingredient potion = Ingredient.of(stack); - ResourceLocation id = Create.asResource("potions"); + Ingredient potion = DataComponentIngredient.of(false, stack); + Identifier id = Create.asResource("potions"); EmptyingRecipe recipe = new StandardProcessingRecipe.Builder<>(EmptyingRecipe::new, id) .withItemIngredients(potion) .withFluidOutputs(fluidFromPotionItem) .withSingleItemOutput(new ItemStack(Items.GLASS_BOTTLE)) .build(); - consumer.accept(new RecipeHolder<>(id, recipe)); + consumer.accept(new RecipeHolder<>(recipeKey(id), recipe)); continue; } - IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack.copy()); if (capability == null) continue; ItemStack copy = stack.copy(); - capability = copy.getCapability(Capabilities.FluidHandler.ITEM); + capability = LegacyFluidHandlerItemAdapter.of(copy); FluidStack extracted = capability.drain(1000, FluidAction.EXECUTE); ItemStack result = capability.getContainer(); if (extracted.isEmpty()) @@ -77,18 +78,18 @@ public static void consumeRecipes(Consumer> consume // instead of the copy. result = ItemHelper.sameItem(stack, result) ? stack : emptiedItems.addOrGet(result); - Ingredient ingredient = Ingredient.of(stack); - ResourceLocation itemName = RegisteredObjectsHelper.getKeyOrThrow(stack.getItem()); - ResourceLocation fluidName = RegisteredObjectsHelper.getKeyOrThrow(extracted.getFluid()); + Ingredient ingredient = DataComponentIngredient.of(false, stack); + Identifier itemName = RegisteredObjectsHelper.getKeyOrThrow(stack.getItem()); + Identifier fluidName = RegisteredObjectsHelper.getKeyOrThrow(extracted.getFluid()); - ResourceLocation id = Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" + Identifier id = Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" + fluidName.getNamespace() + "_" + fluidName.getPath()); EmptyingRecipe recipe = new StandardProcessingRecipe.Builder<>(EmptyingRecipe::new, id) .withItemIngredients(ingredient) .withFluidOutputs(extracted) .withSingleItemOutput(result) .build(); - consumer.accept(new RecipeHolder<>(id, recipe)); + consumer.accept(new RecipeHolder<>(recipeKey(id), recipe)); } } @@ -108,7 +109,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, EmptyingRecipe recipe, IFocu } @Override - public void draw(EmptyingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(EmptyingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 62, 37); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 73, 4); drain.withFluid(recipe.getResultingFluid()) diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java index 1c3a812db0..e8a9be63bc 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; import javax.annotation.ParametersAreNonnullByDefault; @@ -11,8 +12,8 @@ import org.jetbrains.annotations.NotNull; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.content.kinetics.crafter.MechanicalCraftingRecipe; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter; import com.simibubi.create.foundation.gui.AllGuiTextures; @@ -25,7 +26,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.entity.player.Player; @@ -34,6 +35,7 @@ import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; +import org.joml.Matrix3x2fStack; import org.joml.Matrix4fStack; @ParametersAreNonnullByDefault @@ -57,14 +59,14 @@ public void setRecipe(IRecipeLayoutBuilder builder, CraftingRecipe recipe, IFocu IIngredientRenderer renderer = new CrafterIngredientRenderer(recipe); int i = 0; - for (Ingredient ingredient : recipe.getIngredients()) { + for (Optional optionalIngredient : getGridIngredients(recipe)) { float f = 19 * scale; int xPosition = (int) (x + 1 + (i % getWidth(recipe)) * f); int yPosition = (int) (y + 1 + (i / getWidth(recipe)) * f); - builder.addSlot(RecipeIngredientRole.INPUT, xPosition, yPosition) + optionalIngredient.ifPresent(ingredient -> builder.addSlot(RecipeIngredientRole.INPUT, xPosition, yPosition) .setCustomRenderer(VanillaTypes.ITEM_STACK, renderer) - .addIngredients(ingredient); + .addIngredients(ingredient)); i++; } @@ -88,56 +90,70 @@ public static int getXPadding(CraftingRecipe recipe) { } private static int getWidth(CraftingRecipe recipe) { + if (recipe instanceof MechanicalCraftingRecipe mechanicalCraftingRecipe) + return mechanicalCraftingRecipe.getWidth(); return recipe instanceof ShapedRecipe ? ((ShapedRecipe) recipe).getWidth() : 1; } private static int getHeight(CraftingRecipe recipe) { + if (recipe instanceof MechanicalCraftingRecipe mechanicalCraftingRecipe) + return mechanicalCraftingRecipe.getHeight(); return recipe instanceof ShapedRecipe ? ((ShapedRecipe) recipe).getHeight() : 1; } + private static List> getGridIngredients(CraftingRecipe recipe) { + if (recipe instanceof MechanicalCraftingRecipe mechanicalCraftingRecipe) + return mechanicalCraftingRecipe.getIngredients(); + if (recipe instanceof ShapedRecipe shapedRecipe) + return shapedRecipe.getIngredients(); + return getIngredients(recipe).stream() + .map(Optional::of) + .toList(); + } + @Override - public void draw(CraftingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, + public void draw(CraftingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); float scale = getScale(recipe); - matrixStack.translate(getXPadding(recipe), getYPadding(recipe), 0); + matrixStack.translate(getXPadding(recipe), getYPadding(recipe)); + List> ingredients = getGridIngredients(recipe); for (int row = 0; row < getHeight(recipe); row++) for (int col = 0; col < getWidth(recipe); col++) { int pIndex = row * getWidth(recipe) + col; - if (pIndex >= recipe.getIngredients() - .size()) + if (pIndex >= ingredients.size()) break; - if (recipe.getIngredients() - .get(pIndex) - .isEmpty()) + if (ingredients.get(pIndex) + .map(Ingredient::isEmpty) + .orElse(true)) continue; - matrixStack.pushPose(); - matrixStack.translate(col * 19 * scale, row * 19 * scale, 0); - matrixStack.scale(scale, scale, scale); + matrixStack.pushMatrix(); + matrixStack.translate(col * 19 * scale, row * 19 * scale); + matrixStack.scale(scale, scale); AllGuiTextures.JEI_SLOT.render(graphics, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } - matrixStack.popPose(); + matrixStack.popMatrix(); AllGuiTextures.JEI_SLOT.render(graphics, 133, 80); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 128, 59); crafter.draw(graphics, 129, 25); - matrixStack.pushPose(); - matrixStack.translate(0, 0, 300); + matrixStack.pushMatrix(); int amount = 0; - for (Ingredient ingredient : recipe.getIngredients()) { - if (Ingredient.EMPTY == ingredient) + for (Optional optionalIngredient : ingredients) { + if (optionalIngredient.map(Ingredient::isEmpty) + .orElse(true)) continue; amount++; } - graphics.drawString(Minecraft.getInstance().font, amount + "", 142, 39, 0xFFFFFF); - matrixStack.popPose(); + graphics.text(Minecraft.getInstance().font, amount + "", 142, 39, 0xFFFFFF); + matrixStack.popMatrix(); } private static final class CrafterIngredientRenderer implements IIngredientRenderer { @@ -151,27 +167,27 @@ public CrafterIngredientRenderer(CraftingRecipe recipe) { } @Override - public void render(GuiGraphics graphics, @NotNull ItemStack ingredient) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); + public void render(GuiGraphicsExtractor graphics, @NotNull ItemStack ingredient) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); float scale = getScale(recipe); - matrixStack.scale(scale, scale, scale); + matrixStack.scale(scale, scale); if (ingredient != null) { - Matrix4fStack modelViewStack = RenderSystem.getModelViewStack(); + Matrix4fStack modelViewStack = LegacyRenderSystemBridge.getModelViewStack(); modelViewStack.pushMatrix(); - RenderSystem.applyModelViewMatrix(); - RenderSystem.enableDepthTest(); + LegacyRenderSystemBridge.applyModelViewMatrix(); + LegacyRenderSystemBridge.enableDepthTest(); Minecraft minecraft = Minecraft.getInstance(); Font font = getFontRenderer(minecraft, ingredient); - graphics.renderItem(ingredient, 0, 0); - graphics.renderItemDecorations(font, ingredient, 0, 0, null); - RenderSystem.disableBlend(); + graphics.item(ingredient, 0, 0); + graphics.itemDecorations(font, ingredient, 0, 0, null); + LegacyRenderSystemBridge.disableBlend(); modelViewStack.popMatrix(); - RenderSystem.applyModelViewMatrix(); + LegacyRenderSystemBridge.applyModelViewMatrix(); } - matrixStack.popPose(); + matrixStack.popMatrix(); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java index 07cd3dddcd..24a31da7f5 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java @@ -8,7 +8,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; @@ -47,7 +47,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, AbstractCrushingRecipe recip } @Override - public void draw(AbstractCrushingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(AbstractCrushingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_ARROW.render(graphics, 85, 32); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 43, 4); millstone.draw(graphics, 48, 27); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java index 2c8c621fb4..96e1a43d92 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.processing.basin.BasinRecipe; import com.simibubi.create.content.processing.recipe.HeatCondition; import mezz.jei.api.gui.ingredient.IRecipeSlotsView; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import javax.annotation.ParametersAreNonnullByDefault; @@ -38,7 +38,7 @@ protected MixingCategory(Info info, MixingType type) { } @Override - public void draw(BasinRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(BasinRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { super.draw(recipe, iRecipeSlotsView, graphics, mouseX, mouseY); HeatCondition requiredHeat = recipe.getRequiredHeat(); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java index f4a19a2c83..0848e443cf 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java @@ -8,7 +8,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.item.crafting.RecipeHolder; import javax.annotation.ParametersAreNonnullByDefault; @@ -44,7 +44,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, ConversionRecipe recipe, IFo } @Override - public void draw(ConversionRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(ConversionRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_LONG_ARROW.render(graphics, 52, 20); AllGuiTextures.JEI_QUESTION_MARK.render(graphics, 77, 5); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java index 1b207bf247..72580fbfdd 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java @@ -9,7 +9,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.NonNullList; import net.minecraft.world.item.crafting.Ingredient; @@ -67,7 +67,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, BasinRecipe recipe, IFocusGr } @Override - public void draw(BasinRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(BasinRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { if (type == PackingType.COMPACTING) { super.draw(recipe, iRecipeSlotsView, graphics, mouseX, mouseY); } else { diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java index 4b0f527016..6d3488c3eb 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java @@ -10,14 +10,13 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.core.NonNullList; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Unit; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; @ParametersAreNonnullByDefault public class PolishingCategory extends CreateRecipeCategory { @@ -45,22 +44,20 @@ public void setRecipe(IRecipeLayoutBuilder builder, SandPaperPolishingRecipe rec } @Override - public void draw(SandPaperPolishingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(SandPaperPolishingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 61, 21); AllGuiTextures.JEI_LONG_ARROW.render(graphics, 52, 32); - NonNullList ingredients = recipe.getIngredients(); - ItemStack[] matchingStacks = ingredients.get(0) - .getItems(); - if (matchingStacks.length == 0) + List matchingStacks = getItemStacks(recipe.getIngredients().get(0)); + if (matchingStacks.isEmpty()) return; - renderedSandpaper.set(AllDataComponents.SAND_PAPER_POLISHING, new SandPaperItemComponent(matchingStacks[0])); + renderedSandpaper.set(AllDataComponents.SAND_PAPER_POLISHING, new SandPaperItemComponent(matchingStacks.get(0))); renderedSandpaper.set(AllDataComponents.SAND_PAPER_JEI, Unit.INSTANCE); GuiGameElement.of(renderedSandpaper) .at(getBackground().getWidth() / 2 - 16, 0, 0) .scale(2) - .render(graphics); + .render(graphics, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java index 194fd9c82b..a27e90d9f5 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java @@ -8,7 +8,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; @@ -41,7 +41,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, PressingRecipe recipe, IFocu } @Override - public void draw(PressingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(PressingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 61, 41); AllGuiTextures.JEI_LONG_ARROW.render(graphics, 52, 54); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java index c1a31bae47..4fb89bee52 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java @@ -5,8 +5,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; @@ -19,11 +17,13 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; +import org.joml.Matrix3x2fStack; + @ParametersAreNonnullByDefault public abstract class ProcessingViaFanCategory> extends CreateRecipeCategory { @@ -44,7 +44,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse builder .addSlot(RecipeIngredientRole.INPUT, 21, 48) .setBackground(getRenderedSlot(), -1, -1) - .addIngredients(recipe.getIngredients().get(0)); + .addIngredients(getIngredients(recipe).get(0)); builder .addSlot(RecipeIngredientRole.OUTPUT, 141, 48) .setBackground(getRenderedSlot(), -1, -1) @@ -52,32 +52,30 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse } @Override - public void draw(T recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(T recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { renderWidgets(graphics, recipe, mouseX, mouseY); - PoseStack matrixStack = graphics.pose(); + Matrix3x2fStack matrixStack = graphics.pose(); - matrixStack.pushPose(); + matrixStack.pushMatrix(); translateFan(matrixStack); - matrixStack.mulPose(Axis.XP.rotationDegrees(-12.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); AnimatedKinetics.defaultBlockElement(AllPartialModels.ENCASED_FAN_INNER) .rotateBlock(180, 0, AnimatedKinetics.getCurrentAngle() * 16) .scale(SCALE) - .render(graphics); + .render(graphics, 0, 0, 0); AnimatedKinetics.defaultBlockElement(AllBlocks.ENCASED_FAN.getDefaultState()) .rotateBlock(0, 180, 0) .atLocal(0, 0, 0) .scale(SCALE) - .render(graphics); + .render(graphics, 0, 0, 0); renderAttachedBlock(graphics); - matrixStack.popPose(); + matrixStack.popMatrix(); } - protected void renderWidgets(GuiGraphics graphics, T recipe, double mouseX, double mouseY) { + protected void renderWidgets(GuiGraphicsExtractor graphics, T recipe, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 46, 29); getBlockShadow().render(graphics, 65, 39); AllGuiTextures.JEI_LONG_ARROW.render(graphics, 54, 51); @@ -87,11 +85,11 @@ protected AllGuiTextures getBlockShadow() { return AllGuiTextures.JEI_SHADOW; } - protected void translateFan(PoseStack matrixStack) { - matrixStack.translate(56, 33, 0); + protected void translateFan(Matrix3x2fStack matrixStack) { + matrixStack.translate(56, 33); } - protected abstract void renderAttachedBlock(GuiGraphics graphics); + protected abstract void renderAttachedBlock(GuiGraphicsExtractor graphics); public static abstract class MultiOutput> extends ProcessingViaFanCategory { @@ -107,7 +105,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse builder .addSlot(RecipeIngredientRole.INPUT, 5 * xOffsetAmount + 21, 48) .setBackground(getRenderedSlot(), -1, -1) - .addIngredients(recipe.getIngredients().get(0)); + .addIngredients(getIngredients(recipe).get(0)); int i = 0; boolean excessive = results.size() > 9; @@ -125,7 +123,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, T recipe, IFocusGroup focuse } @Override - protected void renderWidgets(GuiGraphics graphics, T recipe, double mouseX, double mouseY) { + protected void renderWidgets(GuiGraphicsExtractor graphics, T recipe, double mouseX, double mouseY) { int size = recipe.getRollableResultsAsItemStacks().size(); int xOffsetAmount = 1 - Math.min(3, size); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java index f15482bda5..c38399683f 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java @@ -8,7 +8,7 @@ import mezz.jei.api.gui.ingredient.IRecipeSlotsView; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import javax.annotation.ParametersAreNonnullByDefault; import java.util.List; @@ -44,7 +44,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, CuttingRecipe recipe, IFocus } @Override - public void draw(CuttingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(CuttingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 70, 6); AllGuiTextures.JEI_SHADOW.render(graphics, 72 - 17, 42 + 13); diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java index 6b1d79db88..1c29d450b2 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SequencedAssemblyCategory.java @@ -1,7 +1,6 @@ package com.simibubi.create.compat.jei.category; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -10,10 +9,10 @@ import org.jetbrains.annotations.NotNull; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory; import com.simibubi.create.content.processing.sequenced.SequencedAssemblyRecipe; import com.simibubi.create.content.processing.sequenced.SequencedRecipe; +import com.simibubi.create.foundation.fluid.LegacyFluidIngredientBridge; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.CreateLang; @@ -23,23 +22,25 @@ import mezz.jei.api.neoforge.NeoForgeTypes; import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.crafting.Ingredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; +import org.joml.Matrix3x2fStack; + @ParametersAreNonnullByDefault public class SequencedAssemblyCategory extends CreateRecipeCategory { - Map subCategories = new HashMap<>(); + Map subCategories = new HashMap<>(); public SequencedAssemblyCategory(Info info) { super(info); @@ -53,17 +54,17 @@ public void setRecipe(IRecipeLayoutBuilder builder, SequencedAssemblyRecipe reci builder .addSlot(RecipeIngredientRole.INPUT, 27 + xOffset, 91) .setBackground(getRenderedSlot(), -1, -1) - .addItemStacks(List.of(recipe.getIngredient().getItems())); + .addItemStacks(getItemStacks(recipe.getIngredient())); builder .addSlot(RecipeIngredientRole.OUTPUT, 132 + xOffset, 91) .setBackground(getRenderedSlot(recipe.getOutputChance()), -1 , -1) .addItemStack(getResultItem(recipe)) - .addTooltipCallback((recipeSlotView, tooltip) -> { + .addRichTooltipCallback((recipeSlotView, tooltip) -> { if (noRandomOutput) return; float chance = recipe.getOutputChance(); - tooltip.add(1, chanceComponent(chance)); + tooltip.add(chanceComponent(chance)); }); int width = 0; @@ -89,7 +90,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, SequencedAssemblyRecipe reci for (SizedFluidIngredient fluidIngredient : sequencedRecipe.getRecipe() .getFluidIngredients()) builder.addInvisibleIngredients(RecipeIngredientRole.INPUT) - .addIngredients(NeoForgeTypes.FLUID_STACK, Arrays.asList(fluidIngredient.getFluids())); + .addIngredients(NeoForgeTypes.FLUID_STACK, LegacyFluidIngredientBridge.getFluids(fluidIngredient)); } } } @@ -107,56 +108,56 @@ private SequencedAssemblySubCategory getSubCategory(SequencedRecipe sequenced final String[] romans = { "I", "II", "III", "IV", "V", "VI", "-" }; @Override - public void draw(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(SequencedAssemblyRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { Font font = Minecraft.getInstance().font; - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); - matrixStack.pushPose(); - matrixStack.translate(0, 15, 0); + matrixStack.pushMatrix(); + matrixStack.translate(0, 15); boolean singleOutput = recipe.getOutputChance() == 1; int xOffset = singleOutput ? 0 : -7; AllGuiTextures.JEI_LONG_ARROW.render(graphics, 52 + xOffset, 79); if (!singleOutput) { AllGuiTextures.JEI_CHANCE_SLOT.render(graphics, 150 + xOffset, 75); Component component = Component.literal("?").withStyle(ChatFormatting.BOLD); - graphics.drawString(font, component, font.width(component) / -2 + 8 + 150 + xOffset, 2 + 78, + graphics.text(font, component, font.width(component) / -2 + 8 + 150 + xOffset, 2 + 78, 0xefefef); } if (recipe.getLoops() > 1) { - matrixStack.pushPose(); - matrixStack.translate(15, 9, 0); + matrixStack.pushMatrix(); + matrixStack.translate(15, 9); AllIcons.I_SEQ_REPEAT.render(graphics, 50 + xOffset, 75); Component repeat = Component.literal("x" + recipe.getLoops()); - graphics.drawString(font, repeat, 66 + xOffset, 80, 0x888888, false); - matrixStack.popPose(); + graphics.text(font, repeat, 66 + xOffset, 80, 0x888888, false); + matrixStack.popMatrix(); } - matrixStack.popPose(); + matrixStack.popMatrix(); int width = 0; int margin = 3; for (SequencedRecipe sequencedRecipe : recipe.getSequence()) width += getSubCategory(sequencedRecipe).getWidth() + margin; width -= margin; - matrixStack.translate(width / -2 + getBackground().getWidth() / 2, 0, 0); + matrixStack.translate(width / -2 + getBackground().getWidth() / 2, 0); - matrixStack.pushPose(); + matrixStack.pushMatrix(); List> sequence = recipe.getSequence(); for (int i = 0; i < sequence.size(); i++) { SequencedRecipe sequencedRecipe = sequence.get(i); SequencedAssemblySubCategory subCategory = getSubCategory(sequencedRecipe); int subWidth = subCategory.getWidth(); MutableComponent component = Component.literal("" + romans[Math.min(i, 6)]); - graphics.drawString(font, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888, false); + graphics.text(font, component, font.width(component) / -2 + subWidth / 2, 2, 0x888888, false); subCategory.draw(sequencedRecipe, graphics, mouseX, mouseY, i); - matrixStack.translate(subWidth + margin, 0, 0); + matrixStack.translate(subWidth + margin, 0); } - matrixStack.popPose(); + matrixStack.popMatrix(); - matrixStack.popPose(); + matrixStack.popMatrix(); } @Override diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java index 5b16d92889..9610b3bcc4 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java @@ -12,6 +12,9 @@ import com.simibubi.create.content.fluids.transfer.FillingRecipe; import com.simibubi.create.content.fluids.transfer.GenericItemFilling; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; +import com.simibubi.create.foundation.fluid.LegacyFluidIngredientBridge; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; +import com.simibubi.create.foundation.fluid.LazyComponentFluidIngredient; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.item.ItemHelper; @@ -22,19 +25,18 @@ import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import mezz.jei.api.runtime.IIngredientManager; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; -import net.neoforged.neoforge.capabilities.Capabilities.FluidHandler; +import net.neoforged.neoforge.common.crafting.DataComponentIngredient; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; -import net.neoforged.neoforge.fluids.crafting.DataComponentFluidIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; @ParametersAreNonnullByDefault @@ -52,19 +54,19 @@ public static void consumeRecipes(Consumer> consumer if (PotionFluidHandler.isPotionItem(stack)) { FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); Ingredient bottle = Ingredient.of(Items.GLASS_BOTTLE); - ResourceLocation id = Create.asResource("potions"); + Identifier id = Create.asResource("potions"); SizedFluidIngredient fluidIngredient = new SizedFluidIngredient( - DataComponentFluidIngredient.of(false, fluidFromPotionItem), fluidFromPotionItem.getAmount()); + LazyComponentFluidIngredient.of(false, fluidFromPotionItem), fluidFromPotionItem.getAmount()); FillingRecipe recipe = new StandardProcessingRecipe.Builder<>(FillingRecipe::new, id) .withItemIngredients(bottle) .withFluidIngredients(fluidIngredient) .withSingleItemOutput(stack) .build(); - consumer.accept(new RecipeHolder<>(id, recipe)); + consumer.accept(new RecipeHolder<>(recipeKey(id), recipe)); continue; } - IFluidHandlerItem capability = stack.getCapability(FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack.copy()); if (capability == null) continue; @@ -78,7 +80,7 @@ public static void consumeRecipes(Consumer> consumer continue; ItemStack copy = stack.copy(); - IFluidHandlerItem fhi = copy.getCapability(FluidHandler.ITEM); + IFluidHandlerItem fhi = LegacyFluidHandlerItemAdapter.of(copy); if (fhi != null) { if (!GenericItemFilling.isFluidHandlerValid(copy, fhi)) continue; @@ -91,19 +93,19 @@ public static void consumeRecipes(Consumer> consumer if (container.isEmpty()) continue; - Ingredient bucket = Ingredient.of(stack); - ResourceLocation itemName = RegisteredObjectsHelper.getKeyOrThrow(stack.getItem()); - ResourceLocation fluidName = RegisteredObjectsHelper.getKeyOrThrow(fluidCopy.getFluid()); - ResourceLocation id = Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() + Ingredient bucket = DataComponentIngredient.of(false, stack); + Identifier itemName = RegisteredObjectsHelper.getKeyOrThrow(stack.getItem()); + Identifier fluidName = RegisteredObjectsHelper.getKeyOrThrow(fluidCopy.getFluid()); + Identifier id = Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath()); SizedFluidIngredient fluidIngredient = new SizedFluidIngredient( - DataComponentFluidIngredient.of(false, fluidCopy), fluidCopy.getAmount()); + LazyComponentFluidIngredient.of(false, fluidCopy), fluidCopy.getAmount()); FillingRecipe recipe = new StandardProcessingRecipe.Builder<>(FillingRecipe::new, id) .withItemIngredients(bucket) .withFluidIngredients(fluidIngredient) .withSingleItemOutput(container) .build(); - consumer.accept(new RecipeHolder<>(id, recipe)); + consumer.accept(new RecipeHolder<>(recipeKey(id), recipe)); } } } @@ -125,11 +127,10 @@ public void setRecipe(IRecipeLayoutBuilder builder, FillingRecipe recipe, IFocus } @Override - public void draw(FillingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) { + public void draw(FillingRecipe recipe, IRecipeSlotsView iRecipeSlotsView, GuiGraphicsExtractor graphics, double mouseX, double mouseY) { AllGuiTextures.JEI_SHADOW.render(graphics, 62, 57); AllGuiTextures.JEI_DOWN_ARROW.render(graphics, 126, 29); - spout.withFluids(Arrays.asList(recipe.getRequiredFluid() - .getFluids())) + spout.withFluids(LegacyFluidIngredientBridge.getFluids(recipe.getRequiredFluid())) .draw(graphics, getBackground().getWidth() / 2 - 13, 22); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java index 5696e636b6..bfca2a748a 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java @@ -1,22 +1,15 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; -import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; -import net.minecraft.world.level.block.Blocks; + +import org.joml.Matrix3x2fStack; public class AnimatedBlazeBurner extends AnimatedKinetics { @@ -27,66 +20,32 @@ public AnimatedBlazeBurner withHeat(HeatLevel heatLevel) { return this; } - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 200); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 23; float offset = (Mth.sin(AnimationTickHolder.getRenderTime() / 16f) + 0.5f) / 16f; - blockElement(AllBlocks.BLAZE_BURNER.getDefaultState()).atLocal(0, 1.65, 0) + blockElement(AllBlocks.BLAZE_BURNER.getDefaultState()).atLocal(0, 1.65f, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); PartialModel blaze = heatLevel == HeatLevel.SEETHING ? AllPartialModels.BLAZE_SUPER : AllPartialModels.BLAZE_ACTIVE; PartialModel rods2 = heatLevel == HeatLevel.SEETHING ? AllPartialModels.BLAZE_BURNER_SUPER_RODS_2 : AllPartialModels.BLAZE_BURNER_RODS_2; - blockElement(blaze).atLocal(1, 1.8, 1) + blockElement(blaze).atLocal(1, 1.8f, 1) .rotate(0, 180, 0) .scale(scale) - .render(graphics); - blockElement(rods2).atLocal(1, 1.7 + offset, 1) + .render(graphics, 0, 0, 0); + blockElement(rods2).atLocal(1, 1.7f + offset, 1) .rotate(0, 180, 0) .scale(scale) - .render(graphics); - - matrixStack.scale(scale, -scale, scale); - matrixStack.translate(0, -1.8, 0); - - SpriteShiftEntry spriteShift = - heatLevel == HeatLevel.SEETHING ? AllSpriteShifts.SUPER_BURNER_FLAME : AllSpriteShifts.BURNER_FLAME; - - float spriteWidth = spriteShift.getTarget() - .getU1() - - spriteShift.getTarget() - .getU0(); - - float spriteHeight = spriteShift.getTarget() - .getV1() - - spriteShift.getTarget() - .getV0(); - - float time = AnimationTickHolder.getRenderTime(Minecraft.getInstance().level); - float speed = 1 / 32f + 1 / 64f * heatLevel.ordinal(); - - double vScroll = speed * time; - vScroll = vScroll - Math.floor(vScroll); - vScroll = vScroll * spriteHeight / 2; - - double uScroll = speed * time / 2; - uScroll = uScroll - Math.floor(uScroll); - uScroll = uScroll * spriteWidth / 2; - - CachedBuffers.partial(AllPartialModels.BLAZE_BURNER_FLAME, Blocks.AIR.defaultBlockState()) - .shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll) - .light(LightTexture.FULL_BRIGHT) - .renderInto(matrixStack, graphics.bufferSource().getBuffer(RenderType.cutoutMipped())); - matrixStack.popPose(); + .render(graphics, 0, 0, 0); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java index c969e4efc3..84e54c3a8d 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java @@ -1,38 +1,35 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.gui.AllGuiTextures; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; + +import org.joml.Matrix3x2fStack; public class AnimatedCrafter extends AnimatedKinetics { @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 0); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); AllGuiTextures.JEI_SHADOW.render(graphics, -16, 13); - matrixStack.translate(3, 16, 0); - TransformStack.of(matrixStack) - .rotateXDegrees(-12.5f) - .rotateYDegrees(-22.5f); + matrixStack.translate(3, 16); int scale = 22; blockElement(cogwheel()) .rotateBlock(90, 0, getCurrentAngle()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.MECHANICAL_CRAFTER.getDefaultState()) .rotateBlock(0, 180, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java index 9f087c1cec..c5a355c7c6 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java @@ -1,38 +1,37 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import org.joml.Matrix3x2fStack; + public class AnimatedCrushingWheels extends AnimatedKinetics { private final BlockState wheel = AllBlocks.CRUSHING_WHEEL.getDefaultState() .setValue(BlockStateProperties.AXIS, Direction.Axis.X); @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.mulPose(Axis.YP.rotationDegrees(-22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 22; blockElement(wheel) .rotateBlock(0, 90, -getCurrentAngle()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(wheel) .rotateBlock(0, 90, getCurrentAngle()) .atLocal(2, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java index b0302fb69c..ecce7aa227 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java @@ -1,60 +1,58 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.deployer.DeployerBlock; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.Direction; +import org.joml.Matrix3x2fStack; + public class AnimatedDeployer extends AnimatedKinetics { @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 20; blockElement(shaft(Direction.Axis.Z)) .rotateBlock(0, 0, getCurrentAngle()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.DEPLOYER.getDefaultState() .setValue(DeployerBlock.FACING, Direction.DOWN) .setValue(DeployerBlock.AXIS_ALONG_FIRST_COORDINATE, false)) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); float cycle = (AnimationTickHolder.getRenderTime() - offset * 8) % 30; float offset = cycle < 10 ? cycle / 10f : cycle < 20 ? (20 - cycle) / 10f : 0; - matrixStack.pushPose(); + matrixStack.pushMatrix(); - matrixStack.translate(0, offset * 17, 0); + matrixStack.translate(0, offset * 17); blockElement(AllPartialModels.DEPLOYER_POLE) .rotateBlock(90, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllPartialModels.DEPLOYER_HAND_HOLDING) .rotateBlock(90, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); blockElement(AllBlocks.DEPOT.getDefaultState()) .atLocal(0, 2, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java index 182e41445b..a2f1f9dff0 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java @@ -1,15 +1,11 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.platform.NeoForgeCatnipServices; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.neoforged.neoforge.fluids.FluidStack; +import org.joml.Matrix3x2fStack; public class AnimatedItemDrain extends AnimatedKinetics { @@ -21,25 +17,16 @@ public AnimatedItemDrain withFluid(FluidStack fluid) { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 20; blockElement(AllBlocks.ITEM_DRAIN.getDefaultState()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - UIRenderHelper.flipForGuiRender(matrixStack); - matrixStack.scale(scale, scale, scale); - float from = 2 / 16f; - float to = 1f - from; - NeoForgeCatnipServices.FLUID_RENDERER.renderFluidBox(fluid, from, from, from, to, 3 / 4f, to, graphics.bufferSource(), matrixStack, LightTexture.FULL_BRIGHT, false, true); - graphics.flush(); - - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java index 0ad63a95bc..f9c28116e3 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java @@ -6,10 +6,11 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import mezz.jei.api.gui.drawable.IDrawable; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.gui.ILightingSettings; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.gui.ILightingSettings; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.core.Direction.Axis; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -36,7 +37,7 @@ public static GuiGameElement.GuiRenderBuilder defaultBlockElement(BlockState sta * Use {@link #blockElement(PartialModel)} if calling from inside a subclass. */ public static GuiGameElement.GuiRenderBuilder defaultBlockElement(PartialModel partial) { - return GuiGameElement.of(partial) + return GuiGameElement.of(Blocks.AIR.defaultBlockState()) .lighting(DEFAULT_LIGHTING); } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java index 945b53d3de..19d7655766 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java @@ -1,33 +1,34 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; + +import org.joml.Matrix3x2fStack; public class AnimatedMillstone extends AnimatedKinetics { @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 0); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); AllGuiTextures.JEI_SHADOW.render(graphics, -16, 13); - matrixStack.translate(-2, 18, 0); + matrixStack.translate(-2, 18); int scale = 22; blockElement(AllPartialModels.MILLSTONE_COG) .rotateBlock(22.5, getCurrentAngle() * 2, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.MILLSTONE.getDefaultState()) .rotateBlock(22.5, 22.5, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java index b4c3398c62..3db3e39cbc 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java @@ -1,55 +1,53 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; +import org.joml.Matrix3x2fStack; + public class AnimatedMixer extends AnimatedKinetics { @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 200); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 23; blockElement(cogwheel()) .rotateBlock(0, getCurrentAngle() * 2, 0) .atLocal(0, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.MECHANICAL_MIXER.getDefaultState()) .atLocal(0, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); float animation = ((Mth.sin(AnimationTickHolder.getRenderTime() / 32f) + 1) / 5) + .5f; blockElement(AllPartialModels.MECHANICAL_MIXER_POLE) .atLocal(0, animation, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllPartialModels.MECHANICAL_MIXER_HEAD) .rotateBlock(0, getCurrentAngle() * 4, 0) .atLocal(0, animation, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.BASIN.getDefaultState()) - .atLocal(0, 1.65, 0) + .atLocal(0, 1.65f, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java index eac104209f..bd333738e8 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java @@ -1,14 +1,14 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.Direction; +import org.joml.Matrix3x2fStack; + public class AnimatedPress extends AnimatedKinetics { private boolean basin; @@ -18,35 +18,33 @@ public AnimatedPress(boolean basin) { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 200); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = basin ? 23 : 24; blockElement(shaft(Direction.Axis.Z)) .rotateBlock(0, 0, getCurrentAngle()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.MECHANICAL_PRESS.getDefaultState()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllPartialModels.MECHANICAL_PRESS_HEAD) .atLocal(0, -getAnimatedHeadOffset(), 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); if (basin) blockElement(AllBlocks.BASIN.getDefaultState()) - .atLocal(0, 1.65, 0) + .atLocal(0, 1.65f, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } private float getAnimatedHeadOffset() { diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java index db14904bb7..9080fd8b0e 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java @@ -1,43 +1,40 @@ package com.simibubi.create.compat.jei.category.animations; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.saw.SawBlock; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.Direction; +import org.joml.Matrix3x2fStack; + public class AnimatedSaw extends AnimatedKinetics { @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 0); - matrixStack.translate(0, 0, 200); - matrixStack.translate(2, 22, 0); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f + 90)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); + matrixStack.translate(2, 22); int scale = 25; blockElement(shaft(Direction.Axis.X)) .rotateBlock(-getCurrentAngle(), 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllBlocks.MECHANICAL_SAW.getDefaultState() .setValue(SawBlock.FACING, Direction.UP)) .rotateBlock(0, 0, 0) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); blockElement(AllPartialModels.SAW_BLADE_VERTICAL_ACTIVE) .rotateBlock(0, -90, -90) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java index 68a387c1ee..bd99b68bf1 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java @@ -2,20 +2,15 @@ import java.util.List; -import com.mojang.blaze3d.platform.Lighting; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.platform.NeoForgeCatnipServices; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.LightTexture; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.util.Mth; import net.neoforged.neoforge.fluids.FluidStack; +import org.joml.Matrix3x2fStack; public class AnimatedSpout extends AnimatedKinetics { @@ -27,66 +22,43 @@ public AnimatedSpout withFluids(List fluids) { } @Override - public void draw(GuiGraphics graphics, int xOffset, int yOffset) { - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.mulPose(Axis.XP.rotationDegrees(-15.5f)); - matrixStack.mulPose(Axis.YP.rotationDegrees(22.5f)); + public void draw(GuiGraphicsExtractor graphics, int xOffset, int yOffset) { + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(xOffset, yOffset); int scale = 20; blockElement(AllBlocks.SPOUT.getDefaultState()) .scale(scale) - .render(graphics); + .render(graphics, 0, 0, 0); float cycle = (AnimationTickHolder.getRenderTime() - offset * 8) % 30; float squeeze = cycle < 20 ? Mth.sin((float) (cycle / 20f * Math.PI)) : 0; squeeze *= 20; - matrixStack.pushPose(); + matrixStack.pushMatrix(); blockElement(AllPartialModels.SPOUT_TOP) .scale(scale) - .render(graphics); - matrixStack.translate(0, -3 * squeeze / 32f, 0); + .render(graphics, 0, 0, 0); + matrixStack.translate(0, -3 * squeeze / 32f); blockElement(AllPartialModels.SPOUT_MIDDLE) .scale(scale) - .render(graphics); - matrixStack.translate(0, -3 * squeeze / 32f, 0); + .render(graphics, 0, 0, 0); + matrixStack.translate(0, -3 * squeeze / 32f); blockElement(AllPartialModels.SPOUT_BOTTOM) .scale(scale) - .render(graphics); - matrixStack.translate(0, -3 * squeeze / 32f, 0); + .render(graphics, 0, 0, 0); + matrixStack.translate(0, -3 * squeeze / 32f); - matrixStack.popPose(); + matrixStack.popMatrix(); blockElement(AllBlocks.DEPOT.getDefaultState()) .atLocal(0, 2, 0) .scale(scale) - .render(graphics); - - AnimatedKinetics.DEFAULT_LIGHTING.applyLighting(); - matrixStack.pushPose(); - UIRenderHelper.flipForGuiRender(matrixStack); - matrixStack.scale(16, 16, 16); - float from = 3f / 16f; - float to = 17f / 16f; - FluidStack fluidStack = fluids.get(0); - NeoForgeCatnipServices.FLUID_RENDERER.renderFluidBox(fluidStack, from, from, from, to, to, to, graphics.bufferSource(), matrixStack, LightTexture.FULL_BRIGHT, false, true); - matrixStack.popPose(); - - float width = 1 / 128f * squeeze; - matrixStack.translate(scale / 2f, scale * 1.5f, scale / 2f); - UIRenderHelper.flipForGuiRender(matrixStack); - matrixStack.scale(16, 16, 16); - matrixStack.translate(-0.5f, 0, -0.5f); - from = -width / 2 + 0.5f; - to = width / 2 + 0.5f; - NeoForgeCatnipServices.FLUID_RENDERER.renderFluidBox(fluidStack, from, 0, from, to, 2, to, graphics.bufferSource(), matrixStack, LightTexture.FULL_BRIGHT, false, true); - graphics.flush(); - Lighting.setupFor3DItems(); - - matrixStack.popPose(); + .render(graphics, 0, 0, 0); + + matrixStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java index 612430e4a6..a9b3dfa807 100644 --- a/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java +++ b/src/main/java/com/simibubi/create/compat/jei/category/sequencedAssembly/SequencedAssemblySubCategory.java @@ -1,8 +1,5 @@ package com.simibubi.create.compat.jei.category.sequencedAssembly; -import java.util.Arrays; - -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer; import com.simibubi.create.compat.jei.category.animations.AnimatedPress; @@ -17,9 +14,10 @@ import mezz.jei.api.recipe.IFocusGroup; import mezz.jei.api.recipe.RecipeIngredientRole; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; +import net.neoforged.neoforge.fluids.FluidStack; public abstract class SequencedAssemblySubCategory { @@ -35,7 +33,7 @@ public int getWidth() { public void setRecipe(IRecipeLayoutBuilder builder, SequencedRecipe recipe, IFocusGroup focuses, int x) {} - public abstract void draw(SequencedRecipe recipe, GuiGraphics graphics, double mouseX, double mouseY, int index); + public abstract void draw(SequencedRecipe recipe, GuiGraphicsExtractor graphics, double mouseX, double mouseY, int index); public static class AssemblyPressing extends SequencedAssemblySubCategory { @@ -47,14 +45,14 @@ public AssemblyPressing() { } @Override - public void draw(SequencedRecipe recipe, GuiGraphics graphics, double mouseX, double mouseY, int index) { - PoseStack ms = graphics.pose(); + public void draw(SequencedRecipe recipe, GuiGraphicsExtractor graphics, double mouseX, double mouseY, int index) { + var ms = graphics.pose(); press.offset = index; - ms.pushPose(); - ms.translate(-5, 50, 0); - ms.scale(.6f, .6f, .6f); + ms.pushMatrix(); + ms.translate(-5, 50); + ms.scale(.6f, .6f); press.draw(graphics, getWidth() / 2, 0); - ms.popPose(); + ms.popMatrix(); } } @@ -78,18 +76,25 @@ public void setRecipe(IRecipeLayoutBuilder builder, SequencedRecipe recipe, I } @Override - public void draw(SequencedRecipe recipe, GuiGraphics graphics, double mouseX, double mouseY, int index) { - PoseStack ms = graphics.pose(); + public void draw(SequencedRecipe recipe, GuiGraphicsExtractor graphics, double mouseX, double mouseY, int index) { + var ms = graphics.pose(); spout.offset = index; - ms.pushPose(); - ms.translate(-7, 50, 0); - ms.scale(.75f, .75f, .75f); - spout.withFluids(Arrays.asList(recipe.getRecipe() + ms.pushMatrix(); + ms.translate(-7, 50); + ms.scale(.75f, .75f); + spout.withFluids(recipe.getRecipe() .getFluidIngredients() .get(0) - .getFluids())) + .ingredient() + .fluids() + .stream() + .map(holder -> new FluidStack(holder.value(), recipe.getRecipe() + .getFluidIngredients() + .get(0) + .amount())) + .toList()) .draw(graphics, getWidth() / 2, 0); - ms.popPose(); + ms.popMatrix(); } } @@ -111,21 +116,21 @@ public void setRecipe(IRecipeLayoutBuilder builder, SequencedRecipe recipe, I .addIngredients(recipe.getRecipe().getIngredients().get(1)); if (recipe.getAsAssemblyRecipe() instanceof DeployerApplicationRecipe deployerRecipe && deployerRecipe.shouldKeepHeldItem()) { - slot.addTooltipCallback( - (recipeSlotView, tooltip) -> tooltip.add(1, CreateLang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)) + slot.addRichTooltipCallback( + (recipeSlotView, tooltip) -> tooltip.add(CreateLang.translateDirect("recipe.deploying.not_consumed").withStyle(ChatFormatting.GOLD)) ); } } @Override - public void draw(SequencedRecipe recipe, GuiGraphics graphics, double mouseX, double mouseY, int index) { - PoseStack ms = graphics.pose(); + public void draw(SequencedRecipe recipe, GuiGraphicsExtractor graphics, double mouseX, double mouseY, int index) { + var ms = graphics.pose(); deployer.offset = index; - ms.pushPose(); - ms.translate(-7, 50, 0); - ms.scale(.75f, .75f, .75f); + ms.pushMatrix(); + ms.translate(-7, 50); + ms.scale(.75f, .75f); deployer.draw(graphics, getWidth() / 2, 0); - ms.popPose(); + ms.popMatrix(); } } @@ -140,13 +145,13 @@ public AssemblyCutting() { } @Override - public void draw(SequencedRecipe recipe, GuiGraphics graphics, double mouseX, double mouseY, int index) { - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(0, 51.5f, 0); - ms.scale(.6f, .6f, .6f); + public void draw(SequencedRecipe recipe, GuiGraphicsExtractor graphics, double mouseX, double mouseY, int index) { + var ms = graphics.pose(); + ms.pushMatrix(); + ms.translate(0, 51.5f); + ms.scale(.6f, .6f); saw.draw(graphics, getWidth() / 2, 30); - ms.popPose(); + ms.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/compat/pojav/PojavChecker.java b/src/main/java/com/simibubi/create/compat/pojav/PojavChecker.java index 88ebee5702..f66411aca4 100644 --- a/src/main/java/com/simibubi/create/compat/pojav/PojavChecker.java +++ b/src/main/java/com/simibubi/create/compat/pojav/PojavChecker.java @@ -5,7 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.TitleScreen; @@ -65,7 +65,7 @@ public static void init() { public static void onScreenInit(ScreenEvent.Init.Post event) { if (!screenShown && event.getScreen() instanceof TitleScreen titleScreen) { - Minecraft.getInstance().setScreen(new PojavWarningScreen(titleScreen)); + Minecraft.getInstance().setScreenAndShow(new PojavWarningScreen(titleScreen)); screenShown = true; } } diff --git a/src/main/java/com/simibubi/create/compat/pojav/PojavWarningScreen.java b/src/main/java/com/simibubi/create/compat/pojav/PojavWarningScreen.java index a359431650..82c7ba97a7 100644 --- a/src/main/java/com/simibubi/create/compat/pojav/PojavWarningScreen.java +++ b/src/main/java/com/simibubi/create/compat/pojav/PojavWarningScreen.java @@ -30,7 +30,7 @@ public PojavWarningScreen(TitleScreen titleScreen) { @Override protected Layout addFooterButtons() { LinearLayout layout = LinearLayout.horizontal().spacing(8); - layout.addChild(Button.builder(CONTINUE, button -> this.minecraft.setScreen(this.titleScreen)).build()); + layout.addChild(Button.builder(CONTINUE, button -> this.minecraft.setScreenAndShow(this.titleScreen)).build()); layout.addChild(Button.builder(QUIT, button -> this.minecraft.stop()).build()); return layout; } diff --git a/src/main/java/com/simibubi/create/compat/sodium/SodiumCompat.java b/src/main/java/com/simibubi/create/compat/sodium/SodiumCompat.java index 1eae9a1351..d64c7acdb8 100644 --- a/src/main/java/com/simibubi/create/compat/sodium/SodiumCompat.java +++ b/src/main/java/com/simibubi/create/compat/sodium/SodiumCompat.java @@ -1,37 +1,19 @@ package com.simibubi.create.compat.sodium; -import java.util.function.Function; - import com.simibubi.create.Create; -import net.caffeinemc.mods.sodium.api.texture.SpriteUtil; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.resources.Identifier; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent.Stage; /** * Fixes the Mechanical Saw's sprite and Factory Gauge's sprite */ public class SodiumCompat { - public static final ResourceLocation SAW_TEXTURE = Create.asResource("block/saw_reversed"); - public static final ResourceLocation FACTORY_PANEL_TEXTURE = Create.asResource("block/factory_panel_connections_animated"); + public static final Identifier SAW_TEXTURE = Create.asResource("block/saw_reversed"); + public static final Identifier FACTORY_PANEL_TEXTURE = Create.asResource("block/factory_panel_connections_animated"); public static void init(IEventBus modEventBus, IEventBus neoEventBus) { - Minecraft mc = Minecraft.getInstance(); - neoEventBus.addListener((RenderLevelStageEvent event) -> { - if (event.getStage() == Stage.AFTER_ENTITIES) { - Function atlas = mc.getTextureAtlas(InventoryMenu.BLOCK_ATLAS); - TextureAtlasSprite sawSprite = atlas.apply(SAW_TEXTURE); - SpriteUtil.INSTANCE.markSpriteActive(sawSprite); - - TextureAtlasSprite factoryPanelSprite = atlas.apply(FACTORY_PANEL_TEXTURE); - SpriteUtil.INSTANCE.markSpriteActive(factoryPanelSprite); - } - }); + // TODO 26.2: Rebind Sodium's sprite activity hook once its 26.2 API stabilizes. } } diff --git a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java index 056981c539..3f470130d6 100644 --- a/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java +++ b/src/main/java/com/simibubi/create/compat/tconstruct/SpoutCasting.java @@ -3,6 +3,7 @@ import com.simibubi.create.api.behaviour.spouting.BlockSpoutingBehaviour; import com.simibubi.create.content.fluids.spout.SpoutBlockEntity; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; import com.simibubi.create.infrastructure.config.AllConfigs; import net.minecraft.core.BlockPos; @@ -14,6 +15,8 @@ import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.fluid.FluidResource; public enum SpoutCasting implements BlockSpoutingBehaviour { INSTANCE; @@ -27,7 +30,9 @@ public int fillBlock(Level level, BlockPos pos, SpoutBlockEntity spout, FluidSta if (blockEntity == null) return 0; - IFluidHandler handler = level.getCapability(Capabilities.FluidHandler.BLOCK, blockEntity.getBlockPos(), Direction.UP); + ResourceHandler resourceHandler = + level.getCapability(Capabilities.Fluid.BLOCK, blockEntity.getBlockPos(), Direction.UP); + IFluidHandler handler = LegacyFluidHandlerAdapter.of(resourceHandler); if (handler == null) return 0; if (handler.getTanks() != 1) diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java index e8c649e054..c146caad6e 100644 --- a/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/FunctionalStorage.java @@ -2,7 +2,7 @@ import com.simibubi.create.compat.Mods; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.items.IItemHandler; diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java index 3ae543b3da..b257242f05 100644 --- a/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/SophisticatedStorage.java @@ -2,7 +2,7 @@ import com.simibubi.create.compat.Mods; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.component.DataComponents; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java b/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java index a801481ab0..b19f5d258d 100644 --- a/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java +++ b/src/main/java/com/simibubi/create/compat/thresholdSwitch/StorageDrawers.java @@ -2,7 +2,7 @@ import com.simibubi.create.compat.Mods; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.items.IItemHandler; diff --git a/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java b/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java index 0cea9bf9e3..439663ff44 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/FTBChunksTrainMap.java @@ -13,7 +13,7 @@ import dev.ftb.mods.ftblibrary.ui.ScreenWrapper; import dev.ftb.mods.ftblibrary.ui.Widget; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.FormattedText; @@ -34,7 +34,7 @@ public static void tick() { if (cancelTooltips > 0) cancelTooltips--; - LargeMapScreen mapScreen = getAsLargeMapScreen(Minecraft.getInstance().screen); + LargeMapScreen mapScreen = getAsLargeMapScreen(Minecraft.getInstance().gui.screen()); if (!AllConfigs.client().showTrainMapOverlay.get() || mapScreen == null) { if (requesting) @@ -49,7 +49,7 @@ public static void tick() { } public static void cancelTooltips(RenderTooltipEvent.Pre event) { - if (getAsLargeMapScreen(Minecraft.getInstance().screen) == null) + if (getAsLargeMapScreen(Minecraft.getInstance().gui.screen()) == null) return; if (renderingTooltip || cancelTooltips == 0) return; @@ -57,7 +57,7 @@ public static void cancelTooltips(RenderTooltipEvent.Pre event) { } public static void mouseClick(InputEvent.MouseButton.Pre event) { - LargeMapScreen screen = getAsLargeMapScreen(Minecraft.getInstance().screen); + LargeMapScreen screen = getAsLargeMapScreen(Minecraft.getInstance().gui.screen()); if (screen == null) return; if (TrainMapManager.handleToggleWidgetClick(screen.getMouseX(), screen.getMouseY(), 20, 2)) @@ -71,7 +71,7 @@ public static void renderGui(ScreenEvent.Render.Post event) { Object panel = ObfuscationReflectionHelper.getPrivateValue(LargeMapScreen.class, largeMapScreen, "regionPanel"); if (!(panel instanceof RegionMapPanel regionMapPanel)) return; - GuiGraphics graphics = event.getGuiGraphics(); + GuiGraphicsExtractor graphics = event.getGuiGraphics(); if (!AllConfigs.client().showTrainMapOverlay.get()) { renderToggleWidgetAndTooltip(event, largeMapScreen, graphics); return; @@ -137,7 +137,7 @@ public static void renderGui(ScreenEvent.Render.Post event) { } private static boolean renderToggleWidgetAndTooltip(ScreenEvent.Render.Post event, LargeMapScreen largeMapScreen, - GuiGraphics graphics) { + GuiGraphicsExtractor graphics) { TrainMapManager.renderToggleWidget(graphics, 20, 2); if (!TrainMapManager.isToggleWidgetHovered(event.getMouseX(), event.getMouseY(), 20, 2)) return false; diff --git a/src/main/java/com/simibubi/create/compat/trainmap/JourneyTrainMap.java b/src/main/java/com/simibubi/create/compat/trainmap/JourneyTrainMap.java index 85b05d5425..b66d116a4f 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/JourneyTrainMap.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/JourneyTrainMap.java @@ -19,7 +19,7 @@ import journeymap.api.v2.common.event.FullscreenEventRegistry; import journeymap.client.ui.fullscreen.Fullscreen; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.FormattedText; @@ -46,7 +46,7 @@ public String getModId() { } public static void tick() { - if (!AllConfigs.client().showTrainMapOverlay.get() || !(Minecraft.getInstance().screen instanceof Fullscreen)) { + if (!AllConfigs.client().showTrainMapOverlay.get() || !(Minecraft.getInstance().gui.screen() instanceof Fullscreen)) { if (requesting) TrainMapSyncClient.stopRequesting(); requesting = false; @@ -59,7 +59,7 @@ public static void tick() { public static void mouseClick(Pre event) { Minecraft mc = Minecraft.getInstance(); - if (!(mc.screen instanceof Fullscreen screen)) + if (!(mc.gui.screen() instanceof Fullscreen screen)) return; Window window = mc.getWindow(); @@ -70,9 +70,9 @@ public static void mouseClick(Pre event) { event.setCanceled(true); } - // GuiGraphics graphics, Fullscreen screen, double x, double z, int mX, int mY, float pt + // GuiGraphicsExtractor graphics, Fullscreen screen, double x, double z, int mX, int mY, float pt public static void onRender(FullscreenRenderEvent event) { - GuiGraphics graphics = event.getGraphics(); + GuiGraphicsExtractor graphics = event.getGraphics(); IFullscreen fullscreen = event.getFullscreen(); Screen screen = fullscreen.getScreen(); double x = fullscreen.getCenterBlockX(true); @@ -124,7 +124,7 @@ public static void onRender(FullscreenRenderEvent event) { RemovedGuiUtils.drawHoveringText(graphics, tooltip, mX, mY, screen.width, screen.height, 256, mc.font); } - private static boolean renderToggleWidgetAndTooltip(GuiGraphics graphics, Screen screen, int mouseX, + private static boolean renderToggleWidgetAndTooltip(GuiGraphicsExtractor graphics, Screen screen, int mouseX, int mouseY) { TrainMapManager.renderToggleWidget(graphics, 3, 30); if (!TrainMapManager.isToggleWidgetHovered(mouseX, mouseY, 3, 30)) diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapEvents.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapEvents.java index d2af328b1e..a335f77d40 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapEvents.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapEvents.java @@ -1,8 +1,6 @@ package com.simibubi.create.compat.trainmap; import com.mojang.blaze3d.platform.InputConstants; -import com.simibubi.create.compat.Mods; - import net.minecraft.client.Minecraft; import net.neoforged.api.distmarker.Dist; @@ -22,12 +20,6 @@ public static void tick(ClientTickEvent.Post event) { if (mc.level == null) return; - if (Mods.FTBCHUNKS.isLoaded()) - FTBChunksTrainMap.tick(); - if (Mods.JOURNEYMAP.isLoaded()) - JourneyTrainMap.tick(); - if (Mods.XAEROWORLDMAP.isLoaded()) - XaeroTrainMap.tick(); } @SubscribeEvent @@ -35,23 +27,13 @@ public static void mouseClick(InputEvent.MouseButton.Pre event) { if (event.getAction() != InputConstants.PRESS) return; - if (Mods.FTBCHUNKS.isLoaded()) - FTBChunksTrainMap.mouseClick(event); - if (Mods.JOURNEYMAP.isLoaded()) - JourneyTrainMap.mouseClick(event); - if (Mods.XAEROWORLDMAP.isLoaded()) - XaeroTrainMap.mouseClick(event); } @SubscribeEvent public static void cancelTooltips(RenderTooltipEvent.Pre event) { - if (Mods.FTBCHUNKS.isLoaded()) - FTBChunksTrainMap.cancelTooltips(event); } @SubscribeEvent public static void renderGui(ScreenEvent.Render.Post event) { - if (Mods.FTBCHUNKS.isLoaded()) - FTBChunksTrainMap.renderGui(event); } } diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapManager.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapManager.java index e7b3e3cdc8..1f506a855d 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapManager.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapManager.java @@ -7,11 +7,10 @@ import java.util.Map.Entry; import java.util.UUID; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; +import org.joml.Matrix3x2fStack; + +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.CreateClient; -import com.simibubi.create.compat.Mods; import com.simibubi.create.compat.trainmap.TrainMapSync.SignalState; import com.simibubi.create.compat.trainmap.TrainMapSync.TrainMapSyncEntry; import com.simibubi.create.compat.trainmap.TrainMapSync.TrainState; @@ -30,18 +29,18 @@ import com.simibubi.create.infrastructure.config.CClient; import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.Rect2i; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceKey; -import net.minecraft.util.FastColor; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; @@ -50,13 +49,7 @@ public class TrainMapManager { public static void tick() { ResourceKey playerDimension = Minecraft.getInstance().level.dimension(); - - if (Mods.XAEROWORLDMAP.isLoaded() && XaeroTrainMap.isMapOpen(Minecraft.getInstance().screen)) { - ResourceKey renderedDimension = XaeroTrainMap.getRenderedDimension(); - tick(renderedDimension != null ? renderedDimension : playerDimension); - } else { - tick(playerDimension); - } + tick(playerDimension); } public static void tick(ResourceKey dimension) { @@ -67,7 +60,7 @@ public static void tick(ResourceKey dimension) { } } - public static List renderAndPick(GuiGraphics graphics, int mouseX, int mouseY, + public static List renderAndPick(GuiGraphicsExtractor graphics, int mouseX, int mouseY, boolean linearFiltering, Rect2i bounds) { Object hoveredElement = null; @@ -81,9 +74,6 @@ public static List renderAndPick(GuiGraphics graphics, int mouseX hoveredElement = drawTrains(graphics, mouseX, mouseY, hoveredElement, bounds); hoveredElement = drawPoints(graphics, mouseX, mouseY, hoveredElement, bounds); - graphics.bufferSource() - .endBatch(); - if (hoveredElement instanceof GlobalStation station) { return List.of(Component.literal(station.name)); } @@ -94,18 +84,17 @@ public static List renderAndPick(GuiGraphics graphics, int mouseX return null; } - public static void renderToggleWidget(GuiGraphics graphics, int x, int y) { + public static void renderToggleWidget(GuiGraphicsExtractor graphics, int x, int y) { boolean enabled = AllConfigs.client().showTrainMapOverlay.get(); if (CreateClient.RAILWAYS.trackNetworks.isEmpty()) return; - RenderSystem.enableBlend(); - PoseStack pose = graphics.pose(); - pose.pushPose(); - pose.translate(0, 0, 300); + LegacyRenderSystemBridge.enableBlend(); + Matrix3x2fStack pose = graphics.pose(); + pose.pushMatrix(); AllGuiTextures.TRAINMAP_TOGGLE_PANEL.render(graphics, x, y); (enabled ? AllGuiTextures.TRAINMAP_TOGGLE_ON : AllGuiTextures.TRAINMAP_TOGGLE_OFF).render(graphics, x + 18, y + 3); - pose.popPose(); + pose.popMatrix(); } public static boolean handleToggleWidgetClick(int mouseX, int mouseY, int x, int y) { @@ -241,10 +230,10 @@ private static List listTrainDetails(Train train) { return output; } - private static Object drawPoints(GuiGraphics graphics, int mouseX, int mouseY, Object hoveredElement, + private static Object drawPoints(GuiGraphicsExtractor graphics, int mouseX, int mouseY, Object hoveredElement, Rect2i bounds) { - PoseStack pose = graphics.pose(); - RenderSystem.enableDepthTest(); + Matrix3x2fStack pose = graphics.pose(); + LegacyRenderSystemBridge.enableDepthTest(); for (TrackGraph graph : CreateClient.RAILWAYS.trackNetworks.values()) { for (GlobalStation station : graph.getPoints(EdgePointType.STATION)) { @@ -286,34 +275,33 @@ private static Object drawPoints(GuiGraphics graphics, int mouseX, int mouseY, O boolean highlight = hoveredElement == null && Math.max(Math.abs(mouseX - x), Math.abs(mouseY - y)) < 3; - pose.pushPose(); - pose.translate(x - 2, y - 2, 5); + pose.pushMatrix(); + pose.translate(x - 2, y - 2); - pose.translate(sprite.getWidth() / 2.0, sprite.getHeight() / 2.0, 0); - pose.mulPose(Axis.ZP.rotationDegrees(90 * (rotation / 2))); - pose.translate(-sprite.getWidth() / 2.0, -sprite.getHeight() / 2.0, 0); + pose.translate(sprite.getWidth() / 2f, sprite.getHeight() / 2f); + pose.rotate((float) Math.toRadians(90 * (rotation / 2))); + pose.translate(-sprite.getWidth() / 2f, -sprite.getHeight() / 2f); sprite.render(graphics, 0, 0); sprite.render(graphics, 0, 0); if (highlight) { - pose.translate(0, 0, 5); highlightSprite.render(graphics, -1, -1); hoveredElement = station; } - pose.popPose(); + pose.popMatrix(); } } return hoveredElement; } - private static Object drawTrains(GuiGraphics graphics, int mouseX, int mouseY, Object hoveredElement, + private static Object drawTrains(GuiGraphicsExtractor graphics, int mouseX, int mouseY, Object hoveredElement, Rect2i bounds) { - PoseStack pose = graphics.pose(); - RenderSystem.enableDepthTest(); - RenderSystem.enableBlend(); + Matrix3x2fStack pose = graphics.pose(); + LegacyRenderSystemBridge.enableDepthTest(); + LegacyRenderSystemBridge.enableBlend(); int spriteYOffset = -3; @@ -400,12 +388,12 @@ else if (rotation == 2 || rotation == 6) { slices = Math.max(2, slices); sprite.bind(); - pose.pushPose(); + pose.pushMatrix(); float pivotX = 7.5f + (slices - 3) * sliceXShiftByRotationIndex[rotation] / 2.0f; float pivotY = 6.5f + (slices - 3) * sliceYShiftByRotationIndex[rotation] / 2.0f; // Ysort at home - pose.translate(pX - pivotX, pY - pivotY, 10 + (avgY / 512.0) + (1024.0 + center.z() % 8192.0) / 1024.0); + pose.translate((float) (pX - pivotX), (float) (pY - pivotY)); int trainColorIndex = train.mapColorIndex; int colorRow = trainColorIndex / 4; @@ -421,11 +409,11 @@ else if (rotation == 2 || rotation == 6) { int sheetX = col * 16 + colorCol * 128; int sheetY = row * 16 + colorRow * 64; - graphics.blit(sprite.location, positionX, positionY, sheetX, sheetY, 16, 16, sprite.getWidth(), + graphics.blit(RenderPipelines.GUI_TEXTURED, sprite.location, positionX, positionY, sheetX, sheetY, 16, 16, sprite.getWidth(), sprite.getHeight()); } - pose.popPose(); + pose.popMatrix(); int margin = 1; int sizeX = 8 + (slices - 3) * sliceXShiftByRotationIndex[rotation]; @@ -441,10 +429,10 @@ else if (rotation == 2 || rotation == 6) { continue; if (trainEntry.signalState != SignalState.NOT_WAITING) { - pose.pushPose(); - pose.translate(frontPos.x - 0.5, frontPos.z - 0.5, 20 + (1024.0 + frontPos.z() % 8192.0) / 1024.0); + pose.pushMatrix(); + pose.translate((float) (frontPos.x - 0.5), (float) (frontPos.z - 0.5)); AllGuiTextures.TRAINMAP_SIGNAL.render(graphics, 0, -3); - pose.popPose(); + pose.popMatrix(); } } @@ -723,21 +711,25 @@ private static void highlightYDifferences(TrainMapRenderer map, List= a) continue; if (map.is(xi, zi, mainColor)) - map.setPixel(xi, zi, FastColor.ABGR32.color(a, mainColorShadow)); + map.setPixel(xi, zi, abgrWithAlpha(a, mainColorShadow)); else if (map.is(xi, zi, darkerColor)) - map.setPixel(xi, zi, FastColor.ABGR32.color(a, darkerColorShadow)); + map.setPixel(xi, zi, abgrWithAlpha(a, darkerColorShadow)); } } } } private static int mapYtoAlpha(double y) { - int minY = Minecraft.getInstance().level.getMinBuildHeight(); + int minY = Minecraft.getInstance().level.getMinY(); return Mth.clamp(32 + Mth.floor((y - minY) / 4.0), 0, 255); } private static int markY(int color, double y) { - return FastColor.ABGR32.color(mapYtoAlpha(y), color); + return abgrWithAlpha(mapYtoAlpha(y), color); + } + + private static int abgrWithAlpha(int alpha, int color) { + return (alpha & 0xff) << 24 | (color & 0x00ffffff); } } diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapRenderer.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapRenderer.java index 3456a7a473..dfb4a87aa8 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapRenderer.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapRenderer.java @@ -3,29 +3,23 @@ import java.util.HashSet; import java.util.Set; -import org.joml.Matrix4f; +import org.joml.Matrix3x2fStack; import com.mojang.blaze3d.platform.NativeImage; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.simibubi.create.foundation.render.RenderTypes; +import com.simibubi.create.Create; import com.simibubi.create.infrastructure.config.CClient; import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.Rect2i; -import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.FastColor; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; @@ -62,7 +56,7 @@ public void setPixel(int xCoord, int zCoord, int color) { xCoord = Mth.positiveModulo(xCoord, WIDTH); zCoord = Mth.positiveModulo(zCoord, HEIGHT); instance.getImage() - .setPixelRGBA(xCoord, zCoord, color); + .setPixelABGR(xCoord, zCoord, color); } public int getPixel(int xCoord, int zCoord) { @@ -74,7 +68,7 @@ public int getPixel(int xCoord, int zCoord) { xCoord = Mth.positiveModulo(xCoord, WIDTH); zCoord = Mth.positiveModulo(zCoord, HEIGHT); return instance.getImage() - .getPixelRGBA(xCoord, zCoord); + .getPixel(xCoord, zCoord); } public void setPixels(int xCoordFrom, int zCoordFrom, int xCoordTo, int zCoordTo, int color) { @@ -88,7 +82,21 @@ public void blendPixel(int xCoord, int zCoord, int color, int alpha) { xCoord = Mth.positiveModulo(xCoord, WIDTH); zCoord = Mth.positiveModulo(zCoord, HEIGHT); instance.getImage() - .blendPixel(xCoord, zCoord, FastColor.ABGR32.color(alpha, color)); + .setPixelABGR(xCoord, zCoord, blendAbgr(instance.getImage().getPixel(xCoord, zCoord), abgrWithAlpha(alpha, color))); + } + + private static int abgrWithAlpha(int alpha, int color) { + return (alpha & 0xff) << 24 | (color & 0x00ffffff); + } + + private static int blendAbgr(int dst, int src) { + int srcA = src >>> 24; + int invA = 255 - srcA; + int b = (((src) & 0xff) * srcA + ((dst) & 0xff) * invA) / 255; + int g = (((src >>> 8) & 0xff) * srcA + ((dst >>> 8) & 0xff) * invA) / 255; + int r = (((src >>> 16) & 0xff) * srcA + ((dst >>> 16) & 0xff) * invA) / 255; + int a = Math.min(255, srcA + (dst >>> 24) * invA / 255); + return a << 24 | r << 16 | g << 8 | b; } public void blendPixels(int xCoordFrom, int zCoordFrom, int xCoordTo, int zCoordTo, int color, int alpha) { @@ -130,18 +138,17 @@ public int alphaAt(int x, int z) { // - public void render(GuiGraphics graphics, boolean linearFiltering, Rect2i bounds) { - BufferSource bufferSource = graphics.bufferSource(); - PoseStack pose = graphics.pose(); + public void render(GuiGraphicsExtractor graphics, boolean linearFiltering, Rect2i bounds) { + Matrix3x2fStack pose = graphics.pose(); maps.forEach((key, tmi) -> { if (tmi.canBeSkipped(bounds)) return; int x = key.getFirst(); int y = key.getSecond(); - pose.pushPose(); - pose.translate(x * WIDTH, y * HEIGHT, 0); - tmi.draw(pose, bufferSource, linearFiltering); - pose.popPose(); + pose.pushMatrix(); + pose.translate(x * WIDTH, y * HEIGHT); + tmi.draw(graphics, linearFiltering); + pose.popMatrix(); }); } @@ -169,7 +176,6 @@ public void close() { public class TrainMapInstance implements AutoCloseable { private DynamicTexture texture; - private RenderType renderType; private boolean requiresUpload; private boolean linearFiltering; private Rect2i bounds; @@ -177,7 +183,7 @@ public class TrainMapInstance implements AutoCloseable { private boolean untouched; private Couple sectionKey; - public ResourceLocation location; + public Identifier location; public TrainMapInstance(Couple sectionKey) { TextureManager textureManager = Minecraft.getInstance() @@ -186,11 +192,10 @@ public TrainMapInstance(Couple sectionKey) { this.sectionKey = sectionKey; untouched = false; requiresUpload = true; - texture = new DynamicTexture(128, 128, true); + texture = new DynamicTexture("create train map", 128, 128, true); linearFiltering = false; - location = textureManager - .register("create_trainmap/" + sectionKey.getFirst() + "_" + sectionKey.getSecond(), texture); - renderType = RenderTypes.TRAIN_MAP.apply(location, linearFiltering); + location = Create.asResource("trainmap/" + sectionKey.getFirst() + "_" + sectionKey.getSecond()); + textureManager.register(location, texture); bounds = new Rect2i(sectionKey.getFirst() * WIDTH, sectionKey.getSecond() * HEIGHT, WIDTH, HEIGHT); } @@ -207,7 +212,7 @@ public NativeImage getImage() { return texture.getPixels(); } - public void draw(PoseStack pPoseStack, MultiBufferSource pBufferSource, boolean linearFiltering) { + public void draw(GuiGraphicsExtractor graphics, boolean linearFiltering) { if (texture.getPixels() == null) return; @@ -216,35 +221,8 @@ public void draw(PoseStack pPoseStack, MultiBufferSource pBufferSource, boolean requiresUpload = false; } - if (pPoseStack == null) - return; - - if (linearFiltering != this.linearFiltering) { - this.linearFiltering = linearFiltering; - renderType = RenderTypes.TRAIN_MAP.apply(location, linearFiltering); - } - - int pPackedLight = LightTexture.FULL_BRIGHT; - - Matrix4f matrix4f = pPoseStack.last() - .pose(); - VertexConsumer vertexconsumer = pBufferSource.getBuffer(renderType); - vertexconsumer.addVertex(matrix4f, 0.0F, HEIGHT, 0) - .setColor(255, 255, 255, 255) - .setUv(0.0F, 1.0F) - .setLight(pPackedLight); - vertexconsumer.addVertex(matrix4f, WIDTH, HEIGHT, 0) - .setColor(255, 255, 255, 255) - .setUv(1.0F, 1.0F) - .setLight(pPackedLight); - vertexconsumer.addVertex(matrix4f, WIDTH, 0.0F, 0) - .setColor(255, 255, 255, 255) - .setUv(1.0F, 0.0F) - .setLight(pPackedLight); - vertexconsumer.addVertex(matrix4f, 0.0F, 0.0F, 0) - .setColor(255, 255, 255, 255) - .setUv(0.0F, 0.0F) - .setLight(pPackedLight); + this.linearFiltering = linearFiltering; + graphics.blit(RenderPipelines.GUI_TEXTURED, location, 0, 0, 0, 0, WIDTH, HEIGHT, WIDTH, HEIGHT); } public void close() { diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSync.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSync.java index d2dae280a9..cf4dd79c5a 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSync.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSync.java @@ -21,10 +21,10 @@ import com.simibubi.create.foundation.utility.TickBasedCache; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipLargerStreamCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.codec.stream.CatnipLargerStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.UUIDUtil; import net.minecraft.core.registries.Registries; import net.minecraft.network.FriendlyByteBuf; @@ -153,7 +153,8 @@ public static void requestReceived(ServerPlayer sender) { boolean sendImmediately = requestingPlayers.getIfPresent(sender.getUUID()) == null; requestingPlayers.put(sender.getUUID(), new WeakReference<>(sender)); if (sendImmediately) - send(sender.server, false); + send(sender.level() + .getServer(), false); } public static void serverTick(ServerTickEvent event) { diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncClient.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncClient.java index ae51c9a185..d28f29335b 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncClient.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncClient.java @@ -8,9 +8,9 @@ import com.simibubi.create.compat.trainmap.TrainMapSync.TrainMapSyncEntry; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Pair; public class TrainMapSyncClient { @@ -23,7 +23,7 @@ public class TrainMapSyncClient { public static void requestData() { ticks++; if (ticks % 5 == 0) - CatnipServices.NETWORK.sendToServer(TrainMapSyncRequestPacket.INSTANCE); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(TrainMapSyncRequestPacket.INSTANCE); } public static void stopRequesting() { diff --git a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncPacket.java b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncPacket.java index 2f2f9b8039..3cf899931c 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncPacket.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/TrainMapSyncPacket.java @@ -8,17 +8,16 @@ import com.simibubi.create.compat.trainmap.TrainMapSync.TrainMapSyncEntry; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrainMapSyncPacket implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -44,8 +43,7 @@ public void add(UUID trainId, TrainMapSyncEntry data) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { TrainMapSyncClient.receive(this); } diff --git a/src/main/java/com/simibubi/create/compat/trainmap/XaeroTrainMap.java b/src/main/java/com/simibubi/create/compat/trainmap/XaeroTrainMap.java index dcec0deaa3..024357bcbb 100644 --- a/src/main/java/com/simibubi/create/compat/trainmap/XaeroTrainMap.java +++ b/src/main/java/com/simibubi/create/compat/trainmap/XaeroTrainMap.java @@ -11,7 +11,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.FormattedText; @@ -29,7 +29,7 @@ public class XaeroTrainMap { private static boolean encounteredException = false; public static void tick() { - if (!AllConfigs.client().showTrainMapOverlay.get() || !isMapOpen(Minecraft.getInstance().screen)) { + if (!AllConfigs.client().showTrainMapOverlay.get() || !isMapOpen(Minecraft.getInstance().gui.screen())) { if (requesting) TrainMapSyncClient.stopRequesting(); requesting = false; @@ -46,7 +46,7 @@ public static void mouseClick(InputEvent.MouseButton.Pre event) { Minecraft mc = Minecraft.getInstance(); try { - if (!(mc.screen instanceof GuiMap)) + if (!(mc.gui.screen() instanceof GuiMap)) return; } catch (Throwable e) { Create.LOGGER.error("Failed to handle mouseClick for Xaero's World Map train map integration:", e); @@ -63,7 +63,7 @@ public static void mouseClick(InputEvent.MouseButton.Pre event) { } // Called by XaeroFullscreenMapMixin, guarded by try-catch - public static void onRender(GuiGraphics graphics, GuiMap screen, int mX, int mY, float pt) { + public static void onRender(GuiGraphicsExtractor graphics, GuiMap screen, int mX, int mY, float pt) { double x = ((XaeroFullscreenMapAccessor) screen).create$getCameraX(); double z = ((XaeroFullscreenMapAccessor) screen).create$getCameraZ(); double mapScale = ((XaeroFullscreenMapAccessor) screen).create$getScale(); @@ -108,7 +108,7 @@ public static void onRender(GuiGraphics graphics, GuiMap screen, int mX, int mY, RemovedGuiUtils.drawHoveringText(graphics, tooltip, mX, mY, screen.width, screen.height, 256, mc.font); } - private static boolean renderToggleWidgetAndTooltip(GuiGraphics graphics, GuiMap screen, int mouseX, + private static boolean renderToggleWidgetAndTooltip(GuiGraphicsExtractor graphics, GuiMap screen, int mouseX, int mouseY) { TrainMapManager.renderToggleWidget(graphics, 3, 30); if (!TrainMapManager.isToggleWidgetHovered(mouseX, mouseY, 3, 30)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java index 8c7c50ff6d..a5b2792c39 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/AbstractContraptionEntity.java @@ -15,6 +15,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllItems; +import com.simibubi.create.AllEntityDataSerializers; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.actors.psi.PortableStorageInterfaceMovement; @@ -34,11 +35,12 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.collision.Matrix3d; import com.simibubi.create.foundation.mixin.accessor.ServerLevelAccessor; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; import io.netty.handler.codec.DecoderException; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -51,6 +53,7 @@ import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; @@ -64,8 +67,10 @@ import net.minecraft.world.entity.decoration.HangingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.level.material.PushReaction; @@ -73,7 +78,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.entity.IEntityWithComplexSpawn; public abstract class AbstractContraptionEntity extends Entity implements IEntityWithComplexSpawn { @@ -81,7 +85,7 @@ public abstract class AbstractContraptionEntity extends Entity implements IEntit private static final EntityDataAccessor STALLED = SynchedEntityData.defineId(AbstractContraptionEntity.class, EntityDataSerializers.BOOLEAN); private static final EntityDataAccessor> CONTROLLED_BY = - SynchedEntityData.defineId(AbstractContraptionEntity.class, EntityDataSerializers.OPTIONAL_UUID); + SynchedEntityData.defineId(AbstractContraptionEntity.class, AllEntityDataSerializers.OPTIONAL_UUID); public final Map collidingEntities; @@ -109,7 +113,7 @@ protected void setContraption(Contraption contraption) { this.contraption = contraption; if (contraption == null) return; - if (level().isClientSide) + if (level().isClientSide()) return; contraption.onEntityCreated(this); } @@ -154,10 +158,10 @@ public void addSittingPassenger(Entity passenger, int seatIndex) { entity.stopRiding(); } } - passenger.startRiding(this, true); + passenger.startRiding(this, true, true); if (passenger instanceof TamableAnimal ta) ta.setInSittingPose(true); - if (level().isClientSide) + if (level().isClientSide()) return; contraption.getSeatMapping() .put(passenger.getUUID(), seatIndex); @@ -171,7 +175,7 @@ protected void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof TamableAnimal ta) ta.setInSittingPose(false); - if (level().isClientSide) + if (level().isClientSide()) return; if (transformedVector != null) passenger.getPersistentData() @@ -190,14 +194,14 @@ public Vec3 getDismountLocationForPassenger(LivingEntity entityLiving) { if (!data.contains("ContraptionDismountLocation")) return position; - position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); + position = VecHelper.readNBT(data.getListOrEmpty("ContraptionDismountLocation")); data.remove("ContraptionDismountLocation"); entityLiving.setOnGround(false); if (!data.contains("ContraptionMountLocation")) return position; - Vec3 prevPosition = VecHelper.readNBT(data.getList("ContraptionMountLocation", Tag.TAG_DOUBLE)); + Vec3 prevPosition = VecHelper.readNBT(data.getListOrEmpty("ContraptionMountLocation")); data.remove("ContraptionMountLocation"); if (entityLiving instanceof Player player && !prevPosition.closerThan(position, 5000)) AllAdvancements.LONG_TRAVEL.awardTo(player); @@ -313,14 +317,14 @@ public boolean handlePlayerInteraction(Player player, BlockPos localPos, Directi } } - if (toDismount != null && !level().isClientSide) { + if (toDismount != null && !level().isClientSide()) { Vec3 transformedVector = getPassengerPosition(toDismount, 1); toDismount.stopRiding(); if (transformedVector != null) toDismount.teleportTo(transformedVector.x, transformedVector.y, transformedVector.z); } - if (level().isClientSide) + if (level().isClientSide()) return true; addSittingPassenger(SeatBlock.getLeashed(level(), player) .or(player), indexOfSeat); @@ -333,7 +337,7 @@ public boolean canInteractWithBlock(Player player, BlockPos localPos, double dis public boolean canInteractWithBlock(Player player, Vec3 localPos, double distance) { BlockPos pos = BlockPos.containing(toGlobalVector(localPos, 0)); - return player.canInteractWithBlock(pos, distance); + return player.isWithinBlockInteractionRange(pos, distance); } public Vec3 toGlobalVector(Vec3 localVec, float partialTicks) { @@ -413,8 +417,7 @@ public void alignPassenger(Entity passenger) { float prevAngle = living.getYRot(); float angle = AngleHelper.deg(-Mth.atan2(motion.x, motion.z)); angle = AngleHelper.angleLerp(0.4f, prevAngle, angle); - if (level().isClientSide) { - living.lerpTo(0, 0, 0, 0, 0, 0); + if (level().isClientSide()) { living.lerpHeadTo(0, 0); living.setYRot(angle); living.setXRot(0); @@ -438,7 +441,7 @@ public void setBlock(BlockPos localPos, StructureBlockInfo newInfo) { public void tickActors() { boolean stalledPreviously = contraption.stalled; - if (!level().isClientSide) + if (!level().isClientSide()) contraption.stalled = false; skipActorStop = true; @@ -494,7 +497,7 @@ public void tickActors() { } } - if (!level().isClientSide) { + if (!level().isClientSide()) { if (!stalledPreviously && contraption.stalled) onContraptionStalled(); entityData.set(STALLED, contraption.stalled); @@ -609,8 +612,10 @@ public void writeSpawnData(RegistryFriendlyByteBuf registryFriendlyByteBuf) { } @Override - protected final void addAdditionalSaveData(CompoundTag compound) { + protected final void addAdditionalSaveData(ValueOutput output) { + CompoundTag compound = new CompoundTag(); writeAdditional(compound, registryAccess(), false); + LegacyBlockEntityTagBridge.store(output, compound); } protected void writeAdditional(CompoundTag compound, HolderLookup.Provider registries, boolean spawnPacket) { @@ -629,8 +634,8 @@ public void readSpawnData(RegistryFriendlyByteBuf registryFriendlyByteBuf) { } @Override - protected final void readAdditionalSaveData(CompoundTag compound) { - readAdditional(compound, false); + protected final void readAdditionalSaveData(ValueInput input) { + readAdditional(LegacyBlockEntityTagBridge.read(input), false); } @Nullable @@ -647,10 +652,10 @@ protected void readAdditional(CompoundTag compound, boolean spawnData) { if (compound.isEmpty()) return; - initialized = compound.getBoolean("Initialized"); - contraption = Contraption.fromNBT(level(), compound.getCompound("Contraption"), spawnData); + initialized = compound.getBooleanOr("Initialized", false); + contraption = Contraption.fromNBT(level(), compound.getCompoundOrEmpty("Contraption"), spawnData); contraption.entity = this; - entityData.set(STALLED, compound.getBoolean("Stalled")); + entityData.set(STALLED, compound.getBooleanOr("Stalled", false)); } public void disassemble() { @@ -691,7 +696,7 @@ private void moveCollidedEntitiesOnDisassembly(StructureTransform transform) { for (Entity entity : collidingEntities.keySet()) { Vec3 localVec = toLocalVector(entity.position(), 0); Vec3 transformed = transform.apply(localVec); - if (level().isClientSide) + if (level().isClientSide()) entity.setPos(transformed.x, transformed.y + 1 / 16f, transformed.z); else entity.teleportTo(transformed.x, transformed.y + 1 / 16f, transformed.z); @@ -700,7 +705,7 @@ private void moveCollidedEntitiesOnDisassembly(StructureTransform transform) { @Override public void remove(RemovalReason p_146834_) { - if (!level().isClientSide && !isRemoved() && contraption != null && !skipActorStop) + if (!level().isClientSide() && !isRemoved() && contraption != null && !skipActorStop) contraption.stop(level()); super.remove(p_146834_); } @@ -708,9 +713,9 @@ public void remove(RemovalReason p_146834_) { protected abstract StructureTransform makeStructureTransform(); @Override - public void kill() { + public void kill(ServerLevel level) { ejectPassengers(); - super.kill(); + super.kill(level); } @Override @@ -736,19 +741,16 @@ public boolean isStalled() { return entityData.get(STALLED); } - @OnlyIn(Dist.CLIENT) static void handleStallPacket(ContraptionStallPacket packet) { if (Minecraft.getInstance().level.getEntity(packet.entityId()) instanceof AbstractContraptionEntity ce) ce.handleStallInformation(packet.x(), packet.y(), packet.z(), packet.angle()); } - @OnlyIn(Dist.CLIENT) static void handleBlockChangedPacket(ContraptionBlockChangedPacket packet) { if (Minecraft.getInstance().level.getEntity(packet.entityId()) instanceof AbstractContraptionEntity ce) ce.handleBlockChange(packet.localPos(), packet.newState()); } - @OnlyIn(Dist.CLIENT) static void handleDisassemblyPacket(ContraptionDisassemblyPacket packet) { if (Minecraft.getInstance().level.getEntity(packet.entityId()) instanceof AbstractContraptionEntity ce) ce.moveCollidedEntitiesOnDisassembly(packet.transform()); @@ -758,7 +760,6 @@ static void handleDisassemblyPacket(ContraptionDisassemblyPacket packet) { protected abstract void handleStallInformation(double x, double y, double z, float angle); - @OnlyIn(Dist.CLIENT) protected void handleBlockChange(BlockPos localPos, BlockState newState) { if (contraption == null || !contraption.blocks.containsKey(localPos)) return; @@ -770,7 +771,7 @@ protected void handleBlockChange(BlockPos localPos, BlockState newState) { } @Override - public CompoundTag saveWithoutId(CompoundTag nbt) { + public void saveWithoutId(ValueOutput output) { Vec3 vec = position(); List passengers = getPassengers(); @@ -787,8 +788,7 @@ public CompoundTag saveWithoutId(CompoundTag nbt) { entity.removalReason = null; } - CompoundTag tag = super.saveWithoutId(nbt); - return tag; + super.saveWithoutId(output); } @Override @@ -811,7 +811,7 @@ public boolean isPickable() { } @Override - public boolean hurt(DamageSource source, float amount) { + public boolean hurtServer(ServerLevel level, DamageSource source, float amount) { return false; } @@ -864,7 +864,6 @@ public boolean hasExactlyOnePlayerPassenger() { return false; } - @OnlyIn(Dist.CLIENT) public abstract void applyLocalTransforms(PoseStack matrixStack, float partialTicks); public static class ContraptionRotationState { @@ -902,7 +901,7 @@ public float getYawOffset() { } @Override - protected boolean updateInWaterStateAndDoFluidPushing() { + protected boolean updateFluidInteraction() { /* * Override this with an empty method to reduce enormous calculation time when * contraptions are in water WARNING: THIS HAS A BUNCH OF SIDE EFFECTS! - Fluids diff --git a/src/main/java/com/simibubi/create/content/contraptions/AssemblyException.java b/src/main/java/com/simibubi/create/content/contraptions/AssemblyException.java index 27725f045f..eab949a14d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/AssemblyException.java +++ b/src/main/java/com/simibubi/create/content/contraptions/AssemblyException.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; import com.simibubi.create.infrastructure.config.AllConfigs; import net.minecraft.core.BlockPos; @@ -20,7 +21,7 @@ public static void write(CompoundTag compound, HolderLookup.Provider registries, return; CompoundTag nbt = new CompoundTag(); - nbt.putString("Component", Component.Serializer.toJson(exception.component, registries)); + nbt.putString("Component", LegacyComponentSerializationBridge.toJson(exception.component, registries)); if (exception.hasPosition()) nbt.putLong("Position", exception.getPosition() .asLong()); @@ -32,11 +33,11 @@ public static AssemblyException read(CompoundTag compound, HolderLookup.Provider if (!compound.contains("LastException")) return null; - CompoundTag nbt = compound.getCompound("LastException"); - String string = nbt.getString("Component"); - AssemblyException exception = new AssemblyException(Component.Serializer.fromJson(string, registries)); + CompoundTag nbt = compound.getCompoundOrEmpty("LastException"); + String string = nbt.getStringOr("Component", ""); + AssemblyException exception = new AssemblyException(LegacyComponentSerializationBridge.fromJson(string, registries)); if (nbt.contains("Position")) - exception.position = BlockPos.of(nbt.getLong("Position")); + exception.position = BlockPos.of(nbt.getLongOr("Position", 0)); return exception; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java index ac369c53f2..3124f9b5de 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/Contraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/Contraption.java @@ -79,12 +79,13 @@ import it.unimi.dsi.fastutil.objects.Object2BooleanArrayMap; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.UniqueLinkedList; -import net.createmod.catnip.math.BBHelper; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.UniqueLinkedList; +import net.createmod.catnip.api.math.BBHelper; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTProcessors; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -96,9 +97,9 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; -import net.minecraft.network.protocol.game.DebugPackets; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.ProblemReporter; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.ai.village.poi.PoiTypes; import net.minecraft.world.item.ItemStack; @@ -118,19 +119,17 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.ChestType; import net.minecraft.world.level.block.state.properties.PistonType; -import net.minecraft.world.level.chunk.HashMapPalette; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.level.storage.TagValueInput; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.neoforge.registries.GameData; - public abstract class Contraption { public final CollisionList simplifiedEntityColliders = new CollisionList(); @@ -225,7 +224,7 @@ protected boolean addToInitialFrontier(Level world, BlockPos pos, Direction forc } public static Contraption fromNBT(Level world, CompoundTag nbt, boolean spawnData) { - String type = nbt.getString("Type"); + String type = nbt.getStringOr("Type", ""); Contraption contraption = ContraptionType.fromType(type); contraption.readNBT(world, nbt, spawnData); contraption.collisionLevel = new ContraptionWorld(world, contraption); @@ -284,7 +283,7 @@ public void onEntityCreated(AbstractContraptionEntity entity) { } public void onEntityInitialize(Level world, AbstractContraptionEntity contraptionEntity) { - if (world.isClientSide) + if (world.isClientSide()) return; for (OrientedContraptionEntity orientedCE : world.getEntitiesOfClass(OrientedContraptionEntity.class, @@ -689,13 +688,13 @@ protected void captureMultiblock(BlockPos localPos, StructureBlockInfo structure BlockPos controllerPos = localPos; if (nbt.contains("Controller")) controllerPos = toLocalPos(NBTHelper.readBlockPos(nbt, "Controller")); - nbt.put("Controller", NbtUtils.writeBlockPos(controllerPos)); + nbt.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controllerPos)); if (updateTags.containsKey(localPos)) - updateTags.get(localPos).put("Controller", NbtUtils.writeBlockPos(controllerPos)); + updateTags.get(localPos).put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controllerPos)); if (multiBlockBE.isController() && multiBlockBE.getHeight() <= 1 && multiBlockBE.getWidth() <= 1) { - nbt.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + nbt.put("LastKnownPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); return; } @@ -736,17 +735,17 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { readBlocksCompound(blocks, world, usePalettedDeserialization); capturedMultiblocks.clear(); - nbt.getList("CapturedMultiblocks", Tag.TAG_COMPOUND).forEach(c -> { + nbt.getListOrEmpty("CapturedMultiblocks").forEach(c -> { CompoundTag tag = (CompoundTag) c; - if (!tag.contains("Controller", Tag.TAG_COMPOUND) && !tag.contains("Parts", Tag.TAG_LIST)) + if (!tag.contains("Controller") && !tag.contains("Parts")) return; BlockPos controllerPos = NBTHelper.readBlockPos(tag, "Controller"); - tag.getList("Parts", Tag.TAG_COMPOUND) + tag.getListOrEmpty("Parts") .forEach(part -> { CompoundTag cPart = (CompoundTag) part; BlockPos partPos = cPart.contains("Pos") ? NBTHelper.readBlockPos(cPart, "Pos") - : new BlockPos(cPart.getInt("X"), cPart.getInt("Y"), cPart.getInt("Z")); + : new BlockPos(cPart.getIntOr("X", 0), cPart.getIntOr("Y", 0), cPart.getIntOr("Z", 0)); StructureBlockInfo partInfo = this.blocks.get(partPos); capturedMultiblocks.put(controllerPos, partInfo); }); @@ -755,7 +754,7 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { storage.read(nbt, world.registryAccess(), spawnData, this); actors.clear(); - nbt.getList("Actors", Tag.TAG_COMPOUND) + nbt.getListOrEmpty("Actors") .forEach(c -> { CompoundTag comp = (CompoundTag) c; StructureBlockInfo info = this.blocks.get(NBTHelper.readBlockPos(comp, "Pos")); @@ -765,29 +764,31 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { getActors().add(MutablePair.of(info, context)); }); - disabledActors = NBTHelper.readItemList(nbt.getList("DisabledActors", Tag.TAG_COMPOUND), world.registryAccess()); + disabledActors = NBTHelper.readItemList(nbt.getListOrEmpty("DisabledActors"), world.registryAccess()); for (ItemStack stack : disabledActors) setActorsActive(stack, false); superglue.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Superglue", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Superglue"), c -> superglue.add(SuperGlueEntity.readBoundingBox(c))); seats.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Seats", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Seats"), c -> seats.add(c.contains("Pos") ? NBTHelper.readBlockPos(c, "Pos") - : new BlockPos(c.getInt("X"), c.getInt("Y"), c.getInt("Z")))); + : new BlockPos(c.getIntOr("X", 0), c.getIntOr("Y", 0), c.getIntOr("Z", 0)))); seatMapping.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Passengers", Tag.TAG_COMPOUND), - c -> seatMapping.put(NbtUtils.loadUUID(NBTHelper.getINBT(c, "Id")), c.getInt("Seat"))); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Passengers"), + c -> seatMapping.put(com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(NBTHelper.getINBT(c, "Id")), c.getIntOr("Seat", 0))); stabilizedSubContraptions.clear(); - NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", Tag.TAG_COMPOUND), - c -> stabilizedSubContraptions.put(c.getUUID("Id"), BlockFace.fromNBT(c.getCompound("Location")))); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("SubContraptions"), + c -> stabilizedSubContraptions.put(com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(c.get("Id")), + CatnipCodecUtils.decode(BlockFace.CODEC, c.getCompoundOrEmpty("Location")) + .orElse(new BlockFace(BlockPos.ZERO, Direction.UP)))); interactors.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Interactors", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Interactors"), c -> { BlockPos pos = NBTHelper.readBlockPos(c, "Pos"); StructureBlockInfo structureBlockInfo = getBlocks().get(pos); if (structureBlockInfo == null) @@ -798,16 +799,16 @@ public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { }); if (nbt.contains("BoundsFront")) - bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", Tag.TAG_FLOAT)); + bounds = NBTHelper.readAABB(nbt.getListOrEmpty("BoundsFront")); - stalled = nbt.getBoolean("Stalled"); - hasUniversalCreativeCrate = nbt.getBoolean("BottomlessSupply"); + stalled = nbt.getBooleanOr("Stalled", false); + hasUniversalCreativeCrate = nbt.getBooleanOr("BottomlessSupply", false); anchor = NBTHelper.readBlockPos(nbt, "Anchor"); } public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacket) { CompoundTag nbt = new CompoundTag(); - ResourceLocation typeId = this.getType().holder.key().location(); + Identifier typeId = this.getType().holder.key().identifier(); nbt.putString("Type", typeId.toString()); CompoundTag blocksNBT = writeBlocksCompound(spawnPacket); @@ -815,13 +816,13 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke ListTag multiblocksNBT = new ListTag(); capturedMultiblocks.keySet().forEach(controllerPos -> { CompoundTag tag = new CompoundTag(); - tag.put("Controller", NbtUtils.writeBlockPos(controllerPos)); + tag.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controllerPos)); Collection multiblockParts = capturedMultiblocks.get(controllerPos); ListTag partsNBT = new ListTag(); multiblockParts.forEach(info -> { CompoundTag c = new CompoundTag(); - c.put("Pos", NbtUtils.writeBlockPos(info.pos())); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(info.pos())); partsNBT.add(c); }); tag.put("Parts", partsNBT); @@ -835,7 +836,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke if (behaviour == null) continue; CompoundTag compound = new CompoundTag(); - compound.put("Pos", NbtUtils.writeBlockPos(actor.left.pos())); + compound.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(actor.left.pos())); behaviour.writeExtraData(actor.right); actor.right.writeToNBT(compound); actorsNBT.add(compound); @@ -857,27 +858,27 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke ListTag interactorNBT = new ListTag(); for (BlockPos pos : interactors.keySet()) { CompoundTag c = new CompoundTag(); - c.put("Pos", NbtUtils.writeBlockPos(pos)); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); interactorNBT.add(c); } nbt.put("Seats", NBTHelper.writeCompoundList(getSeats(), pos -> { CompoundTag c = new CompoundTag(); - c.put("Pos", NbtUtils.writeBlockPos(pos)); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); return c; })); nbt.put("Passengers", NBTHelper.writeCompoundList(getSeatMapping().entrySet(), e -> { CompoundTag tag = new CompoundTag(); - tag.put("Id", NbtUtils.createUUID(e.getKey())); + tag.put("Id", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(e.getKey())); tag.putInt("Seat", e.getValue()); return tag; })); nbt.put("SubContraptions", NBTHelper.writeCompoundList(stabilizedSubContraptions.entrySet(), e -> { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", e.getKey()); - tag.put("Location", e.getValue() - .serializeNBT()); + tag.put("Id", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(e.getKey())); + CatnipCodecUtils.encode(BlockFace.CODEC, e.getValue()) + .ifPresent(location -> tag.put("Location", location)); return tag; })); @@ -887,7 +888,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke nbt.put("DisabledActors", disabledActorsNBT); nbt.put("Interactors", interactorNBT); nbt.put("Superglue", superglueNBT); - nbt.put("Anchor", NbtUtils.writeBlockPos(anchor)); + nbt.put("Anchor", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(anchor)); nbt.putBoolean("Stalled", stalled); nbt.putBoolean("BottomlessSupply", hasUniversalCreativeCrate); @@ -905,13 +906,15 @@ public void writeStorage(CompoundTag nbt, HolderLookup.Provider registries, bool private CompoundTag writeBlocksCompound(boolean spawnPacket) { CompoundTag compound = new CompoundTag(); - HashMapPalette palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { - throw new IllegalStateException("Palette Map index exceeded maximum"); - }); + List palette = new ArrayList<>(); + Map paletteLookup = new HashMap<>(); ListTag blockList = new ListTag(); for (StructureBlockInfo block : this.blocks.values()) { - int id = palette.idFor(block.state()); + int id = paletteLookup.computeIfAbsent(block.state(), state -> { + palette.add(state); + return palette.size() - 1; + }); BlockPos pos = block.pos(); CompoundTag c = new CompoundTag(); c.putLong("Pos", pos.asLong()); @@ -942,8 +945,8 @@ private CompoundTag writeBlocksCompound(boolean spawnPacket) { } ListTag paletteNBT = new ListTag(); - for (int i = 0; i < palette.getSize(); ++i) - paletteNBT.add(NbtUtils.writeBlockState(palette.values.byId(i))); + for (BlockState state : palette) + paletteNBT.add(NbtUtils.writeBlockState(state)); compound.put("Palette", paletteNBT); compound.put("BlockList", blockList); @@ -957,20 +960,17 @@ private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDe isLegacy.clear(); HolderGetter holderGetter = world.holderLookup(Registries.BLOCK); - HashMapPalette palette = null; + List palette = null; ListTag blockList; if (usePalettedDeserialization) { CompoundTag c = ((CompoundTag) compound); - palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { - throw new IllegalStateException("Palette Map index exceeded maximum"); - }); + palette = new ArrayList<>(); - ListTag list = c.getList("Palette", Tag.TAG_COMPOUND); - palette.values.clear(); + ListTag list = c.getListOrEmpty("Palette"); for (int i = 0; i < list.size(); ++i) - palette.values.add(NbtUtils.readBlockState(holderGetter, list.getCompound(i))); + palette.add(NbtUtils.readBlockState(holderGetter, list.getCompoundOrEmpty(i))); - blockList = c.getList("BlockList", Tag.TAG_COMPOUND); + blockList = c.getListOrEmpty("BlockList"); } else { blockList = (ListTag) compound; } @@ -982,8 +982,8 @@ private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDe this.blocks.put(info.pos(), info); - if (c.contains("UpdateTag", Tag.TAG_COMPOUND)) { - CompoundTag updateTag = c.getCompound("UpdateTag"); + if (c.contains("UpdateTag")) { + CompoundTag updateTag = c.getCompoundOrEmpty("UpdateTag"); // it's very important that empty tags are read here. see writeBlocksCompound this.updateTags.put(info.pos(), updateTag); } @@ -997,16 +997,17 @@ private void readBlocksCompound(Tag compound, Level world, boolean usePalettedDe } private static StructureBlockInfo readStructureBlockInfo(CompoundTag blockListEntry, - HashMapPalette palette) { - return new StructureBlockInfo(BlockPos.of(blockListEntry.getLong("Pos")), - Objects.requireNonNull(palette.valueFor(blockListEntry.getInt("State"))), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); + List palette) { + int stateId = blockListEntry.getIntOr("State", 0); + return new StructureBlockInfo(BlockPos.of(blockListEntry.getLongOr("Pos", 0L)), + Objects.requireNonNull(palette.get(stateId)), + blockListEntry.contains("Data") ? blockListEntry.getCompoundOrEmpty("Data") : null); } private static StructureBlockInfo legacyReadStructureBlockInfo(CompoundTag blockListEntry, HolderGetter holderGetter) { return new StructureBlockInfo(NBTHelper.readBlockPos(blockListEntry, "Pos"), - NbtUtils.readBlockState(holderGetter, blockListEntry.getCompound("Block")), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); + NbtUtils.readBlockState(holderGetter, blockListEntry.getCompoundOrEmpty("Block")), + blockListEntry.contains("Data") ? blockListEntry.getCompoundOrEmpty("Data") : null); } public void removeBlocksFromWorld(Level world, BlockPos offset) { @@ -1091,7 +1092,6 @@ public void removeBlocksFromWorld(Level world, BlockPos offset) { .execute(() -> { serverWorld.getPoiManager() .add(add, poiType); - DebugPackets.sendPoiAddedPacket(serverWorld, add); }); }); @@ -1123,15 +1123,15 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { if (nonBrittles) for (Direction face : Iterate.directions) - state = state.updateShape(face, world.getBlockState(targetPos.relative(face)), world, targetPos, - targetPos.relative(face)); + state = state.updateShape(world, world, targetPos, face, targetPos.relative(face), + world.getBlockState(targetPos.relative(face)), world.getRandom()); BlockState blockState = world.getBlockState(targetPos); if (blockState.getDestroySpeed(world, targetPos) == -1 || (state.getCollisionShape(world, targetPos) .isEmpty() && !blockState.getCollisionShape(world, targetPos) .isEmpty())) { - if (targetPos.getY() == world.getMinBuildHeight()) + if (targetPos.getY() == world.getMinY()) targetPos = targetPos.above(); world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, targetPos, Block.getId(state)); if (shouldDropBlocks) { @@ -1189,12 +1189,12 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { if (blockEntity instanceof IMultiBlockEntityContainer) { if (tag.contains("LastKnownPos") || capturedMultiblocks.isEmpty()) { - tag.put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + tag.put("LastKnownPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); tag.remove("Controller"); } } - blockEntity.loadWithComponents(tag, world.registryAccess()); + blockEntity.loadWithComponents(TagValueInput.create(ProblemReporter.DISCARDING, world.registryAccess(), tag)); } storage.unmount(world, block, targetPos, blockEntity); @@ -1216,7 +1216,7 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { for (AABB box : superglue) { box = new AABB(transform.apply(new Vec3(box.minX, box.minY, box.minZ)), transform.apply(new Vec3(box.maxX, box.maxY, box.maxZ))); - if (!world.isClientSide) + if (!world.isClientSide()) world.addFreshEntity(new SuperGlueEntity(world, box)); } } @@ -1224,7 +1224,7 @@ public void addBlocksToWorld(Level world, StructureTransform transform) { protected void translateMultiblockControllers(StructureTransform transform) { if (transform.rotationAxis != null && transform.rotationAxis != Axis.Y && transform.rotation != Rotation.NONE) { capturedMultiblocks.values().forEach(info -> { - info.nbt().put("LastKnownPos", NbtUtils.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); + info.nbt().put("LastKnownPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(BlockPos.ZERO.below(Integer.MAX_VALUE - 1))); }); return; } @@ -1239,7 +1239,7 @@ protected void translateMultiblockControllers(StructureTransform transform) { BlockPos newControllerPos = new BlockPos(boundingBox.minX(), boundingBox.minY(), boundingBox.minZ()); BlockPos otherPos = transform.unapply(newControllerPos); - multiblockParts.forEach(info -> info.nbt().put("Controller", NbtUtils.writeBlockPos(newControllerPos))); + multiblockParts.forEach(info -> info.nbt().put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(newControllerPos))); if (controllerPos.equals(otherPos)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionBlockChangedPacket.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionBlockChangedPacket.java index d6f6276176..a0b157ae8b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionBlockChangedPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionBlockChangedPacket.java @@ -3,15 +3,14 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.level.block.state.BlockState; import io.netty.buffer.ByteBuf; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionBlockChangedPacket(int entityId, BlockPos localPos, BlockState newState) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -22,8 +21,7 @@ public record ContraptionBlockChangedPacket(int entityId, BlockPos localPos, Blo ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { AbstractContraptionEntity.handleBlockChangedPacket(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java index a5ba82778b..a540eae759 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionCollider.java @@ -29,9 +29,10 @@ import com.simibubi.create.foundation.damageTypes.CreateDamageSources; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.infrastructure.config.AllConfigs; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.multiplayer.ClientPacketListener; @@ -63,7 +64,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ContraptionCollider { @@ -75,7 +75,7 @@ enum PlayerType { private static Map> remoteSafetyLocks = new WeakHashMap<>(); static void collideEntities(AbstractContraptionEntity contraptionEntity) { - Level world = contraptionEntity.getCommandSenderWorld(); + Level world = contraptionEntity.level(); Contraption contraption = contraptionEntity.getContraption(); AABB bounds = contraptionEntity.getBoundingBox(); @@ -296,7 +296,7 @@ && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { entity.fallDistance = 0; for (Entity rider : entity.getIndirectPassengers()) if (getPlayerType(rider) == PlayerType.CLIENT) - CatnipServices.NETWORK.sendToServer(new ClientMotionPacket(rider.getDeltaMovement(), true, 0)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ClientMotionPacket(rider.getDeltaMovement(), true, 0)); boolean canWalk = bounce != 0 || slide == 0; if (canWalk || !rotation.hasVerticalRotation()) { if (canWalk) @@ -320,7 +320,7 @@ && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { float limbSwing = Mth.sqrt((float) (d0 * d0 + d1 * d1)) * 4.0F; if (limbSwing > 1.0F) limbSwing = 1.0F; - CatnipServices.NETWORK.sendToServer(new ClientMotionPacket(entityMotion, true, limbSwing)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ClientMotionPacket(entityMotion, true, limbSwing)); if (entity.onGround() && contraption instanceof TranslatingContraption) { safetyLock.setLeft(new WeakReference<>(contraptionEntity)); @@ -332,7 +332,6 @@ && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { private static int packetCooldown = 0; - @OnlyIn(Dist.CLIENT) private static void saveClientPlayerFromClipping(AbstractContraptionEntity contraptionEntity, Vec3 contraptionMotion) { LocalPlayer entity = Minecraft.getInstance().player; @@ -350,7 +349,7 @@ private static void saveClientPlayerFromClipping(AbstractContraptionEntity contr if (packetCooldown > 0) packetCooldown--; if (packetCooldown == 0) { - CatnipServices.NETWORK.sendToServer(new ContraptionColliderLockPacketRequest(contraptionEntity.getId(), currentDiff)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ContraptionColliderLockPacketRequest(contraptionEntity.getId(), currentDiff)); packetCooldown = 3; } } @@ -371,7 +370,6 @@ private static void saveClientPlayerFromClipping(AbstractContraptionEntity contr safetyLock.setLeft(null); } - @OnlyIn(Dist.CLIENT) public static void lockPacketReceived(int contraptionId, int remotePlayerId, double suggestedOffset) { ClientLevel level = Minecraft.getInstance().level; if (!(level.getEntity(contraptionId) instanceof ControlledContraptionEntity contraptionEntity)) @@ -382,7 +380,6 @@ public static void lockPacketReceived(int contraptionId, int remotePlayerId, dou .put(player, suggestedOffset); } - @OnlyIn(Dist.CLIENT) private static void saveRemotePlayerFromClipping(Player entity, AbstractContraptionEntity contraptionEntity, Vec3 contraptionMotion) { if (entity.isPassenger()) @@ -396,7 +393,6 @@ private static void saveRemotePlayerFromClipping(Player entity, AbstractContrapt locksOnThisContraption.remove(entity); } - @OnlyIn(Dist.CLIENT) private static boolean savePlayerFromClipping(Player entity, AbstractContraptionEntity contraptionEntity, Vec3 contraptionMotion, double yStartOffset) { AABB bb = entity.getBoundingBox() @@ -462,7 +458,7 @@ private static Vec3 handleDamageFromTrain(Level world, AbstractContraptionEntity return entityMotion; if (playerType == PlayerType.CLIENT) { - CatnipServices.NETWORK.sendToServer(new TrainCollisionPacket((int) (damage * 16), contraptionEntity.getId())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrainCollisionPacket((int) (damage * 16), contraptionEntity.getId())); world.playSound((Player) entity, entity.blockPosition(), SoundEvents.PLAYER_ATTACK_CRIT, SoundSource.NEUTRAL, 1, .75f); } else { @@ -567,14 +563,13 @@ static Vec3 collide(Vec3 p_20273_, Entity e) { private static PlayerType getPlayerType(Entity entity) { if (!(entity instanceof Player)) return PlayerType.NONE; - if (!entity.level().isClientSide) + if (!entity.level().isClientSide()) return PlayerType.SERVER; MutableBoolean isClient = new MutableBoolean(false); CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> isClient.setValue(isClientPlayerEntity(entity))); return isClient.booleanValue() ? PlayerType.CLIENT : PlayerType.REMOTE; } - @OnlyIn(Dist.CLIENT) private static boolean isClientPlayerEntity(Entity entity) { return entity instanceof LocalPlayer; } @@ -611,7 +606,7 @@ public static boolean collideBlocks(AbstractContraptionEntity contraptionEntity) if (!contraptionEntity.supportsTerrainCollision()) return false; - Level world = contraptionEntity.getCommandSenderWorld(); + Level world = contraptionEntity.level(); Vec3 motion = contraptionEntity.getDeltaMovement(); TranslatingContraption contraption = (TranslatingContraption) contraptionEntity.getContraption(); AABB bounds = contraptionEntity.getBoundingBox(); @@ -625,7 +620,7 @@ public static boolean collideBlocks(AbstractContraptionEntity contraptionEntity) if (motion.equals(Vec3.ZERO)) return false; - Direction movementDirection = Direction.getNearest(motion.x, motion.y, motion.z); + Direction movementDirection = LegacyDirectionBridge.nearest(motion.x, motion.y, motion.z, Direction.NORTH); // Blocks in the world if (movementDirection.getAxisDirection() == AxisDirection.POSITIVE) diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionColliderLockPacket.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionColliderLockPacket.java index c48832054e..af8658b48c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionColliderLockPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionColliderLockPacket.java @@ -2,16 +2,15 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.createmod.catnip.net.base.ServerboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerPlayer; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionColliderLockPacket(int contraption, double offset, int sender) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -22,8 +21,7 @@ public record ContraptionColliderLockPacket(int contraption, double offset, int ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { ContraptionCollider.lockPacketReceived(contraption, sender, offset); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionDisassemblyPacket.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionDisassemblyPacket.java index 6ca63187bd..e7ebc144f7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionDisassemblyPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionDisassemblyPacket.java @@ -3,12 +3,11 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import io.netty.buffer.ByteBuf; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionDisassemblyPacket(int entityId, StructureTransform transform) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -18,8 +17,7 @@ public record ContraptionDisassemblyPacket(int entityId, StructureTransform tran ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { AbstractContraptionEntity.handleDisassemblyPacket(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandler.java index b909708607..0c1ed8397f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandler.java @@ -9,8 +9,8 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectLists; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.entity.Entity; @@ -62,16 +62,16 @@ public static void addSpawnedContraptionsToCollisionList(Entity entity, Level wo } public static void entitiesWhoJustDismountedGetSentToTheRightLocation(LivingEntity entityLiving, Level world) { - if (!world.isClientSide) + if (!world.isClientSide()) return; CompoundTag data = entityLiving.getPersistentData(); if (!data.contains("ContraptionDismountLocation")) return; - Vec3 position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", Tag.TAG_DOUBLE)); + Vec3 position = VecHelper.readNBT(data.getListOrEmpty("ContraptionDismountLocation")); if (entityLiving.getVehicle() == null) - entityLiving.absMoveTo(position.x, position.y, position.z, entityLiving.getYRot(), entityLiving.getXRot()); + entityLiving.teleportTo(position.x, position.y, position.z); data.remove("ContraptionDismountLocation"); entityLiving.setOnGround(false); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandlerClient.java index a2f3cebc44..d00ada145d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionHandlerClient.java @@ -13,12 +13,11 @@ import com.simibubi.create.foundation.utility.RaycastHelper; import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.RemotePlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -33,7 +32,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.client.event.InputEvent; @@ -43,7 +41,6 @@ public class ContraptionHandlerClient { @SubscribeEvent - @OnlyIn(Dist.CLIENT) public static void preventRemotePlayersWalkingAnimations(PlayerTickEvent.Post event) { if (!(event.getEntity() instanceof RemotePlayer remotePlayer)) return; @@ -52,7 +49,7 @@ public static void preventRemotePlayersWalkingAnimations(PlayerTickEvent.Post ev if (!data.contains("LastOverrideLimbSwingUpdate")) return; - int lastOverride = data.getInt("LastOverrideLimbSwingUpdate"); + int lastOverride = data.getIntOr("LastOverrideLimbSwingUpdate", 0); data.putInt("LastOverrideLimbSwingUpdate", lastOverride + 1); if (lastOverride > 5) { data.remove("LastOverrideLimbSwingUpdate"); @@ -60,16 +57,15 @@ public static void preventRemotePlayersWalkingAnimations(PlayerTickEvent.Post ev return; } - float limbSwing = data.getFloat("OverrideLimbSwing"); + float limbSwing = data.getFloatOr("OverrideLimbSwing", 0); remotePlayer.xo = remotePlayer.getX() - (limbSwing / 4); remotePlayer.zo = remotePlayer.getZ(); } @SubscribeEvent - @OnlyIn(Dist.CLIENT) public static void rightClickingOnContraptionsGetsHandledLocally(InputEvent.InteractionKeyMappingTriggered event) { Minecraft mc = Minecraft.getInstance(); - LocalPlayer player = mc.player; + Player player = mc.player; if (player == null) return; @@ -122,7 +118,7 @@ public static void rightClickingOnContraptionsGetsHandledLocally(InputEvent.Inte BlockPos pos = bestResult.getBlockPos(); if (bestEntity.handlePlayerInteraction(player, pos, face, hand)) { - CatnipServices.NETWORK.sendToServer(new ContraptionInteractionPacket(bestEntity, hand, pos, face)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ContraptionInteractionPacket(bestEntity, hand, pos, face)); } else handleSpecialInteractions(bestEntity, player, pos, face, hand); @@ -138,8 +134,7 @@ private static boolean handleSpecialInteractions(AbstractContraptionEntity contr return false; } - @OnlyIn(Dist.CLIENT) - public static Couple getRayInputs(LocalPlayer player) { + public static Couple getRayInputs(Player player) { Minecraft mc = Minecraft.getInstance(); Vec3 origin = player.getEyePosition(); double reach = player.blockInteractionRange(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionRelocationPacket.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionRelocationPacket.java index 7e7d85b750..66156b6460 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionRelocationPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionRelocationPacket.java @@ -4,11 +4,10 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionRelocationPacket(int entityId) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = ByteBufCodecs.INT.map( @@ -16,8 +15,7 @@ public record ContraptionRelocationPacket(int entityId) implements ClientboundPa ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { OrientedContraptionEntity.handleRelocationPacket(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionStallPacket.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionStallPacket.java index 72bd192745..4953910468 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionStallPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionStallPacket.java @@ -4,11 +4,10 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionStallPacket(int entityId, double x, double y, double z, float angle) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -21,8 +20,7 @@ public record ContraptionStallPacket(int entityId, double x, double y, double z, ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { AbstractContraptionEntity.handleStallPacket(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/ContraptionWorld.java index f870045bae..a8d6b7ec06 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ContraptionWorld.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; @@ -55,7 +55,7 @@ public int getHeight() { } @Override - public int getMinBuildHeight() { + public int getMinY() { return minY; } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/ControlledContraptionEntity.java index a61857d040..7a45aa130c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/ControlledContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/ControlledContraptionEntity.java @@ -7,9 +7,9 @@ import com.simibubi.create.content.contraptions.behaviour.MovementContext; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -24,7 +24,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; /** * Ex: Pistons, bearings
@@ -84,13 +83,13 @@ protected void readAdditional(CompoundTag compound, boolean spawnPacket) { controllerPos = NBTHelper.readBlockPos(compound, "ControllerRelative").offset(blockPosition()); if (compound.contains("Axis")) rotationAxis = NBTHelper.readEnum(compound, "Axis", Axis.class); - angle = compound.getFloat("Angle"); + angle = compound.getFloatOr("Angle", 0); } @Override protected void writeAdditional(CompoundTag compound, HolderLookup.Provider registries, boolean spawnPacket) { super.writeAdditional(compound, registries, spawnPacket); - compound.put("ControllerRelative", NbtUtils.writeBlockPos(controllerPos.subtract(blockPosition()))); + compound.put("ControllerRelative", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controllerPos.subtract(blockPosition()))); if (rotationAxis != null) NBTHelper.writeEnum(compound, "Axis", rotationAxis); compound.putFloat("Angle", angle); @@ -141,13 +140,10 @@ public Axis getRotationAxis() { return rotationAxis; } - @Override public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) { } // Always noop this. Controlled Contraptions are given their position on the client from the BE - @Override - @OnlyIn(Dist.CLIENT) public void lerpTo(double pX, double pY, double pZ, float pYRot, float pXRot, int pSteps) { } @@ -167,7 +163,7 @@ protected void tickContraption() { } if (!controller.isAttachedTo(this)) { controller.attach(this); - if (level().isClientSide) + if (level().isClientSide()) setPos(getX(), getY(), getZ()); } } @@ -183,15 +179,15 @@ protected boolean shouldActorTrigger(MovementContext context, StructureBlockInfo return false; Direction facing = bc.getFacing(); Vec3 activeAreaOffset = actor.getActiveAreaOffset(context); - if (!activeAreaOffset.multiply(VecHelper.axisAlingedPlaneOf(Vec3.atLowerCornerOf(facing.getNormal()))) + if (!activeAreaOffset.multiply(VecHelper.axisAlingedPlaneOf(Vec3.atLowerCornerOf(facing.getUnitVec3i()))) .equals(Vec3.ZERO)) return false; if (!VecHelper.onSameAxis(blockInfo.pos(), BlockPos.ZERO, facing.getAxis())) return false; - context.motion = Vec3.atLowerCornerOf(facing.getNormal()) + context.motion = Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(angleDelta / 360.0); context.relativeMotion = context.motion; - int timer = context.data.getInt("StationaryTimer"); + int timer = context.data.getIntOr("StationaryTimer", 0); if (timer > 0) { context.data.putInt("StationaryTimer", timer - 1); return false; @@ -241,7 +237,6 @@ protected void handleStallInformation(double x, double y, double z, float angle) } @Override - @OnlyIn(Dist.CLIENT) public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { float angle = getAngle(partialTicks); Axis axis = getRotationAxis(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/DirectionalExtenderScrollOptionSlot.java b/src/main/java/com/simibubi/create/content/contraptions/DirectionalExtenderScrollOptionSlot.java index 60d815a0b3..66700c0d81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/DirectionalExtenderScrollOptionSlot.java +++ b/src/main/java/com/simibubi/create/content/contraptions/DirectionalExtenderScrollOptionSlot.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.CenteredSideValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.LevelAccessor; @@ -23,7 +23,7 @@ public DirectionalExtenderScrollOptionSlot(BiPredicate al @Override public Vec3 getLocalOffset(LevelAccessor level, BlockPos pos, BlockState state) { return super.getLocalOffset(level, pos, state) - .add(Vec3.atLowerCornerOf(state.getValue(BlockStateProperties.FACING).getNormal()).scale(-2 / 16f)); + .add(Vec3.atLowerCornerOf(state.getValue(BlockStateProperties.FACING).getUnitVec3i()).scale(-2 / 16f)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/IControlContraption.java b/src/main/java/com/simibubi/create/content/contraptions/IControlContraption.java index fdef8a6711..1cea25c519 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/IControlContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/IControlContraption.java @@ -3,7 +3,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.INamedIconOptions; import com.simibubi.create.foundation.gui.AllIcons; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; public interface IControlContraption { diff --git a/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java index 87f0e2ddbb..2d3c231a13 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java +++ b/src/main/java/com/simibubi/create/content/contraptions/IDisplayAssemblyExceptions.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.FontHelper.Palette; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/simibubi/create/content/contraptions/MountedStorageManager.java b/src/main/java/com/simibubi/create/content/contraptions/MountedStorageManager.java index 3e243929d1..bc2a34e0e4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/MountedStorageManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/MountedStorageManager.java @@ -32,8 +32,8 @@ import com.simibubi.create.content.logistics.vault.ItemVaultMountedStorage; import com.simibubi.create.impl.contraption.storage.FallbackMountedStorage; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -255,9 +255,9 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clie this.reset(); try { - NBTHelper.iterateCompoundList(nbt.getList("items", Tag.TAG_COMPOUND), tag -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("items"), tag -> { BlockPos pos = NBTHelper.readBlockPos(tag, "pos"); - CompoundTag data = tag.getCompound("storage"); + CompoundTag data = tag.getCompoundOrEmpty("storage"); // TODO - Use CatnipCodecUtils MountedItemStorage.CODEC.decode(registryOps, data) .resultOrPartial(err -> Create.LOGGER.error("Failed to deserialize mounted item storage: {}", err)) @@ -265,9 +265,9 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clie .ifPresent(storage -> this.addStorage(storage, pos)); }); - NBTHelper.iterateCompoundList(nbt.getList("fluids", Tag.TAG_COMPOUND), tag -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("fluids"), tag -> { BlockPos pos = NBTHelper.readBlockPos(tag, "pos"); - CompoundTag data = tag.getCompound("storage"); + CompoundTag data = tag.getCompoundOrEmpty("storage"); // TODO - Use CatnipCodecUtils MountedFluidStorage.CODEC.decode(registryOps, data) .resultOrPartial(err -> Create.LOGGER.error("Failed to deserialize mounted fluid storage: {}", err)) @@ -279,8 +279,9 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clie if (nbt.contains("interactable_positions")) { this.interactablePositions = new HashSet<>(); - NBTHelper.iterateCompoundList(nbt.getList("interactable_positions", Tag.TAG_COMPOUND), tag -> { - BlockPos pos = new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z")); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("interactable_positions"), tag -> { + BlockPos pos = + new BlockPos(tag.getIntOr("X", 0), tag.getIntOr("Y", 0), tag.getIntOr("Z", 0)); this.interactablePositions.add(pos); }); } @@ -317,7 +318,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli .resultOrPartial(err -> Create.LOGGER.error("Failed to serialize mounted item storage: {}", err)) .ifPresent(encoded -> { CompoundTag tag = new CompoundTag(); - tag.put("pos", NbtUtils.writeBlockPos(pos)); + tag.put("pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); tag.put("storage", encoded); items.add(tag); }); @@ -336,7 +337,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli .resultOrPartial(err -> Create.LOGGER.error("Failed to serialize mounted fluid storage: {}", err)) .ifPresent(encoded -> { CompoundTag tag = new CompoundTag(); - tag.put("pos", NbtUtils.writeBlockPos(pos)); + tag.put("pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); tag.put("storage", encoded); fluids.add(tag); }); @@ -439,30 +440,32 @@ public boolean handlePlayerStorageInteraction(Contraption contraption, Player pl } private void readLegacy(HolderLookup.Provider registries, CompoundTag nbt) { - NBTHelper.iterateCompoundList(nbt.getList("Storage", Tag.TAG_COMPOUND), tag -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Storage"), tag -> { BlockPos pos = NBTHelper.readBlockPos(tag, "Pos"); - CompoundTag data = tag.getCompound("Data"); + CompoundTag data = tag.getCompoundOrEmpty("Data"); if (data.contains("Toolbox")) { this.addStorage(ToolboxMountedStorage.fromLegacy(registries, data), pos); } else if (data.contains("NoFuel")) { this.addStorage(ItemVaultMountedStorage.fromLegacy(registries, data), pos); } else if (data.contains("Bottomless")) { - ItemStack supplied = ItemStack.parseOptional(registries, data.getCompound("ProvidedStack")); + ItemStack supplied = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge + .parseOptional(registries, data.getCompound("ProvidedStack")); this.addStorage(new CreativeCrateMountedStorage(supplied), pos); } else if (data.contains("Synced")) { this.addStorage(DepotMountedStorage.fromLegacy(registries, data), pos); } else { // we can create a fallback storage safely, it will be validated before unmounting ItemStackHandler handler = new ItemStackHandler(); - handler.deserializeNBT(registries, data); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(handler, registries, + data); this.addStorage(new FallbackMountedStorage(handler), pos); } }); - NBTHelper.iterateCompoundList(nbt.getList("FluidStorage", Tag.TAG_COMPOUND), tag -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("FluidStorage"), tag -> { BlockPos pos = NBTHelper.readBlockPos(tag, "Pos"); - CompoundTag data = tag.getCompound("Data"); + CompoundTag data = tag.getCompoundOrEmpty("Data"); if (data.contains("Bottomless")) { this.addStorage(CreativeFluidTankMountedStorage.fromLegacy(registries, data), pos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/MountedStorageSyncPacket.java b/src/main/java/com/simibubi/create/content/contraptions/MountedStorageSyncPacket.java index dbc31e3a06..19fcb66ea4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/MountedStorageSyncPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/MountedStorageSyncPacket.java @@ -9,7 +9,7 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; @@ -30,7 +30,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - public void handle(LocalPlayer player) { + public void handle(Player player) { Entity entity = Minecraft.getInstance().level.getEntity(this.contraptionId); if (!(entity instanceof AbstractContraptionEntity contraption)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java index 92ed182b68..38a0700a43 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/OrientedContraptionEntity.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.contraptions; -import static net.createmod.catnip.math.AngleHelper.angleLerp; +import static net.createmod.catnip.api.math.AngleHelper.angleLerp; import java.util.Optional; import java.util.UUID; @@ -19,12 +19,13 @@ import com.simibubi.create.content.contraptions.mounted.MountedContraption; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.mixin.accessor.MinecartFurnaceAccessor; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -39,8 +40,10 @@ import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.NewMinecartBehavior; +import net.minecraft.world.entity.vehicle.minecart.OldMinecartBehavior; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -50,7 +53,6 @@ import net.minecraft.world.level.block.state.properties.RailShape; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; /** * Ex: Minecarts, Couplings
@@ -62,7 +64,7 @@ public class OrientedContraptionEntity extends AbstractContraptionEntity { private static final Ingredient FUEL_ITEMS = Ingredient.of(Items.COAL, Items.CHARCOAL); private static final EntityDataAccessor> COUPLING = - SynchedEntityData.defineId(OrientedContraptionEntity.class, EntityDataSerializers.OPTIONAL_UUID); + SynchedEntityData.defineId(OrientedContraptionEntity.class, com.simibubi.create.AllEntityDataSerializers.OPTIONAL_UUID); private static final EntityDataAccessor INITIAL_ORIENTATION = SynchedEntityData.defineId(OrientedContraptionEntity.class, EntityDataSerializers.DIRECTION); @@ -146,7 +148,7 @@ public ContraptionRotationState getRotationState() { @Override public void stopRiding() { - if (!level().isClientSide && isAlive()) + if (!level().isClientSide() && isAlive()) disassemble(); super.stopRiding(); } @@ -158,22 +160,22 @@ protected void readAdditional(CompoundTag compound, boolean spawnPacket) { if (compound.contains("InitialOrientation")) setInitialOrientation(NBTHelper.readEnum(compound, "InitialOrientation", Direction.class)); - yaw = compound.getFloat("Yaw"); - pitch = compound.getFloat("Pitch"); - manuallyPlaced = compound.getBoolean("Placed"); + yaw = compound.getFloatOr("Yaw", 0); + pitch = compound.getFloatOr("Pitch", 0); + manuallyPlaced = compound.getBooleanOr("Placed", false); if (compound.contains("ForceYaw")) - startAtYaw(compound.getFloat("ForceYaw")); + startAtYaw(compound.getFloatOr("ForceYaw", 0)); - ListTag vecNBT = compound.getList("CachedMotion", 6); + ListTag vecNBT = compound.getListOrEmpty("CachedMotion"); if (!vecNBT.isEmpty()) { - motionBeforeStall = new Vec3(vecNBT.getDouble(0), vecNBT.getDouble(1), vecNBT.getDouble(2)); + motionBeforeStall = new Vec3(vecNBT.getDouble(0).orElse(0d), vecNBT.getDouble(1).orElse(0d), vecNBT.getDouble(2).orElse(0d)); if (!motionBeforeStall.equals(Vec3.ZERO)) targetYaw = prevYaw = yaw += yawFromVector(motionBeforeStall); setDeltaMovement(Vec3.ZERO); } - setCouplingId(compound.contains("OnCoupling") ? compound.getUUID("OnCoupling") : null); + setCouplingId(compound.contains("OnCoupling") ? LegacyNbtUtilsBridge.getUUID(compound, "OnCoupling") : null); } @Override @@ -181,7 +183,7 @@ protected void writeAdditional(CompoundTag compound, HolderLookup.Provider regis super.writeAdditional(compound, registries, spawnPacket); if (motionBeforeStall != null) - compound.put("CachedMotion", newDoubleList(motionBeforeStall.x, motionBeforeStall.y, motionBeforeStall.z)); + compound.put("CachedMotion", VecHelper.writeNBT(motionBeforeStall)); Direction optional = entityData.get(INITIAL_ORIENTATION); if (optional.getAxis() @@ -197,7 +199,7 @@ protected void writeAdditional(CompoundTag compound, HolderLookup.Provider regis compound.putFloat("Pitch", pitch); if (getCouplingId() != null) - compound.putUUID("OnCoupling", getCouplingId()); + LegacyNbtUtilsBridge.putUUID(compound, "OnCoupling", getCouplingId()); } @Override @@ -296,7 +298,7 @@ protected void tickContraption() { } } - if (level().isClientSide) + if (level().isClientSide()) return; if (!isStalled()) { @@ -367,7 +369,7 @@ protected boolean updateOrientation(boolean rotationLock, boolean wasStalled, En if (!rotationLock) { if (riding instanceof AbstractMinecart minecartEntity) { - BlockPos railPosition = minecartEntity.getCurrentRailPosition(); + BlockPos railPosition = minecartEntity.getCurrentBlockPosOrRailBelow(); BlockState blockState = level().getBlockState(railPosition); if (blockState.getBlock() instanceof BaseRailBlock abstractRailBlock) { RailShape railDirection = @@ -406,8 +408,7 @@ protected void powerFurnaceCartWithFuelFromStorage(Entity riding) { int fuel = furnaceCartAccessor.create$getFuel(); int fuelBefore = fuel; - double pushX = furnaceCart.xPush; - double pushZ = furnaceCart.zPush; + Vec3 push = furnaceCart.push; int i = Mth.floor(furnaceCart.getX()); int j = Mth.floor(furnaceCart.getY()); @@ -418,7 +419,7 @@ protected void powerFurnaceCartWithFuelFromStorage(Entity riding) { BlockPos blockpos = new BlockPos(i, j, k); BlockState blockstate = this.level().getBlockState(blockpos); - if (furnaceCart.canUseRail() && blockstate.is(BlockTags.RAILS)) + if (blockstate.is(BlockTags.RAILS)) if (fuel > 1) riding.setDeltaMovement(riding.getDeltaMovement() .normalize() @@ -432,9 +433,8 @@ protected void powerFurnaceCartWithFuelFromStorage(Entity riding) { } } - if (fuel != fuelBefore || pushX != 0 || pushZ != 0) { - furnaceCart.xPush = pushX; - furnaceCart.zPush = pushZ; + if (fuel != fuelBefore || push.x != 0 || push.z != 0) { + furnaceCart.push = push; furnaceCartAccessor.create$setFuel(fuel); } } @@ -512,7 +512,6 @@ protected void handleStallInformation(double x, double y, double z, float angle) } @Override - @OnlyIn(Dist.CLIENT) public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { float angleInitialYaw = getInitialYaw(); float angleYaw = getViewYRot(partialTicks); @@ -539,7 +538,6 @@ else if (ridingEntity instanceof AbstractContraptionEntity) { .uncenter(); } - @OnlyIn(Dist.CLIENT) private void repositionOnContraption(PoseStack matrixStack, float partialTicks, Entity ridingEntity) { Vec3 pos = getContraptionOffset(partialTicks, ridingEntity); matrixStack.translate(pos.x, pos.y, pos.z); @@ -547,7 +545,6 @@ private void repositionOnContraption(PoseStack matrixStack, float partialTicks, // Minecarts do not always render at their exact location, so the contraption // has to adjust aswell - @OnlyIn(Dist.CLIENT) private void repositionOnCart(PoseStack matrixStack, float partialTicks, Entity ridingEntity) { Vec3 cartPos = getCartOffset(partialTicks, ridingEntity); @@ -557,7 +554,6 @@ private void repositionOnCart(PoseStack matrixStack, float partialTicks, Entity matrixStack.translate(cartPos.x, cartPos.y, cartPos.z); } - @OnlyIn(Dist.CLIENT) private Vec3 getContraptionOffset(float partialTicks, Entity ridingEntity) { AbstractContraptionEntity parent = (AbstractContraptionEntity) ridingEntity; Vec3 passengerPosition = parent.getPassengerPosition(this, partialTicks); @@ -571,17 +567,24 @@ private Vec3 getContraptionOffset(float partialTicks, Entity ridingEntity) { return new Vec3(x, y, z); } - @OnlyIn(Dist.CLIENT) private Vec3 getCartOffset(float partialTicks, Entity ridingEntity) { AbstractMinecart cart = (AbstractMinecart) ridingEntity; double cartX = Mth.lerp(partialTicks, cart.xOld, cart.getX()); double cartY = Mth.lerp(partialTicks, cart.yOld, cart.getY()); double cartZ = Mth.lerp(partialTicks, cart.zOld, cart.getZ()); - Vec3 cartPos = cart.getPos(cartX, cartY, cartZ); + + if (cart.getBehavior() instanceof NewMinecartBehavior newBehavior) + return newBehavior.getCartLerpPosition(partialTicks) + .subtract(cartX, cartY, cartZ); + + if (!(cart.getBehavior() instanceof OldMinecartBehavior oldBehavior)) + return Vec3.ZERO; + + Vec3 cartPos = oldBehavior.getPos(cartX, cartY, cartZ); if (cartPos != null) { - Vec3 cartPosFront = cart.getPosOffs(cartX, cartY, cartZ, (double) 0.3F); - Vec3 cartPosBack = cart.getPosOffs(cartX, cartY, cartZ, (double) -0.3F); + Vec3 cartPosFront = oldBehavior.getPosOffs(cartX, cartY, cartZ, 0.3F); + Vec3 cartPosBack = oldBehavior.getPosOffs(cartX, cartY, cartZ, -0.3F); if (cartPosFront == null) cartPosFront = cartPos; if (cartPosBack == null) @@ -597,7 +600,6 @@ private Vec3 getCartOffset(float partialTicks, Entity ridingEntity) { return Vec3.ZERO; } - @OnlyIn(Dist.CLIENT) public static void handleRelocationPacket(ContraptionRelocationPacket packet) { if (Minecraft.getInstance().level.getEntity(packet.entityId()) instanceof OrientedContraptionEntity oce) oce.nonDamageTicks = 10; diff --git a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java index 2860f565de..9e3e6b25f2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java +++ b/src/main/java/com/simibubi/create/content/contraptions/StructureTransform.java @@ -11,9 +11,9 @@ import com.simibubi.create.api.contraption.transformable.TransformableBlockEntity; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -32,7 +32,7 @@ import net.minecraft.world.level.block.state.properties.AttachFace; import net.minecraft.world.level.block.state.properties.BellAttachType; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.SlabType; @@ -183,7 +183,7 @@ public BlockState apply(BlockState state) { } if (block instanceof FaceAttachedHorizontalDirectionalBlock) { - DirectionProperty facingProperty = FaceAttachedHorizontalDirectionalBlock.FACING; + EnumProperty facingProperty = FaceAttachedHorizontalDirectionalBlock.FACING; EnumProperty faceProperty = FaceAttachedHorizontalDirectionalBlock.FACE; Direction stateFacing = state.getValue(facingProperty); AttachFace stateFace = state.getValue(faceProperty); diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/AttachedActorBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/AttachedActorBlock.java index 20e536bd09..fd3712c419 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/AttachedActorBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/AttachedActorBlock.java @@ -7,15 +7,16 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.BlockHelper; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; @@ -26,7 +27,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public abstract class AttachedActorBlock extends HorizontalDirectionalBlock implements IWrenchable, ProperWaterloggedBlock { @@ -81,9 +81,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlock.java index b24edac181..8e965ad352 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlock.java @@ -14,6 +14,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -47,8 +48,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { withBlockEntityDo(pLevel, pPos, ContraptionControlsBlockEntity::updatePoweredState); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlockEntity.java index e599007a92..4b64a495d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsBlockEntity.java @@ -13,10 +13,10 @@ import com.simibubi.create.foundation.utility.DyeHelper; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -101,8 +101,8 @@ public void tickAnimations() { @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - disabled = tag.getBoolean("Disabled"); - powered = tag.getBoolean("Powered"); + disabled = tag.getBooleanOr("Disabled", false); + powered = tag.getBooleanOr("Powered", false); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovement.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovement.java index c600fe6475..397dcf3148 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovement.java @@ -6,19 +6,19 @@ import com.simibubi.create.content.contraptions.elevator.ElevatorContraption; import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ContraptionControlsMovement implements MovementBehaviour { @@ -51,11 +51,11 @@ public static ItemStack getFilter(MovementContext ctx) { CompoundTag blockEntityData = ctx.blockEntityData; if (blockEntityData == null) return null; - return ItemStack.parseOptional(ctx.world.registryAccess(), blockEntityData.getCompound("Filter")); + return LegacyItemStackNbtBridge.parseOptional(ctx.world.registryAccess(), blockEntityData.get("Filter")); } public static boolean isDisabledInitially(MovementContext ctx) { - return ctx.blockEntityData != null && ctx.blockEntityData.getBoolean("Disabled"); + return ctx.blockEntityData != null && ctx.blockEntityData.getBooleanOr("Disabled", false); } @Override @@ -141,7 +141,6 @@ public static void tickFloorSelection(ElevatorFloorSelection efs, ElevatorContra } @Override - @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext ctx, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { ContraptionControlsRenderer.renderInContraption(ctx, renderWorld, matrices, buffer); diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java index dfdb202398..1de87e7680 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsMovingInteraction.java @@ -18,11 +18,12 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.trains.entity.Train; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; -import net.minecraft.tags.ItemTags; +import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; @@ -101,7 +102,9 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand if (!(contraptionEntity instanceof CarriageContraptionEntity cce)) return true; - if (!filter.is(ItemTags.DOORS)) + if (!(filter.getItem() instanceof BlockItem blockItem) || !blockItem.getBlock() + .defaultBlockState() + .is(BlockTags.DOORS)) return true; // Special case: Doors are toggled on all carriages of a train @@ -139,7 +142,7 @@ private boolean elevatorInteraction(BlockPos localPos, AbstractContraptionEntity if (efs.currentTargetY == contraption.clientYTarget) return true; - CatnipServices.NETWORK.sendToServer(new ElevatorTargetFloorPacket(contraptionEntity, efs.currentTargetY)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ElevatorTargetFloorPacket(contraptionEntity, efs.currentTargetY)); if (contraption.getBlockEntityClientSide(ctx.localPos) instanceof ContraptionControlsBlockEntity cbe) cbe.pressButton(); return true; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsRenderer.java index b807b06c99..1f23d7adcf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionControlsRenderer.java @@ -13,17 +13,17 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -52,7 +52,7 @@ protected void renderSafe(ContraptionControlsBlockEntity blockEntity, float pt, super.renderSafe(blockEntity, pt, ms, buffer, light, overlay); ms.translate(buttonOffset.x, buttonOffset.y, buttonOffset.z); - VertexConsumer vc = buffer.getBuffer(RenderType.solid()); + VertexConsumer vc = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); CachedBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_BUTTON, blockState, facing) .light(light) .renderInto(ms, vc); @@ -78,7 +78,7 @@ public static void renderInContraption(MovementContext ctx, VirtualRenderWorld r float playerDistance = (float) (ctx.position == null || cameraEntity == null ? 0 : ctx.position.distanceToSqr(cameraEntity.getEyePosition())); - float flicker = renderWorld.random.nextFloat(); + float flicker = renderWorld.getRandom().nextFloat(); Couple couple = DyeHelper.getDyeColors(efs.targetYEqualsSelection ? DyeColor.WHITE : DyeColor.ORANGE); int brightColor = couple.getFirst(); int darkColor = couple.getSecond(); @@ -93,14 +93,14 @@ public static void renderInContraption(MovementContext ctx, VirtualRenderWorld r float buttondepth = 0; if (ctx.contraption.getBlockEntityClientSide(ctx.localPos) instanceof ContraptionControlsBlockEntity cbe) - buttondepth = -1 / 24f * cbe.button.getValue(AnimationTickHolder.getPartialTicks(renderWorld)); + buttondepth = -1 / 24f * cbe.button.getValue(AnimationTickHolder.getPartialTicks()); ms.pushPose(); msr.translate(ctx.localPos); ms.translate(0, buttondepth, 0); - VertexConsumer vc = buffer.getBuffer(RenderType.solid()); + VertexConsumer vc = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); CachedBuffers.partialFacing(AllPartialModels.CONTRAPTION_CONTROLS_BUTTON, ctx.state, ctx.state.getValue(ContraptionControlsBlock.FACING).getOpposite()) - .light(LevelRenderer.getLightColor(renderWorld, ctx.localPos)) + .light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(ctx.world, matrices.getWorld()) .renderInto(ms, vc); ms.popPose(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionDisableActorPacket.java b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionDisableActorPacket.java index d8dcebaf25..6b7e18f1c5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionDisableActorPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/contraptionControls/ContraptionDisableActorPacket.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.contraptions.Contraption; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -15,7 +15,6 @@ import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionDisableActorPacket(int entityId, ItemStack filter, boolean enable) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -26,9 +25,8 @@ public record ContraptionDisableActorPacket(int entityId, ItemStack filter, bool ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - Entity entityByID = player.clientLevel.getEntity(entityId); + public void handle(Player player) { + Entity entityByID = player.level().getEntity(entityId); if (!(entityByID instanceof AbstractContraptionEntity ace)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java index 6e2391fa61..29b22ae0ff 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterActorVisual.java @@ -10,9 +10,9 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -31,7 +31,7 @@ public class HarvesterActorVisual extends ActorVisual { private double previousRotation; public HarvesterActorVisual(VisualizationContext visualizationContext, VirtualRenderWorld simulationWorld, MovementContext movementContext) { - super(visualizationContext, simulationWorld, movementContext); + super(visualizationContext, movementContext.world, movementContext); BlockState state = movementContext.state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterMovementBehaviour.java index 9d1d1d8bfb..79466a029d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterMovementBehaviour.java @@ -2,8 +2,6 @@ import com.simibubi.create.compat.Mods; -import com.simibubi.create.compat.farmersdelight.FarmersDelightCompat; - import net.minecraft.world.level.block.MushroomBlock; import org.jetbrains.annotations.Nullable; @@ -23,8 +21,8 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; import net.minecraft.world.item.ItemStack; @@ -57,14 +55,14 @@ public boolean isActive(MovementContext context) { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(HarvesterBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(.45); } @Override public void visitNewPosition(MovementContext context, BlockPos pos) { Level world = context.world; - if (world.isClientSide) + if (world.isClientSide()) return; BlockState stateVisited = world.getBlockState(pos); @@ -160,7 +158,7 @@ public boolean isValidOther(Level world, BlockPos pos, BlockState state) { } if (state.getBlock() instanceof MushroomBlock && Mods.FARMERSDELIGHT.isLoaded()) { - return FarmersDelightCompat.shouldHarvestMushroom(world, pos, state); + return false; } // TODO: 1.21.5-rc1+ change to VegetationBlock (https://github.com/neoforged/NeoForge/commit/9f6edae1894ad249a8719c4e1f14beda0fdedc72) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterRenderer.java index f1a865b9df..bfb30859cb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/harvester/HarvesterRenderer.java @@ -9,14 +9,14 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -36,7 +36,7 @@ protected void renderSafe(HarvesterBlockEntity be, float partialTicks, PoseStack SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.HARVESTER_BLADE, blockState); transform(be.getLevel(), blockState.getValue(HarvesterBlock.FACING), superBuffer, be.getAnimatedSpeed(), PIVOT); superBuffer.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, @@ -53,15 +53,15 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor superBuffer.transform(matrices.getModel()); transform(context.world, facing, superBuffer, speed, PIVOT); - superBuffer.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + superBuffer.light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffers.getBuffer(RenderType.cutoutMipped())); + .renderInto(matrices.getViewProjection(), buffers.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } public static void transform(Level world, Direction facing, SuperByteBuffer superBuffer, float speed, Vec3 pivot) { float originOffset = 1 / 16f; Vec3 rotOffset = new Vec3(0, pivot.y * originOffset, pivot.z * originOffset); - float time = AnimationTickHolder.getRenderTime(world) / 20; + float time = AnimationTickHolder.getRenderTime() / 20; float angle = (time * speed) % 360; superBuffer.rotateCentered(AngleHelper.rad(AngleHelper.horizontalAngle(facing)), Direction.UP) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/plough/PloughMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/plough/PloughMovementBehaviour.java index 889e315834..0b4a2d17e2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/plough/PloughMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/plough/PloughMovementBehaviour.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.trains.track.ITrackBlock; import com.simibubi.create.foundation.advancement.AllAdvancements; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; @@ -25,7 +25,7 @@ import net.minecraft.world.level.block.AnvilBlock; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.BubbleColumnBlock; -import net.minecraft.world.level.block.FarmBlock; +import net.minecraft.world.level.block.FarmlandBlock; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootParams; @@ -48,7 +48,7 @@ public boolean isActive(MovementContext context) { public void visitNewPosition(MovementContext context, BlockPos pos) { super.visitNewPosition(context, pos); Level world = context.world; - if (world.isClientSide) + if (world.isClientSide()) return; BlockPos below = pos.below(); if (!world.isLoaded(below)) @@ -86,7 +86,7 @@ protected void throwEntity(MovementContext context, Entity entity) { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(PloughBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(.45); } @@ -100,7 +100,7 @@ public boolean canBreak(Level world, BlockPos breakingPos, BlockState state) { if (state.isAir()) return false; if (world.getBlockState(breakingPos.below()) - .getBlock() instanceof FarmBlock) + .getBlock() instanceof FarmlandBlock) return false; if (state.getBlock() instanceof LiquidBlock) return false; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PIInstance.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PIInstance.java index 6fcb9af8cd..1310386a33 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PIInstance.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PIInstance.java @@ -7,7 +7,7 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java index 0b9ecc1747..4325584d7c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PSIActorVisual.java @@ -5,15 +5,15 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; public class PSIActorVisual extends ActorVisual { private final PIInstance instance; public PSIActorVisual(VisualizationContext context, VirtualRenderWorld world, MovementContext movementContext) { - super(context, world, movementContext); + super(context, movementContext.world, movementContext); instance = new PIInstance(context.instancerProvider(), movementContext.state, movementContext.localPos, false); diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableFluidInterfaceBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableFluidInterfaceBlockEntity.java index f73c250f82..1d24c6bbee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableFluidInterfaceBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableFluidInterfaceBlockEntity.java @@ -2,6 +2,7 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.content.contraptions.Contraption; +import com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -23,9 +24,9 @@ public PortableFluidInterfaceBlockEntity(BlockEntityType type, BlockPos pos, public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.PORTABLE_FLUID_INTERFACE.get(), - (be, context) -> be.capability + (be, context) -> new LegacyFluidTransferAdapter(be.capability) ); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableItemInterfaceBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableItemInterfaceBlockEntity.java index 930ade7dcd..17bc556a1a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableItemInterfaceBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableItemInterfaceBlockEntity.java @@ -3,6 +3,7 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.foundation.item.ItemHandlerWrapper; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; @@ -24,9 +25,9 @@ public PortableItemInterfaceBlockEntity(BlockEntityType type, BlockPos pos, B public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.PORTABLE_STORAGE_INTERFACE.get(), - (be, context) -> be.capability + (be, context) -> new LegacyItemTransferAdapter(be.capability) ); } @@ -34,7 +35,7 @@ public static void registerCapabilities(RegisterCapabilitiesEvent event) { public void startTransferringTo(Contraption contraption, float distance) { capability = new InterfaceItemHandler(contraption.getStorage().getAllItems()); invalidateCapability(); - if (level != null && !level.isClientSide) + if (level != null && !level.isClientSide()) level.updateNeighborsAt(worldPosition, getBlockState().getBlock()); super.startTransferringTo(contraption, distance); } @@ -43,7 +44,7 @@ public void startTransferringTo(Contraption contraption, float distance) { protected void stopTransferring() { capability = createEmptyHandler(); invalidateCapability(); - if (level != null && !level.isClientSide) + if (level != null && !level.isClientSide()) level.updateNeighborsAt(worldPosition, getBlockState().getBlock()); super.stopTransferring(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlock.java index 297a9827a5..a1723619bb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlock.java @@ -8,7 +8,6 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.LivingEntity; @@ -17,13 +16,13 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class PortableStorageInterfaceBlock extends WrenchableDirectionalBlock implements IBE { @@ -43,8 +42,7 @@ private PortableStorageInterfaceBlock(Properties p_i48415_1_, boolean fluids) { } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, - boolean p_220069_6_) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { withBlockEntityDo(world, pos, PortableStorageInterfaceBlockEntity::neighbourChanged); } @@ -74,7 +72,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return getBlockEntityOptional(worldIn, pos).map(be -> be.isConnected() ? 15 : 0) .orElse(0); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlockEntity.java index b8b206f6b4..be48f522d6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceBlockEntity.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -77,7 +77,7 @@ public void tick() { if (keepAlive > 0) { keepAlive--; - if (keepAlive == 0 && !level.isClientSide) { + if (keepAlive == 0 && !level.isClientSide()) { stopTransferring(); transferTimer = ANIMATION - 1; sendData(); @@ -88,7 +88,7 @@ public void tick() { transferTimer = Math.min(transferTimer, ANIMATION * 2 + timeUnit); boolean timerCanDecrement = transferTimer > ANIMATION || transferTimer > 0 && keepAlive == 0 - && (isVirtual() || !level.isClientSide || transferTimer != ANIMATION); + && (isVirtual() || !level.isClientSide() || transferTimer != ANIMATION); if (timerCanDecrement && (!isVirtual() || transferTimer != ANIMATION)) { transferTimer--; @@ -99,7 +99,7 @@ public void tick() { } boolean isConnected = isConnected(); - if (wasConnected != isConnected && !level.isClientSide) + if (wasConnected != isConnected && !level.isClientSide()) setChanged(); float progress = 0; @@ -121,10 +121,10 @@ public void invalidate() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - transferTimer = compound.getInt("Timer"); - distance = compound.getFloat("Distance"); + transferTimer = compound.getIntOr("Timer", 0); + distance = compound.getFloatOr("Distance", 0); boolean poweredPreviously = powered; - powered = compound.getBoolean("Powered"); + powered = compound.getBooleanOr("Powered", false); if (clientPacket && powered != poweredPreviously && !powered) notifyContraptions(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceMovement.java index 081661377e..618e0ac71b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceMovement.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceMovement.java @@ -10,14 +10,15 @@ import com.simibubi.create.content.contraptions.render.ContraptionMatrices; import com.simibubi.create.content.trains.entity.CarriageContraption; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.NbtUtils; @@ -27,7 +28,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class PortableStorageInterfaceMovement implements MovementBehaviour { @@ -37,7 +37,7 @@ public class PortableStorageInterfaceMovement implements MovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(PortableStorageInterfaceBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(1.85f); } @@ -54,7 +54,6 @@ public ActorVisual createVisual(VisualizationContext visualizationContext, Virtu } @Override - @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (!VisualizationManager.supportsVisualization(context.world)) @@ -72,14 +71,14 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { @Override public void tick(MovementContext context) { - if (context.world.isClientSide) + if (context.world.isClientSide()) getAnimation(context).tickChaser(); boolean onCarriage = context.contraption instanceof CarriageContraption; if (onCarriage && context.motion.length() > 1 / 4f) return; - if (context.world.isClientSide) { + if (context.world.isClientSide()) { BlockPos pos = BlockPos.containing(context.position); if (!findInterface(context, pos)) reset(context); @@ -138,15 +137,15 @@ protected boolean findInterface(MovementContext context, BlockPos pos) { if (psi.isPowered()) return false; - context.data.put(_workingPos_, NbtUtils.writeBlockPos(psi.getBlockPos())); - if (!context.world.isClientSide) { + context.data.put(_workingPos_, com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(psi.getBlockPos())); + if (!context.world.isClientSide()) { Vec3 diff = VecHelper.getCenterOf(psi.getBlockPos()) .subtract(context.position); - diff = VecHelper.project(diff, Vec3.atLowerCornerOf(currentFacing.getNormal())); + diff = VecHelper.project(diff, Vec3.atLowerCornerOf(currentFacing.getUnitVec3i())); float distance = (float) (diff.length() + 1.85f - 1); psi.startTransferringTo(context.contraption, distance); } else { - context.data.put(_clientPrevPos_, NbtUtils.writeBlockPos(pos)); + context.data.put(_clientPrevPos_, com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); if (context.contraption instanceof CarriageContraption || context.contraption.entity.isStalled() || context.motion.lengthSqr() == 0) getAnimation(context).chase(psi.getConnectionDistance() / 2, 0.25f, Chaser.LINEAR); @@ -201,10 +200,10 @@ private PortableStorageInterfaceBlockEntity getStationaryInterfaceAt(Level world private Optional getCurrentFacingIfValid(MovementContext context) { Vec3 directionVec = Vec3.atLowerCornerOf(context.state.getValue(PortableStorageInterfaceBlock.FACING) - .getNormal()); + .getUnitVec3i()); directionVec = context.rotation.apply(directionVec); - Direction facingFromVector = Direction.getNearest(directionVec.x, directionVec.y, directionVec.z); - if (directionVec.distanceTo(Vec3.atLowerCornerOf(facingFromVector.getNormal())) > 1 / 2f) + Direction facingFromVector = LegacyDirectionBridge.nearest(directionVec.x, directionVec.y, directionVec.z, Direction.NORTH); + if (directionVec.distanceTo(Vec3.atLowerCornerOf(facingFromVector.getUnitVec3i())) > 1 / 2f) return Optional.empty(); return Optional.of(facingFromVector); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceRenderer.java index 1e66ed1b8c..41e7ce2412 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/psi/PortableStorageInterfaceRenderer.java @@ -13,19 +13,19 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.NbtUtils; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -41,7 +41,7 @@ protected void renderSafe(PortableStorageInterfaceBlockEntity be, float partialT BlockState blockState = be.getBlockState(); float progress = be.getExtensionDistance(partialTicks); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); render(blockState, be.isConnected(), progress, null, sbb -> sbb.light(light) .renderInto(ms, vb)); } @@ -49,14 +49,14 @@ protected void renderSafe(PortableStorageInterfaceBlockEntity be, float partialT public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { BlockState blockState = context.state; - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); float renderPartialTicks = AnimationTickHolder.getPartialTicks(); LerpedFloat animation = PortableStorageInterfaceMovement.getAnimation(context); float progress = animation.getValue(renderPartialTicks); boolean lit = animation.settled(); render(blockState, lit, progress, matrices.getModel(), - sbb -> sbb.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + sbb -> sbb.light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(context.world, matrices.getWorld()) .renderInto(matrices.getViewProjection(), vb)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/PaveTask.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/PaveTask.java index 686eec71fe..0e47e27b4c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/PaveTask.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/PaveTask.java @@ -4,7 +4,7 @@ import java.util.Map; import java.util.Set; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; public class PaveTask { diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlock.java index ed9f2ae305..11ce5e7532 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlock.java @@ -9,13 +9,13 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.placement.PoleHelper; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -35,7 +35,7 @@ import org.jetbrains.annotations.NotNull; public class RollerBlock extends AttachedActorBlock implements IBE { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public static final MapCodec CODEC = simpleCodec(RollerBlock::new); @@ -76,17 +76,17 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!player.isShiftKeyDown() && player.mayBuild()) { if (placementHelper.matchesItem(stack)) { placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } private static class PlacementHelper extends PoleHelper { diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlockEntity.java index 2b0e816b2b..f4165653d9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerBlockEntity.java @@ -13,10 +13,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java index f43abc3b54..e6c6e4481d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerMovementBehaviour.java @@ -35,18 +35,19 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.nbt.NbtOps; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.NbtUtils; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; @@ -92,7 +93,7 @@ public void renderInContraption(MovementContext context, VirtualRenderWorld rend @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(RollerBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(.45) .subtract(0, 2, 0); } @@ -124,7 +125,7 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { BlockState stateVisited = world.getBlockState(pos); if (!stateVisited.isRedstoneConductor(world, pos)) damageEntities(context, pos, world); - if (world.isClientSide) + if (world.isClientSide()) return; List positionsToBreak = getPositionsToBreak(context, pos); @@ -149,8 +150,8 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { return; } - context.data.put("ReferencePos", NbtUtils.writeBlockPos(pos)); - context.data.put("BreakingPos", NbtUtils.writeBlockPos(argMax)); + context.data.put("ReferencePos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); + context.data.put("BreakingPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(argMax)); context.stall = true; } @@ -176,7 +177,7 @@ protected void destroyBlock(MovementContext context, BlockPos breakingPos) { || blockState.is(BlockTags.NEEDS_DIAMOND_TOOL); BlockHelper.destroyBlock(context.world, breakingPos, 1f, stack -> { - if (noHarvest || context.world.random.nextBoolean()) + if (noHarvest || context.world.getRandom().nextBoolean()) return; this.collectOrDropItem(context, stack); }); @@ -313,7 +314,7 @@ protected void triggerPaver(MovementContext context, BlockPos pos) { Vec3 directionVec = Vec3.atLowerCornerOf(context.state.getValue(RollerBlock.FACING) .getClockWise() - .getNormal()); + .getUnitVec3i()); directionVec = context.rotation.apply(directionVec); PaveResult paveResult = PaveResult.PASS; int yOffset = 0; @@ -385,7 +386,7 @@ else if (!completelyBlocked || yOffset == 0) if (paveResult == PaveResult.SUCCESS) { context.data.putInt("WaitingTicks", 2); - context.data.put("LastPos", NbtUtils.writeBlockPos(pos)); + context.data.put("LastPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); context.stall = true; } } @@ -402,7 +403,10 @@ public static BlockState getStateToPaveWith(ItemStack itemStack) { } protected BlockState getStateToPaveWith(MovementContext context) { - return getStateToPaveWith(ItemStack.parseOptional(context.world.registryAccess(), context.blockEntityData.getCompound("Filter"))); + ItemStack filter = ItemStack.CODEC.parse(NbtOps.INSTANCE, context.blockEntityData.getCompoundOrEmpty("Filter")) + .result() + .orElse(ItemStack.EMPTY); + return getStateToPaveWith(filter); } protected BlockState getStateToPaveWithAsSlab(MovementContext context) { @@ -414,7 +418,7 @@ protected BlockState getStateToPaveWithAsSlab(MovementContext context) { if (block == null) return null; - ResourceLocation rl = BuiltInRegistries.BLOCK.getKey(block); + Identifier rl = BuiltInRegistries.BLOCK.getKey(block); String namespace = rl.getNamespace(); String blockName = rl.getPath(); int nameLength = blockName.length(); @@ -428,7 +432,7 @@ protected BlockState getStateToPaveWithAsSlab(MovementContext context) { possibleSlabLocations.add(blockName.substring(0, nameLength - 7) + "_slab"); for (String locationAttempt : possibleSlabLocations) { - Optional result = BuiltInRegistries.BLOCK.getOptional(ResourceLocation.fromNamespaceAndPath(namespace, locationAttempt)); + Optional result = BuiltInRegistries.BLOCK.getOptional(Identifier.fromNamespaceAndPath(namespace, locationAttempt)); if (result.isEmpty()) continue; return result.get() @@ -439,7 +443,7 @@ protected BlockState getStateToPaveWithAsSlab(MovementContext context) { } protected RollingMode getMode(MovementContext context) { - return RollingMode.values()[context.blockEntityData.getInt("ScrollValue")]; + return RollingMode.values()[context.blockEntityData.getIntOr("ScrollValue", 0)]; } private final class RollerTravellingPoint extends TravellingPoint { diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerRenderer.java index 9bb7eb6b55..e3f672c553 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/RollerRenderer.java @@ -11,13 +11,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.util.LightCoordsUtil; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -35,13 +35,13 @@ protected void renderSafe(RollerBlockEntity be, float partialTicks, PoseStack ms super.renderSafe(be, partialTicks, ms, buffer, light, overlay); BlockState blockState = be.getBlockState(); - VertexConsumer vc = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vc = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); ms.pushPose(); ms.translate(0, -0.25, 0); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState); Direction facing = blockState.getValue(RollerBlock.FACING); - superBuffer.translate(Vec3.atLowerCornerOf(facing.getNormal()) + superBuffer.translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(17 / 16f)); HarvesterRenderer.transform(be.getLevel(), facing, superBuffer, be.getAnimatedSpeed(), Vec3.ZERO); superBuffer.translate(0, -.5, .5) @@ -60,7 +60,7 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor ContraptionMatrices matrices, MultiBufferSource buffers) { BlockState blockState = context.state; Direction facing = blockState.getValue(HORIZONTAL_FACING); - VertexConsumer vc = buffers.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vc = buffers.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.ROLLER_WHEEL, blockState); float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite()) ? context.getAnimationSpeed() @@ -69,14 +69,14 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor speed = 0; superBuffer.transform(matrices.getModel()) - .translate(Vec3.atLowerCornerOf(facing.getNormal()) + .translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(17 / 16f)); HarvesterRenderer.transform(context.world, facing, superBuffer, speed, Vec3.ZERO); PoseStack viewProjection = matrices.getViewProjection(); viewProjection.pushPose(); viewProjection.translate(0, -.25, 0); - int contraptionWorldLight = LevelRenderer.getLightColor(renderWorld, context.localPos); + int contraptionWorldLight = LightCoordsUtil.FULL_BRIGHT; superBuffer.translate(0, -.5, .5) .rotateYDegrees(90) .light(contraptionWorldLight) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/TrackPaverV2.java b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/TrackPaverV2.java index 69dcd32465..92f93fc04b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/roller/TrackPaverV2.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/roller/TrackPaverV2.java @@ -10,9 +10,9 @@ import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.track.BezierConnection; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; import net.minecraft.world.phys.AABB; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java index 54bf206ae8..419295981f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/ContraptionPlayerPassengerRotation.java @@ -5,8 +5,8 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatBlock.java index ef80cb2ff5..75dae20eec 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatBlock.java @@ -14,11 +14,11 @@ import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; @@ -30,8 +30,9 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.material.FluidState; @@ -47,7 +48,6 @@ import net.neoforged.neoforge.common.util.FakePlayer; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SeatBlock extends Block implements ProperWaterloggedBlock { protected final DyeColor color; @@ -69,9 +69,10 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, + RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } @@ -81,32 +82,27 @@ public FluidState getFluidState(BlockState pState) { } @Override - public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, float p_152430_) { + public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, double p_152430_) { super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, p_152430_ * 0.5F); - } - @Override - public void updateEntityAfterFallOn(BlockGetter reader, Entity entity) { - BlockPos pos = entity.blockPosition(); - if (entity instanceof Player || !(entity instanceof LivingEntity) || !canBePickedUp(entity) - || isSeatOccupied(entity.level(), pos)) { - if (entity.isSuppressingBounce()) { - super.updateEntityAfterFallOn(reader, entity); + BlockPos pos = p_152429_.blockPosition(); + if (p_152429_ instanceof Player || !(p_152429_ instanceof LivingEntity) || !canBePickedUp(p_152429_) + || isSeatOccupied(p_152429_.level(), pos)) { + if (p_152429_.isSuppressingBounce()) return; - } - Vec3 vec3 = entity.getDeltaMovement(); + Vec3 vec3 = p_152429_.getDeltaMovement(); if (vec3.y < 0.0D) { - double d0 = entity instanceof LivingEntity ? 1.0D : 0.8D; - entity.setDeltaMovement(vec3.x, -vec3.y * (double) 0.66F * d0, vec3.z); + double d0 = p_152429_ instanceof LivingEntity ? 1.0D : 0.8D; + p_152429_.setDeltaMovement(vec3.x, -vec3.y * (double) 0.66F * d0, vec3.z); } return; } - if (reader.getBlockState(pos) + if (p_152426_.getBlockState(pos) .getBlock() != this) return; - sitDown(entity.level(), pos, entity); + sitDown(p_152429_.level(), pos, p_152429_); } @Override @@ -129,18 +125,18 @@ public VoxelShape getCollisionShape(BlockState p_220071_1_, BlockGetter p_220071 } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || player instanceof FakePlayer) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; DyeColor color = DyeColor.getColor(stack); if (color != null && color != this.color) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; BlockState newState = BlockHelper.copyProperties(state, AllBlocks.SEATS.get(color) .getDefaultState()); level.setBlockAndUpdate(pos, newState); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } List seats = level.getEntitiesOfClass(SeatEntity.class, new AABB(pos)); @@ -148,18 +144,18 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev SeatEntity seatEntity = seats.get(0); List passengers = seatEntity.getPassengers(); if (!passengers.isEmpty() && passengers.get(0) instanceof Player) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (!level.isClientSide) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (!level.isClientSide()) { seatEntity.ejectPassengers(); player.startRiding(seatEntity); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; sitDown(level, pos, getLeashed(level, player).or(player)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } public static boolean isSeatOccupied(Level world, BlockPos pos) { @@ -191,12 +187,12 @@ public static boolean canBePickedUp(Entity passenger) { } public static void sitDown(Level level, BlockPos pos, Entity entity) { - if (level.isClientSide) + if (level.isClientSide()) return; SeatEntity seat = new SeatEntity(level); seat.setPos(pos.getX() + .5, pos.getY(), pos.getZ() + .5); level.addFreshEntity(seat); - entity.startRiding(seat, true); + entity.startRiding(seat, true, true); if (entity instanceof TamableAnimal ta) ta.setInSittingPose(true); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java index f3ec34eb0b..4a63d856ee 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatEntity.java @@ -6,22 +6,25 @@ import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.nbt.CompoundTag; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.TamableAnimal; -import net.minecraft.world.entity.animal.Cat; -import net.minecraft.world.entity.animal.Parrot; -import net.minecraft.world.entity.animal.Wolf; +import net.minecraft.world.entity.animal.feline.Cat; +import net.minecraft.world.entity.animal.parrot.Parrot; +import net.minecraft.world.entity.animal.wolf.Wolf; import net.minecraft.world.entity.animal.frog.Frog; -import net.minecraft.world.entity.monster.Skeleton; -import net.minecraft.world.entity.monster.Slime; -import net.minecraft.world.entity.monster.Spider; +import net.minecraft.world.entity.monster.skeleton.Skeleton; +import net.minecraft.world.entity.monster.cubemob.Slime; +import net.minecraft.world.entity.monster.spider.Spider; import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -92,7 +95,7 @@ public void setDeltaMovement(Vec3 vec) { @Override public void tick() { - if (level().isClientSide) + if (level().isClientSide()) return; boolean blockPresent = level().getBlockState(blockPosition()) .getBlock() instanceof SeatBlock; @@ -124,14 +127,19 @@ public Vec3 getDismountLocationForPassenger(LivingEntity pLivingEntity) { protected void defineSynchedData(SynchedEntityData.Builder builder) {} @Override - protected void readAdditionalSaveData(CompoundTag tag) { + public boolean hurtServer(ServerLevel level, DamageSource source, float amount) { + return false; } @Override - protected void addAdditionalSaveData(CompoundTag tag) { + protected void readAdditionalSaveData(ValueInput input) { } - public static class Render extends EntityRenderer { + @Override + protected void addAdditionalSaveData(ValueOutput output) { + } + + public static class Render extends EntityRenderer { public Render(EntityRendererProvider.Context context) { super(context); @@ -144,8 +152,8 @@ public boolean shouldRender(SeatEntity seatEntity, Frustum frustum, double p_225 } @Override - public ResourceLocation getTextureLocation(SeatEntity seatEntity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatMovementBehaviour.java index d6540999f1..2e3213407c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/seat/SeatMovementBehaviour.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.block.SlabBlock; @@ -32,7 +32,7 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { AbstractContraptionEntity contraptionEntity = context.contraption.entity; if (contraptionEntity == null) return; - int index = context.data.getInt("SeatIndex"); + int index = context.data.getIntOr("SeatIndex", -1); if (index == -1) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsBlock.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsBlock.java index 5dea4d7dbb..a428248fa6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsBlock.java @@ -8,10 +8,13 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.state.BlockState; @@ -43,9 +46,8 @@ protected void createBlockStateDefinition(Builder pBuilder) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState.setValue(OPEN, pLevel instanceof ContraptionWorld); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsHandler.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsHandler.java index a3418e38f3..be8816c21f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsHandler.java @@ -10,7 +10,7 @@ import com.mojang.blaze3d.platform.InputConstants; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.foundation.utility.CreateLang; @@ -40,8 +40,8 @@ public static void startControlling(AbstractContraptionEntity entity, BlockPos c entityRef = new WeakReference<>(entity); controlsPos = controllerLocalPos; - Minecraft.getInstance().player.displayClientMessage( - CreateLang.translateDirect("contraption.controls.start_controlling", entity.getContraptionName()), true); + Minecraft.getInstance().player.sendSystemMessage( + CreateLang.translateDirect("contraption.controls.start_controlling", entity.getContraptionName())); } public static void stopControlling() { @@ -50,7 +50,7 @@ public static void stopControlling() { AbstractContraptionEntity abstractContraptionEntity = entityRef.get(); if (!currentlyPressed.isEmpty() && abstractContraptionEntity != null) - CatnipServices.NETWORK.sendToServer(new ControlsInputPacket(currentlyPressed, false, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ControlsInputPacket(currentlyPressed, false, abstractContraptionEntity.getId(), controlsPos, false)); packetCooldown = 0; @@ -58,8 +58,7 @@ public static void stopControlling() { controlsPos = null; currentlyPressed.clear(); - Minecraft.getInstance().player.displayClientMessage(CreateLang.translateDirect("contraption.controls.stop_controlling"), - true); + Minecraft.getInstance().player.sendSystemMessage(CreateLang.translateDirect("contraption.controls.stop_controlling")); } public static void tick() { @@ -70,11 +69,10 @@ public static void tick() { packetCooldown--; if (entity.isRemoved() || InputConstants.isKeyDown(Minecraft.getInstance() - .getWindow() .getWindow(), GLFW.GLFW_KEY_ESCAPE)) { BlockPos pos = controlsPos; stopControlling(); - CatnipServices.NETWORK.sendToServer(new ControlsInputPacket(currentlyPressed, false, entity.getId(), pos, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ControlsInputPacket(currentlyPressed, false, entity.getId(), pos, true)); return; } @@ -92,13 +90,13 @@ public static void tick() { // Released Keys if (!releasedKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new ControlsInputPacket(releasedKeys, false, entity.getId(), controlsPos, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ControlsInputPacket(releasedKeys, false, entity.getId(), controlsPos, false)); // AllSoundEvents.CONTROLLER_CLICK.playAt(player.level, player.blockPosition(), 1f, .5f, true); } // Newly Pressed Keys if (!newKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new ControlsInputPacket(newKeys, true, entity.getId(), controlsPos, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ControlsInputPacket(newKeys, true, entity.getId(), controlsPos, false)); packetCooldown = PACKET_RATE; // AllSoundEvents.CONTROLLER_CLICK.playAt(player.level, player.blockPosition(), 1f, .75f, true); } @@ -106,7 +104,7 @@ public static void tick() { // Keepalive Pressed Keys if (packetCooldown == 0) { // if (!pressedKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new ControlsInputPacket(pressedKeys, true, entity.getId(), controlsPos, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ControlsInputPacket(pressedKeys, true, entity.getId(), controlsPos, false)); packetCooldown = PACKET_RATE; // } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInputPacket.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInputPacket.java index 414def077e..ac5a5a9798 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInputPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInputPacket.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; @@ -35,7 +35,7 @@ public ControlsInputPacket(Collection activatedButtons, boolean press, @Override public void handle(ServerPlayer player) { - Level world = player.getCommandSenderWorld(); + Level world = player.level(); UUID uniqueID = player.getUUID(); if (player.isSpectator() && press) diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java index 6bb8a96d83..04fef57b5c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsInteractionBehaviour.java @@ -34,7 +34,7 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand return false; contraptionEntity.setControllingPlayer(player.getUUID()); - if (player.level().isClientSide) + if (player.level().isClientSide()) ControlsHandler.startControlling(contraptionEntity, localPos); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsMovementBehaviour.java index 0bc4a8fb61..6e6784b8b0 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsMovementBehaviour.java @@ -9,16 +9,15 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ControlsMovementBehaviour implements MovementBehaviour { @@ -43,7 +42,7 @@ public void stopMoving(MovementContext context) { @Override public void tick(MovementContext context) { MovementBehaviour.super.tick(context); - if (!context.world.isClientSide) + if (!context.world.isClientSide()) return; if (!(context.temporaryData instanceof LeverAngles)) context.temporaryData = new LeverAngles(); @@ -54,7 +53,6 @@ public void tick(MovementContext context) { } @Override - @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (!(context.temporaryData instanceof LeverAngles angles)) @@ -87,7 +85,7 @@ public void renderInContraption(MovementContext context, VirtualRenderWorld rend angles.speed.chase(0, 0, Chaser.EXP); } - float pt = AnimationTickHolder.getPartialTicks(context.world); + float pt = AnimationTickHolder.getPartialTicks(); ControlsRenderer.render(context, renderWorld, matrices, buffer, angles.equipAnimation.getValue(pt), angles.speed.getValue(pt), angles.steering.getValue(pt)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsRenderer.java index c6e885f875..70d6860ade 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsRenderer.java @@ -7,14 +7,14 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.Direction; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.util.Mth; import net.minecraft.world.level.block.state.BlockState; @@ -32,9 +32,9 @@ public static void render(MovementContext context, VirtualRenderWorld renderWorl .center() .rotateYDegrees(hAngle) .uncenter() - .light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + .light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(matrices.getViewProjection(), buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); double yOffset = Mth.lerp(equipAnimation * equipAnimation, -0.15f, 0.05f); @@ -53,9 +53,9 @@ public static void render(MovementContext context, VirtualRenderWorld renderWorl .translate(0, -6 / 16f, -3 / 16f) .translate(first ? 0 : 6 / 16f, 0, 0); lever.transform(ms) - .light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + .light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.solid())); + .renderInto(matrices.getViewProjection(), buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsServerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsServerHandler.java index 580ad57dbb..f0aa9c4b9d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsServerHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsServerHandler.java @@ -10,8 +10,8 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LevelAccessor; diff --git a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsStopControllingPacket.java b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsStopControllingPacket.java index 8f5f18a983..5c2918b1a7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsStopControllingPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/actors/trainControls/ControlsStopControllingPacket.java @@ -4,10 +4,9 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public enum ControlsStopControllingPacket implements ClientboundPacketPayload { INSTANCE; @@ -15,8 +14,7 @@ public enum ControlsStopControllingPacket implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.unit(INSTANCE); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { ControlsHandler.stopControlling(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingBlock.java index 8f52312b78..3a587b448a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingBlock.java @@ -35,7 +35,7 @@ public boolean showCapacityWithAnnotation() { @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { InteractionResult resultType = super.onWrenched(state, context); - if (!context.getLevel().isClientSide && resultType.consumesAction()) { + if (!context.getLevel().isClientSide() && resultType.consumesAction()) { BlockEntity be = context.getLevel().getBlockEntity(context.getClickedPos()); if (be instanceof MechanicalBearingBlockEntity) { ((MechanicalBearingBlockEntity) be).disassemble(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingContraption.java index 78b6991563..6bbd9e655c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingContraption.java @@ -83,8 +83,8 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag tag, boolean spawnData) { - sailBlocks = tag.getInt("Sails"); - facing = Direction.from3DDataValue(tag.getInt("Facing")); + sailBlocks = tag.getIntOr("Sails", 0); + facing = Direction.from3DDataValue(tag.getIntOr("Facing", 0)); super.readNBT(world, tag, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingRenderer.java index a565e53ad9..a0fb39bcbc 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingRenderer.java @@ -7,11 +7,11 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -45,7 +45,7 @@ protected void renderSafe(T be, float partialTicks, PoseStack ms, MultiBufferSou superBuffer.rotateCentered( AngleHelper.rad(AngleHelper.horizontalAngle(facing.getOpposite())), Direction.UP); superBuffer.rotateCentered(AngleHelper.rad(-90 - AngleHelper.verticalAngle(facing)), Direction.EAST); - superBuffer.renderInto(ms, buffer.getBuffer(RenderType.solid())); + superBuffer.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingVisual.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingVisual.java index a246afcab8..92537b1bef 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/BearingVisual.java @@ -17,7 +17,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/BlankSailBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/BlankSailBlockItem.java index b8ef959e9d..303fa7194b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/BlankSailBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/BlankSailBlockItem.java @@ -21,12 +21,4 @@ public void registerBlocks(Map blockToItemMap, Item item) { blockToItemMap.put(entry.get(), item); } } - - @Override - public void removeFromBlockToItemMap(Map blockToItemMap, Item item) { - super.removeFromBlockToItemMap(blockToItemMap, item); - for (BlockEntry entry : AllBlocks.DYED_SAILS) { - blockToItemMap.remove(entry.get()); - } - } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlock.java index b68b0b5834..414c55c182 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlock.java @@ -6,7 +6,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -22,13 +22,13 @@ public ClockworkBearingBlock(Properties properties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (player.isShiftKeyDown()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (stack.isEmpty()) { - if (!level.isClientSide) { + if (!level.isClientSide()) { withBlockEntityDo(level, pos, be -> { if (be.running) { be.disassemble(); @@ -37,9 +37,9 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev be.assembleNextTick = true; }); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -50,7 +50,7 @@ public Class getBlockEntityClass() { @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { InteractionResult resultType = super.onWrenched(state, context); - if (!context.getLevel().isClientSide && resultType.consumesAction()) + if (!context.getLevel().isClientSide() && resultType.consumesAction()) withBlockEntityDo(context.getLevel(), context.getClickedPos(), ClockworkBearingBlockEntity::disassemble); return resultType; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlockEntity.java index f042d37d20..a3bbacddf5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkBearingBlockEntity.java @@ -20,8 +20,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -71,13 +71,13 @@ public boolean isWoodenTop() { public void tick() { super.tick(); - if (level.isClientSide) { + if (level.isClientSide()) { prevForcedAngle = hourAngle; clientMinuteAngleDiff /= 2; clientHourAngleDiff /= 2; } - if (!level.isClientSide && assembleNextTick) { + if (!level.isClientSide() && assembleNextTick) { assembleNextTick = false; if (running) { boolean canDisassemble = true; @@ -140,7 +140,7 @@ protected void applyRotations() { @Override public void lazyTick() { super.lazyTick(); - if (hourHand != null && !level.isClientSide) + if (hourHand != null && !level.isClientSide()) sendData(); } @@ -181,8 +181,8 @@ public float getMinuteArmSpeed() { protected float getHourTarget(boolean cycle24) { boolean isNatural = level.dimensionType() - .natural(); - int dayTime = (int) ((level.getDayTime() * (isNatural ? 1 : 24)) % 24000); + .hasSkyLight(); + int dayTime = (int) (((isNatural ? level.getOverworldClockTime() : level.getDefaultClockTime() * 24) % 24000)); int hours = (dayTime / 1000 + 6) % 24; int offset = getBlockState().getValue(ClockworkBearingBlock.FACING) .getAxisDirection() @@ -193,8 +193,8 @@ protected float getHourTarget(boolean cycle24) { protected float getMinuteTarget() { boolean isNatural = level.dimensionType() - .natural(); - int dayTime = (int) ((level.getDayTime() * (isNatural ? 1 : 24)) % 24000); + .hasSkyLight(); + int dayTime = (int) (((isNatural ? level.getOverworldClockTime() : level.getDefaultClockTime() * 24) % 24000)); int minutes = (dayTime % 1000) * 60 / 1000; int offset = getBlockState().getValue(ClockworkBearingBlock.FACING) .getAxisDirection() @@ -205,7 +205,7 @@ protected float getMinuteTarget() { public float getAngularSpeed() { float speed = -Math.abs(getSpeed() * 3 / 10f); - if (level.isClientSide) + if (level.isClientSide()) speed *= ServerSpeedProvider.get(); return speed; } @@ -306,7 +306,7 @@ public void attach(ControlledContraptionEntity contraption) { this.minuteHand = contraption; minuteHand.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); } - if (!level.isClientSide) { + if (!level.isClientSide()) { this.running = true; sendData(); } @@ -326,9 +326,9 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool float hourAngleBefore = hourAngle; float minuteAngleBefore = minuteAngle; - running = compound.getBoolean("Running"); - hourAngle = compound.getFloat("HourAngle"); - minuteAngle = compound.getFloat("MinuteAngle"); + running = compound.getBooleanOr("Running", false); + hourAngle = compound.getFloatOr("HourAngle", 0); + minuteAngle = compound.getFloatOr("MinuteAngle", 0); lastException = AssemblyException.read(compound, registries); super.read(compound, registries, clientPacket); @@ -368,13 +368,13 @@ public float getInterpolatedAngle(float partialTicks) { @Override public void onStall() { - if (!level.isClientSide) + if (!level.isClientSide()) sendData(); } @Override public void remove() { - if (!level.isClientSide) + if (!level.isClientSide()) disassemble(); super.remove(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkContraption.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkContraption.java index 1705e359d0..0baa223f8c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/ClockworkContraption.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.AssemblyException; import com.simibubi.create.content.contraptions.Contraption; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -114,9 +114,9 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag tag, boolean spawnData) { - facing = Direction.from3DDataValue(tag.getInt("facing")); + facing = Direction.from3DDataValue(tag.getIntOr("facing", 0)); handType = NBTHelper.readEnum(tag, "HandType", HandType.class); - offset = tag.getInt("offset"); + offset = tag.getIntOr("offset", 0); super.readNBT(world, tag, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlock.java index 91440ee830..0a2175f55d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlock.java @@ -6,7 +6,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -21,14 +21,14 @@ public MechanicalBearingBlock(Properties properties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (player.isShiftKeyDown()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (stack.isEmpty()) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, be -> { if (be.running) { be.disassemble(); @@ -36,9 +36,9 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev } be.assembleNextTick = true; }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlockEntity.java index c7496a5051..ebd85b6a44 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/MechanicalBearingBlockEntity.java @@ -16,7 +16,7 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -68,7 +68,7 @@ public void addBehaviours(List behaviours) { @Override public void remove() { - if (!level.isClientSide) + if (!level.isClientSide()) disassemble(); super.remove(); } @@ -91,9 +91,9 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool } float angleBefore = angle; - running = compound.getBoolean("Running"); - angle = compound.getFloat("Angle"); - sequencedAngleLimit = compound.contains("SequencedAngleLimit") ? compound.getDouble("SequencedAngleLimit") : -1; + running = compound.getBooleanOr("Running", false); + angle = compound.getFloatOr("Angle", 0); + sequencedAngleLimit = compound.contains("SequencedAngleLimit") ? compound.getDoubleOr("SequencedAngleLimit", -1) : -1; lastException = AssemblyException.read(compound, registries); super.read(compound, registries, clientPacket); if (!clientPacket) @@ -143,7 +143,7 @@ public float getAngularSpeed() { float speed = convertToAngular(isWindmill() ? getGeneratedSpeed() : getSpeed()); if (getSpeed() == 0) speed = 0; - if (level.isClientSide) { + if (level.isClientSide()) { speed *= ServerSpeedProvider.get(); speed += clientAngleDiff / 3f; } @@ -229,10 +229,10 @@ public void tick() { super.tick(); prevAngle = angle; - if (level.isClientSide) + if (level.isClientSide()) clientAngleDiff /= 2; - if (!level.isClientSide && assembleNextTick) { + if (!level.isClientSide() && assembleNextTick) { assembleNextTick = false; if (running) { boolean canDisassemble = movementMode.get() == RotationMode.ROTATE_PLACE @@ -276,7 +276,7 @@ public boolean isNearInitialAngle() { @Override public void lazyTick() { super.lazyTick(); - if (movedContraption != null && !level.isClientSide) + if (movedContraption != null && !level.isClientSide()) sendData(); } @@ -302,7 +302,7 @@ public void attach(ControlledContraptionEntity contraption) { setChanged(); BlockPos anchor = worldPosition.relative(blockState.getValue(BearingBlock.FACING)); movedContraption.setPos(anchor.getX(), anchor.getY(), anchor.getZ()); - if (!level.isClientSide) { + if (!level.isClientSide()) { this.running = true; sendData(); } @@ -310,7 +310,7 @@ public void attach(ControlledContraptionEntity contraption) { @Override public void onStall() { - if (!level.isClientSide) + if (!level.isClientSide()) sendData(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/SailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/SailBlock.java index 804c1e208d..f9e927d567 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/SailBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/SailBlock.java @@ -13,18 +13,17 @@ import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -55,7 +54,7 @@ public static SailBlock withCanvas(Properties properties, DyeColor color) { return new SailBlock(properties, false, color); } - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); protected final boolean frame; protected final DyeColor color; @@ -75,35 +74,35 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!player.isShiftKeyDown() && player.mayBuild()) { if (placementHelper.matchesItem(stack)) { placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } if (stack.getItem() instanceof ShearsItem) { - if (!level.isClientSide) + if (!level.isClientSide()) level.playSound(null, pos, SoundEvents.SHEEP_SHEAR, SoundSource.BLOCKS, 1.0f, 1.0f); applyDye(state, level, pos, hitResult.getLocation(), null); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (frame) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; DyeColor color = DyeColor.getColor(stack); if (color != null) { - if (!level.isClientSide) - level.playSound(null, pos, SoundEvents.DYE_USE, SoundSource.BLOCKS, 1.0f, 1.1f - level.random.nextFloat() * .2f); + if (!level.isClientSide()) + level.playSound(null, pos, SoundEvents.DYE_USE, SoundSource.BLOCKS, 1.0f, 1.1f - level.getRandom().nextFloat() * .2f); applyDye(state, level, pos, hitResult.getLocation(), color); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } public void applyDye(BlockState state, Level world, BlockPos pos, Vec3 hit, @Nullable DyeColor color) { @@ -182,28 +181,21 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter p_220071_2_, B } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { - ItemStack pickBlock = super.getCloneItemStack(state, target, level, pos, player); + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { + ItemStack pickBlock = super.getCloneItemStack(level, pos, state, includeData); if (pickBlock.isEmpty()) - return AllBlocks.SAIL.get() - .getCloneItemStack(state, target, level, pos, player); + return AllBlocks.SAIL.asStack(); return pickBlock; } @Override - public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, float p_152430_) { + public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, double p_152430_) { if (frame) super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, p_152430_); - super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, 0); - } - - public void updateEntityAfterFallOn(BlockGetter p_176216_1_, Entity p_176216_2_) { - if (frame || p_176216_2_.isSuppressingBounce()) { - super.updateEntityAfterFallOn(p_176216_1_, p_176216_2_); - } else { - this.bounce(p_176216_2_); - } + else + super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, 0); + if (!frame && !p_152429_.isSuppressingBounce()) + this.bounce(p_152429_); } private void bounce(Entity p_226860_1_) { @@ -228,8 +220,7 @@ public DyeColor getColor() { return color; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { return i -> AllBlocks.SAIL.isIn(i) || AllBlocks.SAIL_FRAME.isIn(i); diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingMovementBehaviour.java index 39d735cab6..36b711f527 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingMovementBehaviour.java @@ -18,18 +18,17 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class StabilizedBearingMovementBehaviour implements MovementBehaviour { @@ -44,7 +43,6 @@ public boolean disableBlockEntityRendering() { } @Override - @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (VisualizationManager.supportsVisualization(context.world)) @@ -73,9 +71,9 @@ public void renderInContraption(MovementContext context, VirtualRenderWorld rend superBuffer.rotateCentered(orientation); // render - superBuffer.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + superBuffer.light(LightCoordsUtil.FULL_BRIGHT) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.solid())); + .renderInto(matrices.getViewProjection(), buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Nullable diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java index 3f1592a145..c28993c7f6 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedBearingVisual.java @@ -15,7 +15,7 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.OrientedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -30,7 +30,7 @@ public class StabilizedBearingVisual extends ActorVisual { final Quaternionf blockOrientation; public StabilizedBearingVisual(VisualizationContext visualizationContext, VirtualRenderWorld simulationWorld, MovementContext movementContext) { - super(visualizationContext, simulationWorld, movementContext); + super(visualizationContext, movementContext.world, movementContext); BlockState blockState = movementContext.state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedContraption.java index 22aadfd4b3..fe2370991d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/StabilizedContraption.java @@ -51,7 +51,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag tag, boolean spawnData) { - facing = Direction.from3DDataValue(tag.getInt("Facing")); + facing = Direction.from3DDataValue(tag.getIntOr("Facing", 0)); super.readNBT(world, tag, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlock.java index 0e38ec7696..aa0c809b16 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlock.java @@ -6,7 +6,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -21,14 +21,14 @@ public WindmillBearingBlock(Properties properties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (player.isShiftKeyDown()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (stack.isEmpty()) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, be -> { if (be.running) { be.disassemble(); @@ -36,9 +36,9 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev } be.assembleNextTick = true; }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlockEntity.java index 07b0ace603..05597f1b11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/bearing/WindmillBearingBlockEntity.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -93,8 +93,8 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (!wasMoved) - lastGeneratedSpeed = compound.getFloat("LastGenerated"); - queuedReassembly = compound.getBoolean("QueueAssembly"); + lastGeneratedSpeed = compound.getFloatOr("LastGenerated", 0); + queuedReassembly = compound.getBooleanOr("QueueAssembly", false); super.read(compound, registries, clientPacket); } @@ -112,7 +112,7 @@ public void addBehaviours(List behaviours) { private void onDirectionChanged() { if (!running) return; - if (!level.isClientSide) + if (!level.isClientSide()) updateGeneratedRotation(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/CampfireMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/CampfireMovementBehaviour.java index fb86887260..e3860b8e66 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/CampfireMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/CampfireMovementBehaviour.java @@ -9,12 +9,12 @@ public class CampfireMovementBehaviour implements MovementBehaviour { @Override public void tick(MovementContext context) { - if (context.world == null || !context.world.isClientSide || context.position == null + if (context.world == null || !context.world.isClientSide() || context.position == null || !context.state.getValue(CampfireBlock.LIT) || context.disabled) return; // Mostly copied from CampfireBlock and CampfireBlockEntity - RandomSource random = context.world.random; + RandomSource random = context.world.getRandom(); if (random.nextFloat() < 0.11F) { for (int i = 0; i < random.nextInt(2) + 2; ++i) { context.world.addAlwaysVisibleParticle( diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/DoorMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/DoorMovingInteraction.java index b7762b9100..2121394dfa 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/DoorMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/DoorMovingInteraction.java @@ -49,7 +49,7 @@ protected BlockState handle(Player player, Contraption contraption, BlockPos pos handlePlayerInteraction(null, InteractionHand.MAIN_HAND, doublePos, contraption.entity); } - float pitch = player.level().random.nextFloat() * 0.1F + 0.9F; + float pitch = player.level().getRandom().nextFloat() * 0.1F + 0.9F; if (sound != null) playSound(player, sound, pitch); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java index 8d897014fb..6604824964 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/FenceGateMovingInteraction.java @@ -15,7 +15,7 @@ public class FenceGateMovingInteraction extends SimpleBlockMovingInteraction { protected BlockState handle(Player player, Contraption contraption, BlockPos pos, BlockState currentState) { SoundEvent sound = currentState.getValue(FenceGateBlock.OPEN) ? SoundEvents.FENCE_GATE_CLOSE : SoundEvents.FENCE_GATE_OPEN; - float pitch = player.level().random.nextFloat() * 0.1F + 0.9F; + float pitch = player.level().getRandom().nextFloat() * 0.1F + 0.9F; playSound(player, sound, pitch); return currentState.cycle(FenceGateBlock.OPEN); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovementContext.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovementContext.java index f0a77021a2..62d201547b 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovementContext.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/MovementContext.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.logistics.filter.FilterItemStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; @@ -69,7 +69,7 @@ public float getAnimationSpeed() { double length = -motion.length(); if (disabled) return 0; - if (world.isClientSide && contraption.stalled) + if (world.isClientSide() && contraption.stalled) return 700; if (Math.abs(length) < 1 / 512f) return 0; @@ -78,13 +78,13 @@ public float getAnimationSpeed() { public static MovementContext readNBT(Level world, StructureBlockInfo info, CompoundTag nbt, Contraption contraption) { MovementContext context = new MovementContext(world, info, contraption); - context.motion = VecHelper.readNBT(nbt.getList("Motion", Tag.TAG_DOUBLE)); - context.relativeMotion = VecHelper.readNBT(nbt.getList("RelativeMotion", Tag.TAG_DOUBLE)); + context.motion = VecHelper.readNBT(nbt.getListOrEmpty("Motion")); + context.relativeMotion = VecHelper.readNBT(nbt.getListOrEmpty("RelativeMotion")); if (nbt.contains("Position")) - context.position = VecHelper.readNBT(nbt.getList("Position", Tag.TAG_DOUBLE)); - context.stall = nbt.getBoolean("Stall"); - context.firstMovement = nbt.getBoolean("FirstMovement"); - context.data = nbt.getCompound("Data"); + context.position = VecHelper.readNBT(nbt.getListOrEmpty("Position")); + context.stall = nbt.getBooleanOr("Stall", false); + context.firstMovement = nbt.getBooleanOr("FirstMovement", true); + context.data = nbt.getCompoundOrEmpty("Data"); return context; } @@ -102,7 +102,7 @@ public CompoundTag writeToNBT(CompoundTag nbt) { public FilterItemStack getFilterFromBE() { if (filter != null) return filter; - return filter = FilterItemStack.of(world.registryAccess(), blockEntityData.getCompound("Filter")); + return filter = FilterItemStack.of(world.registryAccess(), blockEntityData.getCompoundOrEmpty("Filter")); } @Nullable diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/TrapdoorMovingInteraction.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/TrapdoorMovingInteraction.java index 374abc1004..aead2f1638 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/TrapdoorMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/TrapdoorMovingInteraction.java @@ -15,7 +15,7 @@ public class TrapdoorMovingInteraction extends SimpleBlockMovingInteraction { protected BlockState handle(Player player, Contraption contraption, BlockPos pos, BlockState currentState) { SoundEvent sound = currentState.getValue(TrapDoorBlock.OPEN) ? SoundEvents.WOODEN_TRAPDOOR_CLOSE : SoundEvents.WOODEN_TRAPDOOR_OPEN; - float pitch = player.level().random.nextFloat() * 0.1F + 0.9F; + float pitch = player.level().getRandom().nextFloat() * 0.1F + 0.9F; playSound(player, sound, pitch); return currentState.cycle(TrapDoorBlock.OPEN); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java index 7c098dba41..ee7b53c3c7 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/contraptions/behaviour/dispenser/DropperMovementBehaviour.java @@ -13,7 +13,7 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; @@ -24,14 +24,14 @@ public class DropperMovementBehaviour implements MovementBehaviour { @Override public void visitNewPosition(MovementContext context, BlockPos pos) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; MountedItemStorage storage = context.getItemStorage(); if (storage == null) return; - int slot = getSlot(storage, context.world.random, context.contraption.getStorage().getAllItems()); + int slot = getSlot(storage, context.world.getRandom(), context.contraption.getStorage().getAllItems()); if (slot == -1) { // all slots empty failDispense(context, pos); diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java index e7ca3f6b89..8e07f58463 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/AbstractChassisBlock.java @@ -8,14 +8,15 @@ import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Mirror; @@ -27,8 +28,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.common.Tags; - public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable, IBE, TransformableBlock { public AbstractChassisBlock(Properties properties) { @@ -36,50 +35,50 @@ public AbstractChassisBlock(Properties properties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - boolean isSlimeBall = stack.is(Tags.Items.SLIMEBALLS) || AllItems.SUPER_GLUE.isIn(stack); + boolean isSlimeBall = stack.is(Items.SLIME_BALL) || AllItems.SUPER_GLUE.isIn(stack); BooleanProperty affectedSide = getGlueableSide(state, hitResult.getDirection()); if (affectedSide == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (isSlimeBall && state.getValue(affectedSide)) { for (Direction face : Iterate.directions) { BooleanProperty glueableSide = getGlueableSide(state, face); if (glueableSide != null && !state.getValue(glueableSide) && glueAllowedOnSide(level, pos, state, face)) { - if (level.isClientSide) { + if (level.isClientSide()) { Vec3 vec = hitResult.getLocation(); level.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } AllSoundEvents.SLIME_ADDED.playOnServer(level, pos, .5f, 1); state = state.setValue(glueableSide, true); } } - if (!level.isClientSide) + if (!level.isClientSide()) level.setBlockAndUpdate(pos, state); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if ((!stack.isEmpty() || !player.isShiftKeyDown()) && !isSlimeBall) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (state.getValue(affectedSide) == isSlimeBall) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!glueAllowedOnSide(level, pos, state, hitResult.getDirection())) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) { Vec3 vec = hitResult.getLocation(); level.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } AllSoundEvents.SLIME_ADDED.playOnServer(level, pos, .5f, 1); level.setBlockAndUpdate(pos, state.setValue(affectedSide, isSlimeBall)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisBlockEntity.java index f44a7379f5..4e474203b2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisBlockEntity.java @@ -24,8 +24,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -41,7 +41,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ChassisBlockEntity extends SmartBlockEntity { @@ -268,9 +267,8 @@ public ValueSettingsBoard createBoard(Player player, BlockHitResult hitResult) { } @Override - @OnlyIn(Dist.CLIENT) public void newSettingHovered(ValueSettings valueSetting) { - if (!level.isClientSide) + if (!level.isClientSide()) return; if (!AllKeys.ctrlDown()) currentlySelectedRange = valueSetting.value() + 1; diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisRangeDisplay.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisRangeDisplay.java index d76edfcb61..4a01166b7c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisRangeDisplay.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/ChassisRangeDisplay.java @@ -14,7 +14,7 @@ import com.simibubi.create.AllKeys; import com.simibubi.create.AllSpecialTextures; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/LinearChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/LinearChassisBlock.java index 63c400bcee..c8f3707be5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/LinearChassisBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/LinearChassisBlock.java @@ -13,13 +13,16 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.util.RandomSource; public class LinearChassisBlock extends AbstractChassisBlock { @@ -57,8 +60,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockState updateShape(BlockState state, Direction side, BlockState other, LevelAccessor p_196271_4_, - BlockPos p_196271_5_, BlockPos p_196271_6_) { + protected BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess ticks, BlockPos pos, + Direction side, BlockPos neighbourPos, BlockState other, RandomSource random) { BooleanProperty property = getGlueableSide(state, side); if (property == null || !sameKind(state, other) || state.getValue(AXIS) != other.getValue(AXIS)) return state; diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlock.java index d422a79ea7..e73eb1f313 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlock.java @@ -10,6 +10,7 @@ import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.context.BlockPlaceContext; @@ -19,6 +20,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -54,9 +56,9 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); @@ -91,20 +93,13 @@ private boolean isUprightSticker(BlockGetter world, BlockPos pos) { } @Override - public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, float p_152430_) { - if (!isUprightSticker(p_152426_, p_152428_) || p_152429_.isSuppressingBounce()) + public void fallOn(Level p_152426_, BlockState p_152427_, BlockPos p_152428_, Entity p_152429_, double p_152430_) { + boolean upright = isUprightSticker(p_152426_, p_152428_); + if (!upright || p_152429_.isSuppressingBounce()) super.fallOn(p_152426_, p_152427_, p_152428_, p_152429_, p_152430_); p_152429_.causeFallDamage(p_152430_, 1.0F, p_152426_.damageSources().fall()); - } - - @Override - public void updateEntityAfterFallOn(BlockGetter p_176216_1_, Entity p_176216_2_) { - if (!isUprightSticker(p_176216_1_, p_176216_2_.blockPosition() - .below()) || p_176216_2_.isSuppressingBounce()) { - super.updateEntityAfterFallOn(p_176216_1_, p_176216_2_); - } else { - this.bounceUp(p_176216_2_); - } + if (upright && !p_152429_.isSuppressingBounce()) + this.bounceUp(p_152429_); } private void bounceUp(Entity p_226946_1_) { @@ -142,11 +137,12 @@ public boolean addLandingEffects(BlockState state1, ServerLevel worldserver, Blo public boolean addRunningEffects(BlockState state, Level world, BlockPos pos, Entity entity) { if (state.getValue(FACING) == Direction.UP) { Vec3 Vector3d = entity.getDeltaMovement(); + RandomSource random = world.getRandom(); world.addParticle( - new BlockParticleOption(ParticleTypes.BLOCK, Blocks.SLIME_BLOCK.defaultBlockState()).setPos(pos), - entity.getX() + ((double) world.random.nextFloat() - 0.5D) * (double) entity.getBbWidth(), + new BlockParticleOption(ParticleTypes.BLOCK, Blocks.SLIME_BLOCK.defaultBlockState()), + entity.getX() + ((double) random.nextFloat() - 0.5D) * (double) entity.getBbWidth(), entity.getY() + 0.1D, - entity.getZ() + ((double) world.random.nextFloat() - 0.5D) * (double) entity.getBbWidth(), + entity.getZ() + ((double) random.nextFloat() - 0.5D) * (double) entity.getBbWidth(), Vector3d.x * -4.0D, 1.5D, Vector3d.z * -4.0D); return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlockEntity.java index 93781ffb65..cd18fa9e57 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerBlockEntity.java @@ -4,7 +4,6 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; import com.simibubi.create.compat.Mods; import com.simibubi.create.compat.computercraft.AbstractComputerBehaviour; import com.simibubi.create.compat.computercraft.ComputerCraftProxy; @@ -14,11 +13,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dan200.computercraft.api.peripheral.PeripheralCapability; -import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -27,7 +24,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; public class StickerBlockEntity extends SmartBlockEntity { @@ -61,7 +57,7 @@ public void addBehaviours(List behaviours) { @Override public void initialize() { super.initialize(); - if (!level.isClientSide) + if (!level.isClientSide()) return; piston.startWithValue(isBlockStateExtended() ? 1 : 0); } @@ -75,13 +71,13 @@ public boolean isBlockStateExtended() { @Override public void tick() { super.tick(); - if (!level.isClientSide) + if (!level.isClientSide()) return; piston.tickChaser(); if (isAttachedToBlock() && piston.getValue(0) != piston.getValue() && piston.getValue() == 1) { SuperGlueItem.spawnParticles(level, worldPosition, getBlockState().getValue(StickerBlock.FACING), true); - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> playSound(true)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> StickerClient.playSound(this, true)); } if (!update) @@ -89,10 +85,10 @@ public void tick() { update = false; int target = isBlockStateExtended() ? 1 : 0; if (isAttachedToBlock() && target == 0 && piston.getChaseTarget() == 1) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> playSound(false)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> StickerClient.playSound(this, false)); piston.chase(target, .4f, Chaser.LINEAR); - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> VisualizationHelper.queueUpdate(this)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> StickerClient.queueUpdate(this)); } public boolean isAttachedToBlock() { @@ -115,11 +111,6 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool update = true; } - @OnlyIn(Dist.CLIENT) - public void playSound(boolean attach) { - AllSoundEvents.SLIME_ADDED.play(level, Minecraft.getInstance().player, worldPosition, 0.35f, attach ? 0.75f : 0.2f); - } - @Override public void invalidate() { super.invalidate(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerClient.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerClient.java new file mode 100644 index 0000000000..d6a5d1fda1 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerClient.java @@ -0,0 +1,20 @@ +package com.simibubi.create.content.contraptions.chassis; + +import com.simibubi.create.AllSoundEvents; + +import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.world.entity.player.Player; + +public class StickerClient { + + public static void playSound(StickerBlockEntity blockEntity, boolean attach) { + Player player = Minecraft.getInstance().player; + AllSoundEvents.SLIME_ADDED.play(blockEntity.getLevel(), player, blockEntity.getBlockPos(), 0.35f, attach ? 0.75f : 0.2f); + } + + public static void queueUpdate(StickerBlockEntity blockEntity) { + VisualizationHelper.queueUpdate(blockEntity); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerRenderer.java index 724446f39c..77711e90e3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerRenderer.java @@ -5,13 +5,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -29,7 +29,7 @@ protected void renderSafe(StickerBlockEntity be, float partialTicks, PoseStack m BlockState state = be.getBlockState(); SuperByteBuffer head = CachedBuffers.partial(AllPartialModels.STICKER_HEAD, state); - float offset = be.piston.getValue(AnimationTickHolder.getPartialTicks(be.getLevel())); + float offset = be.piston.getValue(AnimationTickHolder.getPartialTicks()); if (be.getLevel() != Minecraft.getInstance().level && !be.isVirtual()) offset = state.getValue(StickerBlock.EXTENDED) ? 1 : 0; @@ -43,7 +43,7 @@ protected void renderSafe(StickerBlockEntity be, float partialTicks, PoseStack m .translate(0, (offset * offset) * 4 / 16f, 0); head.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java index 21899a34c1..dd623fb6e3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/chassis/StickerVisual.java @@ -12,7 +12,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionPickupLimiting.java b/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionPickupLimiting.java index 54003837b7..c3c72049e3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionPickupLimiting.java +++ b/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionPickupLimiting.java @@ -4,7 +4,7 @@ import com.simibubi.create.foundation.mixin.accessor.NbtAccounterAccessor; import io.netty.buffer.Unpooled; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.nbt.NbtAccounter; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; diff --git a/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionSyncLimiting.java b/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionSyncLimiting.java index 00884e7c3a..f0b346f629 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionSyncLimiting.java +++ b/src/main/java/com/simibubi/create/content/contraptions/data/ContraptionSyncLimiting.java @@ -2,7 +2,7 @@ import com.simibubi.create.compat.Mods; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java index cd78f2d5ee..6bb3b16e28 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorColumn.java @@ -11,10 +11,10 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -91,7 +91,7 @@ public Collection getContacts() { } public void gatherAll() { - BlockPos.betweenClosedStream(contactAt(level.getMinBuildHeight()), contactAt(level.getMaxBuildHeight())) + BlockPos.betweenClosedStream(contactAt(level.getMinY()), contactAt(level.getMaxY())) .filter(p -> coords.equals(ElevatorContactBlock.getColumnCoords(level, p))) .forEach(p -> level.setBlock(p, BlockHelper.copyProperties(level.getBlockState(p), AllBlocks.ELEVATOR_CONTACT.getDefaultState()), 3)); @@ -220,8 +220,8 @@ public CompoundTag write() { } public static ColumnCoords read(CompoundTag tag) { - int x = tag.getInt("X"); - int z = tag.getInt("Z"); + int x = tag.getIntOr("X", 0); + int z = tag.getIntOr("Z", 0); Direction side = NBTHelper.readEnum(tag, "Side", Direction.class); return new ColumnCoords(x, z, side); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java index 60243467d8..0ec39d22eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlock.java @@ -19,9 +19,7 @@ import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -29,7 +27,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -37,8 +35,10 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -49,9 +49,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class ElevatorContactBlock extends WrenchableDirectionalBlock implements IBE, SpecialBlockItemRequirement { @@ -107,9 +104,8 @@ public static ColumnCoords getColumnCoords(LevelAccessor level, BlockPos pos) { } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { - if (pLevel.isClientSide) + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { + if (pLevel.isClientSide()) return; boolean isPowered = pState.getValue(POWERED); @@ -156,6 +152,12 @@ public void scheduleActivation(LevelAccessor pLevel, BlockPos pPos) { pLevel.scheduleTick(pPos, this, 1); } + public void scheduleActivation(ScheduledTickAccess ticks, BlockPos pPos) { + if (!ticks.getBlockTicks() + .hasScheduledTick(pPos, this)) + ticks.scheduleTick(pPos, this, 1); + } + @Override public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRand) { boolean wasPowering = pState.getValue(POWERING); @@ -178,13 +180,12 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { + public BlockState updateShape(BlockState stateIn, LevelReader worldIn, ScheduledTickAccess ticks, BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { if (facing != stateIn.getValue(FACING)) return stateIn; boolean hasValidContact = RedstoneContactBlock.hasValidContact(worldIn, currentPos, facing); if (stateIn.getValue(POWERING) != hasValidContact) - scheduleActivation(worldIn, currentPos); + scheduleActivation(ticks, currentPos); return stateIn; } @@ -199,7 +200,7 @@ public boolean isSignalSource(BlockState state) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.REDSTONE_CONTACT.asStack(); } @@ -236,18 +237,11 @@ public ItemRequirement getRequiredItems(BlockState state, BlockEntity be) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player != null && AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> this.displayScreen(be, player))); - return ItemInteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(ElevatorContactBlockEntity be, Player player) { - if (player instanceof LocalPlayer) - ScreenOpener - .open(new ElevatorContactScreen(be.getBlockPos(), be.shortName, be.longName, be.doorControls.mode)); + return InteractionResult.TRY_WITH_EMPTY_HAND; + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> ElevatorContactClient.displayScreen(be, player))); + return InteractionResult.SUCCESS; } public static int getLight(BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlockEntity.java index 08e216f658..787b374786 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactBlockEntity.java @@ -8,8 +8,8 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -70,19 +70,19 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - shortName = tag.getString("ShortName"); - longName = tag.getString("LongName"); + shortName = tag.getStringOr("ShortName", ""); + longName = tag.getStringOr("LongName", ""); if (tag.contains("LastReportedCurrentFloor")) - lastReportedCurrentFloor = tag.getString("LastReportedCurrentFloor"); + lastReportedCurrentFloor = tag.getStringOr("LastReportedCurrentFloor", ""); if (clientPacket) return; - activateBlock = tag.getBoolean("Activate"); + activateBlock = tag.getBooleanOr("Activate", false); if (!tag.contains("ColumnTarget")) return; - int target = tag.getInt("ColumnTarget"); + int target = tag.getIntOr("ColumnTarget", 0); boolean active = tag.contains("ColumnActive"); if (columnCoords == null) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactClient.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactClient.java new file mode 100644 index 0000000000..fbad35136d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactClient.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.contraptions.elevator; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; + +public class ElevatorContactClient { + + public static void displayScreen(ElevatorContactBlockEntity be, Player player) { + if (player instanceof LocalPlayer) + ScreenOpener.open(new ElevatorContactScreen(be.getBlockPos(), be.shortName, be.longName, be.doorControls.mode)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactScreen.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactScreen.java index 5403354559..fce8b99006 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContactScreen.java @@ -11,14 +11,14 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.TooltipArea; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.CommonComponents; @@ -113,28 +113,27 @@ private EditBox editBox(int x, int width, int chars) { editBox.setBordered(false); editBox.setMaxLength(chars); editBox.setFocused(false); - editBox.mouseClicked(0, 0, 0); addRenderableWidget(editBox); return editBox; } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); FormattedCharSequence formattedcharsequence = title.getVisualOrderText(); - graphics.drawString(font, formattedcharsequence, - (float) (x + (background.getWidth() - 8) / 2 - font.width(formattedcharsequence) / 2), (float) y + 6, 0x2F3738, false); + graphics.text(font, formattedcharsequence, + x + (background.getWidth() - 8) / 2 - font.width(formattedcharsequence) / 2, y + 6, 0x2F3738, false); GuiGameElement.of(AllBlocks.ELEVATOR_CONTACT.asStack()).at(x + background.getWidth() + 6, y + background.getHeight() - 56, -200) .scale(5) - .render(graphics); + .render(graphics, 0, 0); - graphics.renderItem(AllBlocks.TRAIN_DOOR.asStack(), x + 37, y + 58); + graphics.item(AllBlocks.TRAIN_DOOR.asStack(), x + 37, y + 58); } @Override @@ -149,7 +148,7 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { } if (shortNameInput.isHoveredOrFocused()) - longNameInput.mouseClicked(0, 0, 0); + longNameInput.setFocused(false); if (!consumed && pMouseX > guiLeft + 22 && pMouseY > guiTop + 24 && pMouseX < guiLeft + 50 && pMouseY < guiTop + 40) { @@ -177,7 +176,7 @@ public boolean keyPressed(int keyCode, int p_keyPressed_2_, int p_keyPressed_3_) } private void confirm() { - CatnipServices.NETWORK.sendToServer(new ElevatorContactEditPacket(pos, shortName, longName, doorControl)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ElevatorContactEditPacket(pos, shortName, longName, doorControl)); onClose(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java index a297f0fb0a..24b10bb4eb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorContraption.java @@ -18,9 +18,9 @@ import com.simibubi.create.content.redstone.contact.RedstoneContactBlock; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -161,11 +161,11 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPack @Override public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { - arrived = nbt.getBoolean("Arrived"); - column = ColumnCoords.read(nbt.getCompound("Column")); - contactYOffset = nbt.getInt("ContactY"); - maxContactY = nbt.getInt("MaxContactY"); - minContactY = nbt.getInt("MinContactY"); + arrived = nbt.getBooleanOr("Arrived", false); + column = ColumnCoords.read(nbt.getCompoundOrEmpty("Column")); + contactYOffset = nbt.getIntOr("ContactY", 0); + maxContactY = nbt.getIntOr("MaxContactY", 0); + minContactY = nbt.getIntOr("MinContactY", 0); super.readNBT(world, nbt, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorControlsHandler.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorControlsHandler.java index fc5c817657..e39563c818 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorControlsHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorControlsHandler.java @@ -17,7 +17,7 @@ import com.simibubi.create.content.contraptions.actors.contraptionControls.ContraptionControlsMovement.ElevatorFloorSelection; import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -30,7 +30,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ElevatorControlsHandler { @@ -48,7 +47,6 @@ public boolean testHit(LevelAccessor level, BlockPos pos, BlockState state, Vec3 } - @OnlyIn(Dist.CLIENT) public static boolean onScroll(double delta) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorFloorListPacket.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorFloorListPacket.java index 3acc2c5975..10f729193d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorFloorListPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorFloorListPacket.java @@ -5,21 +5,20 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ElevatorFloorListPacket(int entityId, List>> floors) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -33,9 +32,8 @@ public ElevatorFloorListPacket(AbstractContraptionEntity entity, List { be.clicked(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyBlockEntity.java index 07614da8ee..b30a263628 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyBlockEntity.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.contraptions.pulley.PulleyBlockEntity; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.infrastructure.config.AllConfigs; import net.minecraft.core.BlockPos; @@ -36,7 +36,7 @@ public ElevatorPulleyBlockEntity(BlockEntityType type, BlockPos pos, BlockSta } private int getTargetOffset() { - if (level.isClientSide) + if (level.isClientSide()) return clientOffsetTarget; if (movedContraption == null || !(movedContraption.getContraption()instanceof ElevatorContraption ec)) return (int) offset; @@ -53,8 +53,8 @@ public void attach(ControlledContraptionEntity contraption) { super.attach(contraption); if (offset >= 0) resetContraptionToOffset(); - if (level.isClientSide) { - CatnipServices.NETWORK.sendToServer(new ElevatorFloorListPacket.RequestFloorList(contraption)); + if (level.isClientSide()) { + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ElevatorFloorListPacket.RequestFloorList(contraption)); return; } @@ -151,11 +151,11 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool if (!clientPacket) return; - clientOffsetTarget = compound.getInt("ClientTarget"); + clientOffsetTarget = compound.getIntOr("ClientTarget", 0); if (initialOffsetReceived) return; - offset = compound.getFloat("Offset"); + offset = compound.getFloatOr("Offset", 0); initialOffsetReceived = true; resetContraptionToOffset(); } @@ -257,7 +257,7 @@ protected void assemble() throws AssemblyException { forceMove = true; // Collect Construct - if (!level.isClientSide && mirrorParent == null) { + if (!level.isClientSide() && mirrorParent == null) { needsContraption = false; BlockPos anchor = worldPosition.below(Mth.floor(offset + 1)); offset = Mth.floor(offset); diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyRenderer.java index 5033ee6a87..bc6353823e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyRenderer.java @@ -9,12 +9,12 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; @@ -36,7 +36,7 @@ protected void renderSafe(ElevatorPulleyBlockEntity be, float partialTicks, Pose SpriteShiftEntry beltShift = AllSpriteShifts.ELEVATOR_BELT; SpriteShiftEntry coilShift = AllSpriteShifts.ELEVATOR_COIL; - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); Level world = be.getLevel(); BlockState blockState = be.getBlockState(); BlockPos pos = be.getBlockPos(); @@ -104,7 +104,7 @@ protected SuperByteBuffer getRotatedCoil(KineticBlockEntity be) { } @Override - public boolean shouldRenderOffScreen(ElevatorPulleyBlockEntity p_188185_1_) { + public boolean shouldRenderOffScreen() { return true; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java index ba0605a894..051b1da108 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorPulleyVisual.java @@ -23,7 +23,7 @@ import dev.engine_room.flywheel.lib.visual.util.InstanceRecycler; import it.unimi.dsi.fastutil.longs.LongArraySet; import it.unimi.dsi.fastutil.longs.LongSet; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.SectionPos; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorTargetFloorPacket.java b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorTargetFloorPacket.java index e0ea1f7c18..7f550cd786 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorTargetFloorPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/elevator/ElevatorTargetFloorPacket.java @@ -26,7 +26,7 @@ public ElevatorTargetFloorPacket(AbstractContraptionEntity entity, int targetY) @Override public void handle(ServerPlayer sender) { - Entity entityByID = sender.serverLevel() + Entity entityByID = sender.level() .getEntity(entityId); if (!(entityByID instanceof AbstractContraptionEntity ace)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlock.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlock.java index 7fd6b65a0f..bcf7d4adc5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlock.java @@ -7,20 +7,24 @@ import com.simibubi.create.content.kinetics.gantry.GantryShaftBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -56,14 +60,14 @@ protected Direction getFacingForPlacement(BlockPlaceContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild() || player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (stack.isEmpty()) { withBlockEntityDo(level, pos, be -> be.checkValidGantryShaft()); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -77,16 +81,15 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, BlockPos updatePos, - boolean p_220069_6_) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { + BlockPos updatePos = orientation == null ? pos : pos.relative(orientation.getFront()); if (updatePos.equals(pos.relative(state.getValue(FACING) .getOpposite())) && !canSurvive(state, world, pos)) world.destroyBlock(pos, true); } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState otherState, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos p_196271_6_, BlockState otherState, RandomSource random) { if (state.getValue(FACING) != direction.getOpposite()) return state; return cycleAxisIfNecessary(state, direction, otherState); diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlockEntity.java index 2b0b715fb1..732ec27e58 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageBlockEntity.java @@ -13,6 +13,7 @@ import com.simibubi.create.content.kinetics.transmission.sequencer.SequencerInstructions; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -63,7 +64,7 @@ public void queueAssembly() { public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (assembleNextTick) { @@ -154,7 +155,7 @@ public float propagateRotationTo(KineticBlockEntity target, BlockState stateFrom if (!stateTo.getValue(GantryShaftBlock.POWERED)) return defaultModifier; - Direction direction = Direction.getNearest(diff.getX(), diff.getY(), diff.getZ()); + Direction direction = LegacyDirectionBridge.nearest(diff.getX(), diff.getY(), diff.getZ(), Direction.NORTH); if (stateFrom.getValue(GantryCarriageBlock.FACING) != direction.getOpposite()) return defaultModifier; return getGantryPinionModifier(stateTo.getValue(GantryShaftBlock.FACING), stateFrom.getValue(GantryCarriageBlock.FACING)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageRenderer.java index 63af5ff508..4f4c667198 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageRenderer.java @@ -6,13 +6,13 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -65,12 +65,12 @@ protected void renderSafe(GantryCarriageBlockEntity be, float partialTicks, Pose .uncenter(); cogs.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } public static float getAngleForBE(KineticBlockEntity be, final BlockPos pos, Axis axis) { - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); float offset = getRotationOffsetForPosition(be, pos, axis); return (time * be.getSpeed() * 3f / 20 + offset) % 360; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java index 539f3bfe7f..0d5e18bc46 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryCarriageVisual.java @@ -13,8 +13,8 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraption.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraption.java index cade20dddc..48866a3e09 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraption.java @@ -40,7 +40,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag tag, boolean spawnData) { - facing = Direction.from3DDataValue(tag.getInt("Facing")); + facing = Direction.from3DDataValue(tag.getIntOr("Facing", 0)); super.readNBT(world, tag, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionEntity.java index f01815373f..7a0808725d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionEntity.java @@ -11,9 +11,9 @@ import com.simibubi.create.content.kinetics.gantry.GantryShaftBlockEntity; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -28,7 +28,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class GantryContraptionEntity extends AbstractContraptionEntity { @@ -60,7 +59,7 @@ protected void tickContraption() { return; double prevAxisMotion = axisMotion; - if (level().isClientSide) { + if (level().isClientSide()) { clientOffsetDiff *= .75; updateClientMotion(); } @@ -70,7 +69,7 @@ protected void tickContraption() { Vec3 movementVec = getDeltaMovement(); if (ContraptionCollider.collideBlocks(this)) { - if (!level().isClientSide) + if (!level().isClientSide()) disassemble(); return; } @@ -85,7 +84,7 @@ protected void tickContraption() { if (Math.signum(prevAxisMotion) != Math.signum(axisMotion) && prevAxisMotion != 0) contraption.stop(level()); - if (!level().isClientSide && (prevAxisMotion != axisMotion || tickCount % 3 == 0)) + if (!level().isClientSide() && (prevAxisMotion != axisMotion || tickCount % 3 == 0)) sendPacket(); } @@ -103,7 +102,7 @@ protected void checkPinionShaft() { BlockEntity be = level().getBlockEntity(gantryShaftPos); if (!(be instanceof GantryShaftBlockEntity gantryShaftBlockEntity) || !AllBlocks.GANTRY_SHAFT.has(be.getBlockState())) { - if (!level().isClientSide) { + if (!level().isClientSide()) { setContraptionMotion(Vec3.ZERO); disassemble(); } @@ -116,14 +115,14 @@ protected void checkPinionShaft() { float pinionMovementSpeed = gantryShaftBlockEntity.getPinionMovementSpeed(); if (blockState.getValue(GantryShaftBlock.POWERED) || pinionMovementSpeed == 0) { setContraptionMotion(Vec3.ZERO); - if (!level().isClientSide) + if (!level().isClientSide()) disassemble(); return; } if (sequencedOffsetLimit >= 0) pinionMovementSpeed = (float) Mth.clamp(pinionMovementSpeed, -sequencedOffsetLimit, sequencedOffsetLimit); - movementVec = Vec3.atLowerCornerOf(direction.getNormal()) + movementVec = Vec3.atLowerCornerOf(direction.getUnitVec3i()) .scale(pinionMovementSpeed); Vec3 nextPosition = currentPosition.add(movementVec); @@ -136,12 +135,12 @@ protected void checkPinionShaft() { .getStep() < 0))) if (!gantryShaftBlockEntity.canAssembleOn()) { setContraptionMotion(Vec3.ZERO); - if (!level().isClientSide) + if (!level().isClientSide()) disassemble(); return; } - if (level().isClientSide) + if (level().isClientSide()) return; axisMotion = pinionMovementSpeed; @@ -160,7 +159,7 @@ protected void writeAdditional(CompoundTag compound, HolderLookup.Provider regis protected void readAdditional(CompoundTag compound, boolean spawnData) { movementAxis = NBTHelper.readEnum(compound, "GantryAxis", Direction.class); sequencedOffsetLimit = - compound.contains("SequencedOffsetLimit") ? compound.getDouble("SequencedOffsetLimit") : -1; + compound.getDoubleOr("SequencedOffsetLimit", -1); super.readAdditional(compound, spawnData); } @@ -188,8 +187,6 @@ protected float getStalledAngle() { public void teleportTo(double p_70634_1_, double p_70634_3_, double p_70634_5_) { } - @Override - @OnlyIn(Dist.CLIENT) public void lerpTo(double pX, double pY, double pZ, float pYRot, float pXRot, int pSteps) { } @@ -205,14 +202,13 @@ public ContraptionRotationState getRotationState() { } @Override - @OnlyIn(Dist.CLIENT) public void applyLocalTransforms(PoseStack matrixStack, float partialTicks) { } public void updateClientMotion() { float modifier = movementAxis.getAxisDirection() .getStep(); - Vec3 motion = Vec3.atLowerCornerOf(movementAxis.getNormal()) + Vec3 motion = Vec3.atLowerCornerOf(movementAxis.getUnitVec3i()) .scale((axisMotion + clientOffsetDiff * modifier / 2d) * ServerSpeedProvider.get()); if (sequencedOffsetLimit >= 0) motion = VecHelper.clampComponentWise(motion, (float) sequencedOffsetLimit); @@ -230,7 +226,6 @@ public void sendPacket() { new GantryContraptionUpdatePacket(getId(), getAxisCoord(), axisMotion, sequencedOffsetLimit)); } - @OnlyIn(Dist.CLIENT) public static void handlePacket(GantryContraptionUpdatePacket packet) { Entity entity = Minecraft.getInstance().level.getEntity(packet.entityID()); if (!(entity instanceof GantryContraptionEntity ce)) diff --git a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionUpdatePacket.java index 287d552010..7ae464fcf5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionUpdatePacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/gantry/GantryContraptionUpdatePacket.java @@ -4,11 +4,10 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record GantryContraptionUpdatePacket(int entityID, double coord, double motion, double sequenceLimit) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -20,8 +19,7 @@ public record GantryContraptionUpdatePacket(int entityID, double coord, double m ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { GantryContraptionEntity.handlePacket(this); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/GlueEffectPacket.java b/src/main/java/com/simibubi/create/content/contraptions/glue/GlueEffectPacket.java index 019148b235..1fac027d90 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/GlueEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/GlueEffectPacket.java @@ -4,13 +4,12 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record GlueEffectPacket(BlockPos pos, Direction direction, boolean fullBlock) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -21,11 +20,10 @@ public record GlueEffectPacket(BlockPos pos, Direction direction, boolean fullBl ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (!player.blockPosition().closerThan(pos, 100)) return; - SuperGlueItem.spawnParticles(player.clientLevel, pos, direction, fullBlock); + SuperGlueItem.spawnParticles(player.level(), pos, direction, fullBlock); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java index 9ce0f23342..e18f094f62 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueEntity.java @@ -19,9 +19,10 @@ import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock; import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -54,6 +55,8 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; public class SuperGlueEntity extends Entity implements IEntityWithComplexSpawn, SpecialEntityItemRequirement { @@ -156,7 +159,7 @@ public static boolean isSideSticky(Level world, BlockPos pos, Direction directio } @Override - public boolean hurt(DamageSource source, float amount) { + public boolean hurtServer(ServerLevel level, DamageSource source, float amount) { return false; } @@ -164,7 +167,6 @@ public boolean hurt(DamageSource source, float amount) { public void tick() { xRotO = getXRot(); yRotO = getYRot(); - walkDistO = walkDist; xo = getX(); yo = getY(); zo = getZ(); @@ -184,13 +186,13 @@ public void setPos(double x, double y, double z) { @Override public void move(MoverType typeIn, Vec3 pos) { - if (!level().isClientSide && isAlive() && pos.lengthSqr() > 0.0D) + if (!level().isClientSide() && isAlive() && pos.lengthSqr() > 0.0D) discard(); } @Override public void push(double x, double y, double z) { - if (!level().isClientSide && isAlive() && x * x + y * y + z * z > 0.0D) + if (!level().isClientSide() && isAlive() && x * x + y * y + z * z > 0.0D) discard(); } @@ -209,17 +211,30 @@ public void push(Entity entityIn) { } @Override - public InteractionResult interact(Player player, InteractionHand hand) { + public InteractionResult interact(Player player, InteractionHand hand, Vec3 location) { return InteractionResult.PASS; } @Override - public void addAdditionalSaveData(CompoundTag compound) { + protected void addAdditionalSaveData(ValueOutput output) { + CompoundTag compound = new CompoundTag(); Vec3 position = position(); writeBoundingBox(compound, getBoundingBox().move(position.scale(-1))); + LegacyBlockEntityTagBridge.store(output, compound); } @Override + protected void readAdditionalSaveData(ValueInput input) { + CompoundTag compound = LegacyBlockEntityTagBridge.read(input); + Vec3 position = position(); + setBoundingBox(readBoundingBox(compound).move(position)); + } + + public void addAdditionalSaveData(CompoundTag compound) { + Vec3 position = position(); + writeBoundingBox(compound, getBoundingBox().move(position.scale(-1))); + } + public void readAdditionalSaveData(CompoundTag compound) { Vec3 position = position(); setBoundingBox(readBoundingBox(compound).move(position)); @@ -231,8 +246,8 @@ public static void writeBoundingBox(CompoundTag compound, AABB bb) { } public static AABB readBoundingBox(CompoundTag compound) { - Vec3 from = VecHelper.readNBT(compound.getList("From", Tag.TAG_DOUBLE)); - Vec3 to = VecHelper.readNBT(compound.getList("To", Tag.TAG_DOUBLE)); + Vec3 from = VecHelper.readNBT(compound.getListOrEmpty("From")); + Vec3 to = VecHelper.readNBT(compound.getListOrEmpty("To")); return new AABB(from, to); } @@ -309,19 +324,19 @@ public void spawnParticles() { AxisDirection positive = AxisDirection.POSITIVE; double max = axis.choose(extents.x, extents.y, extents.z); Vec3 normal = Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axis, positive) - .getNormal()); + .getUnitVec3i()); for (Axis axis2 : Iterate.axes) { if (axis2 == axis) continue; double max2 = axis2.choose(extents.x, extents.y, extents.z); Vec3 normal2 = Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axis2, positive) - .getNormal()); + .getUnitVec3i()); for (Axis axis3 : Iterate.axes) { if (axis3 == axis2 || axis3 == axis) continue; double max3 = axis3.choose(extents.x, extents.y, extents.z); Vec3 normal3 = Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axis3, positive) - .getNormal()); + .getUnitVec3i()); for (int i = 0; i <= max * 2; i++) { for (int o1 : Iterate.zeroAndOne) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueHandler.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueHandler.java index 638f9b5a7d..15daa23b08 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueHandler.java @@ -6,10 +6,10 @@ import com.simibubi.create.AllItems; import com.simibubi.create.api.contraption.BlockMovementChecks; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.levelWrappers.RayTraceLevel; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.level.wrapper.RayTraceLevel; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.component.DataComponents; @@ -20,7 +20,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; @@ -95,12 +94,12 @@ public static void glueInOffHandAppliesOnBlockPlace(EntityPlaceEvent event, Bloc return; SuperGlueEntity entity = new SuperGlueEntity(world, SuperGlueEntity.span(gluePos, gluePos.relative(face))); - CustomData customData = itemstack.get(DataComponents.CUSTOM_DATA); + var customData = itemstack.get(DataComponents.ENTITY_DATA); if (customData != null) EntityType.updateCustomEntityTag(world, placer, entity, customData); if (SuperGlueEntity.isValidFace(world, gluePos, face)) { - if (!world.isClientSide) { + if (!world.isClientSide()) { world.addFreshEntity(entity); CatnipServices.NETWORK.sendToClientsTrackingEntity(entity, new GlueEffectPacket(gluePos, face, true)); diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueItem.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueItem.java index 989fe011c8..33978e7444 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueItem.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.contraptions.chassis.AbstractChassisBlock; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ItemParticleOption; @@ -17,10 +17,9 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.common.util.TriState; +import net.minecraft.util.TriState; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @EventBusSubscriber @@ -46,31 +45,29 @@ public SuperGlueItem(Properties properties) { super(properties); } - @Override public boolean canAttackBlock(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer) { return false; } - @OnlyIn(Dist.CLIENT) public static void spawnParticles(Level world, BlockPos pos, Direction direction, boolean fullBlock) { - Vec3 vec = Vec3.atLowerCornerOf(direction.getNormal()); + Vec3 vec = Vec3.atLowerCornerOf(direction.getUnitVec3i()); Vec3 plane = VecHelper.axisAlingedPlaneOf(vec); Vec3 facePos = VecHelper.getCenterOf(pos) .add(vec.scale(.5f)); - float distance = fullBlock ? 1f : .25f + .25f * (world.random.nextFloat() - .5f); + var random = world.getRandom(); + float distance = fullBlock ? 1f : .25f + .25f * (random.nextFloat() - .5f); plane = plane.scale(distance); - ItemStack stack = new ItemStack(Items.SLIME_BALL); for (int i = fullBlock ? 40 : 15; i > 0; i--) { - Vec3 offset = VecHelper.rotate(plane, 360 * world.random.nextFloat(), direction.getAxis()); + Vec3 offset = VecHelper.rotate(plane, 360 * random.nextFloat(), direction.getAxis()); Vec3 motion = offset.normalize() .scale(1 / 16f); if (fullBlock) offset = new Vec3(Mth.clamp(offset.x, -.5, .5), Mth.clamp(offset.y, -.5, .5), Mth.clamp(offset.z, -.5, .5)); Vec3 particlePos = facePos.add(offset); - world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), particlePos.x, particlePos.y, + world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, Items.SLIME_BALL), particlePos.x, particlePos.y, particlePos.z, motion.x, motion.y, motion.z); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueRenderer.java index 1047aeb314..971b2dfee4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueRenderer.java @@ -3,20 +3,18 @@ import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) -public class SuperGlueRenderer extends EntityRenderer { +public class SuperGlueRenderer extends EntityRenderer { public SuperGlueRenderer(EntityRendererProvider.Context context) { super(context); } @Override - public ResourceLocation getTextureLocation(SuperGlueEntity entity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHandler.java index 2c68263ab0..5e4662c17f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHandler.java @@ -11,8 +11,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.RaycastHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; @@ -62,7 +62,7 @@ public void tick() { if (clusterCooldown > 0) { if (clusterCooldown == 25) - player.displayClientMessage(CommonComponents.EMPTY, true); + player.sendSystemMessage(CommonComponents.EMPTY); Outliner.getInstance().keep(clusterOutlineSlot); clusterCooldown--; } @@ -194,7 +194,7 @@ public boolean onMouseInput(boolean attack) { if (attack) { if (selected == null) return false; - CatnipServices.NETWORK.sendToServer(new SuperGlueRemovalPacket(selected.getId(), soundSourceForRemoval)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new SuperGlueRemovalPacket(selected.getId(), soundSourceForRemoval)); selected = null; clusterCooldown = 0; return true; @@ -252,7 +252,7 @@ public void discard() { public void confirm() { LocalPlayer player = Minecraft.getInstance().player; - CatnipServices.NETWORK.sendToServer(new SuperGlueSelectionPacket(firstPos, hoveredPos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new SuperGlueSelectionPacket(firstPos, hoveredPos)); AllSoundEvents.SLIME_ADDED.playAt(player.level(), hoveredPos, 0.5F, 0.95F, false); player.level().playSound(player, hoveredPos, SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, 0.75f, 1); diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHelper.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHelper.java index a4e35b3170..647941fe96 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHelper.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionHelper.java @@ -7,10 +7,9 @@ import com.simibubi.create.api.contraption.BlockMovementChecks; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.NonNullList; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -69,9 +68,9 @@ public static boolean collectGlueFromInventory(Player player, int requiredAmount if (requiredAmount == 0) return true; - NonNullList items = player.getInventory().items; + List items = player.getInventory().getNonEquipmentItems(); for (int i = -1; i < items.size(); i++) { - int slot = i == -1 ? player.getInventory().selected : i; + int slot = i == -1 ? player.getInventory().getSelectedSlot() : i; ItemStack stack = items.get(slot); if (stack.isEmpty()) continue; diff --git a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionPacket.java index 98d0dbce51..9d06a70f52 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/glue/SuperGlueSelectionPacket.java @@ -23,7 +23,8 @@ public record SuperGlueSelectionPacket(BlockPos from, BlockPos to) implements Se @Override public void handle(ServerPlayer player) { - if (!player.canInteractWithBlock(to, 2)) + double reach = player.getAttributeValue(Attributes.BLOCK_INTERACTION_RANGE) + 2; + if (player.distanceToSqr(Vec3.atCenterOf(to)) > reach * reach) return; if (!to.closerThan(from, 25)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingCreationPacket.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingCreationPacket.java index 281a3de84a..4e9e209546 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingCreationPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingCreationPacket.java @@ -6,7 +6,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; public record CouplingCreationPacket(int id1, int id2) implements ServerboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java index 093193517c..fc8d28ebac 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandler.java @@ -15,12 +15,12 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -175,7 +175,7 @@ public static MinecartController getNextInCouplingChain(Level world, MinecartCon public static void status(Player player, String key) { if (player == null) return; - player.displayClientMessage(CreateLang.translateDirect("minecart_coupling." + key), true); + player.sendSystemMessage(CreateLang.translateDirect("minecart_coupling." + key)); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandlerClient.java index 8f96ae33cd..82db613eb4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingHandlerClient.java @@ -1,12 +1,10 @@ package com.simibubi.create.content.contraptions.minecart; -import org.joml.Vector3f; - import com.simibubi.create.AllItems; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; @@ -15,7 +13,7 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -46,7 +44,7 @@ static void onCartClicked(Player player, AbstractMinecart entity) { return; } spawnSelectionParticles(entity.getBoundingBox(), true); - CatnipServices.NETWORK.sendToServer(new CouplingCreationPacket(selectedCart, entity)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new CouplingCreationPacket(selectedCart, entity)); selectedCart = null; } @@ -59,7 +57,7 @@ private static void spawnSelectionParticles(AABB AABB, boolean highlight) { Vec3 center = AABB.getCenter(); int amount = highlight ? 100 : 2; ParticleOptions particleData = - highlight ? ParticleTypes.END_ROD : new DustParticleOptions(new Vector3f(1, 1, 1), 1); + highlight ? ParticleTypes.END_ROD : new DustParticleOptions(0xffffff, 1); for (int i = 0; i < amount; i++) { Vec3 v = VecHelper.offsetRandomly(Vec3.ZERO, r, 1); double yOffset = v.y; diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingPhysics.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingPhysics.java index ab8552c478..c4584f11b2 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingPhysics.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingPhysics.java @@ -2,16 +2,16 @@ import com.simibubi.create.content.contraptions.minecart.capability.MinecartController; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.world.TickRateManager; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.MoverType; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.state.BlockState; @@ -35,7 +35,7 @@ public static void tickCoupling(Level world, Couple c) { float couplingLength = c.getFirst() .getCouplingLength(true); softCollisionStep(world, carts, couplingLength); - if (world.isClientSide) + if (world.isClientSide()) return; hardCollisionStep(world, carts, couplingLength); } @@ -45,7 +45,7 @@ public static void hardCollisionStep(Level world, Couple carts carts = carts.swap(); Couple corrections = Couple.create(null, null); - Couple maxSpeed = carts.map(AbstractMinecart::getMaxCartSpeedOnRail); + Couple maxSpeed = carts.map(cart -> 1.0f); boolean firstLoop = true; for (boolean current : new boolean[]{true, false, true}) { AbstractMinecart cart = carts.get(current); @@ -58,7 +58,7 @@ public static void hardCollisionStep(Level world, Couple carts continue; RailShape shape = null; - BlockPos railPosition = cart.getCurrentRailPosition(); + BlockPos railPosition = cart.getCurrentBlockPosOrRailBelow(); BlockState railState = world.getBlockState(railPosition.above()); if (railState.getBlock() instanceof BaseRailBlock block) { @@ -97,7 +97,7 @@ public static void hardCollisionStep(Level world, Couple carts } public static void softCollisionStep(Level world, Couple carts, double couplingLength) { - Couple maxSpeed = carts.map(AbstractMinecart::getMaxCartSpeedOnRail); + Couple maxSpeed = carts.map(cart -> 1.0f); Couple canAddmotion = carts.map(MinecartSim2020::canAddMotion); // Assuming Minecarts will never move faster than 1 block/tick diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingRenderer.java index 2f991b0f6a..c188829a19 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/CouplingRenderer.java @@ -9,22 +9,22 @@ import com.simibubi.create.content.kinetics.KineticDebugger; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.util.Mth; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; @@ -51,9 +51,7 @@ public static void renderCoupling(PoseStack ms, MultiBufferSource buffer, Vec3 c if (carts.getFirst() == null || carts.getSecond() == null) return; - Couple lightValues = - carts.map(c -> LevelRenderer.getLightColor(world, BlockPos.containing(c.getBoundingBox() - .getCenter()))); + Couple lightValues = carts.map(c -> LightCoordsUtil.FULL_BRIGHT); Vec3 center = carts.getFirst() .position() @@ -64,7 +62,7 @@ public static void renderCoupling(PoseStack ms, MultiBufferSource buffer, Vec3 c Couple transforms = carts.map(c -> getSuitableCartEndpoint(c, center)); BlockState renderState = Blocks.AIR.defaultBlockState(); - VertexConsumer builder = buffer.getBuffer(RenderType.solid()); + VertexConsumer builder = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); SuperByteBuffer attachment = CachedBuffers.partial(AllPartialModels.COUPLING_ATTACHMENT, renderState); SuperByteBuffer ring = CachedBuffers.partial(AllPartialModels.COUPLING_RING, renderState); SuperByteBuffer connector = CachedBuffers.partial(AllPartialModels.COUPLING_CONNECTOR, renderState); @@ -135,32 +133,10 @@ private static CartEndpoint getSuitableCartEndpoint(AbstractMinecart cart, Vec3 Vec3 frontVec = positionVec.add(VecHelper.rotate(new Vec3(.5, 0, 0), 180 - yaw, Direction.Axis.Y)); Vec3 backVec = positionVec.add(VecHelper.rotate(new Vec3(-.5, 0, 0), 180 - yaw, Direction.Axis.Y)); - Vec3 railVecOfPos = cart.getPos(xIn, yIn, zIn); boolean flip = false; - - if (railVecOfPos != null) { - frontVec = cart.getPosOffs(xIn, yIn, zIn, (double) 0.3F); - backVec = cart.getPosOffs(xIn, yIn, zIn, (double) -0.3F); - if (frontVec == null) - frontVec = railVecOfPos; - if (backVec == null) - backVec = railVecOfPos; - - x += railVecOfPos.x; - y += (frontVec.y + backVec.y) / 2; - z += railVecOfPos.z; - - Vec3 endPointDiff = backVec.add(-frontVec.x, -frontVec.y, -frontVec.z); - if (endPointDiff.length() != 0.0D) { - endPointDiff = endPointDiff.normalize(); - yaw = (float) (Math.atan2(endPointDiff.z, endPointDiff.x) * 180.0D / Math.PI); - pitch = (float) (Math.atan(endPointDiff.y) * 73.0D); - } - } else { - x += xIn; - y += yIn; - z += zIn; - } + x += xIn; + y += yIn; + z += zIn; final float offsetMagnitude = 13 / 16f; boolean isBackFaceCloser = frontVec.distanceToSqr(centerOfCoupling) > backVec.distanceToSqr(centerOfCoupling); diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartCouplingItem.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartCouplingItem.java index 63cc31c7fb..2c41e15d83 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartCouplingItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartCouplingItem.java @@ -4,18 +4,17 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.contraptions.minecart.capability.MinecartController; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -60,11 +59,11 @@ protected static boolean onCouplingInteractOnMinecart(PlayerInteractEvent.Entity AbstractMinecart minecart, Player player, MinecartController controller) { Level world = event.getLevel(); if (controller.isFullyCoupled()) { - if (!world.isClientSide) + if (!world.isClientSide()) CouplingHandler.status(player, "two_couplings_max"); return true; } - if (world != null && world.isClientSide) + if (world != null && world.isClientSide()) CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> cartClicked(player, minecart)); return true; } @@ -74,7 +73,7 @@ private static boolean onWrenchInteractOnMinecart(EntityInteract event, Abstract int couplings = (controller.isConnectedToCoupling() ? 1 : 0) + (controller.isLeadingCoupling() ? 1 : 0); if (couplings == 0) return false; - if (event.getLevel().isClientSide) + if (event.getLevel().isClientSide()) return true; for (boolean forward : Iterate.trueAndFalse) { @@ -90,7 +89,6 @@ private static boolean onWrenchInteractOnMinecart(EntityInteract event, Abstract return true; } - @OnlyIn(Dist.CLIENT) private static void cartClicked(Player player, AbstractMinecart interacted) { CouplingHandlerClient.onCartClicked(player, interacted); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartSim2020.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartSim2020.java index a251f9aa68..31e2fa785f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartSim2020.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/MinecartSim2020.java @@ -7,14 +7,14 @@ import com.simibubi.create.AllAttachmentTypes; import com.simibubi.create.content.contraptions.minecart.capability.MinecartController; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.Util; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.RailShape; @@ -27,10 +27,10 @@ public class MinecartSim2020 { private static final Map> MATRIX = Util.make(Maps.newEnumMap(RailShape.class), (map) -> { - Vec3i west = Direction.WEST.getNormal(); - Vec3i east = Direction.EAST.getNormal(); - Vec3i north = Direction.NORTH.getNormal(); - Vec3i south = Direction.SOUTH.getNormal(); + Vec3i west = Direction.WEST.getUnitVec3i(); + Vec3i east = Direction.EAST.getUnitVec3i(); + Vec3i north = Direction.NORTH.getUnitVec3i(); + Vec3i south = Direction.SOUTH.getUnitVec3i(); map.put(RailShape.NORTH_SOUTH, Pair.of(north, south)); map.put(RailShape.EAST_WEST, Pair.of(west, east)); map.put(RailShape.ASCENDING_EAST, Pair.of(west.below(), east)); @@ -51,8 +51,8 @@ public static Vec3 predictNextPositionOf(AbstractMinecart cart) { public static boolean canAddMotion(AbstractMinecart c) { if (c instanceof MinecartFurnace furnace) - return Mth.equal(furnace.xPush, 0) - && Mth.equal(furnace.zPush, 0); + return Mth.equal(furnace.push.x, 0) + && Mth.equal(furnace.push.z, 0); MinecartController controller = c.getData(AllAttachmentTypes.MINECART_CONTROLLER); if (controller.isPresent()) @@ -68,116 +68,8 @@ public static void moveCartAlongTrack(AbstractMinecart cart, Vec3 forcedMovement Vec3 previousMotion = cart.getDeltaMovement(); cart.fallDistance = 0.0F; - - double x = cart.getX(); - double y = cart.getY(); - double z = cart.getZ(); - - double actualX = x; - double actualY = y; - double actualZ = z; - - Vec3 actualVec = cart.getPos(actualX, actualY, actualZ); - actualY = cartPos.getY() + 1; - - BaseRailBlock abstractrailblock = (BaseRailBlock) trackState.getBlock(); - RailShape railshape = abstractrailblock.getRailDirection(trackState, cart.level(), cartPos, cart); - switch (railshape) { - case ASCENDING_EAST: - forcedMovement = forcedMovement.add(-1 * cart.getSlopeAdjustment(), 0.0D, 0.0D); - actualY++; - break; - case ASCENDING_WEST: - forcedMovement = forcedMovement.add(cart.getSlopeAdjustment(), 0.0D, 0.0D); - actualY++; - break; - case ASCENDING_NORTH: - forcedMovement = forcedMovement.add(0.0D, 0.0D, cart.getSlopeAdjustment()); - actualY++; - break; - case ASCENDING_SOUTH: - forcedMovement = forcedMovement.add(0.0D, 0.0D, -1 * cart.getSlopeAdjustment()); - actualY++; - default: - break; - } - - Pair pair = MATRIX.get(railshape); - Vec3i Vector3i = pair.getFirst(); - Vec3i Vector3i1 = pair.getSecond(); - double d4 = (double) (Vector3i1.getX() - Vector3i.getX()); - double d5 = (double) (Vector3i1.getZ() - Vector3i.getZ()); -// double d6 = Math.sqrt(d4 * d4 + d5 * d5); - double d7 = forcedMovement.x * d4 + forcedMovement.z * d5; - if (d7 < 0.0D) { - d4 = -d4; - d5 = -d5; - } - - double d23 = (double) cartPos.getX() + 0.5D + (double) Vector3i.getX() * 0.5D; - double d10 = (double) cartPos.getZ() + 0.5D + (double) Vector3i.getZ() * 0.5D; - double d12 = (double) cartPos.getX() + 0.5D + (double) Vector3i1.getX() * 0.5D; - double d13 = (double) cartPos.getZ() + 0.5D + (double) Vector3i1.getZ() * 0.5D; - d4 = d12 - d23; - d5 = d13 - d10; - double d14; - if (d4 == 0.0D) { - d14 = actualZ - (double) cartPos.getZ(); - } else if (d5 == 0.0D) { - d14 = actualX - (double) cartPos.getX(); - } else { - double d15 = actualX - d23; - double d16 = actualZ - d10; - d14 = (d15 * d4 + d16 * d5) * 2.0D; - } - - actualX = d23 + d4 * d14; - actualZ = d10 + d5 * d14; - - cart.setPos(actualX, actualY, actualZ); cart.setDeltaMovement(forcedMovement); - cart.moveMinecartOnRail(cartPos); - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - if (Vector3i.getY() != 0 && Mth.floor(x) - cartPos.getX() == Vector3i.getX() - && Mth.floor(z) - cartPos.getZ() == Vector3i.getZ()) { - cart.setPos(x, y + (double) Vector3i.getY(), z); - } else if (Vector3i1.getY() != 0 && Mth.floor(x) - cartPos.getX() == Vector3i1.getX() - && Mth.floor(z) - cartPos.getZ() == Vector3i1.getZ()) { - cart.setPos(x, y + (double) Vector3i1.getY(), z); - } - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - Vec3 Vector3d3 = cart.getPos(x, y, z); - if (Vector3d3 != null && actualVec != null) { - double d17 = (actualVec.y - Vector3d3.y) * 0.05D; - Vec3 Vector3d4 = cart.getDeltaMovement(); - double d18 = Math.sqrt(Vector3d4.horizontalDistanceSqr()); - if (d18 > 0.0D) { - cart.setDeltaMovement(Vector3d4.multiply((d18 + d17) / d18, 1.0D, (d18 + d17) / d18)); - } - - cart.setPos(x, Vector3d3.y, z); - } - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - int j = Mth.floor(x); - int i = Mth.floor(z); - if (j != cartPos.getX() || i != cartPos.getZ()) { - Vec3 Vector3d5 = cart.getDeltaMovement(); - double d26 = Math.sqrt(Vector3d5.horizontalDistanceSqr()); - cart.setDeltaMovement(d26 * (double) (j - cartPos.getX()), Vector3d5.y, d26 * (double) (i - cartPos.getZ())); - } - + cart.move(net.minecraft.world.entity.MoverType.SELF, forcedMovement); cart.setDeltaMovement(previousMotion); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/TrainCargoManager.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/TrainCargoManager.java index 0837c47fa9..c1c816e248 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/TrainCargoManager.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/TrainCargoManager.java @@ -45,7 +45,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket, @Nullable Contraption contraption) { super.read(nbt, registries, clientPacket, contraption); - ticksSinceLastExchange = nbt.getInt("TicksSinceLastExchange"); + ticksSinceLastExchange = nbt.getIntOr("TicksSinceLastExchange", 0); } public void resetIdleCargoTracker() { diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/CapabilityMinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/CapabilityMinecartController.java index edc21fa59e..73f99d3b07 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/CapabilityMinecartController.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/CapabilityMinecartController.java @@ -17,11 +17,11 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import it.unimi.dsi.fastutil.objects.ObjectLists; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; @@ -62,7 +62,7 @@ public static void tick(Level world) { for (AbstractMinecart cart : queued) { UUID uniqueID = cart.getUUID(); - if (world.isClientSide && carts.containsKey(uniqueID)) { + if (world.isClientSide() && carts.containsKey(uniqueID)) { MinecartController minecartController = carts.get(uniqueID); if (minecartController != null) { AbstractMinecart minecartEntity = minecartController.cart(); @@ -78,7 +78,7 @@ public static void tick(Level world) { carts.put(uniqueID, controller); if (controller.isLeadingCoupling()) cartsWithCoupling.add(uniqueID); - if (!world.isClientSide && controller != null) + if (!world.isClientSide() && controller != null) controller.sendData(); } } @@ -135,7 +135,7 @@ protected static void onCartRemoved(Level world, AbstractMinecart entity) { UUID uniqueID = entity.getUUID(); if (!carts.containsKey(uniqueID) || unloads.contains(uniqueID)) return; - if (world.isClientSide) + if (world.isClientSide()) return; handleKilledMinecart(world, carts.get(uniqueID), entity.position()); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartController.java index 4c8b62653b..90d9816dac 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartController.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartController.java @@ -2,6 +2,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -17,12 +18,12 @@ import com.simibubi.create.content.contraptions.OrientedContraptionEntity; import com.simibubi.create.content.contraptions.minecart.CouplingHandler; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -32,25 +33,26 @@ import net.minecraft.util.Mth; import net.minecraft.util.StringRepresentable; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.Minecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.Minecart; import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.level.block.PoweredRailBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.attachment.IAttachmentHolder; import net.neoforged.neoforge.attachment.IAttachmentSerializer; -import net.neoforged.neoforge.common.util.INBTSerializable; /** * Extended code for Minecarts, this allows for handling stalled carts and * coupled trains */ -public class MinecartController implements INBTSerializable { +public class MinecartController { public static final MinecartController EMPTY = new MinecartController.Empty(); - public static final IAttachmentSerializer SERIALIZER = Type.SERIALIZER; + public static final IAttachmentSerializer SERIALIZER = Type.SERIALIZER; private boolean needsEntryRefresh; private WeakReference weakRef; @@ -106,7 +108,7 @@ public void tick() { internalStall.booleanValue() || otherCart == null || !otherCart.isPresent() || otherCart.isStalled(false)); })); - if (!world.isClientSide) { + if (!world.isClientSide()) { setStalled(internalStall.booleanValue(), true); disassemble(cart); } @@ -130,7 +132,7 @@ private void disassemble(AbstractMinecart cart) { } BlockPos blockpos = new BlockPos(i, j, k); BlockState blockstate = world.getBlockState(blockpos); - if (cart.canUseRail() && blockstate.is(BlockTags.RAILS) + if (blockstate.is(BlockTags.RAILS) && blockstate.getBlock() instanceof PoweredRailBlock && ((PoweredRailBlock) blockstate.getBlock()) .isActivatorRail()) { @@ -191,7 +193,7 @@ public void decouple() { } public void removeConnection(boolean main) { - if (hasContraptionCoupling(main) && getWorld() != null && !getWorld().isClientSide) { + if (hasContraptionCoupling(main) && getWorld() != null && !getWorld().isClientSide()) { List passengers = cart().getPassengers(); if (!passengers.isEmpty()) { Entity entity = passengers.getFirst(); @@ -316,13 +318,16 @@ public void sendData(@Nullable AbstractMinecart cart) { needsEntryRefresh = true; } - if (getWorld() == null || getWorld().isClientSide) + if (getWorld() == null || getWorld().isClientSide()) return; CatnipServices.NETWORK.sendToClientsTrackingEntity(this.cart(), new MinecartControllerUpdatePacket(this, getWorld().registryAccess())); } - @Override public CompoundTag serializeNBT(@NotNull HolderLookup.Provider provider) { + return toTag(); + } + + private CompoundTag toTag() { CompoundTag compoundNBT = new CompoundTag(); stallData.forEachWithContext((opt, internal) -> opt @@ -333,21 +338,24 @@ public CompoundTag serializeNBT(@NotNull HolderLookup.Provider provider) { return compoundNBT; } - @Override public void deserializeNBT(@NotNull HolderLookup.Provider provider, CompoundTag nbt) { + fromTag(nbt); + } + + private void fromTag(CompoundTag nbt) { Optional internalSD = Optional.empty(); Optional externalSD = Optional.empty(); Optional mainCD = Optional.empty(); Optional connectedCD = Optional.empty(); if (nbt.contains("InternalStallData")) - internalSD = Optional.of(StallData.read(nbt.getCompound("InternalStallData"))); + internalSD = Optional.of(StallData.read(nbt.getCompoundOrEmpty("InternalStallData"))); if (nbt.contains("StallData")) - externalSD = Optional.of(StallData.read(nbt.getCompound("StallData"))); + externalSD = Optional.of(StallData.read(nbt.getCompoundOrEmpty("StallData"))); if (nbt.contains("MainCoupling")) - mainCD = Optional.of(CouplingData.read(nbt.getCompound("MainCoupling"))); + mainCD = Optional.of(CouplingData.read(nbt.getCompoundOrEmpty("MainCoupling"))); if (nbt.contains("ConnectedCoupling")) - connectedCD = Optional.of(CouplingData.read(nbt.getCompound("ConnectedCoupling"))); + connectedCD = Optional.of(CouplingData.read(nbt.getCompoundOrEmpty("ConnectedCoupling"))); stallData = Couple.create(internalSD, externalSD); couplings = Couple.create(mainCD, connectedCD); @@ -390,18 +398,18 @@ void flip() { CompoundTag serialize() { CompoundTag nbt = new CompoundTag(); - nbt.put("Main", NbtUtils.createUUID(mainCartID)); - nbt.put("Connected", NbtUtils.createUUID(connectedCartID)); + nbt.put("Main", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(mainCartID)); + nbt.put("Connected", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(connectedCartID)); nbt.putFloat("Length", length); nbt.putBoolean("Contraption", contraption); return nbt; } static CouplingData read(CompoundTag nbt) { - UUID mainCartID = NbtUtils.loadUUID(NBTHelper.getINBT(nbt, "Main")); - UUID connectedCartID = NbtUtils.loadUUID(NBTHelper.getINBT(nbt, "Connected")); - float length = nbt.getFloat("Length"); - boolean contraption = nbt.getBoolean("Contraption"); + UUID mainCartID = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(NBTHelper.getINBT(nbt, "Main")); + UUID connectedCartID = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(NBTHelper.getINBT(nbt, "Connected")); + float length = nbt.getFloatOr("Length", 0); + boolean contraption = nbt.getBooleanOr("Contraption", false); return new CouplingData(mainCartID, connectedCartID, length, contraption); } @@ -449,10 +457,10 @@ CompoundTag serialize() { static StallData read(CompoundTag nbt) { StallData stallData = new StallData(); - stallData.position = VecHelper.readNBT(nbt.getList("Pos", Tag.TAG_DOUBLE)); - stallData.motion = VecHelper.readNBT(nbt.getList("Motion", Tag.TAG_DOUBLE)); - stallData.yaw = nbt.getFloat("Yaw"); - stallData.pitch = nbt.getFloat("Pitch"); + stallData.position = VecHelper.readNBT(nbt.getListOrEmpty("Pos")); + stallData.motion = VecHelper.readNBT(nbt.getListOrEmpty("Motion")); + stallData.yaw = nbt.getFloatOr("Yaw", 0); + stallData.pitch = nbt.getFloatOr("Pitch", 0); return stallData; } } @@ -583,57 +591,45 @@ public AbstractMinecart cart() { } protected enum Type implements StringRepresentable { - EMPTY(new IAttachmentSerializer<>() { - @Override - public @NotNull MinecartController read(@NotNull IAttachmentHolder holder, @NotNull CompoundTag tag, @NotNull HolderLookup.Provider provider) { - return MinecartController.EMPTY; - } - - @Override - public CompoundTag write(@NotNull MinecartController attachment, @NotNull HolderLookup.Provider provider) { - return attachment.serializeNBT(provider); - } - }), - NORMAL(new IAttachmentSerializer<>() { - @Override - public @NotNull MinecartController read(@NotNull IAttachmentHolder holder, @NotNull CompoundTag tag, @NotNull HolderLookup.Provider provider) { - MinecartController controller = new MinecartController(null); - controller.deserializeNBT(provider, tag); - return controller; - } - - @Override - public @Nullable CompoundTag write(@NotNull MinecartController attachment, @NotNull HolderLookup.Provider provider) { - return attachment.serializeNBT(provider); - } - }); + EMPTY, + NORMAL; public static final Codec CODEC = StringRepresentable.fromValues(Type::values); - private final IAttachmentSerializer serializer; - - private static final IAttachmentSerializer SERIALIZER = new IAttachmentSerializer<>() { + private static final IAttachmentSerializer SERIALIZER = new IAttachmentSerializer<>() { @Override - public @NotNull MinecartController read(@NotNull IAttachmentHolder holder, @NotNull CompoundTag tag, @NotNull HolderLookup.Provider provider) { - return Type.valueOf(tag.getString("Type")).getSerializer().read(holder, tag, provider); + public @NotNull MinecartController read(@NotNull IAttachmentHolder holder, @NotNull ValueInput input) { + String serializedName = input.getStringOr("Type", NORMAL.getSerializedName()); + Type type = Arrays.stream(values()) + .filter(candidate -> candidate.getSerializedName().equals(serializedName)) + .findFirst() + .orElse(NORMAL); + if (type == EMPTY) + return MinecartController.EMPTY; + MinecartController controller = new MinecartController(null); + controller.fromTag(readAttachmentTag(input)); + return controller; } @Override - public @Nullable CompoundTag write(MinecartController attachment, @NotNull HolderLookup.Provider provider) { - CompoundTag tag = attachment.serializeNBT(provider); - if (tag != null) { - tag.putString("Type", attachment.getType().name()); - } - return tag; + public boolean write(MinecartController attachment, @NotNull ValueOutput output) { + output.store(attachment.toTag()); + output.putString("Type", attachment.getType().getSerializedName()); + return !output.isEmpty(); } }; - Type(IAttachmentSerializer serializer) { - this.serializer = serializer; - } - - public IAttachmentSerializer getSerializer() { - return serializer; + private static CompoundTag readAttachmentTag(ValueInput input) { + CompoundTag tag = new CompoundTag(); + input.read("InternalStallData", CompoundTag.CODEC) + .ifPresent(value -> tag.put("InternalStallData", value)); + input.read("StallData", CompoundTag.CODEC) + .ifPresent(value -> tag.put("StallData", value)); + input.read("MainCoupling", CompoundTag.CODEC) + .ifPresent(value -> tag.put("MainCoupling", value)); + input.read("ConnectedCoupling", CompoundTag.CODEC) + .ifPresent(value -> tag.put("ConnectedCoupling", value)); + return tag; } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartControllerUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartControllerUpdatePacket.java index ade95cc52a..2840971c82 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartControllerUpdatePacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/minecart/capability/MinecartControllerUpdatePacket.java @@ -7,9 +7,9 @@ import com.simibubi.create.AllPackets; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.codec.ByteBufCodecs; @@ -17,7 +17,6 @@ import net.minecraft.world.entity.Entity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record MinecartControllerUpdatePacket(int entityId, @Nullable CompoundTag nbt) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -31,9 +30,8 @@ public MinecartControllerUpdatePacket(MinecartController controller, @NotNull Ho } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - Entity entityByID = player.clientLevel.getEntity(entityId); + public void handle(Player player) { + Entity entityByID = player.level().getEntity(entityId); if (entityByID == null) return; if (entityByID.hasData(AllAttachmentTypes.MINECART_CONTROLLER)) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssembleRailType.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssembleRailType.java index 937318652e..5f00cd36df 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssembleRailType.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssembleRailType.java @@ -5,7 +5,7 @@ import com.simibubi.create.AllBlocks; import com.tterrag.registrate.util.entry.BlockEntry; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java index 58f45ccc96..bd8eac3ad5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlock.java @@ -26,12 +26,12 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.MinecartChest; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartChest; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -51,6 +51,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.block.state.properties.RailShape; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.level.storage.loot.LootParams; @@ -113,16 +114,15 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public boolean canMakeSlopes(@NotNull BlockState state, @NotNull BlockGetter world, @NotNull BlockPos pos) { + public boolean isFlexibleRail(@NotNull BlockState state, @NotNull BlockGetter world, @NotNull BlockPos pos) { return false; } - @Override public void onMinecartPass(@NotNull BlockState state, @NotNull Level world, @NotNull BlockPos pos, AbstractMinecart cart) { if (!canAssembleTo(cart)) return; - if (world.isClientSide) + if (world.isClientSide()) return; withBlockEntityDo(world, pos, be -> be.assembleNextTick(cart)); @@ -162,11 +162,11 @@ public static CartAssemblerAction getActionForCart(BlockState state, AbstractMin } public static boolean canAssembleTo(AbstractMinecart cart) { - return cart.canBeRidden() || cart instanceof MinecartFurnace || cart instanceof MinecartChest; + return cart.isRideable() || cart instanceof MinecartFurnace || cart instanceof MinecartChest; } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { Item previousItem = getRailItem(state); Item heldItem = stack.getItem(); if (heldItem != previousItem) { @@ -176,7 +176,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (heldItem == type.getItem()) newType = type; if (newType == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; level.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, 1, 1); level.setBlockAndUpdate(pos, state.setValue(RAIL_TYPE, newType)); @@ -185,21 +185,21 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev player.getInventory() .placeItemBackInInventory(new ItemStack(previousItem)); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override - public void neighborChanged(@NotNull BlockState state, @NotNull Level worldIn, @NotNull BlockPos pos, - @NotNull Block blockIn, @NotNull BlockPos fromPos, boolean isMoving) { - if (worldIn.isClientSide) + protected void neighborChanged(@NotNull BlockState state, @NotNull Level worldIn, @NotNull BlockPos pos, + @NotNull Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); if (previouslyPowered != worldIn.hasNeighborSignal(pos)) worldIn.setBlock(pos, state.cycle(POWERED), Block.UPDATE_CLIENTS); - super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving); + super.neighborChanged(state, worldIn, pos, blockIn, orientation, isMoving); } @Override @@ -286,7 +286,7 @@ public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) Level world = context.getLevel(); BlockPos pos = context.getClickedPos(); Player player = context.getPlayer(); - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; if (player != null && !player.isCreative()) getDropsNoRail(state, (ServerLevel) world, pos, world.getBlockEntity(pos), player, context.getItemInHand()) @@ -326,7 +326,7 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { Level world = context.getLevel(); - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; BlockPos pos = context.getClickedPos(); world.setBlock(pos, rotate(state, Rotation.CLOCKWISE_90), Block.UPDATE_ALL); diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockEntity.java index f2db8ce7b9..b0ef4ab909 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockEntity.java @@ -21,10 +21,10 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -32,9 +32,10 @@ import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -93,7 +94,7 @@ public void tryAssemble(AbstractMinecart cart) { .isRedstoneConductor(level, worldPosition.relative(d))) facing = d.getOpposite(); - float speed = block.getRailMaxSpeed(state, level, worldPosition, cart); + float speed = getCartRailSpeed(cart); cart.setDeltaMovement(facing.getStepX() * speed, facing.getStepY() * speed, facing.getStepZ() * speed); } } @@ -102,7 +103,7 @@ public void tryAssemble(AbstractMinecart cart) { ControllerRailBlock.getAccelerationVector(AllBlocks.CONTROLLER_RAIL.getDefaultState() .setValue(ControllerRailBlock.SHAPE, state.getValue(CartAssemblerBlock.RAIL_SHAPE)) .setValue(ControllerRailBlock.BACKWARDS, state.getValue(CartAssemblerBlock.BACKWARDS))); - float speed = block.getRailMaxSpeed(state, level, worldPosition, cart); + float speed = getCartRailSpeed(cart); cart.setDeltaMovement(Vec3.atLowerCornerOf(accelerationVector) .scale(speed)); } @@ -163,14 +164,8 @@ protected void assemble(Level world, BlockPos pos, AbstractMinecart cart) { world.addFreshEntity(entity); entity.startRiding(cart); - if (cart instanceof MinecartFurnace) { - CompoundTag nbt = new CompoundTag(); - if (cart.save(nbt)) { - nbt.putDouble("PushZ", 0); - nbt.putDouble("PushX", 0); - cart.load(nbt); - } - } + if (cart instanceof MinecartFurnace furnaceCart) + furnaceCart.push = Vec3.ZERO; if (contraption.containsBlockBreakers()) award(AllAdvancements.CONTRAPTION_ACTORS); @@ -220,13 +215,13 @@ protected void disassemble(Level world, BlockPos pos, AbstractMinecart cart) { protected void disassembleCart(AbstractMinecart cart) { cart.ejectPassengers(); - if (cart instanceof MinecartFurnace) { - CompoundTag nbt = new CompoundTag(); - cart.saveAsPassenger(nbt); - nbt.putDouble("PushZ", cart.getDeltaMovement().x); - nbt.putDouble("PushX", cart.getDeltaMovement().z); - cart.load(nbt); - } + if (cart instanceof MinecartFurnace furnaceCart) + furnaceCart.push = new Vec3(cart.getDeltaMovement().z, 0, cart.getDeltaMovement().x); + } + + private float getCartRailSpeed(AbstractMinecart cart) { + return level instanceof ServerLevel serverLevel ? (float) cart.getBehavior() + .getMaxSpeed(serverLevel) : 0.4f; } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockItem.java index 01d7e324f6..5b7bd9ad17 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/CartAssemblerBlockItem.java @@ -66,7 +66,7 @@ public boolean tryPlaceAssembler(UseOnContext context) { newType = type; if (newType == null) return false; - if (world.isClientSide) + if (world.isClientSide()) return true; newState = newState.setValue(CartAssemblerBlock.RAIL_TYPE, newType); diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/MinecartContraptionItem.java index 5e1c3b6f9c..a9fc5b979d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/MinecartContraptionItem.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/MinecartContraptionItem.java @@ -19,9 +19,10 @@ import com.simibubi.create.content.kinetics.deployer.DeployerFakePlayer; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -30,14 +31,17 @@ import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; import net.minecraft.core.dispenser.DispenseItemBehavior; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerLevel; import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.AbstractMinecart.Type; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -57,18 +61,18 @@ @EventBusSubscriber public class MinecartContraptionItem extends Item { - private final AbstractMinecart.Type minecartType; + private final EntityType minecartType; public static MinecartContraptionItem rideable(Properties builder) { - return new MinecartContraptionItem(Type.RIDEABLE, builder); + return new MinecartContraptionItem(EntityTypes.MINECART, builder); } public static MinecartContraptionItem furnace(Properties builder) { - return new MinecartContraptionItem(Type.FURNACE, builder); + return new MinecartContraptionItem(EntityTypes.FURNACE_MINECART, builder); } public static MinecartContraptionItem chest(Properties builder) { - return new MinecartContraptionItem(Type.CHEST, builder); + return new MinecartContraptionItem(EntityTypes.CHEST_MINECART, builder); } @Override @@ -76,7 +80,7 @@ public boolean canFitInsideContainerItems() { return AllConfigs.server().kinetics.minecartContraptionInContainers.get(); } - private MinecartContraptionItem(Type minecartTypeIn, Properties builder) { + private MinecartContraptionItem(EntityType minecartTypeIn, Properties builder) { super(builder); this.minecartType = minecartTypeIn; DispenserBlock.registerBehavior(this, DISPENSER_BEHAVIOR); @@ -102,7 +106,7 @@ public ItemStack execute(BlockSource source, ItemStack stack) { : RailShape.NORTH_SOUTH; double d3; if (blockstate.is(BlockTags.RAILS)) { - if (railshape.isAscending()) { + if (railshape.isSlope()) { d3 = 0.6D; } else { d3 = 0.1D; @@ -118,7 +122,7 @@ public ItemStack execute(BlockSource source, ItemStack stack) { ? ((BaseRailBlock) blockstate1.getBlock()).getRailDirection(blockstate1, world, blockpos.below(), null) : RailShape.NORTH_SOUTH; - if (direction != Direction.DOWN && railshape1.isAscending()) { + if (direction != Direction.DOWN && railshape1.isSlope()) { d3 = -0.4D; } else { d3 = -0.9D; @@ -126,7 +130,7 @@ public ItemStack execute(BlockSource source, ItemStack stack) { } AbstractMinecart abstractminecartentity = AbstractMinecart.createMinecart(world, d0, d1 + d3, d2, - ((MinecartContraptionItem) stack.getItem()).minecartType, stack, null); + ((MinecartContraptionItem) stack.getItem()).minecartType, EntitySpawnReason.DISPENSER, stack, null); if (stack.has(DataComponents.CUSTOM_NAME)) abstractminecartentity.setCustomName(stack.getHoverName()); world.addFreshEntity(abstractminecartentity); @@ -158,13 +162,14 @@ public InteractionResult useOn(UseOnContext context) { ? ((BaseRailBlock) blockstate.getBlock()).getRailDirection(blockstate, world, blockpos, null) : RailShape.NORTH_SOUTH; double d0 = 0.0D; - if (railshape.isAscending()) { + if (railshape.isSlope()) { d0 = 0.5D; } AbstractMinecart abstractminecartentity = AbstractMinecart.createMinecart(serverlevel, (double) blockpos.getX() + 0.5D, - (double) blockpos.getY() + 0.0625D + d0, (double) blockpos.getZ() + 0.5D, this.minecartType, itemstack, null); + (double) blockpos.getY() + 0.0625D + d0, (double) blockpos.getZ() + 0.5D, this.minecartType, + EntitySpawnReason.SPAWN_ITEM_USE, itemstack, context.getPlayer()); if (itemstack.has(DataComponents.CUSTOM_NAME)) abstractminecartentity.setCustomName(itemstack.getHoverName()); Player player = context.getPlayer(); @@ -198,8 +203,8 @@ public static void addContraptionToMinecart(Level world, ItemStack itemstack, Ab } @Override - public String getDescriptionId(ItemStack stack) { - return "item.create.minecart_contraption"; + public Component getName(ItemStack stack) { + return Component.translatable("item.create.minecart_contraption"); } @SubscribeEvent @@ -222,8 +227,8 @@ public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEve return; if (player instanceof DeployerFakePlayer dfp && dfp.onMinecartContraption) return; - Type type = cart.getMinecartType(); - if (type != Type.RIDEABLE && type != Type.FURNACE && type != Type.CHEST) + EntityType type = cart.getType(); + if (type != EntityTypes.MINECART && type != EntityTypes.FURNACE_MINECART && type != EntityTypes.CHEST_MINECART) return; List passengers = cart.getPassengers(); if (passengers.isEmpty() || !(passengers.get(0) instanceof OrientedContraptionEntity oce)) @@ -232,12 +237,12 @@ public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEve if (ContraptionMovementSetting.isNoPickup(contraption.getBlocks() .values())) { - player.displayClientMessage(CreateLang.translateDirect("contraption.minecart_contraption_illegal_pickup") - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect("contraption.minecart_contraption_illegal_pickup") + .withStyle(ChatFormatting.RED)); return; } - if (event.getLevel().isClientSide) { + if (event.getLevel().isClientSide()) { event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); return; @@ -252,10 +257,11 @@ public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEve ItemStack generatedStack = create(type, oce); generatedStack.set(DataComponents.CUSTOM_NAME, entity.getCustomName()); - if (ContraptionPickupLimiting.isTooLargeForPickup(generatedStack.saveOptional(event.getLevel().registryAccess()))) { + if (ContraptionPickupLimiting.isTooLargeForPickup( + LegacyItemStackNbtBridge.saveOptional(generatedStack, event.getLevel().registryAccess()))) { MutableComponent message = CreateLang.translateDirect("contraption.minecart_contraption_too_big") .withStyle(ChatFormatting.RED); - player.displayClientMessage(message, true); + player.sendOverlayMessage(message); return; } @@ -271,22 +277,15 @@ public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEve event.setCanceled(true); } - public static ItemStack create(Type type, OrientedContraptionEntity entity) { + public static ItemStack create(EntityType type, OrientedContraptionEntity entity) { ItemStack stack = ItemStack.EMPTY; - switch (type) { - case RIDEABLE: - stack = AllItems.MINECART_CONTRAPTION.asStack(); - break; - case FURNACE: - stack = AllItems.FURNACE_MINECART_CONTRAPTION.asStack(); - break; - case CHEST: - stack = AllItems.CHEST_MINECART_CONTRAPTION.asStack(); - break; - default: - break; - } + if (type == EntityTypes.MINECART) + stack = AllItems.MINECART_CONTRAPTION.asStack(); + else if (type == EntityTypes.FURNACE_MINECART) + stack = AllItems.FURNACE_MINECART_CONTRAPTION.asStack(); + else if (type == EntityTypes.CHEST_MINECART) + stack = AllItems.CHEST_MINECART_CONTRAPTION.asStack(); if (stack.isEmpty()) return stack; diff --git a/src/main/java/com/simibubi/create/content/contraptions/mounted/MountedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/mounted/MountedContraption.java index c99afddc26..af530bf822 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/mounted/MountedContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/mounted/MountedContraption.java @@ -13,9 +13,9 @@ import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.contraptions.mounted.CartAssemblerBlockEntity.CartMovementMode; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -23,7 +23,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.Container; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/LinearActuatorBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/piston/LinearActuatorBlockEntity.java index ebfe7bd2f8..0488e9ddb8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/LinearActuatorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/LinearActuatorBlockEntity.java @@ -76,12 +76,12 @@ public void tick() { if (isPassive()) return; - if (level.isClientSide) + if (level.isClientSide()) clientOffsetDiff *= .75f; if (waitingForSpeedChange) { if (movedContraption != null) { - if (level.isClientSide) { + if (level.isClientSide()) { float syncSpeed = clientOffsetDiff / 2f; offset += syncSpeed; movedContraption.setContraptionMotion(toMotionVector(syncSpeed)); @@ -92,7 +92,7 @@ public void tick() { return; } - if (!level.isClientSide && assembleNextTick) { + if (!level.isClientSide() && assembleNextTick) { assembleNextTick = false; if (running) { if (getSpeed() == 0) @@ -152,7 +152,7 @@ public void tick() { int extensionRange = getExtensionRange(); if (offset <= 0 || offset >= extensionRange) { offset = offset <= 0 ? 0 : extensionRange; - if (!level.isClientSide) { + if (!level.isClientSide()) { moveAndCollideContraption(); resetContraptionToOffset(); tryDisassemble(); @@ -172,7 +172,7 @@ protected boolean isPassive() { @Override public void lazyTick() { super.lazyTick(); - if (movedContraption != null && !level.isClientSide) + if (movedContraption != null && !level.isClientSide()) sendData(); } @@ -213,7 +213,7 @@ public void onSpeedChanged(float prevSpeed) { @Override public void remove() { this.remove = true; - if (!level.isClientSide) + if (!level.isClientSide()) disassemble(); super.remove(); } @@ -239,11 +239,11 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool boolean forceMovement = compound.contains("ForceMovement"); float offsetBefore = offset; - running = compound.getBoolean("Running"); - waitingForSpeedChange = compound.getBoolean("Waiting"); - offset = compound.getFloat("Offset"); + running = compound.getBooleanOr("Running", false); + waitingForSpeedChange = compound.getBooleanOr("Waiting", false); + offset = compound.getFloatOr("Offset", 0); sequencedOffsetLimit = - compound.contains("SequencedOffsetLimit") ? compound.getDouble("SequencedOffsetLimit") : -1; + compound.contains("SequencedOffsetLimit") ? compound.getDoubleOr("SequencedOffsetLimit", -1) : -1; lastException = AssemblyException.read(compound, registries); super.read(compound, registries, clientPacket); @@ -316,7 +316,7 @@ protected boolean moveAndCollideContraption() { } protected void collided() { - if (level.isClientSide) { + if (level.isClientSide()) { waitingForSpeedChange = true; return; } @@ -338,7 +338,7 @@ protected void resetContraptionToOffset() { public float getMovementSpeed() { float movementSpeed = Mth.clamp(convertToLinear(getSpeed()), -.49f, .49f) + clientOffsetDiff / 2f; - if (level.isClientSide) + if (level.isClientSide()) movementSpeed *= ServerSpeedProvider.get(); if (sequencedOffsetLimit >= 0) movementSpeed = (float) Mth.clamp(movementSpeed, -sequencedOffsetLimit, sequencedOffsetLimit); @@ -351,7 +351,7 @@ public Vec3 getMotionVector() { @Override public void onStall() { - if (!level.isClientSide) { + if (!level.isClientSide()) { forceMove = true; sendData(); } @@ -370,7 +370,7 @@ public boolean isValid() { @Override public void attach(ControlledContraptionEntity contraption) { this.movedContraption = contraption; - if (!level.isClientSide) { + if (!level.isClientSide()) { this.running = true; sendData(); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlock.java b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlock.java index b49b8a6ca9..f62e857c01 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlock.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; @@ -17,9 +17,10 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -29,14 +30,13 @@ import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.neoforge.common.Tags; - public class MechanicalPistonBlock extends DirectionalAxisKineticBlock implements IBE { public static final EnumProperty STATE = EnumProperty.create("state", PistonState.class); @@ -64,29 +64,29 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (!stack.is(Tags.Items.SLIMEBALLS)) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (!stack.is(Items.SLIME_BALL)) { if (stack.isEmpty()) { withBlockEntityDo(level, pos, be -> be.assembleNextTick = true); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } if (state.getValue(STATE) != PistonState.RETRACTED) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; Direction direction = state.getValue(FACING); if (hitResult.getDirection() != direction) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (((MechanicalPistonBlock) state.getBlock()).isSticky) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) { Vec3 vec = hitResult.getLocation(); level.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } AllSoundEvents.SLIME_ADDED.playOnServer(level, pos, .5f, 1); if (!player.isCreative()) @@ -94,16 +94,14 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev level.setBlockAndUpdate(pos, AllBlocks.STICKY_MECHANICAL_PISTON.getDefaultState() .setValue(FACING, direction) .setValue(AXIS_ALONG_FIRST_COORDINATE, state.getValue(AXIS_ALONG_FIRST_COORDINATE))); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { Direction direction = state.getValue(FACING); - if (!fromPos.equals(pos.relative(direction.getOpposite()))) - return; - if (!level.isClientSide && !level.getBlockTicks() + if (!level.isClientSide() && !level.getBlockTicks() .willTickThisTick(pos, this)) level.scheduleTick(pos, this, 1); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlockEntity.java index cc9aab9b3c..e99229b6d1 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonBlockEntity.java @@ -33,7 +33,7 @@ public MechanicalPistonBlockEntity(BlockEntityType type, BlockPos pos, BlockS @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - extensionLength = compound.getInt("ExtensionLength"); + extensionLength = compound.getIntOr("ExtensionLength", 0); super.read(compound, registries, clientPacket); } @@ -122,7 +122,7 @@ protected void collided() { @Override public float getMovementSpeed() { float movementSpeed = Mth.clamp(convertToLinear(getSpeed()), -.49f, .49f); - if (level.isClientSide) + if (level.isClientSide()) movementSpeed *= ServerSpeedProvider.get(); Direction pistonDirection = getBlockState().getValue(BlockStateProperties.FACING); int movementModifier = pistonDirection.getAxisDirection() @@ -148,14 +148,14 @@ protected void visitNewPosition() { @Override protected Vec3 toMotionVector(float speed) { Direction pistonDirection = getBlockState().getValue(BlockStateProperties.FACING); - return Vec3.atLowerCornerOf(pistonDirection.getNormal()) + return Vec3.atLowerCornerOf(pistonDirection.getUnitVec3i()) .scale(speed); } @Override protected Vec3 toPosition(float offset) { Vec3 position = Vec3.atLowerCornerOf(getBlockState().getValue(BlockStateProperties.FACING) - .getNormal()) + .getUnitVec3i()) .scale(offset); return position.add(Vec3.atLowerCornerOf(movedContraption.getContraption().anchor)); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonGenerator.java index 9a871ecd49..76e8ffbfe5 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonGenerator.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonGenerator.java @@ -3,7 +3,7 @@ import com.simibubi.create.content.contraptions.piston.MechanicalPistonBlock.PistonState; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -11,7 +11,7 @@ import net.minecraft.world.level.block.piston.PistonBaseBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.PistonType; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class MechanicalPistonGenerator extends SpecialBlockStateGen { @@ -36,7 +36,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { Direction facing = state.getValue(PistonBaseBlock.FACING); boolean axisAlongFirst = state.getValue(MechanicalPistonBlock.AXIS_ALONG_FIRST_COORDINATE); diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonHeadBlock.java b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonHeadBlock.java index 8e6882f333..a828d99caf 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonHeadBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/MechanicalPistonHeadBlock.java @@ -9,6 +9,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -16,6 +17,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.state.BlockState; @@ -52,8 +54,7 @@ public PushReaction getPistonPushReaction(BlockState state) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.PISTON_EXTENSION_POLE.asStack(); } @@ -100,10 +101,9 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, - LevelAccessor world, BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/PistonContraption.java b/src/main/java/com/simibubi/create/content/contraptions/piston/PistonContraption.java index 52482e8dc9..1f7094ecd8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/PistonContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/PistonContraption.java @@ -22,7 +22,7 @@ import com.simibubi.create.content.contraptions.piston.MechanicalPistonBlock.PistonState; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -231,9 +231,9 @@ protected boolean customBlockRemoval(LevelAccessor world, BlockPos pos, BlockSta @Override public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { super.readNBT(world, nbt, spawnData); - initialExtensionProgress = nbt.getInt("InitialLength"); - extensionLength = nbt.getInt("ExtensionLength"); - orientation = Direction.from3DDataValue(nbt.getInt("Orientation")); + initialExtensionProgress = nbt.getIntOr("InitialLength", 0); + extensionLength = nbt.getIntOr("ExtensionLength", 0); + orientation = Direction.from3DDataValue(nbt.getIntOr("Orientation", 0)); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/piston/PistonExtensionPoleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/piston/PistonExtensionPoleBlock.java index dbaa59e080..00ec0958c3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/piston/PistonExtensionPoleBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/piston/PistonExtensionPoleBlock.java @@ -13,16 +13,18 @@ import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.placement.PoleHelper; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -30,6 +32,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -46,7 +50,7 @@ public class PistonExtensionPoleBlock extends WrenchableDirectionalBlock implements IWrenchable, SimpleWaterloggedBlock { - private static final int placementHelperId = PlacementHelpers.register(PlacementHelper.get()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(PlacementHelper.get()); public PistonExtensionPoleBlock(Properties properties) { super(properties); @@ -125,12 +129,12 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (placementHelper.matchesItem(stack) && !player.isShiftKeyDown()) return placementHelper.getOffset(player, level, state, pos, hitResult).placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -146,9 +150,9 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -157,8 +161,7 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu return false; } - @MethodsReturnNonnullByDefault - public static class PlacementHelper extends PoleHelper { + public static class PlacementHelper extends PoleHelper { private static final PlacementHelper instance = new PlacementHelper(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyRenderer.java index 6f24eeb8de..0c7b684ef3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyRenderer.java @@ -8,17 +8,17 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.state.BlockState; @@ -36,7 +36,7 @@ public AbstractPulleyRenderer(BlockEntityRendererProvider.Context context, Parti } @Override - public boolean shouldRenderOffScreen(T p_188185_1_) { + public boolean shouldRenderOffScreen() { return true; } @@ -51,7 +51,7 @@ protected void renderSafe(T be, float partialTicks, PoseStack ms, MultiBufferSou float offset = getOffset(be, partialTicks); boolean running = isRunning(be); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); scrollCoil(getRotatedCoil(be), getCoilShift(), offset, 1) .light(light) .renderInto(ms, vb); @@ -82,7 +82,7 @@ protected void renderSafe(T be, float partialTicks, PoseStack ms, MultiBufferSou public static void renderAt(LevelAccessor world, SuperByteBuffer partial, float offset, BlockPos pulleyPos, PoseStack ms, VertexConsumer buffer) { BlockPos actualPos = pulleyPos.below((int) offset); - int light = LevelRenderer.getLightColor(world, world.getBlockState(actualPos), actualPos); + int light = LightCoordsUtil.FULL_BRIGHT; partial.translate(0, -offset, 0) .light(light) .renderInto(ms, buffer); diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java index f716556001..c6ede3d73e 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/AbstractPulleyVisual.java @@ -22,9 +22,9 @@ import it.unimi.dsi.fastutil.bytes.ByteList; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.minecraft.client.renderer.LightTexture; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.SectionPos; @@ -234,7 +234,7 @@ public int getPackedLight(int offset) { int light = Byte.toUnsignedInt(data.getByte(offset)); int blockLight = light & 0xF; int skyLight = (light >>> 4) & 0xF; - return LightTexture.pack(blockLight, skyLight); + return LightCoordsUtil.pack(blockLight, skyLight); } } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/HosePulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/HosePulleyVisual.java index b2447ab03c..71ef619916 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/HosePulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/HosePulleyVisual.java @@ -11,7 +11,7 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; public class HosePulleyVisual extends AbstractPulleyVisual { public HosePulleyVisual(VisualizationContext dispatcher, HosePulleyBlockEntity blockEntity, float partialTick) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlock.java index 14199eb90d..581d9641b9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlock.java @@ -8,16 +8,18 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -30,7 +32,6 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -49,28 +50,24 @@ private static void onRopeBroken(Level world, BlockPos pulleyPos) { } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - super.onRemove(state, worldIn, pos, newState, isMoving); - if (state.is(newState.getBlock())) - return; - if (worldIn.isClientSide) - return; - BlockState below = worldIn.getBlockState(pos.below()); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) { + super.affectNeighborsAfterRemoval(state, level, pos, movedByPiston); + BlockState below = level.getBlockState(pos.below()); if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.below(), true); + level.destroyBlock(pos.below(), true); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (stack.isEmpty()) { withBlockEntityDo(level, pos, be -> be.assembleNextTick = true); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -101,27 +98,24 @@ public PushReaction getPistonPushReaction(BlockState state) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + protected ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData) { return AllBlocks.ROPE_PULLEY.asStack(); } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!isMoving && (!state.hasProperty(BlockStateProperties.WATERLOGGED) || !newState.hasProperty(BlockStateProperties.WATERLOGGED) || state.getValue(BlockStateProperties.WATERLOGGED) == newState.getValue(BlockStateProperties.WATERLOGGED))) { - onRopeBroken(worldIn, pos.above()); - if (!worldIn.isClientSide) { - BlockState above = worldIn.getBlockState(pos.above()); - BlockState below = worldIn.getBlockState(pos.below()); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) { + super.affectNeighborsAfterRemoval(state, level, pos, movedByPiston); + if (!movedByPiston) { + onRopeBroken(level, pos.above()); + { + BlockState above = level.getBlockState(pos.above()); + BlockState below = level.getBlockState(pos.below()); if (above.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.above(), true); + level.destroyBlock(pos.above(), true); if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.below(), true); + level.destroyBlock(pos.below(), true); } } - if (state.hasBlockEntity() && state.getBlock() != newState.getBlock()) { - worldIn.removeBlockEntity(pos); - } } @@ -137,10 +131,11 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, - LevelAccessor world, BlockPos pos, BlockPos neighbourPos) { + protected BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess ticks, BlockPos pos, + Direction direction, BlockPos neighbourPos, BlockState neighbourState, + RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); return state; } diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java index cb58d7519e..25ce9831e9 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyBlockEntity.java @@ -21,8 +21,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -127,7 +127,7 @@ protected void assemble() throws AssemblyException { return; // Collect Construct - if (!level.isClientSide && mirrorParent == null) { + if (!level.isClientSide() && mirrorParent == null) { needsContraption = false; BlockPos anchor = worldPosition.below(Mth.floor(offset + 1)); initialOffset = Mth.floor(offset); @@ -194,7 +194,7 @@ public void disassemble() { if (movedContraption != null) resetContraptionToOffset(); - if (!level.isClientSide) { + if (!level.isClientSide()) { if (shouldCreateRopes()) { if (offset > 0) { BlockPos magnetPos = worldPosition.below((int) offset); @@ -268,7 +268,7 @@ protected Vec3 toPosition(float offset) { @Override protected void visitNewPosition() { super.visitNewPosition(); - if (level.isClientSide) + if (level.isClientSide()) return; if (movedContraption != null) return; @@ -288,8 +288,8 @@ protected void visitNewPosition() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - initialOffset = compound.getInt("InitialOffset"); - needsContraption = compound.getBoolean("NeedsContraption"); + initialOffset = compound.getIntOr("InitialOffset", 0); + needsContraption = compound.getBooleanOr("NeedsContraption", false); super.read(compound, registries, clientPacket); BlockPos prevMirrorParent = mirrorParent; @@ -298,7 +298,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool mirrorParent = NBTHelper.readBlockPos(compound, "MirrorParent"); mirrorChildren = null; if (compound.contains("MirrorChildren")) - mirrorChildren = NBTHelper.readCompoundList(compound.getList("MirrorChildren", Tag.TAG_COMPOUND), t -> NBTHelper.readBlockPos(t, "Pos")); + mirrorChildren = NBTHelper.readCompoundList(compound.getListOrEmpty("MirrorChildren"), t -> NBTHelper.readBlockPos(t, "Pos")); if (mirrorParent != null) { offset = 0; @@ -316,11 +316,11 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea super.write(compound, registries, clientPacket); if (mirrorParent != null) - compound.put("MirrorParent", NbtUtils.writeBlockPos(mirrorParent)); + compound.put("MirrorParent", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(mirrorParent)); if (mirrorChildren != null) compound.put("MirrorChildren", NBTHelper.writeCompoundList(mirrorChildren, p -> { CompoundTag tag = new CompoundTag(); - tag.put("Pos", NbtUtils.writeBlockPos(p)); + tag.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(p)); return tag; })); } @@ -363,7 +363,7 @@ public void notifyMirrorsOfDisassembly() { @Override protected int getExtensionRange() { return Math.max(0, Math.min(AllConfigs.server().kinetics.maxRopeLength.get(), - (worldPosition.getY() - 1) - level.getMinBuildHeight())); + (worldPosition.getY() - 1) - level.getMinY())); } @Override @@ -406,7 +406,7 @@ public int getCurrentValue() { @Override public int getMinValue() { - return level.getMinBuildHeight(); + return level.getMinY(); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyContraption.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyContraption.java index d36e583ba2..71fda9fddb 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyContraption.java @@ -52,7 +52,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { - initialOffset = nbt.getInt("InitialOffset"); + initialOffset = nbt.getIntOr("InitialOffset", 0); super.readNBT(world, nbt, spawnData); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyRenderer.java index b2079703ee..0ebc4d5f71 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/PulleyRenderer.java @@ -6,9 +6,9 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/contraptions/pulley/RopePulleyVisual.java b/src/main/java/com/simibubi/create/content/contraptions/pulley/RopePulleyVisual.java index de5dbb3cf0..cd461eaae8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/pulley/RopePulleyVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/pulley/RopePulleyVisual.java @@ -11,7 +11,7 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; public class RopePulleyVisual extends AbstractPulleyVisual { public RopePulleyVisual(VisualizationContext context, PulleyBlockEntity blockEntity, float partialTick) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ActorVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ActorVisual.java index 99adac46d2..18e976c515 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ActorVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ActorVisual.java @@ -5,8 +5,9 @@ import dev.engine_room.flywheel.api.instance.InstancerProvider; import dev.engine_room.flywheel.api.visual.Visual; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.LightLayer; +import net.minecraft.world.level.Level; public abstract class ActorVisual implements Visual { protected final VisualizationContext visualizationContext; @@ -23,11 +24,20 @@ public ActorVisual(VisualizationContext visualizationContext, BlockAndTintGetter this.context = context; } + public ActorVisual(VisualizationContext visualizationContext, Level world, MovementContext context) { + this.visualizationContext = visualizationContext; + this.instancerProvider = visualizationContext.instancerProvider(); + this.simulationWorld = null; + this.context = context; + } + public void tick() { } public void beginFrame() { } protected int localBlockLight() { + if (simulationWorld == null) + return 15; return simulationWorld.getBrightness(LightLayer.BLOCK, context.localPos); } diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ClientContraption.java b/src/main/java/com/simibubi/create/content/contraptions/render/ClientContraption.java index bad26b7279..5143cb14b3 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ClientContraption.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ClientContraption.java @@ -15,8 +15,9 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.SuperByteBufferCache; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; @@ -92,7 +93,7 @@ public void invalidateChildren() { } public void invalidateStructure() { - for (RenderType renderType : RenderType.chunkBufferLayers()) { + for (RenderType renderType : List.of(RenderTypes.solidMovingBlock(), RenderTypes.cutoutMovingBlock(), RenderTypes.translucentMovingBlock())) { SuperByteBufferCache.getInstance() .invalidate(ContraptionEntityRenderer.CONTRAPTION, Pair.of(contraption, renderType)); } @@ -148,7 +149,7 @@ public BlockEntity readBlockEntity(Level level, StructureBlockInfo info, boolean BlockEntity be = entityBlock.newBlockEntity(pos, state); postprocessReadBlockEntity(level, be, state); if (be != null && nbt != null) { - be.handleUpdateTag(nbt, level.registryAccess()); + be.handleUpdateTag(com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge.input(nbt, level.registryAccess())); } return be; diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionEntityRenderer.java index 9afc9d76a4..98b862a67f 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionEntityRenderer.java @@ -14,31 +14,26 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.ShadedBlockSbbBuilder; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.render.SuperByteBufferCache; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.ShadedBlockSbbBuilder; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.RandomSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -import net.neoforged.neoforge.client.model.data.ModelData; - -public class ContraptionEntityRenderer extends EntityRenderer { +public class ContraptionEntityRenderer extends EntityRenderer { public static final SuperByteBufferCache.Compartment> CONTRAPTION = new SuperByteBufferCache.Compartment<>(); private static final ThreadLocal THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new); @@ -51,43 +46,16 @@ public static SuperByteBuffer getBuffer(Contraption contraption, VirtualRenderWo } private static SuperByteBuffer buildStructureBuffer(Contraption contraption, VirtualRenderWorld renderWorld, RenderType layer) { - BlockRenderDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer(); - ModelBlockRenderer renderer = dispatcher.getModelRenderer(); ThreadLocalObjects objects = THREAD_LOCAL_OBJECTS.get(); - - PoseStack poseStack = objects.poseStack; - RandomSource random = objects.random; - var clientContraption = contraption.getOrCreateClientContraptionLazy(); - RenderedBlocks blocks = clientContraption.getRenderedBlocks(); - ShadedBlockSbbBuilder sbbBuilder = objects.sbbBuilder; sbbBuilder.begin(); - - ModelBlockRenderer.enableCaching(); - for (BlockPos pos : blocks.positions()) { - BlockState state = blocks.lookup().apply(pos); - if (state.getRenderShape() == RenderShape.MODEL) { - BakedModel model = dispatcher.getBlockModel(state); - ModelData modelData = renderWorld.getModelData(pos); - modelData = model.getModelData(renderWorld, pos, state, modelData); - long randomSeed = state.getSeed(pos); - random.setSeed(randomSeed); - if (model.getRenderTypes(state, random, modelData).contains(layer)) { - poseStack.pushPose(); - poseStack.translate(pos.getX(), pos.getY(), pos.getZ()); - renderer.tesselateBlock(renderWorld, model, state, pos, poseStack, sbbBuilder, true, random, randomSeed, OverlayTexture.NO_OVERLAY, modelData, layer); - poseStack.popPose(); - } - } - } - ModelBlockRenderer.clearCache(); - + // TODO 26.2: Port contraption block buffering to BlockStateModel/SubmitNodeCollector. return sbbBuilder.end(); } @Override - public ResourceLocation getTextureLocation(C entity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } @Override @@ -103,44 +71,9 @@ public boolean shouldRender(C entity, Frustum frustum, double cameraX, double ca return super.shouldRender(entity, frustum, cameraX, cameraY, cameraZ); } - @Override public void render(C entity, float yaw, float partialTicks, PoseStack poseStack, MultiBufferSource buffers, int overlay) { - super.render(entity, yaw, partialTicks, poseStack, buffers, overlay); - - Contraption contraption = entity.getContraption(); - if (contraption == null) { - return; - } - - Level level = entity.level(); - ClientContraption clientContraption = contraption.getOrCreateClientContraptionLazy(); - VirtualRenderWorld renderWorld = clientContraption.getRenderLevel(); - ContraptionMatrices matrices = clientContraption.getMatrices(); - matrices.setup(poseStack, entity); - - if (!VisualizationManager.supportsVisualization(level)) { - for (RenderType renderType : RenderType.chunkBufferLayers()) { - SuperByteBuffer sbb = getBuffer(contraption, renderWorld, renderType); - if (!sbb.isEmpty()) { - VertexConsumer vc = buffers.getBuffer(renderType); - sbb.transform(matrices.getModel()) - .useLevelLight(level, matrices.getWorld()) - .renderInto(poseStack, vc); - } - } - } - - var adjustRenderedBlockEntities = clientContraption.getAndAdjustShouldRenderBlockEntities(); - - clientContraption.scratchErroredBlockEntities.clear(); - - BlockEntityRenderHelper.renderBlockEntities(clientContraption.renderedBlockEntityView, adjustRenderedBlockEntities, clientContraption.scratchErroredBlockEntities, renderWorld, level, matrices.getModelViewProjection(), matrices.getLight(), buffers, AnimationTickHolder.getPartialTicks()); - - clientContraption.shouldRenderBlockEntities.andNot(clientContraption.scratchErroredBlockEntities); - renderActors(level, renderWorld, contraption, matrices, buffers); - - matrices.clear(); + // TODO 26.2: Port contraption rendering to EntityRenderer#submit. } private static void renderActors(Level level, VirtualRenderWorld renderWorld, Contraption c, @@ -170,7 +103,7 @@ private static void renderActors(Level level, VirtualRenderWorld renderWorld, Co private static class ThreadLocalObjects { public final PoseStack poseStack = new PoseStack(); - public final RandomSource random = RandomSource.createNewThreadLocalInstance(); + public final RandomSource random = RandomSource.createThreadLocalInstance(); public final ShadedBlockSbbBuilder sbbBuilder = ShadedBlockSbbBuilder.create(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionMatrices.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionMatrices.java index d6faa3984c..b6e84c7324 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionMatrices.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionMatrices.java @@ -5,7 +5,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.AbstractContraptionEntity; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -88,9 +88,10 @@ public static void translateToEntity(Matrix4f matrix, Entity entity, float parti } public static void clearStack(PoseStack ms) { - while (!ms.clear()) { + while (!ms.isEmpty()) { ms.popPose(); } + ms.setIdentity(); } } diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java index 370cb392d6..ffde99823c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java @@ -41,7 +41,7 @@ import net.minecraft.core.SectionPos; import net.minecraft.core.Vec3i; import net.minecraft.util.Mth; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/package-info.java b/src/main/java/com/simibubi/create/content/contraptions/render/package-info.java index 7c51e431d5..f787404717 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/package-info.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/package-info.java @@ -1,6 +1,3 @@ -@ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package com.simibubi.create.content.contraptions.render; +@ParametersAreNonnullByDefault package com.simibubi.create.content.contraptions.render; import javax.annotation.ParametersAreNonnullByDefault; - -import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/content/contraptions/sync/ClientMotionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/sync/ClientMotionPacket.java index 368456527e..c8c32f1ffe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/sync/ClientMotionPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/sync/ClientMotionPacket.java @@ -1,9 +1,9 @@ package com.simibubi.create.content.contraptions.sync; import com.simibubi.create.AllPackets; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionInteractionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionInteractionPacket.java index 8a861b4dc1..ea84e3d692 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionInteractionPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionInteractionPacket.java @@ -4,8 +4,8 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionSeatMappingPacket.java b/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionSeatMappingPacket.java index 54efa48759..df0dc60c44 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionSeatMappingPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/sync/ContraptionSeatMappingPacket.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -18,7 +18,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ContraptionSeatMappingPacket(int entityId, Map mapping, int dismountedId) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -37,9 +36,8 @@ public ContraptionSeatMappingPacket(int entityID, Map mapping) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - Entity entityByID = player.clientLevel.getEntity(entityId); + public void handle(Player player) { + Entity entityByID = player.level().getEntity(entityId); if (!(entityByID instanceof AbstractContraptionEntity contraptionEntity)) return; diff --git a/src/main/java/com/simibubi/create/content/contraptions/sync/LimbSwingUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/sync/LimbSwingUpdatePacket.java index 328bf8d076..db1c9bfe81 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/sync/LimbSwingUpdatePacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/sync/LimbSwingUpdatePacket.java @@ -3,9 +3,9 @@ import com.simibubi.create.AllPackets; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -13,7 +13,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record LimbSwingUpdatePacket(int entityId, Vec3 position, float limbSwing) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -24,16 +23,14 @@ public record LimbSwingUpdatePacket(int entityId, Vec3 position, float limbSwing ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - Entity entity = player.clientLevel.getEntity(entityId); + public void handle(Player player) { + Entity entity = player.level().getEntity(entityId); if (entity == null) return; CompoundTag data = entity.getPersistentData(); data.putInt("LastOverrideLimbSwingUpdate", 0); data.putFloat("OverrideLimbSwing", limbSwing); - entity.lerpTo(position.x, position.y, position.z, entity.getYRot(), - entity.getXRot(), 2); + entity.snapTo(position, entity.getYRot(), entity.getXRot()); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/NonVisualizationLevel.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/NonVisualizationLevel.java index 6f9b3f1139..79a026a170 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/NonVisualizationLevel.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/NonVisualizationLevel.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.contraptions.wrench; import dev.engine_room.flywheel.api.visualization.VisualizationLevel; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.world.level.Level; public class NonVisualizationLevel extends WrappedLevel implements VisualizationLevel { diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchHandler.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchHandler.java index c9eb0420a9..4b10ff9492 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchHandler.java @@ -3,7 +3,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllKeys; -import net.createmod.catnip.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.ScreenOpener; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java index b42e5baa26..20410d9388 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenu.java @@ -9,16 +9,10 @@ import java.util.Set; import org.jetbrains.annotations.Nullable; -import org.joml.Matrix4f; +import org.joml.Matrix3x2fStack; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat.Mode; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllKeys; import com.simibubi.create.Create; @@ -30,23 +24,21 @@ import com.simibubi.create.content.redstone.DirectedDirectionalBlock; import com.simibubi.create.foundation.gui.AllIcons; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.gui.element.RenderElement; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.createmod.catnip.theme.Color; -import net.createmod.ponder.enums.PonderGuiTextures; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.UIRenderHelper; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.element.RenderElement; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.input.KeyEvent; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.HopperBlock; @@ -69,7 +61,7 @@ public class RadialWrenchMenu extends AbstractSimiScreen { registerRotationProperty(SequencedGearshiftBlock.VERTICAL, "Vertical"); } - public static final Set BLOCK_BLACKLIST = new HashSet<>(); + public static final Set BLOCK_BLACKLIST = new HashSet<>(); static { registerBlacklistedBlock(AllBlocks.LARGE_WATER_WHEEL.getId()); @@ -83,7 +75,7 @@ public static void registerRotationProperty(Property property, String label) VALID_PROPERTIES.put(property, label); } - public static void registerBlacklistedBlock(ResourceLocation location) { + public static void registerBlacklistedBlock(Identifier location) { if (BLOCK_BLACKLIST.contains(location)) return; @@ -106,7 +98,7 @@ public static void registerBlacklistedBlock(ResourceLocation location) { private int ticksOpen; private int selectedStateIndex = 0; - private final RenderElement iconScroll = RenderElement.of(PonderGuiTextures.ICON_SCROLL); + private final RenderElement iconScroll = RenderElement.of(AllIcons.I_SCROLL); private final RenderElement iconUp = RenderElement.of(AllIcons.I_PRIORITY_HIGH); private final RenderElement iconDown = RenderElement.of(AllIcons.I_PRIORITY_LOW); @@ -177,22 +169,22 @@ private void cycleAllPropertyValues(BlockState state, Property property, List public void tick() { ticksOpen++; if (!level.getBlockState(pos).is(state.getBlock())) - Minecraft.getInstance().setScreen(null); + Minecraft.getInstance().setScreenAndShow(null); super.tick(); } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = this.width / 2; int y = this.height / 2; - PoseStack ms = graphics.pose(); + Matrix3x2fStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(x, y, 0); + ms.pushMatrix(); + ms.translate(x, y); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); + LegacyRenderSystemBridge.enableBlend(); + LegacyRenderSystemBridge.defaultBlendFunc(); int mouseOffsetX = mouseX - this.width / 2; int mouseOffsetY = mouseY - this.height / 2; @@ -216,47 +208,39 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float UIRenderHelper.streak(graphics, 180, 0, 0, 32, 65, Color.BLACK.setAlpha(0.8f)); if (selectedPropertyIndex > 0) { - iconScroll.at(-14, -46).render(graphics); - iconUp.at(-1, -46).render(graphics); - graphics.drawCenteredString(font, propertiesForState.get(selectedPropertyIndex - 1).getValue(), 0, -30, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); + iconScroll.at(-14, -46).render(graphics, 0, 0); + iconUp.at(-1, -46).render(graphics, 0, 0); + graphics.centeredText(font, propertiesForState.get(selectedPropertyIndex - 1).getValue(), 0, -30, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); } if (selectedPropertyIndex < propertiesForState.size() - 1) { - iconScroll.at(-14, 30).render(graphics); - iconDown.at(-1, 30).render(graphics); - graphics.drawCenteredString(font, propertiesForState.get(selectedPropertyIndex + 1).getValue(), 0, 22, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); + iconScroll.at(-14, 30).render(graphics, 0, 0); + iconDown.at(-1, 30).render(graphics, 0, 0); + graphics.centeredText(font, propertiesForState.get(selectedPropertyIndex + 1).getValue(), 0, 22, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); } - graphics.drawCenteredString(font, "Currently", 0, -13, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); - graphics.drawCenteredString(font, "Changing:", 0, -3, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); - graphics.drawCenteredString(font, propertyLabel, 0, 7, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); + graphics.centeredText(font, "Currently", 0, -13, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); + graphics.centeredText(font, "Changing:", 0, -3, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); + graphics.centeredText(font, propertyLabel, 0, 7, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); - ms.popPose(); + ms.popMatrix(); } - private void renderRadialSectors(GuiGraphics graphics) { + private void renderRadialSectors(GuiGraphicsExtractor graphics) { int sectors = allStates.size(); if (sectors < 2) return; - PoseStack poseStack = graphics.pose(); LocalPlayer player = Minecraft.getInstance().player; if (player == null) return; float sectorAngle = 360f / sectors; - int sectorWidth = outerRadius - innerRadius; - - poseStack.pushPose(); for (int i = 0; i < sectors; i++) { Color innerColor = Color.WHITE.setAlpha(0.05f); Color outerColor = Color.WHITE.setAlpha(0.3f); - BlockState blockState = allStates.get(i); - Property property = propertiesForState.get(selectedPropertyIndex).getKey(); - - poseStack.pushPose(); if (i == selectedStateIndex) { innerColor.mixWith(new Color(0.8f, 0.8f, 0.2f, 0.2f), 0.5f); @@ -268,92 +252,22 @@ private void renderRadialSectors(GuiGraphics graphics) { UIRenderHelper.drawRadialSector(graphics, innerRadius, outerRadius, -(sectorAngle / 2 + 90), sectorAngle, innerColor, outerColor); Color c = innerColor.copy().setAlpha(0.5f); UIRenderHelper.drawRadialSector(graphics, innerRadius - 3, innerRadius - 2, -(sectorAngle / 2 + 90), sectorAngle, c, c); - - TransformStack.of(poseStack) - .translateY(-(sectorWidth / 2f + innerRadius)) - .rotateZDegrees(-i * sectorAngle); - - poseStack.translate(0, 0, 100); - - try { - withLevel(blockEntity, nonVisualizationLevel, - () -> GuiGameElement.of(blockState, blockEntity) - .rotateBlock(player.getXRot(), player.getYRot() + 180, 0f) - .scale(24) - .at(-12, 12) - .render(graphics) - ); - } catch (Exception e) { - Create.LOGGER.warn("Failed to render blockstate in RadialWrenchMenu", e); - allStates.remove(i); - selectedStateIndex = 0; - return; - } - - poseStack.translate(0, 0, 50); - - if (i == selectedStateIndex) { - graphics.drawCenteredString(font, blockState.getValue(property).toString(), 0, 15, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); - } - - poseStack.popPose(); - - poseStack.pushPose(); - - TransformStack.of(poseStack) - .rotateZDegrees(sectorAngle / 2); - - poseStack.translate(0, -innerRadius - 20, 10); - - UIRenderHelper.angledGradient(graphics, -90, 0, 0, 0.5f, sectorWidth - 10, Color.WHITE.setAlpha(0.5f), Color.WHITE.setAlpha(0.15f)); - UIRenderHelper.angledGradient(graphics, 90, 0, 0, 0.5f, 25, Color.WHITE.setAlpha(0.5f), Color.WHITE.setAlpha(0.15f)); - poseStack.popPose(); - - TransformStack.of(poseStack) - .rotateZDegrees(sectorAngle); } - poseStack.popPose(); + BlockState blockState = allStates.get(selectedStateIndex); + Property property = propertiesForState.get(selectedPropertyIndex).getKey(); + graphics.centeredText(font, blockState.getValue(property).toString(), 0, 15, UIRenderHelper.COLOR_TEXT.getFirst().getRGB()); } - private void renderDirectionIndicator(GuiGraphics graphics, double theta) { - PoseStack poseStack = graphics.pose(); - - float r = 0.8f; - float g = 0.8f; - float b = 0.8f; - - poseStack.pushPose(); - TransformStack.of(poseStack) - .rotateZ((float) -theta) - .translateY(innerRadius + 3) - .translateZ(15); - - RenderSystem.setShader(GameRenderer::getPositionColorShader); - - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tesselator.begin(Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); - - Matrix4f mat = poseStack.last().pose(); - - bufferbuilder.addVertex(mat, 0, 0, 0).setColor(r, g, b, 0.75f); - - bufferbuilder.addVertex(mat, 5, -5, 0).setColor(r, g, b, 0.4f); - bufferbuilder.addVertex(mat, 3, -4.5f, 0).setColor(r, g, b, 0.4f); - bufferbuilder.addVertex(mat, 0, -4.2f, 0).setColor(r, g, b, 0.4f); - bufferbuilder.addVertex(mat, -3, -4.5f, 0).setColor(r, g, b, 0.4f); - bufferbuilder.addVertex(mat, -5, -5, 0).setColor(r, g, b, 0.4f); - - BufferUploader.drawWithShader(bufferbuilder.buildOrThrow()); - - poseStack.popPose(); + private void renderDirectionIndicator(GuiGraphicsExtractor graphics, double theta) { + // TODO 26.2: Rebuild this tiny immediate-mode indicator with the GUI submit pipeline. } private void submitChange() { BlockState selectedState = allStates.get(selectedStateIndex); if (selectedState != state) { - CatnipServices.NETWORK.sendToServer(new RadialWrenchMenuSubmitPacket(pos, selectedState)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new RadialWrenchMenuSubmitPacket(pos, selectedState)); } onClose(); @@ -379,21 +293,21 @@ private void withLevel(@Nullable BlockEntity blockEntity, Level newLevel, Runnab } @Override - public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { + public void renderBackground(GuiGraphicsExtractor GuiGraphicsExtractor, int mouseX, int mouseY, float partialTick) { Color color = BACKGROUND_COLOR .scaleAlpha(Math.min(1, (ticksOpen + AnimationTickHolder.getPartialTicks()) / 20f)); - guiGraphics.fillGradient(0, 0, this.width, this.height, color.getRGB(), color.getRGB()); + GuiGraphicsExtractor.fillGradient(0, 0, this.width, this.height, color.getRGB(), color.getRGB()); } @Override - public boolean keyReleased(int code, int scanCode, int modifiers) { - InputConstants.Key mouseKey = InputConstants.getKey(code, scanCode); + public boolean keyReleased(KeyEvent event) { + InputConstants.Key mouseKey = InputConstants.getKey(event); if (AllKeys.ROTATE_MENU.getKeybind().isActiveAndMatches(mouseKey)) { submitChange(); return true; } - return super.keyReleased(code, scanCode, modifiers); + return super.keyReleased(event); } @Override diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java index d9904f23e8..253c130ec8 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/RadialWrenchMenuSubmitPacket.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/package-info.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/package-info.java index 24b04c90e1..a05b93d85c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/package-info.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/package-info.java @@ -1,9 +1,7 @@ @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault package com.simibubi.create.content.contraptions.wrench; import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; +import com.simibubi.create.foundation.utility.FieldsAreNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/content/decoration/MetalLadderBlock.java b/src/main/java/com/simibubi/create/content/decoration/MetalLadderBlock.java index af57c60dde..ae9c2bd9b3 100644 --- a/src/main/java/com/simibubi/create/content/decoration/MetalLadderBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/MetalLadderBlock.java @@ -7,15 +7,16 @@ import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; @@ -25,6 +26,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LadderBlock; import net.minecraft.world.level.block.state.BlockState; @@ -32,24 +34,21 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class MetalLadderBlock extends LadderBlock implements IWrenchable { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public MetalLadderBlock(Properties p_54345_) { super(p_54345_); } @Override - @OnlyIn(Dist.CLIENT) public boolean supportsExternalFaceHiding(BlockState state) { return false; } @Override - @OnlyIn(Dist.CLIENT) @SuppressWarnings("deprecation") public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) { if (pDirection != null && pDirection.getAxis() @@ -59,16 +58,15 @@ public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, } @Override - public VoxelShape getOcclusionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) { + protected VoxelShape getOcclusionShape(BlockState pState) { return AllShapes.SIX_VOXEL_POLE.get(Axis.Y); } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { if (!pState.canSurvive(pLevel, pCurrentPos)) return Blocks.AIR.defaultBlockState(); - return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + return super.updateShape(pState, pLevel, ticks, pCurrentPos, pFacing, pFacingPos, pFacingState, random); } @Override @@ -79,18 +77,17 @@ public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || !player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + return InteractionResult.TRY_WITH_EMPTY_HAND; + IPlacementHelper helper = PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { diff --git a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlock.java b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlock.java index 023af808ac..324772e475 100644 --- a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlock.java @@ -12,6 +12,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.ScaffoldingBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.CollisionContext; @@ -61,9 +62,8 @@ public VoxelShape getInteractionShape(BlockState pState, BlockGetter pLevel, Blo } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { + super.updateShape(pState, pLevel, ticks, pCurrentPos, pFacing, pFacingPos, pFacingState, random); BlockState stateBelow = pLevel.getBlockState(pCurrentPos.below()); return pFacing == Direction.DOWN ? pState.setValue(BOTTOM, !stateBelow.is(this) && !stateBelow.isFaceSturdy(pLevel, pCurrentPos.below(), Direction.UP)) : pState; diff --git a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlockItem.java b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlockItem.java index 0d5b4035dc..85dc321ba6 100644 --- a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlockItem.java +++ b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingBlockItem.java @@ -42,9 +42,9 @@ public BlockPlaceContext updatePlacementContext(BlockPlaceContext pContext) { // .move(direction); while (i < 7) { - if (!level.isClientSide && !level.isInWorldBounds(blockpos$mutableblockpos)) { + if (!level.isClientSide() && !level.isInWorldBounds(blockpos$mutableblockpos)) { Player player = pContext.getPlayer(); - int j = level.getMaxBuildHeight(); + int j = level.getMaxY(); if (player instanceof ServerPlayer sp && blockpos$mutableblockpos.getY() >= j) sp.sendSystemMessage(Component.translatable("build.tooHigh", j - 1) .withStyle(ChatFormatting.RED), true); diff --git a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingCTBehaviour.java index a85e7d2e17..2ec01ebddc 100644 --- a/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/MetalScaffoldingCTBehaviour.java @@ -9,7 +9,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class MetalScaffoldingCTBehaviour extends HorizontalCTBehaviour { diff --git a/src/main/java/com/simibubi/create/content/decoration/RoofBlockCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/RoofBlockCTBehaviour.java index bd9b39a347..c7be6b167b 100644 --- a/src/main/java/com/simibubi/create/content/decoration/RoofBlockCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/RoofBlockCTBehaviour.java @@ -7,13 +7,13 @@ import com.simibubi.create.foundation.block.connected.CTType; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.SlabBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.StairBlock; diff --git a/src/main/java/com/simibubi/create/content/decoration/TrainTrapdoorBlock.java b/src/main/java/com/simibubi/create/content/decoration/TrainTrapdoorBlock.java index 5e394e13e3..74a8ab6cd4 100644 --- a/src/main/java/com/simibubi/create/content/decoration/TrainTrapdoorBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/TrainTrapdoorBlock.java @@ -47,7 +47,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP if (state.getValue(WATERLOGGED)) level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); playSound(player, level, pos, state.getValue(OPEN)); - return InteractionResult.sidedSuccess(level.isClientSide); + return (level.isClientSide() ? InteractionResult.SUCCESS : InteractionResult.SUCCESS_SERVER); } @Override diff --git a/src/main/java/com/simibubi/create/content/decoration/TrapdoorCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/TrapdoorCTBehaviour.java index 1b1ea63cfb..a8950dae40 100644 --- a/src/main/java/com/simibubi/create/content/decoration/TrapdoorCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/TrapdoorCTBehaviour.java @@ -9,7 +9,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class TrapdoorCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlock.java b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlock.java index 94be0e067e..d49328faeb 100644 --- a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlock.java @@ -9,7 +9,7 @@ import com.simibubi.create.content.kinetics.simpleRelays.CogWheelBlock; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.StringRepresentable; diff --git a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlockItem.java b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlockItem.java index 18ecd15223..21eb18942e 100644 --- a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlockItem.java +++ b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketBlockItem.java @@ -36,7 +36,7 @@ public InteractionResult useOn(UseOnContext context) { return InteractionResult.FAIL; if (!behaviour.canHaveBracket()) return InteractionResult.FAIL; - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; Optional suitableBracket = bracketBlock.getSuitableBracket(state, context.getClickedFace()); diff --git a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketGenerator.java b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketGenerator.java index 128880f6d0..2e932af98a 100644 --- a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketGenerator.java +++ b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketGenerator.java @@ -1,32 +1,36 @@ package com.simibubi.create.content.decoration.bracket; +import java.util.HashMap; +import java.util.Map; + import com.simibubi.create.foundation.data.DirectionalAxisBlockStateGen; import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class BracketGenerator extends DirectionalAxisBlockStateGen { private String material; + private final Map models = new HashMap<>(); public BracketGenerator(String material) { this.material = material; } @Override - public String getModelPrefix(DataGenContext ctx, RegistrateBlockstateProvider prov, + public String getModelPrefix(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return ""; } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String type = state.getValue(BracketBlock.TYPE) .getSerializedName(); @@ -36,14 +40,14 @@ public ModelFile getModel(DataGenContext ctx, Regist String path = "block/bracket/" + type + "/" + (vertical ? "ground" : "wall"); - return prov.models() - .withExistingParent(path + "_" + material, prov.modLoc(path)) + return models.computeIfAbsent(path, key -> prov.models() + .withExistingParent(key + "_" + material, prov.modLoc(key)) .texture("bracket", prov.modLoc("block/bracket_" + material)) - .texture("plate", prov.modLoc("block/bracket_plate_" + material)); + .texture("plate", prov.modLoc("block/bracket_plate_" + material))); } public static NonNullFunction, P> itemModel(String material) { - return b -> b.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/bracket/item")) + return b -> b.model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/bracket/item")) .texture("bracket", p.modLoc("block/bracket_" + material)) .texture("plate", p.modLoc("block/bracket_plate_" + material))) .build(); diff --git a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java index 017e0d42ae..e1db665827 100644 --- a/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/bracket/BracketedBlockEntityBehaviour.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; @@ -47,7 +47,7 @@ public void applyBracket(BlockState state) { reRender = true; blockEntity.notifyUpdate(); Level world = getWorld(); - if (world.isClientSide) + if (world.isClientSide()) return; blockEntity.getBlockState() .updateNeighbourShapes(world, getPos(), 3); @@ -68,7 +68,7 @@ public BlockState removeBracket(boolean inOnReplacedContext) { BlockState removed = this.bracket; Level world = getWorld(); - if (!world.isClientSide) + if (!world.isClientSide()) world.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, getPos(), Block.getId(bracket)); this.bracket = null; reRender = true; @@ -77,7 +77,7 @@ public BlockState removeBracket(boolean inOnReplacedContext) { return removed; } blockEntity.notifyUpdate(); - if (world.isClientSide) + if (world.isClientSide()) return removed; blockEntity.getBlockState() .updateNeighbourShapes(world, getPos(), 3); @@ -130,7 +130,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { if (nbt.contains("Bracket")) { bracket = null; - BlockState readBlockState = NbtUtils.readBlockState(blockEntity.blockHolderGetter(), nbt.getCompound("Bracket")); + BlockState readBlockState = NbtUtils.readBlockState(blockEntity.blockHolderGetter(), nbt.getCompoundOrEmpty("Bracket")); if (isBracketValid(readBlockState)) bracket = readBlockState; } diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBarsModel.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBarsModel.java index 8d370ade72..e67c0ffa84 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBarsModel.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBarsModel.java @@ -5,17 +5,17 @@ import com.simibubi.create.foundation.model.BakedQuadHelper; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class CopycatBarsModel extends CopycatModel { diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java index c02d75c7f8..0a837decff 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java @@ -1,5 +1,9 @@ package com.simibubi.create.content.decoration.copycat; +import java.util.List; +import java.util.Set; +import java.util.stream.IntStream; + import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllBlockEntityTypes; @@ -9,23 +13,25 @@ import com.simibubi.create.foundation.block.IBE; import net.minecraft.client.Minecraft; -import net.minecraft.client.color.block.BlockColor; +import net.minecraft.client.color.block.BlockTintSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.world.level.BlockAndLightGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Explosion; import net.minecraft.world.level.GrassColor; @@ -42,14 +48,14 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; import net.neoforged.neoforge.common.world.AuxiliaryLightManager; public abstract class CopycatBlock extends Block implements IBE, IWrenchable { @@ -90,9 +96,9 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; Direction face = hitResult.getDirection(); BlockState materialIn = getAcceptedBlockState(level, pos, stack, face); @@ -100,23 +106,23 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (materialIn != null) materialIn = prepareMaterial(level, pos, state, player, hand, hitResult, materialIn); if (materialIn == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; BlockState material = materialIn; return onBlockEntityUseItemOn(level, pos, ufte -> { if (ufte.getMaterial() .is(material.getBlock())) { if (!ufte.cycleMaterial()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ufte.getLevel() .playSound(null, ufte.getBlockPos(), SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, .75f, .95f); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (ufte.hasCustomMaterial()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (level.isClientSide()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; ufte.setMaterial(material); ufte.setConsumedItem(stack); @@ -125,12 +131,12 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev .getPlaceSound(), SoundSource.BLOCKS, 1, .75f); if (player.isCreative()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; stack.shrink(1); if (stack.isEmpty()) player.setItemInHand(hand, ItemStack.EMPTY); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @@ -219,12 +225,13 @@ public BlockState prepareMaterial(Level pLevel, BlockPos pPos, BlockState pState } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (!pState.hasBlockEntity() || pState.getBlock() == pNewState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + if (!pState.hasBlockEntity()) return; if (!pIsMoving) withBlockEntityDo(pLevel, pPos, ufte -> Block.popResource(pLevel, pPos, ufte.getConsumedItem())); pLevel.removeBlockEntity(pPos); + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); } @Override @@ -248,16 +255,18 @@ public BlockEntityType getBlockEntityType() { // Connected Textures @Override - @OnlyIn(Dist.CLIENT) - public BlockState getAppearance(BlockState state, BlockAndTintGetter level, BlockPos pos, Direction side, + public BlockState getAppearance(BlockState state, BlockAndLightGetter level, BlockPos pos, Direction side, @Nullable BlockState queryState, @Nullable BlockPos queryPos) { - if (isIgnoredConnectivitySide(level, state, side, pos, queryPos)) + if (!(level instanceof BlockAndTintGetter tintGetter)) + return state; + + if (isIgnoredConnectivitySide(tintGetter, state, side, pos, queryPos)) return state; - ModelData modelData = level.getModelData(pos); + ModelData modelData = tintGetter.getModelData(pos); if (modelData == ModelData.EMPTY) - return getMaterial(level, pos); + return getMaterial(tintGetter, pos); return CopycatModel.getMaterial(modelData); } @@ -322,12 +331,11 @@ public float getExplosionResistance(BlockState state, BlockGetter level, BlockPo } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { BlockState material = getMaterial(level, pos); if (AllBlocks.COPYCAT_BASE.has(material) || player != null && player.isShiftKeyDown()) return new ItemStack(this); - return material.getCloneItemStack(target, level, pos, player); + return material.getCloneItemStack(pos, level, includeData, player); } @Override @@ -342,8 +350,11 @@ public boolean addRunningEffects(BlockState state, Level level, BlockPos pos, En } @Override - public float getEnchantPowerBonus(BlockState state, LevelReader level, BlockPos pos) { - return getMaterial(level, pos).getEnchantPowerBonus(level, pos); + public float getEnchantPowerBonus(BlockState state, BlockGetter level, BlockPos pos) { + BlockState material = getMaterial(level, pos); + if (level instanceof LevelReader levelReader) + return material.getEnchantPowerBonus(levelReader, pos); + return material.is(BlockTags.ENCHANTMENT_POWER_PROVIDER) ? 1 : 0; } @Override @@ -352,7 +363,7 @@ public boolean canEntityDestroy(BlockState state, BlockGetter level, BlockPos po } @Override - public void fallOn(Level pLevel, BlockState pState, BlockPos pPos, Entity pEntity, float p_152430_) { + public void fallOn(Level pLevel, BlockState pState, BlockPos pPos, Entity pEntity, double p_152430_) { BlockState material = getMaterial(pLevel, pPos); material.getBlock() .fallOn(pLevel, material, pPos, pEntity, p_152430_); @@ -365,22 +376,46 @@ public float getDestroyProgress(BlockState pState, Player pPlayer, BlockGetter p // - @OnlyIn(Dist.CLIENT) - public static BlockColor wrappedColor() { - return new WrappedBlockColor(); + public static List wrappedColor() { + return IntStream.range(0, 8) + .mapToObj(WrappedBlockTintSource::new) + .map(BlockTintSource.class::cast) + .toList(); } - @OnlyIn(Dist.CLIENT) - public static class WrappedBlockColor implements BlockColor { + public static class WrappedBlockTintSource implements BlockTintSource { + private final int layer; + + public WrappedBlockTintSource(int layer) { + this.layer = layer; + } + + @Override + public int color(BlockState state) { + return GrassColor.get(0.5D, 1.0D); + } @Override - public int getColor(BlockState pState, @Nullable BlockAndTintGetter pLevel, @Nullable BlockPos pPos, - int pTintIndex) { - if (pLevel == null || pPos == null) - return GrassColor.get(0.5D, 1.0D); - return Minecraft.getInstance() + public int colorInWorld(BlockState state, BlockAndTintGetter level, BlockPos pos) { + BlockState material = getMaterial(level, pos); + BlockTintSource source = Minecraft.getInstance() .getBlockColors() - .getColor(getMaterial(pLevel, pPos), pLevel, pPos, pTintIndex); + .getTintSource(material, layer); + return source == null ? GrassColor.get(0.5D, 1.0D) : source.colorInWorld(material, level, pos); + } + + @Override + public int colorAsTerrainParticle(BlockState state, BlockAndTintGetter level, BlockPos pos) { + BlockState material = getMaterial(level, pos); + BlockTintSource source = Minecraft.getInstance() + .getBlockColors() + .getTintSource(material, layer); + return source == null ? color(state) : source.colorAsTerrainParticle(material, level, pos); + } + + @Override + public Set> relevantProperties() { + return Set.of(); } } diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java index c9ea78e898..3cca6b5664 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlockEntity.java @@ -12,8 +12,9 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -28,7 +29,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; import net.neoforged.neoforge.common.world.AuxiliaryLightManager; public class CopycatBlockEntity extends SmartBlockEntity @@ -152,7 +153,7 @@ public void transform(BlockEntity be, StructureTransform transform) { protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - consumedItem = ItemStack.parseOptional(registries, tag.getCompound("Item")); + consumedItem = LegacyItemStackNbtBridge.parseOptional(registries, tag.getCompoundOrEmpty("Item")); BlockState prevMaterial = material; if (!tag.contains("Material")) { @@ -160,7 +161,7 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c return; } - material = NbtUtils.readBlockState(blockHolderGetter(), tag.getCompound("Material")); + material = NbtUtils.readBlockState(blockHolderGetter(), tag.getCompoundOrEmpty("Material")); // Validate Material if (material != null && !clientPacket) { @@ -184,7 +185,8 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c public void writeSafe(CompoundTag tag, HolderLookup.Provider registries) { super.writeSafe(tag, registries); - ItemStack stackWithoutComponents = new ItemStack(consumedItem.getItemHolder(), consumedItem.getCount(), DataComponentPatch.EMPTY); + ItemStack stackWithoutComponents = new ItemStack(consumedItem.typeHolder(), consumedItem.getCount(), + DataComponentPatch.EMPTY); write(tag, registries, stackWithoutComponents, material); } @@ -196,7 +198,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean } protected void write(CompoundTag tag, HolderLookup.Provider registries, ItemStack stack, BlockState material) { - tag.put("Item", stack.saveOptional(registries)); + tag.put("Item", LegacyItemStackNbtBridge.saveOptional(stack, registries)); tag.put("Material", NbtUtils.writeBlockState(material)); } diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatModel.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatModel.java index aae4db9fa2..058b7e1bdb 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatModel.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatModel.java @@ -8,25 +8,25 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.model.BakedModelWrapperWithData; +import com.simibubi.create.foundation.model.QuadTransformers; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.QuadTransformers; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; public abstract class CopycatModel extends BakedModelWrapperWithData { @@ -58,7 +58,7 @@ protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, Blo pos, material, ModelData.EMPTY); builder.with(WRAPPED_DATA_PROPERTY, wrappedData); - boolean isEmissive = material.emissiveRendering(world, pos); + boolean isEmissive = material.emissiveRendering(); builder.with(IS_EMISSIVE_PROPERTY, isEmissive); return builder; @@ -81,15 +81,15 @@ private void gatherOcclusionData(BlockAndTintGetter level, BlockPos pos, BlockSt if (!copycatBlock.canFaceBeOccluded(state, face)) continue; - if (!Block.shouldRenderFace(material, level, pos, face, neighbourPos)) + if (!Block.shouldRenderFace(level, pos, material, level.getBlockState(neighbourPos), face)) occlusionData.occlude(face); - } + } } @Override public List getQuads(BlockState state, Direction side, RandomSource rand) { return getCroppedQuads(state, side, rand, getMaterial(ModelData.EMPTY), ModelData.EMPTY, - RenderType.cutoutMipped()); + com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); } @Override @@ -111,8 +111,7 @@ public List getQuads(BlockState state, Direction side, RandomSource r ModelData wrappedData = data.get(WRAPPED_DATA_PROPERTY); if (wrappedData == null) wrappedData = ModelData.EMPTY; - if (renderType != null && !Minecraft.getInstance() - .getBlockRenderer() + if (renderType != null && !com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(material) .getRenderTypes(material, rand, wrappedData) .contains(renderType)) @@ -166,8 +165,7 @@ public static BlockState getMaterial(ModelData data) { } public static BakedModel getModelOf(BlockState state) { - return Minecraft.getInstance() - .getBlockRenderer() + return com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(state); } diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java index 31e86fda2f..d96a1dfd85 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java @@ -8,21 +8,20 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -32,7 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; @@ -41,9 +40,9 @@ public class CopycatPanelBlock extends WaterloggedCopycatBlock { - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public CopycatPanelBlock(Properties pProperties) { super(pProperties); @@ -75,13 +74,13 @@ public BlockState prepareMaterial(Level pLevel, BlockPos pPos, BlockState pState } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.isShiftKeyDown() && player.mayBuild()) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (placementHelper.matchesItem(stack)) { placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } @@ -209,8 +208,7 @@ public BlockState mirror(BlockState state, Mirror mirrorIn) { return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { return AllBlocks.COPYCAT_PANEL::isIn; diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelModel.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelModel.java index b4e807f5a8..3676345433 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelModel.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelModel.java @@ -7,12 +7,12 @@ import com.simibubi.create.foundation.model.BakedModelHelper; import com.simibubi.create.foundation.model.BakedQuadHelper; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.render.BlockRenderDispatcher; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -21,7 +21,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class CopycatPanelModel extends CopycatModel { @@ -36,8 +36,7 @@ protected List getCroppedQuads(BlockState state, Direction side, Rand ModelData wrappedData, RenderType renderType) { Direction facing = state.getOptionalValue(CopycatPanelBlock.FACING) .orElse(Direction.UP); - BlockRenderDispatcher blockRenderer = Minecraft.getInstance() - .getBlockRenderer(); + BlockRenderDispatcher blockRenderer = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer(); BlockState specialCopycatModelState = null; if (CopycatSpecialCases.isBarsMaterial(material)) @@ -59,7 +58,7 @@ protected List getCroppedQuads(BlockState state, Direction side, Rand List quads = new ArrayList<>(); - Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 normal = Vec3.atLowerCornerOf(facing.getUnitVec3i()); Vec3 normalScaled14 = normal.scale(14 / 16f); // 2 Pieces diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java index 9d622d9c15..8303b72f1e 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepBlock.java @@ -9,20 +9,20 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.foundation.placement.PoleHelper; -import net.createmod.catnip.math.VoxelShaper; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; +import net.createmod.catnip.api.math.VoxelShaper; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -31,7 +31,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.pathfinder.PathComputationType; @@ -42,9 +42,9 @@ public class CopycatStepBlock extends WaterloggedCopycatBlock { public static final EnumProperty HALF = BlockStateProperties.HALF; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public CopycatStepBlock(Properties pProperties) { super(pProperties); @@ -53,9 +53,9 @@ public CopycatStepBlock(Properties pProperties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.isShiftKeyDown() && player.mayBuild()) { - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + IPlacementHelper helper = PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepModel.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepModel.java index 04759a82e1..bd118974dd 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepModel.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatStepModel.java @@ -6,10 +6,10 @@ import com.simibubi.create.foundation.model.BakedModelHelper; import com.simibubi.create.foundation.model.BakedQuadHelper; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -18,7 +18,7 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class CopycatStepModel extends CopycatModel { @@ -45,7 +45,7 @@ protected List getCroppedQuads(BlockState state, Direction side, Rand List quads = new ArrayList<>(); - Vec3 normal = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 normal = Vec3.atLowerCornerOf(facing.getUnitVec3i()); Vec3 normalScaled2 = normal.scale(.5); Vec3 normalScaledN3 = normal.scale(-.75); AABB bb = CUBE_AABB.contract(-normal.x * .75, .75, -normal.z * .75); diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/FilteredBlockAndTintGetter.java b/src/main/java/com/simibubi/create/content/decoration/copycat/FilteredBlockAndTintGetter.java index 64c0b82565..2087139a0f 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/FilteredBlockAndTintGetter.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/FilteredBlockAndTintGetter.java @@ -3,8 +3,8 @@ import java.util.function.Predicate; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.world.level.CardinalLighting; import net.minecraft.world.level.ColorResolver; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; @@ -12,7 +12,7 @@ import net.minecraft.world.level.lighting.LevelLightEngine; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class FilteredBlockAndTintGetter implements BlockAndTintGetter { @@ -45,18 +45,18 @@ public int getHeight() { } @Override - public int getMinBuildHeight() { - return wrapped.getMinBuildHeight(); + public int getMinY() { + return wrapped.getMinY(); } @Override - public float getShade(Direction pDirection, boolean pShade) { - return wrapped.getShade(pDirection, pShade); + public LevelLightEngine getLightEngine() { + return wrapped.getLightEngine(); } @Override - public LevelLightEngine getLightEngine() { - return wrapped.getLightEngine(); + public CardinalLighting cardinalLighting() { + return wrapped.cardinalLighting(); } @Override diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/SpecialCopycatPanelBlockState.java b/src/main/java/com/simibubi/create/content/decoration/copycat/SpecialCopycatPanelBlockState.java index 6d840fa2d9..9af0c0d044 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/SpecialCopycatPanelBlockState.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/SpecialCopycatPanelBlockState.java @@ -2,15 +2,15 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ModelFile; public class SpecialCopycatPanelBlockState extends SpecialBlockStateGen { @@ -35,7 +35,7 @@ private Direction facing(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { BlockModelProvider models = prov.models(); return facing(state).getAxis() == Axis.Y diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/WaterloggedCopycatBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/WaterloggedCopycatBlock.java index a82f162abf..11be700ade 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/WaterloggedCopycatBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/WaterloggedCopycatBlock.java @@ -4,8 +4,11 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -34,9 +37,8 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } diff --git a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java index f1a7500cc1..d6c4ed1756 100644 --- a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasableBlock.java @@ -6,7 +6,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -22,7 +22,7 @@ public interface EncasableBlock { /** * This method should be called in the {@link Block#useItemOn(ItemStack, BlockState, Level, BlockPos, Player, InteractionHand, BlockHitResult)} method. */ - default ItemInteractionResult tryEncase(BlockState state, Level level, BlockPos pos, ItemStack heldItem, Player player, InteractionHand hand, + default InteractionResult tryEncase(BlockState state, Level level, BlockPos pos, ItemStack heldItem, Player player, InteractionHand hand, BlockHitResult ray) { List encasedVariants = EncasingRegistry.getVariants(state.getBlock()); for (Block block : encasedVariants) { @@ -30,15 +30,15 @@ default ItemInteractionResult tryEncase(BlockState state, Level level, BlockPos if (encased.getCasing().asItem() != heldItem.getItem()) continue; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; encased.handleEncasing(state, level, pos, heldItem, player, hand, ray); playEncaseSound(level, pos); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } default void playEncaseSound(Level level, BlockPos pos) { diff --git a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasedCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasedCTBehaviour.java index 7c3d046bda..2bd5a64bb9 100644 --- a/src/main/java/com/simibubi/create/content/decoration/encasing/EncasedCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/encasing/EncasedCTBehaviour.java @@ -9,7 +9,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class EncasedCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/ConnectedGirderModel.java b/src/main/java/com/simibubi/create/content/decoration/girder/ConnectedGirderModel.java index 59304c66ef..778a37ab8a 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/ConnectedGirderModel.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/ConnectedGirderModel.java @@ -7,19 +7,19 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.block.connected.CTModel; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; public class ConnectedGirderModel extends CTModel { @@ -45,12 +45,7 @@ public List getQuads(BlockState state, Direction side, RandomSource r if (side != null || !extraData.has(CONNECTION_PROPERTY)) return superQuads; List quads = new ArrayList<>(superQuads); - ConnectionData data = extraData.get(CONNECTION_PROPERTY); - for (Direction d : Iterate.horizontalDirections) - if (data.isConnected(d)) - quads.addAll(AllPartialModels.METAL_GIRDER_BRACKETS.get(d) - .get() - .getQuads(state, side, rand, extraData, renderType)); + // TODO 26.2: Rebuild connected girder bracket quads via the BlockModel dispatcher. return quads; } diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlock.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlock.java index f5a7a2b31b..54198f4483 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlock.java @@ -19,9 +19,9 @@ import com.simibubi.create.content.trains.track.TrackShape; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -32,16 +32,16 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ChainBlock; import net.minecraft.world.level.block.LanternBlock; @@ -67,7 +67,7 @@ public class GirderBlock extends Block implements SimpleWaterloggedBlock, IWrenchable { - private static final int placementHelperId = PlacementHelpers.register(new GirderPlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new GirderPlacementHelper()); public static final BooleanProperty X = BooleanProperty.create("x"); public static final BooleanProperty Z = BooleanProperty.create("z"); @@ -97,9 +97,9 @@ public VoxelShape getBlockSupportShape(BlockState pState, BlockGetter pReader, B } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.SHAFT.isIn(stack)) { KineticBlockEntity.switchToBlockState(level, pos, AllBlocks.METAL_GIRDER_ENCASED_SHAFT.getDefaultState() @@ -110,27 +110,27 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev .getAxis() == Axis.Z ? Axis.Z : Axis.X)); level.playSound(null, pos, SoundEvents.NETHERITE_BLOCK_HIT, SoundSource.BLOCKS, 0.5f, 1.25f); - if (!level.isClientSide && !player.isCreative()) { + if (!level.isClientSide() && !player.isCreative()) { stack.shrink(1); if (stack.isEmpty()) player.setItemInHand(hand, ItemStack.EMPTY); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (AllItems.WRENCH.isIn(stack) && !player.isShiftKeyDown()) { if (GirderWrenchBehavior.handleClick(level, pos, state, hitResult)) - return ItemInteractionResult.sidedSuccess(level.isClientSide); - return ItemInteractionResult.FAIL; + return (level.isClientSide() ? InteractionResult.SUCCESS : InteractionResult.SUCCESS_SERVER); + return InteractionResult.FAIL; } - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + IPlacementHelper helper = PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -150,10 +150,9 @@ public void tick(BlockState p_60462_, ServerLevel p_60463_, BlockPos p_60464_, R } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); Axis axis = direction.getAxis(); if (direction.getAxis() != Axis.Y) { @@ -198,7 +197,7 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { return state.setValue(WATERLOGGED, ifluidstate.getType() == Fluids.WATER); } - public static BlockState updateState(LevelAccessor level, BlockPos pos, BlockState state, Direction d) { + public static BlockState updateState(BlockGetter level, BlockPos pos, BlockState state, Direction d) { Axis axis = d.getAxis(); Property updateProperty = axis == Axis.X ? X : axis == Axis.Z ? Z : d == Direction.UP ? TOP : BOTTOM; BlockState sideState = level.getBlockState(pos.relative(d)); @@ -233,7 +232,7 @@ else if (isFacingBracket(level, pos, d)) return state; } - public static boolean isFacingBracket(BlockAndTintGetter level, BlockPos pos, Direction d) { + public static boolean isFacingBracket(BlockGetter level, BlockPos pos, Direction d) { BlockEntity blockEntity = level.getBlockEntity(pos.relative(d)); if (!(blockEntity instanceof SmartBlockEntity sbe)) return false; @@ -246,7 +245,7 @@ public static boolean isFacingBracket(BlockAndTintGetter level, BlockPos pos, Di return bracket.getValue(BracketBlock.FACING) == d; } - public static BlockState updateVerticalProperty(LevelAccessor level, BlockPos pos, BlockState state, + public static BlockState updateVerticalProperty(BlockGetter level, BlockPos pos, BlockState state, Property updateProperty, BlockState sideState, Direction d) { boolean canAttach = false; @@ -311,7 +310,7 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu return false; } - public static boolean isConnected(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction side) { + public static boolean isConnected(BlockGetter world, BlockPos pos, BlockState state, Direction side) { Axis axis = side.getAxis(); if (state.getBlock() instanceof GirderBlock && !state.getValue(axis == Axis.X ? X : Z)) return false; diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlockStateGenerator.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlockStateGenerator.java index 32756d7c1f..84048aa19a 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlockStateGenerator.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderBlockStateGenerator.java @@ -2,18 +2,18 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; -import net.neoforged.neoforge.client.model.generators.MultiPartBlockStateBuilder; +import com.tterrag.registrate.providers.generators.MultiPartBlockStateBuilder; public class GirderBlockStateGenerator { public static void blockStateWithShaft(DataGenContext c, - RegistrateBlockstateProvider p) { + RegistrateBlockModelGenerator p) { MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); builder.part() @@ -44,7 +44,7 @@ public static void blockStateWithShaft(DataGenContext c, RegistrateBlockstateProvider p) { + public static void blockState(DataGenContext c, RegistrateBlockModelGenerator p) { MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); builder.part() diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderCTBehaviour.java index 55d09ea61d..6906033598 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderCTBehaviour.java @@ -10,7 +10,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class GirderCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java index 6f9bd783ae..a918dc046d 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderEncasedShaftBlock.java @@ -15,6 +15,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; @@ -22,6 +23,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -103,10 +106,9 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); Property updateProperty = direction == Direction.UP ? TOP : BOTTOM; if (direction.getAxis() diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderPlacementHelper.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderPlacementHelper.java index ebc13abbcd..bcc43fea3e 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderPlacementHelper.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderPlacementHelper.java @@ -8,8 +8,8 @@ import com.simibubi.create.content.equipment.extendoGrip.ExtendoGripItem; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementOffset; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/decoration/girder/GirderWrenchBehavior.java b/src/main/java/com/simibubi/create/content/decoration/girder/GirderWrenchBehavior.java index 182d76df23..c9a4370793 100644 --- a/src/main/java/com/simibubi/create/content/decoration/girder/GirderWrenchBehavior.java +++ b/src/main/java/com/simibubi/create/content/decoration/girder/GirderWrenchBehavior.java @@ -9,12 +9,12 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; @@ -30,11 +30,9 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class GirderWrenchBehavior { - @OnlyIn(Dist.CLIENT) public static void tick() { Minecraft mc = Minecraft.getInstance(); if (mc.player == null || mc.level == null || !(mc.hitResult instanceof BlockHitResult result)) @@ -60,7 +58,7 @@ public static void tick() { Vec3 center = VecHelper.getCenterOf(pos); Vec3 edge = center.add(Vec3.atLowerCornerOf(dirPair.getFirst() - .getNormal()) + .getUnitVec3i()) .scale(0.4)); Direction.Axis[] axes = Arrays.stream(Iterate.axes) .filter(axis -> axis != dirPair.getFirst() @@ -70,26 +68,26 @@ public static void tick() { double normalMultiplier = dirPair.getSecond() == Action.PAIR ? 4 : 1; Vec3 corner1 = edge .add(Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axes[0], Direction.AxisDirection.POSITIVE) - .getNormal()) + .getUnitVec3i()) .scale(0.3)) .add(Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axes[1], Direction.AxisDirection.POSITIVE) - .getNormal()) + .getUnitVec3i()) .scale(0.3)) .add(Vec3.atLowerCornerOf(dirPair.getFirst() - .getNormal()) + .getUnitVec3i()) .scale(0.1 * normalMultiplier)); normalMultiplier = dirPair.getSecond() == Action.HORIZONTAL ? 9 : 2; Vec3 corner2 = edge .add(Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axes[0], Direction.AxisDirection.NEGATIVE) - .getNormal()) + .getUnitVec3i()) .scale(0.3)) .add(Vec3.atLowerCornerOf(Direction.fromAxisAndDirection(axes[1], Direction.AxisDirection.NEGATIVE) - .getNormal()) + .getUnitVec3i()) .scale(0.3)) .add(Vec3.atLowerCornerOf(dirPair.getFirst() .getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(0.1 * normalMultiplier)); Outliner.getInstance().showAABB("girderWrench", new AABB(corner1, corner2)) @@ -163,7 +161,7 @@ public static boolean handleClick(Level level, BlockPos pos, BlockState state, B Pair dirPair = getDirectionAndAction(result, level, pos); if (dirPair == null) return false; - if (level.isClientSide) + if (level.isClientSide()) return true; if (!state.getValue(GirderBlock.X) && !state.getValue(GirderBlock.Z)) return false; diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteBlocks.java b/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteBlocks.java index 71a2b2a83d..9a27e17f3e 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteBlocks.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteBlocks.java @@ -19,9 +19,9 @@ import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -42,9 +42,9 @@ public class AllPaletteBlocks { public static final BlockEntry TILED_GLASS = REGISTRATE.block("tiled_glass", TransparentBlock::new) .initialProperties(() -> Blocks.GLASS) - .addLayer(() -> RenderType::cutout) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_BLOCKS_COLORLESS), RecipeCategory.BUILDING_BLOCKS, c)) - .blockstate((c, p) -> BlockStateGen.cubeAll(c, p, "palettes/")) + .blockstate(() -> (c, p) -> BlockStateGen.cubeAll(c, p, "palettes/")) .loot((t, g) -> t.dropWhenSilkTouch(g)) .tag(Tags.Blocks.GLASS_BLOCKS_COLORLESS, BlockTags.IMPERMEABLE) .item() @@ -61,7 +61,7 @@ public class AllPaletteBlocks { public static final BlockEntry TILED_GLASS_PANE = WindowGen.standardGlassPane("tiled_glass", TILED_GLASS, Create.asResource("block/palettes/tiled_glass"), - ResourceLocation.withDefaultNamespace("block/glass_pane_top"), () -> RenderType::cutoutMipped); + Identifier.withDefaultNamespace("block/glass_pane_top"), () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped); public static final BlockEntry FRAMED_GLASS_PANE = framedGlassPane("framed_glass", FRAMED_GLASS, () -> AllSpriteShifts.FRAMED_GLASS), @@ -72,7 +72,7 @@ public class AllPaletteBlocks { public static final BlockEntry OAK_WINDOW = woodenWindowBlock(WoodType.OAK, Blocks.OAK_PLANKS), SPRUCE_WINDOW = woodenWindowBlock(WoodType.SPRUCE, Blocks.SPRUCE_PLANKS), - BIRCH_WINDOW = woodenWindowBlock(WoodType.BIRCH, Blocks.BIRCH_PLANKS, () -> RenderType::translucent, true), + BIRCH_WINDOW = woodenWindowBlock(WoodType.BIRCH, Blocks.BIRCH_PLANKS, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent, true), JUNGLE_WINDOW = woodenWindowBlock(WoodType.JUNGLE, Blocks.JUNGLE_PLANKS), ACACIA_WINDOW = woodenWindowBlock(WoodType.ACACIA, Blocks.ACACIA_PLANKS), DARK_OAK_WINDOW = woodenWindowBlock(WoodType.DARK_OAK, Blocks.DARK_OAK_PLANKS), @@ -83,19 +83,19 @@ public class AllPaletteBlocks { BAMBOO_WINDOW = woodenWindowBlock(WoodType.BAMBOO, Blocks.BAMBOO_PLANKS), ORNATE_IRON_WINDOW = customWindowBlock("ornate_iron_window", () -> Items.IRON_NUGGET, () -> AllSpriteShifts.ORNATE_IRON_WINDOW, - () -> RenderType::cutout, false, () -> MapColor.TERRACOTTA_LIGHT_GRAY), + () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout, false, () -> MapColor.TERRACOTTA_LIGHT_GRAY), INDUSTRIAL_IRON_WINDOW = customWindowBlock("industrial_iron_window", AllBlocks.INDUSTRIAL_IRON_BLOCK, - () -> AllSpriteShifts.INDUSTRIAL_IRON_WINDOW, () -> RenderType::cutout, false, () -> MapColor.COLOR_GRAY), + () -> AllSpriteShifts.INDUSTRIAL_IRON_WINDOW, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout, false, () -> MapColor.COLOR_GRAY), WEATHERED_IRON_WINDOW = WindowGen .randomisedWindowBlock("weathered_iron_window", AllBlocks.WEATHERED_IRON_BLOCK, - () -> RenderType::translucent, true, () -> MapColor.TERRACOTTA_LIGHT_GRAY) + () -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent, true, () -> MapColor.TERRACOTTA_LIGHT_GRAY) .onRegister(CreateRegistrate.connectedTextures(() -> new WeatheredIronWindowCTBehaviour())) .register(); public static final BlockEntry OAK_WINDOW_PANE = woodenWindowPane(WoodType.OAK, OAK_WINDOW), SPRUCE_WINDOW_PANE = woodenWindowPane(WoodType.SPRUCE, SPRUCE_WINDOW), - BIRCH_WINDOW_PANE = woodenWindowPane(WoodType.BIRCH, BIRCH_WINDOW, () -> RenderType::translucent), + BIRCH_WINDOW_PANE = woodenWindowPane(WoodType.BIRCH, BIRCH_WINDOW, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent), JUNGLE_WINDOW_PANE = woodenWindowPane(WoodType.JUNGLE, JUNGLE_WINDOW), ACACIA_WINDOW_PANE = woodenWindowPane(WoodType.ACACIA, ACACIA_WINDOW), DARK_OAK_WINDOW_PANE = woodenWindowPane(WoodType.DARK_OAK, DARK_OAK_WINDOW), @@ -105,11 +105,11 @@ public class AllPaletteBlocks { CHERRY_WINDOW_PANE = woodenWindowPane(WoodType.CHERRY, CHERRY_WINDOW), BAMBOO_WINDOW_PANE = woodenWindowPane(WoodType.BAMBOO, BAMBOO_WINDOW), ORNATE_IRON_WINDOW_PANE = customWindowPane("ornate_iron_window", ORNATE_IRON_WINDOW, - () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> RenderType::cutoutMipped).register(), + () -> AllSpriteShifts.ORNATE_IRON_WINDOW, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped).register(), INDUSTRIAL_IRON_WINDOW_PANE = customWindowPane("industrial_iron_window", INDUSTRIAL_IRON_WINDOW, - () -> AllSpriteShifts.INDUSTRIAL_IRON_WINDOW, () -> RenderType::cutoutMipped).register(), + () -> AllSpriteShifts.INDUSTRIAL_IRON_WINDOW, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped).register(), WEATHERED_IRON_WINDOW_PANE = - customWindowPane("weathered_iron_window", WEATHERED_IRON_WINDOW, null, () -> RenderType::translucent) + customWindowPane("weathered_iron_window", WEATHERED_IRON_WINDOW, null, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent) .onRegister(CreateRegistrate.connectedTextures(() -> new WeatheredIronWindowPaneCTBehaviour())) .register(); diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteStoneTypes.java b/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteStoneTypes.java index 0238b6b59b..f45b4504d7 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteStoneTypes.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/AllPaletteStoneTypes.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.data.CreateRegistrate; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassBlock.java b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassBlock.java index 9c38ac1915..b6256c9c4d 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassBlock.java @@ -2,12 +2,11 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.TransparentBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ConnectedGlassBlock extends TransparentBlock { @@ -16,12 +15,10 @@ public ConnectedGlassBlock(Properties p_i48392_1_) { } @Override - @OnlyIn(Dist.CLIENT) public boolean skipRendering(BlockState state, BlockState adjacentBlockState, Direction side) { return adjacentBlockState.getBlock() instanceof ConnectedGlassBlock || super.skipRendering(state, adjacentBlockState, side); } - @Override public boolean shouldDisplayFluidOverlay(BlockState state, BlockAndTintGetter world, BlockPos pos, FluidState fluidState) { return true; } diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassPaneBlock.java b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassPaneBlock.java index d00b6ec3b5..fcf4eea017 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassPaneBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedGlassPaneBlock.java @@ -3,7 +3,6 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ConnectedGlassPaneBlock extends GlassPaneBlock { @@ -12,7 +11,6 @@ public ConnectedGlassPaneBlock(Properties builder) { } @Override - @OnlyIn(Dist.CLIENT) public boolean skipRendering(BlockState state, BlockState adjacentBlockState, Direction side) { if (side.getAxis() .isVertical()) diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedPillarBlock.java b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedPillarBlock.java index c044b11318..cf9bb216b2 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedPillarBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/ConnectedPillarBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.decoration.palettes; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -11,6 +11,8 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -99,8 +101,7 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public BlockState updateShape(BlockState state, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { + public BlockState updateShape(BlockState state, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { if (!canConnect(state, pNeighborState)) return setConnection(state, pDirection, false); if (pDirection.getAxis() == state.getValue(AXIS)) @@ -114,8 +115,8 @@ protected boolean canConnect(BlockState state, BlockState other) { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (pIsMoving || pNewState.getBlock() == this) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + if (pIsMoving) return; for (Direction d : Iterate.directionsInAxis(pState.getValue(AXIS))) { BlockPos relative = pPos.relative(d); diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/PaletteBlockPartial.java b/src/main/java/com/simibubi/create/content/decoration/palettes/PaletteBlockPartial.java index d303905159..2f62fc844d 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/PaletteBlockPartial.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/PaletteBlockPartial.java @@ -7,20 +7,24 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.CreateRegistrate; +import com.simibubi.create.foundation.data.DatagenModels; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateRecipeProvider; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.nullness.NonnullType; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; +import net.minecraft.client.resources.model.sprite.Material; +import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import net.minecraft.tags.BlockItemTags; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -32,7 +36,7 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public abstract class PaletteBlockPartial { @@ -50,14 +54,15 @@ private PaletteBlockPartial(String name) { this.name = name; } - public @NonnullType BlockBuilder create(String variantName, PaletteBlockPattern pattern, + public BlockBuilder create(String variantName, PaletteBlockPattern pattern, BlockEntry block, AllPaletteStoneTypes variant) { String patternName = Lang.nonPluralId(pattern.createName(variantName)); String blockName = patternName + "_" + this.name; BlockBuilder blockBuilder = Create.registrate() - .block(blockName, p -> createBlock(block)) - .blockstate((c, p) -> generateBlockState(c, p, variantName, pattern, block)) + .block(blockName, p -> createBlock(p, block)) + .initialProperties(block) + .blockstate(() -> (c, p) -> generateBlockState(c, p, variantName, pattern, block)) .recipe((c, p) -> createRecipes(variant, block, c, p)) .transform(b -> transformBlock(b, variantName, pattern)); @@ -70,7 +75,7 @@ private PaletteBlockPartial(String name) { return itemBuilder.build(); } - protected ResourceLocation getTexture(String variantName, PaletteBlockPattern pattern, int index) { + protected Identifier getTexture(String variantName, PaletteBlockPattern pattern, int index) { return PaletteBlockPattern.toLocation(variantName, pattern.getTexture(index)); } @@ -95,12 +100,12 @@ protected boolean canRecycle() { protected abstract Iterable> getItemTags(); - protected abstract B createBlock(Supplier block); + protected abstract B createBlock(Properties properties, Supplier block); protected abstract void createRecipes(AllPaletteStoneTypes type, BlockEntry patternBlock, DataGenContext c, RegistrateRecipeProvider p); - protected abstract void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + protected abstract void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, String variantName, PaletteBlockPattern pattern, Supplier block); private static class Stairs extends PaletteBlockPartial { @@ -110,14 +115,14 @@ public Stairs() { } @Override - protected StairBlock createBlock(Supplier block) { - return new StairBlock(block.get().defaultBlockState(), Properties.ofFullCopy(block.get())); + protected StairBlock createBlock(Properties properties, Supplier block) { + return new StairBlock(block.get().defaultBlockState(), properties); } @Override - protected void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + protected void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, String variantName, PaletteBlockPattern pattern, Supplier block) { - prov.stairsBlock(ctx.get(), getTexture(variantName, pattern, 0)); + prov.generateStairsBlock(ctx.get(), new Material(getTexture(variantName, pattern, 0))); } @Override @@ -127,7 +132,7 @@ protected Iterable> getBlockTags() { @Override protected Iterable> getItemTags() { - return Arrays.asList(ItemTags.STAIRS); + return Arrays.asList(BlockItemTags.STAIRS.item()); } @Override @@ -150,8 +155,8 @@ public Slab(boolean customSide) { } @Override - protected SlabBlock createBlock(Supplier block) { - return new SlabBlock(Properties.ofFullCopy(block.get())); + protected SlabBlock createBlock(Properties properties, Supplier block) { + return new SlabBlock(properties); } @Override @@ -160,16 +165,12 @@ protected boolean canRecycle() { } @Override - protected void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + protected void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, String variantName, PaletteBlockPattern pattern, Supplier block) { String name = ctx.getName(); - ResourceLocation mainTexture = getTexture(variantName, pattern, 0); - ResourceLocation sideTexture = customSide ? getTexture(variantName, pattern, 1) : mainTexture; + Identifier mainTexture = getTexture(variantName, pattern, 0); + Identifier sideTexture = customSide ? getTexture(variantName, pattern, 1) : mainTexture; - ModelFile bottom = prov.models() - .slab(name, sideTexture, mainTexture, mainTexture); - ModelFile top = prov.models() - .slabTop(name + "_top", sideTexture, mainTexture, mainTexture); ModelFile doubleSlab; if (customSide) { @@ -177,10 +178,11 @@ protected void generateBlockState(DataGenContext ctx, Registra .cubeColumn(name + "_double", sideTexture, mainTexture); } else { doubleSlab = prov.models() - .getExistingFile(prov.modLoc(pattern.createName(variantName))); + .getExistingFile(prov.modLoc("block/" + pattern.createName(variantName))); } - prov.slabBlock(ctx.get(), bottom, top, doubleSlab); + DatagenModels.generateSlabBlock(prov, ctx.get(), doubleSlab.getLocation(), + new Material(sideTexture), new Material(mainTexture), new Material(mainTexture)); } @Override @@ -190,7 +192,7 @@ protected Iterable> getBlockTags() { @Override protected Iterable> getItemTags() { - return Arrays.asList(ItemTags.SLABS); + return Arrays.asList(BlockItemTags.SLABS.item()); } @Override @@ -200,7 +202,7 @@ protected void createRecipes(AllPaletteStoneTypes type, BlockEntry block) { - return new WallBlock(Properties.ofFullCopy(block.get()).forceSolidOn()); + protected WallBlock createBlock(Properties properties, Supplier block) { + return new WallBlock(properties.forceSolidOn()); } @Override protected ItemBuilder> transformItem( ItemBuilder> builder, String variantName, PaletteBlockPattern pattern) { - builder.model((c, p) -> p.wallInventory(c.getName(), getTexture(variantName, pattern, 0))); + builder.model(() -> (c, p) -> p.wallInventory(c.getName(), getTexture(variantName, pattern, 0))); return super.transformItem(builder, variantName, pattern); } @Override - protected void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + protected void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, String variantName, PaletteBlockPattern pattern, Supplier block) { - prov.wallBlock(ctx.get(), pattern.createName(variantName), getTexture(variantName, pattern, 0)); + prov.generateWallBlock(ctx.get(), pattern.createName(variantName), new Material(getTexture(variantName, pattern, 0))); } @Override @@ -257,12 +259,12 @@ protected void createRecipes(AllPaletteStoneTypes type, BlockEntry, NonNullBiConsumer, RegistrateRecipeProvider>> additionalRecipes; private PaletteBlockPartial[] partials; - @OnlyIn(Dist.CLIENT) private RenderType renderType; private static PaletteBlockPattern create(String name, PatternNameType nameType, @@ -161,46 +160,56 @@ private PaletteBlockPattern connectedTextures(Function prov.simpleBlock(ctx.get(), prov.models() .cubeAll(createName(variant), all)); } public IBlockStateProvider cubeBottomTop(String variant) { - ResourceLocation side = toLocation(variant, textures[0]); - ResourceLocation bottom = toLocation(variant, textures[1]); - ResourceLocation top = toLocation(variant, textures[2]); + Identifier side = toLocation(variant, textures[0]); + Identifier bottom = toLocation(variant, textures[1]); + Identifier top = toLocation(variant, textures[2]); return (ctx, prov) -> prov.simpleBlock(ctx.get(), prov.models() - .cubeBottomTop(createName(variant), side, bottom, top)); + .withExistingParent(createName(variant), prov.mcLoc("block/cube_bottom_top")) + .texture("side", side) + .texture("bottom", bottom) + .texture("top", top)); } public IBlockStateProvider pillar(String variant) { - ResourceLocation side = toLocation(variant, textures[0]); - ResourceLocation end = toLocation(variant, textures[1]); - - return (ctx, prov) -> prov.getVariantBuilder(ctx.getEntry()) - .forAllStatesExcept(state -> { + Identifier side = toLocation(variant, textures[0]); + Identifier end = toLocation(variant, textures[1]); + + return (ctx, prov) -> { + String name = createName(variant); + ModelFile vertical = prov.models() + .cubeColumn(name, side, end); + ModelFile horizontal = prov.models() + .withExistingParent(name + "_horizontal", prov.mcLoc("block/cube_column_horizontal")) + .texture("side", side) + .texture("end", end); + prov.getVariantBuilder(ctx.getEntry()) + .forAllStatesExcept(state -> { Axis axis = state.getValue(BlockStateProperties.AXIS); if (axis == Axis.Y) return ConfiguredModel.builder() - .modelFile(prov.models() - .cubeColumn(createName(variant), side, end)) + .modelFile(vertical) .uvLock(false) .build(); return ConfiguredModel.builder() - .modelFile(prov.models() - .cubeColumnHorizontal(createName(variant) + "_horizontal", side, end)) + .modelFile(horizontal) .uvLock(false) .rotationX(90) .rotationY(axis == Axis.X ? 90 : 0) .build(); - }, BlockStateProperties.WATERLOGGED, ConnectedPillarBlock.NORTH, ConnectedPillarBlock.SOUTH, + }, BlockStateProperties.WATERLOGGED, ConnectedPillarBlock.NORTH, ConnectedPillarBlock.SOUTH, ConnectedPillarBlock.EAST, ConnectedPillarBlock.WEST); + }; } public IBlockStateProvider cubeColumn(String variant) { - ResourceLocation side = toLocation(variant, textures[0]); - ResourceLocation end = toLocation(variant, textures[1]); + Identifier side = toLocation(variant, textures[0]); + Identifier end = toLocation(variant, textures[1]); return (ctx, prov) -> prov.simpleBlock(ctx.get(), prov.models() .cubeColumn(createName(variant), side, end)); } @@ -219,16 +228,16 @@ protected String createName(String variant) { return nameType == SUFFIX ? String.format(formatString, variant, id) : String.format(formatString, id, variant); } - protected static ResourceLocation toLocation(String variant, String texture) { + protected static Identifier toLocation(String variant, String texture) { return Create.asResource( String.format(TEXTURE_LOCATION, texture, variant + (texture.equals("cut") ? "_" : "_cut_") + texture)); } protected static CTSpriteShiftEntry ct(String variant, CTs texture) { - ResourceLocation resLoc = texture.srcFactory.apply(variant); - ResourceLocation resLocTarget = texture.targetFactory.apply(variant); + Identifier resLoc = texture.srcFactory.apply(variant); + Identifier resLocTarget = texture.targetFactory.apply(variant); return CTSpriteShifter.getCT(texture.type, resLoc, - ResourceLocation.fromNamespaceAndPath(resLocTarget.getNamespace(), resLocTarget.getPath() + "_connected")); + Identifier.fromNamespaceAndPath(resLocTarget.getNamespace(), resLocTarget.getPath() + "_connected")); } @FunctionalInterface @@ -238,7 +247,7 @@ static interface IPatternBlockStateGenerator @FunctionalInterface static interface IBlockStateProvider - extends NonNullBiConsumer, RegistrateBlockstateProvider> { + extends NonNullBiConsumer, RegistrateBlockModelGenerator> { } enum PatternNameType { @@ -256,15 +265,15 @@ public enum CTs { ; public CTType type; - private Function srcFactory; - private Function targetFactory; + private Function srcFactory; + private Function targetFactory; - private CTs(CTType type, Function factory) { + private CTs(CTType type, Function factory) { this(type, factory, factory); } - private CTs(CTType type, Function srcFactory, - Function targetFactory) { + private CTs(CTType type, Function srcFactory, + Function targetFactory) { this.type = type; this.srcFactory = srcFactory; this.targetFactory = targetFactory; diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/PalettesVariantEntry.java b/src/main/java/com/simibubi/create/content/decoration/palettes/PalettesVariantEntry.java index b3a2e12306..4244718243 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/PalettesVariantEntry.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/PalettesVariantEntry.java @@ -13,7 +13,8 @@ import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.tags.TagKey; import net.minecraft.world.item.BlockItem; @@ -36,7 +37,7 @@ public PalettesVariantEntry(String name, AllPaletteStoneTypes paletteStoneVarian REGISTRATE.block(pattern.createName(name), pattern.getBlockFactory()) .initialProperties(baseBlock) .transform(pickaxeOnly()) - .blockstate(pattern.getBlockStateGenerator() + .blockstate(() -> pattern.getBlockStateGenerator() .apply(pattern) .apply(name)::accept); @@ -53,7 +54,7 @@ public PalettesVariantEntry(String name, AllPaletteStoneTypes paletteStoneVarian itemBuilder.tag(paletteStoneVariants.materialTag); if (pattern.isTranslucent()) - builder.addLayer(() -> RenderType::translucent); + builder.addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent); pattern.createCTBehaviour(name) .ifPresent(b -> builder.onRegister(connectedTextures(b))); @@ -74,9 +75,10 @@ public PalettesVariantEntry(String name, AllPaletteStoneTypes paletteStoneVarian REGISTRATE.addDataGenerator(ProviderType.RECIPE, p -> p.stonecutting(DataIngredient.tag(paletteStoneVariants.materialTag), RecipeCategory.BUILDING_BLOCKS, baseBlock)); - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, p -> p.addTag(paletteStoneVariants.materialTag) - .add(baseBlock.get() - .asItem())); + REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, p -> p.tag(paletteStoneVariants.materialTag) + .add(BuiltInRegistries.ITEM.getResourceKey(baseBlock.get() + .asItem()) + .orElseThrow())); this.registeredBlocks = registeredBlocks.build(); this.registeredPartials = registeredPartials.build(); diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowCTBehaviour.java index e578b8f990..3a7456f973 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowCTBehaviour.java @@ -16,7 +16,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class WeatheredIronWindowCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowPaneCTBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowPaneCTBehaviour.java index 4f4188988d..0614099110 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowPaneCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/WeatheredIronWindowPaneCTBehaviour.java @@ -16,7 +16,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class WeatheredIronWindowPaneCTBehaviour extends GlassPaneCTBehaviour { diff --git a/src/main/java/com/simibubi/create/content/decoration/palettes/WindowBlock.java b/src/main/java/com/simibubi/create/content/decoration/palettes/WindowBlock.java index 9f4d852c13..244125f949 100644 --- a/src/main/java/com/simibubi/create/content/decoration/palettes/WindowBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/palettes/WindowBlock.java @@ -3,7 +3,6 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class WindowBlock extends ConnectedGlassBlock { @@ -19,7 +18,6 @@ public boolean isTranslucent() { } @Override - @OnlyIn(Dist.CLIENT) public boolean skipRendering(BlockState state, BlockState adjacentBlockState, Direction side) { if (state.getBlock() == adjacentBlockState.getBlock()) { return true; diff --git a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java index 3985435d48..68c70a8274 100644 --- a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlock.java @@ -20,10 +20,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -31,6 +33,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -107,10 +110,9 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - updateWater(pLevel, pState, pCurrentPos); - return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); + return super.updateShape(pState, pLevel, ticks, pCurrentPos, pFacing, pFacingPos, pFacingState, random); } @Override @@ -119,11 +121,11 @@ public FluidState getFluidState(BlockState pState) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; ItemStack inHand = player.getItemInHand(hand); return onBlockEntityUseItemOn(level, pos, pte -> { @@ -131,17 +133,17 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (!player.mayBuild() || inHand.isEmpty() || !inBlock.isEmpty()) { if (inBlock.isEmpty()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (inHand.isEmpty()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (state.getValue(POWERED)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; boolean test = inBlock.getItem() instanceof FilterItem ? FilterItemStack.of(inBlock) .test(level, inHand) : ItemStack.isSameItemSameComponents(inHand, inBlock); if (!test) { AllSoundEvents.DENY.play(level, null, pos, 1, 1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } AllSoundEvents.CONFIRM.play(level, null, pos, 1, 1); @@ -149,7 +151,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev updateNeighbours(state, level, pos); pte.poweredTicks = 19; pte.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } level.playSound(null, pos, SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, 1, 1); @@ -161,7 +163,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev player.setItemInHand(hand, ItemStack.EMPTY); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @@ -170,17 +172,17 @@ public static Direction connectedDirection(BlockState state) { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - boolean blockChanged = !pState.is(pNewState.getBlock()); - if (!pIsMoving && blockChanged) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + if (!pIsMoving) if (pState.getValue(POWERED)) updateNeighbours(pState, pLevel, pPos); - if (pState.hasBlockEntity() && (blockChanged || !pNewState.hasBlockEntity())) { + if (pState.hasBlockEntity()) { if (!pIsMoving) withBlockEntityDo(pLevel, pPos, be -> Block.popResource(pLevel, pPos, be.getHeldItem())); pLevel.removeBlockEntity(pPos); } + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); } public static void updateNeighbours(BlockState pState, Level pLevel, BlockPos pPos) { @@ -190,7 +192,7 @@ public static void updateNeighbours(BlockState pState, Level pLevel, BlockPos pP @Override public void attack(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer) { - if (pLevel.isClientSide) + if (pLevel.isClientSide()) return; withBlockEntityDo(pLevel, pPos, pte -> { ItemStack heldItem = pte.getHeldItem(); diff --git a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlockEntity.java index 9570732d60..c2939f4542 100644 --- a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardBlockEntity.java @@ -2,13 +2,12 @@ import java.util.List; -import org.joml.Vector3f; - import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.DustParticleOptions; @@ -33,7 +32,7 @@ public PlacardBlockEntity(BlockEntityType type, BlockPos pos, BlockState stat @Override public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (poweredTicks == 0) return; @@ -59,15 +58,15 @@ public void setHeldItem(ItemStack heldItem) { @Override protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { tag.putInt("PoweredTicks", poweredTicks); - tag.put("Item", heldItem.saveOptional(registries)); + tag.put("Item", LegacyItemStackNbtBridge.saveOptional(heldItem, registries)); super.write(tag, registries, clientPacket); } @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { int prevTicks = poweredTicks; - poweredTicks = tag.getInt("PoweredTicks"); - heldItem = ItemStack.parseOptional(registries, tag.getCompound("Item")); + poweredTicks = tag.getIntOr("PoweredTicks", 0); + heldItem = LegacyItemStackNbtBridge.parseOptional(registries, tag.getCompoundOrEmpty("Item")); super.read(tag, registries, clientPacket); if (clientPacket && prevTicks < poweredTicks) @@ -79,14 +78,14 @@ private void spawnParticles() { if (!AllBlocks.PLACARD.has(blockState)) return; - DustParticleOptions pParticleData = new DustParticleOptions(new Vector3f(1, .2f, 0), 1); + DustParticleOptions pParticleData = new DustParticleOptions(0xff3300, 1); Vec3 centerOf = VecHelper.getCenterOf(worldPosition); Vec3 normal = Vec3.atLowerCornerOf(PlacardBlock.connectedDirection(blockState) - .getNormal()); + .getUnitVec3i()); Vec3 offset = VecHelper.axisAlingedPlaneOf(normal); for (int i = 0; i < 10; i++) { - Vec3 v = VecHelper.offsetRandomly(Vec3.ZERO, level.random, .5f) + Vec3 v = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .5f) .multiply(offset) .normalize() .scale(.45f) diff --git a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java index ee35f2b16e..67afc5d511 100644 --- a/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java +++ b/src/main/java/com/simibubi/create/content/decoration/placard/PlacardRenderer.java @@ -4,12 +4,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; @@ -32,8 +32,7 @@ protected void renderSafe(PlacardBlockEntity be, float partialTicks, PoseStack m Direction facing = blockState.getValue(PlacardBlock.FACING); AttachFace face = blockState.getValue(PlacardBlock.FACE); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); BakedModel bakedModel = itemRenderer.getModel(heldItem, null, null, 0); boolean blockItem = bakedModel.isGui3d(); diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControl.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControl.java index 3925a338cb..99bf6f8bc6 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControl.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControl.java @@ -8,10 +8,10 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.client.Minecraft; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -19,7 +19,6 @@ import net.minecraft.world.entity.Entity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public enum DoorControl { @@ -46,12 +45,11 @@ public boolean matches(Direction doorDirection) { }; } - @OnlyIn(Dist.CLIENT) public static Pair createWidget(int x, int y, Consumer callback, DoorControl initial) { DoorControl playerFacing = NONE; - Entity cameraEntity = Minecraft.getInstance().cameraEntity; + Entity cameraEntity = Minecraft.getInstance().getCameraEntity(); if (cameraEntity != null) { Direction direction = cameraEntity.getDirection(); if (direction == Direction.EAST) diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControlBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControlBehaviour.java index 0210ec66a3..e2d82a1b61 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControlBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/DoorControlBehaviour.java @@ -4,7 +4,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java index a181ceafad..8ba206b672 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlock.java @@ -12,6 +12,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionResult; @@ -22,7 +23,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DoorBlock; import net.minecraft.world.level.block.RenderShape; @@ -128,9 +131,8 @@ public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState p } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - BlockState blockState = super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { + BlockState blockState = super.updateShape(pState, pLevel, ticks, pCurrentPos, pFacing, pFacingPos, pFacingState, random); if (blockState.isAir()) return blockState; DoubleBlockHalf doubleblockhalf = blockState.getValue(HALF); @@ -167,8 +169,7 @@ public void setOpen(@Nullable Entity entity, Level level, BlockState state, Bloc } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { boolean lower = pState.getValue(HALF) == DoubleBlockHalf.LOWER; boolean isPowered = isDoorPowered(pLevel, pPos, pState); if (defaultBlockState().is(pBlock)) @@ -244,7 +245,7 @@ else if (isOpen) { level.gameEvent(player, GameEvent.BLOCK_OPEN, pos); } - return InteractionResult.sidedSuccess(level.isClientSide); + return (level.isClientSide() ? InteractionResult.SUCCESS : InteractionResult.SUCCESS_SERVER); } public void deferUpdate(LevelAccessor level, BlockPos pos) { @@ -259,7 +260,7 @@ public static boolean isDoubleDoor(BlockState pState, DoorHingeSide hinge, Direc @Override public RenderShape getRenderShape(BlockState pState) { - return pState.getValue(VISIBLE) ? RenderShape.MODEL : RenderShape.ENTITYBLOCK_ANIMATED; + return pState.getValue(VISIBLE) ? RenderShape.MODEL : RenderShape.MODEL; } private void playSound(@Nullable Entity pSource, Level pLevel, BlockPos pPos, boolean pIsOpening) { diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlockEntity.java index 4753508ffa..15885fee5c 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorBlockEntity.java @@ -5,8 +5,8 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -34,7 +34,7 @@ public void tick() { if (deferUpdate && !level.isClientSide()) { deferUpdate = false; BlockState blockState = getBlockState(); - blockState.handleNeighborChanged(level, worldPosition, Blocks.AIR, worldPosition, false); + blockState.handleNeighborChanged(level, worldPosition, Blocks.AIR, null, false); } super.tick(); diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorMovementBehaviour.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorMovementBehaviour.java index b4984318d0..6d6bd5ef18 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorMovementBehaviour.java @@ -12,8 +12,9 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; @@ -110,7 +111,7 @@ protected boolean shouldUpdate(MovementContext context, boolean shouldOpen) { context.data.putBoolean("Open", shouldOpen); return true; } - boolean wasOpen = context.data.getBoolean("Open"); + boolean wasOpen = context.data.getBooleanOr("Open", false); context.data.putBoolean("Open", shouldOpen); return wasOpen != shouldOpen; } @@ -192,16 +193,16 @@ protected Direction getDoorFacing(MovementContext context) { Direction originalFacing = Direction.get(AxisDirection.POSITIVE, stateFacing.getAxis()); Vec3 centerOfContraption = context.contraption.bounds.getCenter(); Vec3 diff = Vec3.atCenterOf(context.localPos) - .add(Vec3.atLowerCornerOf(stateFacing.getNormal()) + .add(Vec3.atLowerCornerOf(stateFacing.getUnitVec3i()) .scale(-.45f)) .subtract(centerOfContraption); if (originalFacing.getAxis() .choose(diff.x, diff.y, diff.z) < 0) originalFacing = originalFacing.getOpposite(); - Vec3 directionVec = Vec3.atLowerCornerOf(originalFacing.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(originalFacing.getUnitVec3i()); directionVec = context.rotation.apply(directionVec); - return Direction.getNearest(directionVec.x, directionVec.y, directionVec.z); + return LegacyDirectionBridge.nearest(directionVec.x, directionVec.y, directionVec.z, Direction.NORTH); } } diff --git a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorRenderer.java b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorRenderer.java index 61e6672772..1727f79ac3 100644 --- a/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorRenderer.java +++ b/src/main/java/com/simibubi/create/content/decoration/slidingDoor/SlidingDoorRenderer.java @@ -6,13 +6,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -43,10 +43,10 @@ protected void renderSafe(SlidingDoorBlockEntity be, float partialTicks, PoseSta float value = be.animation.getValue(partialTicks); float value2 = Mth.clamp(value * 10, 0, 1); - VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); - Vec3 offset = Vec3.atLowerCornerOf(movementDirection.getNormal()) + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); + Vec3 offset = Vec3.atLowerCornerOf(movementDirection.getUnitVec3i()) .scale(value * value * 13 / 16f) - .add(Vec3.atLowerCornerOf(facing.getNormal()) + .add(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(value2 * 1 / 32f)); if (((SlidingDoorBlock) blockState.getBlock()).isFoldingDoor()) { @@ -59,7 +59,7 @@ protected void renderSafe(SlidingDoorBlockEntity be, float partialTicks, PoseSta float f = flip ? -1 : 1; partial.translate(0, -1 / 512f, 0) - .translate(Vec3.atLowerCornerOf(facing.getNormal()) + .translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(value2 * 1 / 32f)); partial.rotateCentered( Mth.DEG_TO_RAD * AngleHelper.horizontalAngle(facing.getClockWise()), Direction.UP); diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlock.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlock.java index 324fff05d6..80d9d338a6 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlock.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -20,7 +20,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -29,6 +29,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Mirror; @@ -39,16 +40,17 @@ import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; public class WhistleBlock extends Block implements IBE, IWrenchable { - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final BooleanProperty WALL = BooleanProperty.create("wall"); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final EnumProperty SIZE = EnumProperty.create("size", WhistleSize.class); @@ -113,16 +115,16 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.STEAM_WHISTLE.isIn(stack)) { incrementSize(level, pos); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } public static void incrementSize(LevelAccessor pLevel, BlockPos pPos) { @@ -188,23 +190,24 @@ public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState p } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); + pLevel.removeBlockEntity(pPos); FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getAttachedDirection(pState))); } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + protected void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, + Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); if (previouslyPowered != worldIn.hasNeighborSignal(pos)) worldIn.setBlock(pos, state.cycle(POWERED), Block.UPDATE_CLIENTS); } - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { + protected BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { return getAttachedDirection(pState) == pFacing && !pState.canSurvive(pLevel, pCurrentPos) ? Blocks.AIR.defaultBlockState() : pState; diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java index 4d7ac8aeaf..91a174e46b 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleBlockEntity.java @@ -4,37 +4,28 @@ import java.util.List; import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; import com.simibubi.create.api.equipment.goggles.IHaveGoggleInformation; import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize; import com.simibubi.create.content.decoration.steamWhistle.WhistleExtenderBlock.WhistleExtenderShape; import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; -import com.simibubi.create.content.kinetics.steamEngine.SteamJetParticleData; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.util.Mth; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class WhistleBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation { @@ -92,7 +83,7 @@ public void tick() { || isVirtual()); animation.chase(powered ? 1 : 0, powered ? .5f : .4f, powered ? Chaser.EXP : Chaser.LINEAR); animation.tickChaser(); - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> this.tickAudio(getOctave(), powered)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> WhistleClient.tickAudio(this, getOctave(), powered)); } @Override @@ -103,7 +94,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { - pitch = tag.getInt("Pitch"); + pitch = tag.getIntOr("Pitch", 0); super.read(tag, registries, clientPacket); } @@ -126,52 +117,6 @@ protected WhistleSize getOctave() { .orElse(WhistleSize.MEDIUM); } - @OnlyIn(Dist.CLIENT) - protected WhistleSoundInstance soundInstance; - - @OnlyIn(Dist.CLIENT) - protected void tickAudio(WhistleSize size, boolean powered) { - if (!powered) { - if (soundInstance != null) { - soundInstance.fadeOut(); - soundInstance = null; - } - return; - } - - float f = (float) Math.pow(2, -pitch / 12.0); - boolean particle = level.getGameTime() % 8 == 0; - Vec3 eyePosition = Minecraft.getInstance().cameraEntity.getEyePosition(); - float maxVolume = (float) Mth.clamp((64 - eyePosition.distanceTo(Vec3.atCenterOf(worldPosition))) / 64, 0, 1); - - if (soundInstance == null || soundInstance.isStopped() || soundInstance.getOctave() != size) { - Minecraft.getInstance() - .getSoundManager() - .play(soundInstance = new WhistleSoundInstance(size, worldPosition)); - AllSoundEvents.WHISTLE_CHIFF.playAt(level, worldPosition, maxVolume * .175f, - size == WhistleSize.SMALL ? f + .75f : f, false); - particle = true; - } - - soundInstance.keepAlive(); - soundInstance.setPitch(f); - - if (!particle) - return; - - Direction facing = getBlockState().getOptionalValue(WhistleBlock.FACING) - .orElse(Direction.SOUTH); - float angle = 180 + AngleHelper.horizontalAngle(facing); - Vec3 sizeOffset = VecHelper.rotate(new Vec3(0, -0.4f, 1 / 16f * size.ordinal()), angle, Axis.Y); - Vec3 offset = VecHelper.rotate(new Vec3(0, 1, 0.75f), angle, Axis.Y); - Vec3 v = offset.scale(.45f) - .add(sizeOffset) - .add(Vec3.atCenterOf(worldPosition)); - Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getNormal()) - .scale(.75f)); - level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z); - } - public int getPitchId() { return pitch + 100 * getBlockState().getOptionalValue(WhistleBlock.SIZE) .orElse(WhistleSize.MEDIUM) diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleClient.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleClient.java new file mode 100644 index 0000000000..64534bc285 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleClient.java @@ -0,0 +1,71 @@ +package com.simibubi.create.content.decoration.steamWhistle; + +import java.util.Map; +import java.util.WeakHashMap; + +import com.simibubi.create.AllSoundEvents; +import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize; +import com.simibubi.create.content.kinetics.steamEngine.SteamJetParticleData; + +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; + +public class WhistleClient { + private static final Map SOUND_INSTANCES = new WeakHashMap<>(); + + public static void tickAudio(WhistleBlockEntity blockEntity, WhistleSize size, boolean powered) { + WhistleSoundInstance soundInstance = SOUND_INSTANCES.get(blockEntity); + if (!powered) { + if (soundInstance != null) { + soundInstance.fadeOut(); + SOUND_INSTANCES.remove(blockEntity); + } + return; + } + + Level level = blockEntity.getLevel(); + BlockPos worldPosition = blockEntity.getBlockPos(); + float f = (float) Math.pow(2, -blockEntity.pitch / 12.0); + boolean particle = level.getGameTime() % 8 == 0; + Vec3 eyePosition = Minecraft.getInstance().getCameraEntity().getEyePosition(); + float maxVolume = (float) Mth.clamp((64 - eyePosition.distanceTo(Vec3.atCenterOf(worldPosition))) / 64, 0, 1); + + if (soundInstance == null || soundInstance.isStopped() || soundInstance.getOctave() != size) { + soundInstance = new WhistleSoundInstance(size, worldPosition); + Minecraft.getInstance() + .getSoundManager() + .play(soundInstance); + SOUND_INSTANCES.put(blockEntity, soundInstance); + AllSoundEvents.WHISTLE_CHIFF.playAt(level, worldPosition, maxVolume * .175f, + size == WhistleSize.SMALL ? f + .75f : f, false); + particle = true; + } + + soundInstance.keepAlive(); + soundInstance.setPitch(f); + + if (!particle) + return; + + Direction facing = blockEntity.getBlockState() + .getOptionalValue(WhistleBlock.FACING) + .orElse(Direction.SOUTH); + float angle = 180 + AngleHelper.horizontalAngle(facing); + Vec3 sizeOffset = VecHelper.rotate(new Vec3(0, -0.4f, 1 / 16f * size.ordinal()), angle, Axis.Y); + Vec3 offset = VecHelper.rotate(new Vec3(0, 1, 0.75f), angle, Axis.Y); + Vec3 v = offset.scale(.45f) + .add(sizeOffset) + .add(Vec3.atCenterOf(worldPosition)); + Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getUnitVec3i()) + .scale(.75f)); + level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z); + } + +} diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleExtenderBlock.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleExtenderBlock.java index de9e5a31f0..de4facadf5 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleExtenderBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleExtenderBlock.java @@ -5,15 +5,16 @@ import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize; import com.simibubi.create.content.equipment.wrench.IWrenchable; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -21,13 +22,13 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -73,15 +74,15 @@ protected UseOnContext relocateContext(UseOnContext context, BlockPos target) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null || !AllBlocks.STEAM_WHISTLE.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; BlockPos findRoot = findRoot(level, pos); BlockState blockState = level.getBlockState(findRoot); if (blockState.getBlock()instanceof WhistleBlock whistle) return whistle.useItemOn(stack, blockState, level, findRoot, player, hand, new BlockHitResult(hitResult.getLocation(), hitResult.getDirection(), findRoot, hitResult.isInside())); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -95,7 +96,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + protected ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData) { return AllBlocks.STEAM_WHISTLE.asStack(); } @@ -118,8 +119,8 @@ public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) || AllBlocks.STEAM_WHISTLE.has(below); } - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { + protected BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { if (pFacing.getAxis() != Axis.Y) return pState; @@ -146,9 +147,9 @@ public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState p } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (pNewState.getBlock() != this) - WhistleBlock.queuePitchUpdate(pLevel, findRoot(pLevel, pPos)); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); + WhistleBlock.queuePitchUpdate(pLevel, findRoot(pLevel, pPos)); } @Override diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleGenerator.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleGenerator.java index 393d61a352..fa11f90af4 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleGenerator.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleGenerator.java @@ -1,18 +1,23 @@ package com.simibubi.create.content.decoration.steamWhistle; +import java.util.HashMap; +import java.util.Map; + import com.simibubi.create.Create; import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class WhistleGenerator extends SpecialBlockStateGen { + private final Map poweredModels = new HashMap<>(); + @Override protected int getXRotation(BlockState state) { return 0; @@ -24,7 +29,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String wall = state.getValue(WhistleBlock.WALL) ? "wall" : "floor"; String size = state.getValue(WhistleBlock.SIZE) @@ -33,10 +38,10 @@ public ModelFile getModel(DataGenContext ctx, Regist ModelFile model = AssetLookup.partialBaseModel(ctx, prov, size, wall); if (!powered) return model; - ResourceLocation parentLocation = model.getLocation(); - return prov.models() - .withExistingParent(parentLocation.getPath() + "_powered", parentLocation) - .texture("2", Create.asResource("block/copper_redstone_plate_powered")); + Identifier parentLocation = model.getLocation(); + return poweredModels.computeIfAbsent(parentLocation, location -> prov.models() + .withExistingParent(location.getPath() + "_powered", location) + .texture("2", Create.asResource("block/copper_redstone_plate_powered"))); } } diff --git a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleRenderer.java b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleRenderer.java index 6495b4376e..0191788f29 100644 --- a/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleRenderer.java +++ b/src/main/java/com/simibubi/create/content/decoration/steamWhistle/WhistleRenderer.java @@ -6,11 +6,11 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -35,7 +35,7 @@ protected void renderSafe(WhistleBlockEntity be, float partialTicks, PoseStack m float offset = be.animation.getValue(partialTicks); if (be.animation.getChaseTarget() > 0 && be.animation.getValue() > 0.5f) { - float wiggleProgress = (AnimationTickHolder.getTicks(be.getLevel()) + partialTicks) / 8f; + float wiggleProgress = (AnimationTickHolder.getTicks() + partialTicks) / 8f; offset -= Math.sin(wiggleProgress * (2 * Mth.PI) * (4 - size.ordinal())) / 16f; } @@ -45,7 +45,7 @@ protected void renderSafe(WhistleBlockEntity be, float partialTicks, PoseStack m .uncenter() .translate(0, offset * 4 / 16f, 0) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/BuildersTeaItem.java b/src/main/java/com/simibubi/create/content/equipment/BuildersTeaItem.java index afb5841b58..96f159ae61 100644 --- a/src/main/java/com/simibubi/create/content/equipment/BuildersTeaItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/BuildersTeaItem.java @@ -5,7 +5,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ItemUseAnimation; import net.minecraft.world.level.Level; public class BuildersTeaItem extends Item { @@ -32,7 +32,7 @@ public int getUseDuration(ItemStack stack, LivingEntity entity) { } @Override - public UseAnim getUseAnimation(ItemStack stack) { - return UseAnim.DRINK; + public ItemUseAnimation getUseAnimation(ItemStack stack) { + return ItemUseAnimation.DRINK; } } diff --git a/src/main/java/com/simibubi/create/content/equipment/TreeFertilizerItem.java b/src/main/java/com/simibubi/create/content/equipment/TreeFertilizerItem.java index 7c714b9a46..0e8fa53ee0 100644 --- a/src/main/java/com/simibubi/create/content/equipment/TreeFertilizerItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/TreeFertilizerItem.java @@ -1,9 +1,10 @@ package com.simibubi.create.content.equipment; -import net.createmod.catnip.levelWrappers.PlacementSimulationServerLevel; +import net.createmod.catnip.api.level.wrapper.PlacementSimulationServerLevel; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockItemTags; import net.minecraft.tags.BlockTags; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.BoneMealItem; @@ -27,13 +28,13 @@ public InteractionResult useOn(UseOnContext context) { BlockState state = context.getLevel() .getBlockState(context.getClickedPos()); Block block = state.getBlock(); - if (block instanceof BonemealableBlock bonemealableBlock && state.is(BlockTags.SAPLINGS)) { + if (block instanceof BonemealableBlock bonemealableBlock && state.is(BlockItemTags.SAPLINGS.block())) { if (state.getOptionalValue(MangrovePropaguleBlock.HANGING) .orElse(false)) return InteractionResult.PASS; - if (context.getLevel().isClientSide) { + if (context.getLevel().isClientSide()) { BoneMealItem.addGrowthParticles(context.getLevel(), context.getClickedPos(), 100); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/AllArmorMaterials.java b/src/main/java/com/simibubi/create/content/equipment/armor/AllArmorMaterials.java index 30ce875ca2..f241582b86 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/AllArmorMaterials.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/AllArmorMaterials.java @@ -1,85 +1,68 @@ package com.simibubi.create.content.equipment.armor; -import java.util.EnumMap; -import java.util.List; -import java.util.function.Supplier; +import java.util.Map; -import com.simibubi.create.AllItems; +import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; -import net.minecraft.core.Holder; -import net.minecraft.core.registries.Registries; +import com.google.common.collect.Maps; +import net.minecraft.resources.ResourceKey; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.equipment.ArmorMaterial; +import net.minecraft.world.item.equipment.ArmorType; +import net.minecraft.world.item.equipment.EquipmentAsset; +import net.minecraft.world.item.equipment.EquipmentAssets; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; import org.jetbrains.annotations.ApiStatus.Internal; public class AllArmorMaterials { - private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister.create(Registries.ARMOR_MATERIAL, Create.ID); - - public static final Holder COPPER = register( + public static final ArmorMaterial COPPER = register( "copper", new int[] { 2, 4, 3, 1, 4 }, 7, AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEventHolder(), 0.0F, 0.0F, - () -> Ingredient.of(Items.COPPER_INGOT) + ItemTags.REPAIRS_COPPER_ARMOR ); - public static final Holder CARDBOARD = register( + public static final ArmorMaterial CARDBOARD = register( "cardboard", new int[] { 1, 1, 1, 1, 2 }, 4, SoundEvents.ARMOR_EQUIP_LEATHER, 0.0F, 0.0F, - () -> Ingredient.of(AllItems.CARDBOARD) + AllItemTags.CARDBOARD_PLATES.tag ); - private static Holder register( + private static ArmorMaterial register( String name, int[] defense, int enchantmentValue, - Holder equipSound, + net.minecraft.core.Holder equipSound, float toughness, float knockbackResistance, - Supplier repairIngredient + TagKey repairIngredient ) { - List list = List.of(new ArmorMaterial.Layer(Create.asResource(name))); - return register(name, defense, enchantmentValue, equipSound, toughness, knockbackResistance, repairIngredient, list); - } - - private static Holder register( - String name, - int[] defense, - int enchantmentValue, - Holder equipSound, - float toughness, - float knockbackResistance, - Supplier repairIngridient, - List layers - ) { - EnumMap enummap = new EnumMap<>(ArmorItem.Type.class); - - for (ArmorItem.Type armoritem$type : ArmorItem.Type.values()) { - enummap.put(armoritem$type, defense[armoritem$type.ordinal()]); - } - - return ARMOR_MATERIALS.register(name, - () -> new ArmorMaterial(enummap, enchantmentValue, equipSound, repairIngridient, layers, toughness, knockbackResistance) - ); + Map defenseMap = Maps.newEnumMap(Map.of( + ArmorType.BOOTS, defense[0], + ArmorType.LEGGINGS, defense[1], + ArmorType.CHESTPLATE, defense[2], + ArmorType.HELMET, defense[3], + ArmorType.BODY, defense[4] + )); + ResourceKey assetId = ResourceKey.create(EquipmentAssets.ROOT_ID, Create.asResource(name)); + return new ArmorMaterial(enchantmentValue, defenseMap, enchantmentValue, equipSound, toughness, knockbackResistance, repairIngredient, assetId); } @Internal public static void register(IEventBus eventBus) { - ARMOR_MATERIALS.register(eventBus); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankArmorLayer.java index 3435592338..a3ea991aad 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankArmorLayer.java @@ -1,102 +1,14 @@ package com.simibubi.create.content.equipment.armor; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.simibubi.create.foundation.mixin.accessor.EntityRenderDispatcherAccessor; - -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Pose; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.block.state.BlockState; - -public class BacktankArmorLayer> extends RenderLayer { - - public BacktankArmorLayer(RenderLayerParent renderer) { - super(renderer); - } - - @Override - public void render(PoseStack ms, MultiBufferSource buffer, int light, T entity, - float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, - float netHeadYaw, float headPitch) { - if (entity.getPose() == Pose.SLEEPING) - return; - - BacktankItem item = BacktankItem.getWornBy(entity); - if (item == null) - return; - - M entityModel = getParentModel(); - if (!(entityModel instanceof HumanoidModel model)) - return; - - boolean hasGlint = entity.getItemBySlot(BacktankItem.SLOT).hasFoil(); - VertexConsumer vc = ItemRenderer.getFoilBuffer(buffer, Sheets.cutoutBlockSheet(), false, hasGlint); - BlockState renderedState = item.getBlock().defaultBlockState() - .setValue(BacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); - SuperByteBuffer backtank = CachedBuffers.block(renderedState); - SuperByteBuffer cogs = CachedBuffers.partial(BacktankRenderer.getCogsModel(renderedState), renderedState); - SuperByteBuffer nob = CachedBuffers.partial(BacktankRenderer.getShaftModel(renderedState), renderedState); - - ms.pushPose(); - - model.body.translateAndRotate(ms); - ms.translate(-1 / 2f, 10 / 16f, 1f); - ms.scale(1, -1, -1); - - backtank.disableDiffuse() - .light(light) - .renderInto(ms, vc); - - nob.disableDiffuse() - .translate(0, -3f / 16, 0) - .light(light) - .renderInto(ms, vc); - - cogs.center() - .rotateYDegrees(180) - .uncenter() - .translate(0, 6.5f / 16, 11f / 16) - .rotate(AngleHelper.rad(2 * AnimationTickHolder.getRenderTime(entity.level()) % 360), Direction.EAST) - .translate(0, -6.5f / 16, -11f / 16); - - cogs.disableDiffuse() - .light(light) - .renderInto(ms, vc); - - ms.popPose(); - } +public class BacktankArmorLayer { public static void registerOnAll(EntityRenderDispatcher renderManager) { - for (EntityRenderer renderer : renderManager.getSkinMap().values()) - registerOn(renderer); - for (EntityRenderer renderer : ((EntityRenderDispatcherAccessor) renderManager).create$getRenderers().values()) - registerOn(renderer); + // TODO 26.2: port custom backtank armor rendering to the new entity render state pipeline. } - @SuppressWarnings({"rawtypes", "unchecked"}) - public static void registerOn(EntityRenderer entityRenderer) { - if (!(entityRenderer instanceof LivingEntityRenderer livingRenderer)) - return; - if (!(livingRenderer.getModel() instanceof HumanoidModel)) - return; - BacktankArmorLayer layer = new BacktankArmorLayer<>(livingRenderer); - livingRenderer.addLayer((BacktankArmorLayer) layer); + public static void registerOn(EntityRenderer entityRenderer) { + // TODO 26.2: port custom backtank armor rendering to the new entity render state pipeline. } - } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java index 98b419d5d3..88d062d875 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlock.java @@ -15,13 +15,15 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponents; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -33,6 +35,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -76,16 +79,15 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { } @Override - public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { + public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos, Direction direction) { return getBlockEntityOptional(world, pos).map(BacktankBlockEntity::getComparatorOutput) .orElse(0); } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -110,7 +112,7 @@ public Axis getRotationAxis(BlockState state) { @Override public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(worldIn, pos, state, placer, stack); - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; if (stack == null) return; @@ -146,29 +148,29 @@ public List getDrops(BlockState pState, LootParams.Builder pBuilder) } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player instanceof FakePlayer) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.getMainHandItem() .getItem() instanceof BlockItem) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!player.getItemBySlot(EquipmentSlot.CHEST) .isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (!level.isClientSide) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (!level.isClientSide()) { level.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .75f, 1); - player.setItemSlot(EquipmentSlot.CHEST, getCloneItemStack(level, pos, state)); + player.setItemSlot(EquipmentSlot.CHEST, getCloneItemStack(level, pos, state, true)); level.destroyBlock(pos, false); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override - public ItemStack getCloneItemStack(LevelReader pLevel, BlockPos pos, BlockState state) { + public ItemStack getCloneItemStack(LevelReader pLevel, BlockPos pos, BlockState state, boolean includeData) { Item item = asItem(); if (item instanceof BacktankItem.BacktankBlockItem placeable) item = placeable.getActualItem(); diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java index ce36c65b0a..13f90a2347 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankBlockEntity.java @@ -11,12 +11,14 @@ import com.simibubi.create.foundation.blockEntity.ComparatorUtil; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.particle.AirParticleData; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponentGetter; import net.minecraft.core.component.DataComponentMap.Builder; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.particles.ParticleTypes; @@ -49,12 +51,12 @@ public BacktankBlockEntity(BlockEntityType type, BlockPos pos, BlockState sta public static Component getDefaultName(BlockState state) { if (AllBlocks.NETHERITE_BACKTANK.has(state)) { - AllItems.NETHERITE_BACKTANK.get() - .getDescription(); + return AllItems.NETHERITE_BACKTANK.asStack() + .getHoverName(); } - return AllItems.COPPER_BACKTANK.get() - .getDescription(); + return AllItems.COPPER_BACKTANK.asStack() + .getHoverName(); } @Override @@ -87,9 +89,9 @@ public void tick() { } int max = BacktankUtil.maxAir(capacityEnchantLevel); - if (level.isClientSide) { + if (level.isClientSide()) { Vec3 centerOf = VecHelper.getCenterOf(worldPosition); - Vec3 v = VecHelper.offsetRandomly(centerOf, level.random, .65f); + Vec3 v = VecHelper.offsetRandomly(centerOf, level.getRandom(), .65f); Vec3 m = centerOf.subtract(v); if (airLevel != max) level.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z); @@ -103,7 +105,7 @@ public void tick() { float abs = Math.abs(getSpeed()); int increment = Mth.clamp(((int) abs - 100) / 20, 1, 5); airLevel = Math.min(max, airLevel + increment); - if (getComparatorOutput() != prevComparatorLevel && !level.isClientSide) + if (getComparatorOutput() != prevComparatorLevel && !level.isClientSide()) level.updateNeighbourForOutputSignal(worldPosition, state.getBlock()); if (airLevel == max) sendData(); @@ -123,7 +125,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo compound.putInt("CapacityEnchantment", capacityEnchantLevel); if (this.customName != null) - compound.putString("CustomName", Component.Serializer.toJson(this.customName, registries)); + compound.putString("CustomName", LegacyComponentSerializationBridge.toJson(this.customName, registries)); compound.put("Components", CatnipCodecUtils.encode(DataComponentPatch.CODEC, registries, componentPatch) .orElse(new CompoundTag())); @@ -133,20 +135,22 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); int prev = airLevel; - airLevel = compound.getInt("Air"); - airLevelTimer = compound.getInt("Timer"); - capacityEnchantLevel = compound.getInt("CapacityEnchantment"); + airLevel = compound.getIntOr("Air", 0); + airLevelTimer = compound.getIntOr("Timer", 0); + capacityEnchantLevel = compound.getIntOr("CapacityEnchantment", 0); - if (compound.contains("CustomName", 8)) - this.customName = Component.Serializer.fromJson(compound.getString("CustomName"), registries); + if (compound.contains("CustomName")) + this.customName = + LegacyComponentSerializationBridge.fromJson(compound.getStringOr("CustomName", ""), registries); - componentPatch = CatnipCodecUtils.decode(DataComponentPatch.CODEC, registries, compound.getCompound("Components")).orElse(DataComponentPatch.EMPTY); + componentPatch = CatnipCodecUtils.decode(DataComponentPatch.CODEC, registries, + compound.getCompoundOrEmpty("Components")).orElse(DataComponentPatch.EMPTY); if (prev != 0 && prev != airLevel && airLevel == BacktankUtil.maxAir(capacityEnchantLevel) && clientPacket) playFilledEffect(); } @Override - protected void applyImplicitComponents(DataComponentInput componentInput) { + protected void applyImplicitComponents(DataComponentGetter componentInput) { setAirLevel(componentInput.getOrDefault(AllDataComponents.BACKTANK_AIR, 0)); } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankItem.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankItem.java index acdc7324b6..64b65ff859 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankItem.java @@ -1,38 +1,36 @@ package com.simibubi.create.content.equipment.armor; -import java.util.Locale; import java.util.function.Supplier; import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllDataComponents; -import com.simibubi.create.foundation.item.LayeredArmorItem; import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.equipment.ArmorMaterial; +import net.minecraft.world.item.equipment.ArmorType; import net.minecraft.world.level.block.Block; public class BacktankItem extends BaseArmorItem { public static final EquipmentSlot SLOT = EquipmentSlot.CHEST; - public static final ArmorItem.Type TYPE = ArmorItem.Type.CHESTPLATE; + public static final ArmorType TYPE = ArmorType.CHESTPLATE; public static final int BAR_COLOR = 0xEFEFEF; private final Supplier blockItem; - public BacktankItem(Holder material, Properties properties, ResourceLocation textureLoc, Supplier placeable) { + public BacktankItem(ArmorMaterial material, Properties properties, Identifier textureLoc, Supplier placeable) { super(material, TYPE, properties, textureLoc); this.blockItem = placeable; } @@ -54,7 +52,6 @@ public InteractionResult useOn(UseOnContext ctx) { .useOn(ctx); } - @Override public boolean isEnchantable(ItemStack p_77616_1_) { return true; } @@ -97,24 +94,14 @@ public BacktankBlockItem(Block block, Supplier actualItem, Properties prop this.actualItem = actualItem; } - @Override - public String getDescriptionId() { - return this.getOrCreateDescriptionId(); - } - public Item getActualItem() { return actualItem.get(); } } - public static class Layered extends BacktankItem implements LayeredArmorItem { - public Layered(Holder material, Properties properties, ResourceLocation textureLoc, Supplier placeable) { + public static class Layered extends BacktankItem { + public Layered(ArmorMaterial material, Properties properties, Identifier textureLoc, Supplier placeable) { super(material, properties, textureLoc, placeable); } - - @Override - public String getArmorTextureLocation(LivingEntity entity, EquipmentSlot slot, ItemStack stack, int layer) { - return String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%d.png", textureLoc.getNamespace(), textureLoc.getPath(), layer); - } } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankRenderer.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankRenderer.java index 2dce458179..1443076c25 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankRenderer.java @@ -6,12 +6,12 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -32,11 +32,11 @@ protected void renderSafe(BacktankBlockEntity be, float partialTicks, PoseStack .rotateYDegrees(180 + AngleHelper.horizontalAngle(blockState.getValue(BacktankBlock.HORIZONTAL_FACING))) .uncenter() .translate(0, 6.5f / 16, 11f / 16) - .rotate(AngleHelper.rad(be.getSpeed() / 4f * AnimationTickHolder.getRenderTime(be.getLevel()) % 360), + .rotate(AngleHelper.rad(be.getSpeed() / 4f * AnimationTickHolder.getRenderTime() % 360), Direction.EAST) .translate(0, -6.5f / 16, -11f / 16); cogs.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Override diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankUtil.java b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankUtil.java index 5eecafb09a..7201513ac2 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BacktankUtil.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BacktankUtil.java @@ -26,6 +26,7 @@ import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -39,9 +40,11 @@ public class BacktankUtil { static { addBacktankSupplier(entity -> { List stacks = new ArrayList<>(); - for (ItemStack itemStack : entity.getArmorSlots()) + for (EquipmentSlot slot : List.of(EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET)) { + ItemStack itemStack = entity.getItemBySlot(slot); if (AllTags.AllItemTags.PRESSURIZED_AIR_SOURCES.matches(itemStack)) stacks.add(itemStack); + } return stacks; }); diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/BaseArmorItem.java b/src/main/java/com/simibubi/create/content/equipment/armor/BaseArmorItem.java index 5597d66abf..e8bac161e9 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/BaseArmorItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/BaseArmorItem.java @@ -1,27 +1,16 @@ package com.simibubi.create.content.equipment.armor; -import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.equipment.ArmorMaterial; +import net.minecraft.world.item.equipment.ArmorType; -import org.jetbrains.annotations.Nullable; +public class BaseArmorItem extends Item { + protected final Identifier textureLoc; -import java.util.Locale; - -public class BaseArmorItem extends ArmorItem { - protected final ResourceLocation textureLoc; - - public BaseArmorItem(Holder armorMaterial, ArmorItem.Type type, Properties properties, ResourceLocation textureLoc) { - super(armorMaterial, type, properties.stacksTo(1)); + public BaseArmorItem(ArmorMaterial armorMaterial, ArmorType type, Properties properties, Identifier textureLoc) { + super(properties.stacksTo(1) + .humanoidArmor(armorMaterial, type)); this.textureLoc = textureLoc; } - - @Override - public @Nullable ResourceLocation getArmorTexture(ItemStack stack, Entity entity, EquipmentSlot slot, ArmorMaterial.Layer layer, boolean innerModel) { - return ResourceLocation.parse(String.format(Locale.ROOT, "%s:textures/models/armor/%s_layer_%d.png", textureLoc.getNamespace(), textureLoc.getPath(), slot == EquipmentSlot.LEGS ? 2 : 1)); - } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandler.java b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandler.java index 69daf40681..967b7d66c5 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandler.java @@ -1,7 +1,5 @@ package com.simibubi.create.content.equipment.armor; -import java.util.UUID; - import com.simibubi.create.foundation.advancement.AllAdvancements; import net.minecraft.server.level.ServerLevel; @@ -93,14 +91,15 @@ public static void mobsMayLoseTargetWhenItIsWearingCardboard(EntityTickEvent.Pre } if (entity instanceof NeutralMob nMob && entity.level() instanceof ServerLevel sl) { - UUID uuid = nMob.getPersistentAngerTarget(); - if (uuid != null && testForStealth(sl.getEntity(uuid))) + var angerTarget = nMob.getPersistentAngerTarget(); + LivingEntity angryAt = angerTarget == null ? null : net.minecraft.world.entity.EntityReference.getLivingEntity(angerTarget, sl); + if (testForStealth(angryAt)) nMob.stopBeingAngry(); } if (testForStealth(mob.getLastHurtByMob())) { mob.setLastHurtByMob(null); - mob.setLastHurtByPlayer(null); + mob.setLastHurtByPlayer((Player) null, 0); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandlerClient.java b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandlerClient.java index a0599e0172..f1895c9a51 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorHandlerClient.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.utility.TickBasedCache; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.player.AbstractClientPlayer; @@ -45,50 +45,12 @@ public static void keepCacheAliveDesignDespiteNotRendering(PlayerTickEvent.Post @SubscribeEvent(priority = EventPriority.HIGH) public static void playerRendersAsBoxWhenSneaking(RenderPlayerEvent.Pre event) { - Player player = event.getEntity(); - if (!CardboardArmorHandler.testForStealth(player)) - return; - - event.setCanceled(true); - - if (player == Minecraft.getInstance().player - && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) - return; - - PoseStack ms = event.getPoseStack(); - ms.pushPose(); - - Vec3 renderOffset = event.getRenderer().getRenderOffset((AbstractClientPlayer)player, event.getPartialTick()); - ms.translate(0, -renderOffset.y, 0); - - float movement = (float) player.position() - .subtract(player.xo, player.yo, player.zo) - .length(); - - if (player.onGround()) - ms.translate(0, - Math.min(Math.abs(Mth.cos((AnimationTickHolder.getRenderTime() % 256) / 2.0f)) * -renderOffset.y, movement * 5), - 0); - - float interpolatedYaw = Mth.lerp(event.getPartialTick(), player.yRotO, player.getYRot()); - - float scale = player.getScale(); - ms.scale(scale, scale, scale); - - try { - PartialModel model = AllPartialModels.PACKAGES_TO_HIDE_AS.get(getCurrentBoxIndex(player)); - PackageRenderer.renderBox(player, interpolatedYaw, ms, event.getMultiBufferSource(), - event.getPackedLight(), model); - } catch (ExecutionException e) { - e.printStackTrace(); - } - - ms.popPose(); + // TODO 26.2: Rebuild cardboard player replacement against AvatarRenderState and SubmitNodeCollector. } private static Integer getCurrentBoxIndex(Player player) throws ExecutionException { return BOXES_PLAYERS_ARE_HIDING_AS.get(player.getUUID(), - () -> player.level().random.nextInt(AllPartialModels.PACKAGES_TO_HIDE_AS.size())); + () -> player.level().getRandom().nextInt(AllPartialModels.PACKAGES_TO_HIDE_AS.size())); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorItem.java b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorItem.java index 5747e1fb3f..452a25d7d8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorItem.java @@ -2,8 +2,10 @@ import com.simibubi.create.Create; +import net.minecraft.world.item.equipment.ArmorType; + public class CardboardArmorItem extends BaseArmorItem { - public CardboardArmorItem(Type type, Properties properties) { + public CardboardArmorItem(ArmorType type, Properties properties) { super(AllArmorMaterials.CARDBOARD, type, properties, Create.asResource("cardboard")); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorStealthOverlay.java b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorStealthOverlay.java index 8a835811e9..7b38b5f58f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorStealthOverlay.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/CardboardArmorStealthOverlay.java @@ -1,27 +1,26 @@ package com.simibubi.create.content.equipment.armor; import com.simibubi.create.Create; -import com.simibubi.create.foundation.mixin.accessor.GuiAccessor; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; -public class CardboardArmorStealthOverlay extends Gui implements IClientItemExtensions { +public class CardboardArmorStealthOverlay implements IClientItemExtensions { public CardboardArmorStealthOverlay() { - super(Minecraft.getInstance()); } - private static final ResourceLocation PACKAGE_BLUR_LOCATION = Create.asResource("textures/misc/package_blur.png"); + private static final Identifier PACKAGE_BLUR_LOCATION = Create.asResource("textures/misc/package_blur.png"); private static LerpedFloat opacity = LerpedFloat.linear() .startWithValue(0) @@ -37,13 +36,9 @@ public static void clientTick() { } @Override - public void renderHelmetOverlay(ItemStack stack, Player player, int width, int height, float partialTick) { - Minecraft mc = Minecraft.getInstance(); - float value = opacity.getValue(partialTick); - if (value == 0) - return; - ((GuiAccessor) this).create$renderTextureOverlay(new GuiGraphics(mc, mc.renderBuffers() - .bufferSource()), PACKAGE_BLUR_LOCATION, value); + public void renderFirstPersonOverlay(ItemStack stack, EquipmentSlot slot, Player player, GuiGraphicsExtractor graphics, + DeltaTracker deltaTracker) { + // TODO 26.2: Rebuild package blur using GuiGraphicsExtractor's submit pipeline. } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/equipment/armor/DivingBootsItem.java index eaf79f0636..de10d78852 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/DivingBootsItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/DivingBootsItem.java @@ -1,17 +1,16 @@ package com.simibubi.create.content.equipment.armor; -import net.createmod.catnip.nbt.NBTHelper; -import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.minecraft.resources.Identifier; import net.minecraft.tags.FluidTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.equipment.ArmorMaterial; +import net.minecraft.world.item.equipment.ArmorType; import net.minecraft.world.phys.Vec3; import net.neoforged.bus.api.SubscribeEvent; @@ -21,9 +20,9 @@ @EventBusSubscriber public class DivingBootsItem extends BaseArmorItem { public static final EquipmentSlot SLOT = EquipmentSlot.FEET; - public static final ArmorItem.Type TYPE = ArmorItem.Type.BOOTS; + public static final ArmorType TYPE = ArmorType.BOOTS; - public DivingBootsItem(Holder material, Properties properties, ResourceLocation textureLoc) { + public DivingBootsItem(ArmorMaterial material, Properties properties, Identifier textureLoc) { super(material, TYPE, properties, textureLoc); } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/equipment/armor/DivingHelmetItem.java index b4c92039e8..3011559e18 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/DivingHelmetItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/DivingHelmetItem.java @@ -7,17 +7,18 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup.RegistryLookup; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ItemInstance; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.item.equipment.ArmorMaterial; +import net.minecraft.world.item.equipment.ArmorType; import net.minecraft.world.level.Level; import net.neoforged.bus.api.SubscribeEvent; @@ -27,9 +28,9 @@ @EventBusSubscriber public class DivingHelmetItem extends BaseArmorItem { public static final EquipmentSlot SLOT = EquipmentSlot.HEAD; - public static final ArmorItem.Type TYPE = ArmorItem.Type.HELMET; + public static final ArmorType TYPE = ArmorType.HELMET; - public DivingHelmetItem(Holder material, Properties properties, ResourceLocation textureLoc) { + public DivingHelmetItem(ArmorMaterial material, Properties properties, Identifier textureLoc) { super(material, TYPE, properties, textureLoc); } @@ -41,7 +42,7 @@ public boolean supportsEnchantment(ItemStack stack, Holder enchantm } @Override - public int getEnchantmentLevel(ItemStack stack, Holder enchantment) { + public int getEnchantmentLevel(ItemInstance stack, Holder enchantment) { if (enchantment.is(Enchantments.AQUA_AFFINITY)) return 1; return super.getEnchantmentLevel(stack, enchantment); @@ -74,7 +75,7 @@ public static void breatheUnderwater(LivingBreatheEvent event) { LivingEntity entity = event.getEntity(); Level level = entity.level(); - if (level.isClientSide) + if (level.isClientSide()) entity.getPersistentData().remove("VisualBacktankAir"); ItemStack helmet = getWornItem(entity); @@ -82,7 +83,7 @@ public static void breatheUnderwater(LivingBreatheEvent event) { return; boolean lavaDiving = entity.isInLava(); - if (!helmet.has(DataComponents.FIRE_RESISTANT) && lavaDiving) + if (!isFireResistant(helmet, entity) && lavaDiving) return; if (event.canBreathe() && !lavaDiving) @@ -96,7 +97,7 @@ public static void breatheUnderwater(LivingBreatheEvent event) { if (entity instanceof ServerPlayer sp) AllAdvancements.DIVING_SUIT_LAVA.awardTo(sp); if (backtanks.stream() - .noneMatch(backtank -> backtank.has(DataComponents.FIRE_RESISTANT))) + .noneMatch(backtank -> isFireResistant(backtank, entity))) return; } @@ -104,7 +105,7 @@ public static void breatheUnderwater(LivingBreatheEvent event) { for (ItemStack stack : backtanks) visualBacktankAir += BacktankUtil.getAir(stack); - if (level.isClientSide) + if (level.isClientSide()) entity.getPersistentData() .putInt("VisualBacktankAir", Math.round(visualBacktankAir)); @@ -120,4 +121,9 @@ public static void breatheUnderwater(LivingBreatheEvent event) { event.setCanBreathe(true); event.setRefillAirAmount(entity.getMaxAirSupply()); } + + private static boolean isFireResistant(ItemStack stack, LivingEntity entity) { + var resistance = stack.get(DataComponents.DAMAGE_RESISTANT); + return resistance != null && resistance.isResistantTo(entity.damageSources().lava()); + } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteBacktankFirstPersonRenderer.java b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteBacktankFirstPersonRenderer.java index 67389d21c2..869ec64da6 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteBacktankFirstPersonRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteBacktankFirstPersonRenderer.java @@ -4,18 +4,9 @@ import com.simibubi.create.Create; import net.minecraft.client.Minecraft; -import net.minecraft.client.model.PlayerModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.HumanoidArm; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; @@ -25,7 +16,7 @@ @EventBusSubscriber(value = Dist.CLIENT) public class NetheriteBacktankFirstPersonRenderer { - private static final ResourceLocation BACKTANK_ARMOR_LOCATION = + private static final Identifier BACKTANK_ARMOR_LOCATION = Create.asResource("textures/models/armor/netherite_diving_arm.png"); private static boolean rendererActive = false; @@ -43,21 +34,9 @@ public static void onRenderPlayerHand(RenderArmEvent event) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; - MultiBufferSource buffer = event.getMultiBufferSource(); - if (!(mc.getEntityRenderDispatcher() - .getRenderer(player) instanceof PlayerRenderer pr)) + if (player == null) return; - - PlayerModel model = pr.getModel(); - model.attackTime = 0.0F; - model.crouching = false; - model.swimAmount = 0.0F; - model.setupAnim(player, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); - ModelPart armPart = event.getArm() == HumanoidArm.LEFT ? model.leftSleeve : model.rightSleeve; - armPart.xRot = 0.0F; - armPart.render(event.getPoseStack(), buffer.getBuffer(RenderType.entitySolid(BACKTANK_ARMOR_LOCATION)), - LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); - event.setCanceled(true); + // TODO 26.2: Rebuild first-person armor sleeve rendering against the new player render-state API. } } diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java index fdecb835b1..6e924574a0 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/NetheriteDivingHandler.java @@ -6,7 +6,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -57,12 +56,12 @@ public static boolean isNetheriteBacktank(ItemStack stack) { } public static boolean isNetheriteArmor(ItemStack stack) { - return stack.getItem() instanceof ArmorItem && stack.has(DataComponents.FIRE_RESISTANT); + return stack.has(DataComponents.EQUIPPABLE) && stack.has(DataComponents.DAMAGE_RESISTANT); } public static void setBit(LivingEntity entity, EquipmentSlot slot) { CompoundTag nbt = entity.getPersistentData(); - byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); + byte bits = nbt.getByteOr(NETHERITE_DIVING_BITS_KEY, (byte) 0); if ((bits & 0b1111) == 0b1111) { return; } @@ -81,7 +80,7 @@ public static void clearBit(LivingEntity entity, EquipmentSlot slot) { return; } - byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); + byte bits = nbt.getByteOr(NETHERITE_DIVING_BITS_KEY, (byte) 0); boolean prevFullSet = (bits & 0b1111) == 0b1111; bits &= ~(1 << slot.getIndex()); nbt.putByte(NETHERITE_DIVING_BITS_KEY, bits); diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/RemainingAirOverlay.java b/src/main/java/com/simibubi/create/content/equipment/armor/RemainingAirOverlay.java index 1ab9834103..1fae4ff0d2 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/RemainingAirOverlay.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/RemainingAirOverlay.java @@ -2,32 +2,34 @@ import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Matrix3x2fStack; + import com.simibubi.create.AllItems; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; +import net.minecraft.tags.FluidTags; import net.minecraft.util.StringUtil; import net.minecraft.world.effect.MobEffectUtil; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.Blocks; -public class RemainingAirOverlay implements LayeredDraw.Layer { +public class RemainingAirOverlay implements GuiLayer { public static final RemainingAirOverlay INSTANCE = new RemainingAirOverlay(); @Override - public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public void render(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gui.hud.isHidden() || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; LocalPlayer player = mc.player; @@ -38,32 +40,33 @@ public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { if (!player.getPersistentData() .contains("VisualBacktankAir")) return; - boolean isAir = player.getEyeInFluidType().isAir() || player.level().getBlockState(BlockPos.containing(player.getX(), player.getEyeY(), player.getZ())).is(Blocks.BUBBLE_COLUMN); - boolean canBreathe = !player.canDrownInFluidType(player.getEyeInFluidType()) || MobEffectUtil.hasWaterBreathing(player) || player.getAbilities().invulnerable; + BlockPos eyePos = BlockPos.containing(player.getX(), player.getEyeY(), player.getZ()); + boolean isAir = !player.isEyeInFluid(FluidTags.WATER) && !player.isInLava() || player.level().getBlockState(eyePos).is(Blocks.BUBBLE_COLUMN); + boolean canBreathe = MobEffectUtil.hasWaterBreathing(player) || player.getAbilities().invulnerable; if ((isAir || canBreathe) && !player.isInLava()) return; int timeLeft = player.getPersistentData() - .getInt("VisualBacktankAir"); + .getIntOr("VisualBacktankAir", 0); - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); + Matrix3x2fStack poseStack = GuiGraphicsExtractor.pose(); + poseStack.pushMatrix(); ItemStack backtank = getDisplayedBacktank(player); - poseStack.translate(guiGraphics.guiWidth() / 2 + 90, guiGraphics.guiHeight() - 53 + (backtank - .has(DataComponents.FIRE_RESISTANT) ? 9 : 0), 0); + poseStack.translate(GuiGraphicsExtractor.guiWidth() / 2 + 90, GuiGraphicsExtractor.guiHeight() - 53 + (backtank + .has(DataComponents.DAMAGE_RESISTANT) ? 9 : 0)); Component text = Component.literal(StringUtil.formatTickDuration(Math.max(0, timeLeft - 1) * 20, mc.level.tickRateManager().tickrate())); GuiGameElement.of(backtank) .at(0, 0) - .render(guiGraphics); + .render(GuiGraphicsExtractor, 0, 0); int color = 0xFF_FFFFFF; if (timeLeft < 60 && timeLeft % 2 == 0) { color = Color.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f)); } - guiGraphics.drawString(mc.font, text, 16, 5, color); + GuiGraphicsExtractor.text(mc.font, text, 16, 5, color); - poseStack.popPose(); + poseStack.popMatrix(); } public static ItemStack getDisplayedBacktank(LocalPlayer player) { diff --git a/src/main/java/com/simibubi/create/content/equipment/armor/TrimmableArmorModelGenerator.java b/src/main/java/com/simibubi/create/content/equipment/armor/TrimmableArmorModelGenerator.java index 2fd25c93c7..bbdf70013f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/armor/TrimmableArmorModelGenerator.java +++ b/src/main/java/com/simibubi/create/content/equipment/armor/TrimmableArmorModelGenerator.java @@ -1,58 +1,12 @@ package com.simibubi.create.content.equipment.armor; -import java.lang.invoke.MethodHandles; -import java.lang.invoke.VarHandle; -import java.util.Map; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.mixin.accessor.ItemModelGeneratorsAccessor; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; +import com.tterrag.registrate.providers.generators.RegistrateItemModelGenerator; -import net.minecraft.data.models.ItemModelGenerators; -import net.minecraft.data.models.model.ModelLocationUtils; -import net.minecraft.data.models.model.TextureMapping; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; -import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; -import net.neoforged.neoforge.client.model.generators.ModelBuilder; - public class TrimmableArmorModelGenerator { - public static final VarHandle TEXTURES_HANDLE; - - static { - try { - MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(ModelBuilder.class, MethodHandles.lookup()); - TEXTURES_HANDLE = lookup.findVarHandle(ModelBuilder.class, "textures", Map.class); - } catch (IllegalAccessException | NoSuchFieldException e) { - throw new RuntimeException(e); - } - } - - public static void generate(DataGenContext c, RegistrateItemModelProvider p) { - T item = c.get(); - ItemModelBuilder builder = p.generated(c); - for (ItemModelGenerators.TrimModelData data : ItemModelGeneratorsAccessor.create$getGENERATED_TRIM_MODELS()) { - ResourceLocation modelLoc = ModelLocationUtils.getModelLocation(item); - ResourceLocation textureLoc = TextureMapping.getItemTexture(item); - String trimId = data.name(item.getMaterial()); - ResourceLocation trimModelLoc = modelLoc.withSuffix("_" + trimId + "_trim"); - ResourceLocation trimLoc = - ResourceLocation.withDefaultNamespace("trims/items/" + item.getType().getName() + "_trim_" + trimId); - String parent = "item/generated"; - if (item.getMaterial() == AllArmorMaterials.CARDBOARD) { - trimLoc = Create.asResource("trims/items/card_" + item.getType().getName() + "_trim_" + trimId); - } - ItemModelBuilder itemModel = p.withExistingParent(trimModelLoc.getPath(), parent) - .texture("layer0", textureLoc); - Map textures = (Map) TEXTURES_HANDLE.get(itemModel); - textures.put("layer1", trimLoc.toString()); - builder.override() - .predicate(ItemModelGenerators.TRIM_TYPE_PREDICATE_ID, data.itemModelIndex()) - .model(itemModel) - .end(); - } + public static void generate(DataGenContext c, RegistrateItemModelGenerator p) { + p.generated(c); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlock.java b/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlock.java index 36963ae7db..8fc1f1c8fa 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlock.java @@ -13,6 +13,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BellBlock; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -40,9 +41,8 @@ public VoxelShape getShape(BlockState state, BlockGetter reader, BlockPos pos, C } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { - if (pLevel.isClientSide) + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { + if (pLevel.isClientSide()) return; boolean shouldPower = pLevel.hasNeighborSignal(pPos); if (shouldPower == pState.getValue(POWERED)) @@ -70,7 +70,7 @@ public boolean onHit(Level world, BlockState state, BlockHitResult hit, @Nullabl protected boolean ring(Level world, BlockPos pos, Direction direction, Player player) { BE be = getBlockEntity(world, pos); - if (world.isClientSide) + if (world.isClientSide()) return true; if (be == null || !be.ring(world, pos, direction)) return false; diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlockEntity.java index 719727b69d..0edff80fee 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/AbstractBellBlockEntity.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -16,7 +16,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class AbstractBellBlockEntity extends SmartBlockEntity { @@ -73,7 +72,6 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c isRinging = true; } - @OnlyIn(Dist.CLIENT) public abstract PartialModel getBellModel(); } diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/BasicParticleData.java b/src/main/java/com/simibubi/create/content/equipment/bell/BasicParticleData.java index 174dd429f4..2a086c8d7d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/BasicParticleData.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/BasicParticleData.java @@ -5,28 +5,17 @@ import com.mojang.brigadier.StringReader; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; -import com.simibubi.create.foundation.particle.AirParticleData; import com.simibubi.create.foundation.particle.ICustomParticleDataWithSprite; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.ParticleEngine; -import net.minecraft.client.particle.SpriteSet; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public abstract class BasicParticleData implements ParticleOptions, ICustomParticleDataWithSprite> { +public abstract class BasicParticleData implements ParticleOptions, ICustomParticleDataWithSprite> { public BasicParticleData() { } @@ -40,18 +29,4 @@ public StreamCodec> getStr public MapCodec> getCodec(ParticleType> type) { return MapCodec.unit(this); } - - public interface IBasicParticleFactory { - U makeParticle(ClientLevel worldIn, double x, double y, double z, double vx, double vy, double vz, SpriteSet sprite); - } - - @OnlyIn(Dist.CLIENT) - public abstract IBasicParticleFactory getBasicFactory(); - - @Override - @OnlyIn(Dist.CLIENT) - public ParticleEngine.SpriteParticleRegistration> getMetaFactory() { - return animatedSprite -> (data, worldIn, x, y, z, vx, vy, vz) -> - getBasicFactory().makeParticle(worldIn, x, y, z, vx, vy, vz, animatedSprite); - } } diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/BellRenderer.java b/src/main/java/com/simibubi/create/content/equipment/bell/BellRenderer.java index 420053b53f..1b7a6a4317 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/BellRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/BellRenderer.java @@ -3,11 +3,11 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -37,7 +37,7 @@ protected void renderSafe(BE be, float partialTicks, PoseStack ms, MultiBufferSo bell.rotateCentered(AngleHelper.rad(rY), Direction.UP); bell.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.cutout())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutout())); } public static float getSwingAngle(float time) { diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/CustomRotationParticle.java b/src/main/java/com/simibubi/create/content/equipment/bell/CustomRotationParticle.java index 2cbdf88070..ea1b37904e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/CustomRotationParticle.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/CustomRotationParticle.java @@ -11,7 +11,7 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.SimpleAnimatedParticle; import net.minecraft.client.particle.SpriteSet; -import net.minecraft.client.renderer.LightTexture; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; @@ -38,9 +38,8 @@ public Quaternionf getCustomRotation(Camera camera, float partialTicks) { return quaternion; } - @Override public void render(VertexConsumer builder, Camera camera, float partialTicks) { - Vec3 cameraPos = camera.getPosition(); + Vec3 cameraPos = camera.position(); float originX = (float) (Mth.lerp(partialTicks, xo, x) - cameraPos.x()); float originY = (float) (Mth.lerp(partialTicks, yo, y) - cameraPos.y()); float originZ = (float) (Mth.lerp(partialTicks, zo, z) - cameraPos.z()); @@ -65,7 +64,7 @@ public void render(VertexConsumer builder, Camera camera, float partialTicks) { float maxU = mirror ? getU0() : getU1(); float minV = getV0(); float maxV = getV1(); - int brightness = ShadersModHelper.isShaderPackInUse() ? LightTexture.pack(12, 15) : getLightColor(partialTicks); + int brightness = ShadersModHelper.isShaderPackInUse() ? LightCoordsUtil.pack(12, 15) : getLightCoords(partialTicks); builder.addVertex(vertices[0].x(), vertices[0].y(), vertices[0].z()).setUv(maxU, maxV).setColor(rCol, gCol, bCol, alpha).setLight(brightness); builder.addVertex(vertices[1].x(), vertices[1].y(), vertices[1].z()).setUv(maxU, minV).setColor(rCol, gCol, bCol, alpha).setLight(brightness); builder.addVertex(vertices[2].x(), vertices[2].y(), vertices[2].z()).setUv(minU, minV).setColor(rCol, gCol, bCol, alpha).setLight(brightness); diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlock.java b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlock.java index e7886ca61b..b4d21bb144 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlock.java @@ -42,7 +42,7 @@ public void playSound(Level world, BlockPos pos) { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (oldState.getBlock() != this && !world.isClientSide) + if (oldState.getBlock() != this && !world.isClientSide()) withBlockEntityDo(world, pos, hbte -> { hbte.effectTicks = HauntedBellBlockEntity.EFFECT_TICKS; hbte.sendData(); diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlockEntity.java index 38b0c25736..45e3ed2561 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellBlockEntity.java @@ -16,7 +16,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class HauntedBellBlockEntity extends AbstractBellBlockEntity { @@ -31,7 +30,6 @@ public HauntedBellBlockEntity(BlockEntityType type, BlockPos pos, BlockState } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getBellModel() { return AllPartialModels.HAUNTED_BELL; } @@ -55,7 +53,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - effectTicks = compound.getInt("EffectTicks"); + effectTicks = compound.getIntOr("EffectTicks", 0); } @Override @@ -66,7 +64,7 @@ public void tick() { return; effectTicks--; - if (!level.isClientSide) + if (!level.isClientSide()) return; RandomSource rand = level.getRandom(); diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellMovementBehaviour.java b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellMovementBehaviour.java index 01683780e5..dad22bcc77 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellMovementBehaviour.java @@ -19,7 +19,7 @@ public void tick(MovementContext context) { @Override public void visitNewPosition(MovementContext context, BlockPos pos) { - if (!context.world.isClientSide && context.world instanceof ServerLevel serverLevel && getRecharge(context) == 0) { + if (!context.world.isClientSide() && context.world instanceof ServerLevel serverLevel && getRecharge(context) == 0) { HauntedBellPulser.sendPulse(serverLevel, pos, DISTANCE, false); setRecharge(context, HauntedBellBlockEntity.RECHARGE_TICKS); playSound(context); diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellPulser.java b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellPulser.java index a1aebf51fd..da5433124d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellPulser.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/HauntedBellPulser.java @@ -3,8 +3,8 @@ import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import com.simibubi.create.AllBlocks; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlock.java b/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlock.java index eb220828e0..f899b81421 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlock.java @@ -11,6 +11,8 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -50,13 +52,12 @@ public BlockState getStateForPlacement(BlockPlaceContext ctx) { } @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor world, - BlockPos currentPos, BlockPos facingPos) { - BlockState newState = super.updateShape(state, facing, facingState, world, currentPos, facingPos); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { + BlockState newState = super.updateShape(state, world, ticks, currentPos, facing, facingPos, facingState, random); if (facing != Direction.DOWN) return newState; - return tryConvert(world, currentPos, newState, facingState); + return world instanceof LevelAccessor levelAccessor ? tryConvert(levelAccessor, currentPos, newState, facingState) : newState; } protected BlockState tryConvert(LevelAccessor world, BlockPos pos, BlockState state, BlockState underState) { diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlockEntity.java index ce4b7776f0..992d773b9b 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/PeculiarBellBlockEntity.java @@ -7,7 +7,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class PeculiarBellBlockEntity extends AbstractBellBlockEntity { @@ -16,7 +15,6 @@ public PeculiarBellBlockEntity(BlockEntityType type, BlockPos pos, BlockState } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getBellModel() { return AllPartialModels.PECULIAR_BELL; } diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/SoulBaseParticle.java b/src/main/java/com/simibubi/create/content/equipment/bell/SoulBaseParticle.java index 11f768df4d..c9f13e5aec 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/SoulBaseParticle.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/SoulBaseParticle.java @@ -40,10 +40,6 @@ public Quaternionf getCustomRotation(Camera camera, float partialTicks) { } public static class Data extends BasicParticleData { - @Override - public IBasicParticleFactory getBasicFactory() { - return SoulBaseParticle::new; - } @Override public ParticleType getType() { diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/SoulParticle.java b/src/main/java/com/simibubi/create/content/equipment/bell/SoulParticle.java index 54fafdb4ba..b4e8fc3082 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/SoulParticle.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/SoulParticle.java @@ -81,11 +81,9 @@ public void tick() { isVisible = false; } - @Override public void render(VertexConsumer builder, Camera camera, float partialTicks) { if (!isVisible) return; - super.render(builder, camera, partialTicks); } public void setFrame(int frame) { @@ -97,15 +95,10 @@ public void setFrame(int frame) { public Quaternionf getCustomRotation(Camera camera, float partialTicks) { if (isPerimeter) return Axis.XP.rotationDegrees(90); - return new Quaternionf().rotationXYZ(0, -camera.getYRot() * Mth.DEG_TO_RAD, 0); + return new Quaternionf(camera.rotation()); } public static class Data extends BasicParticleData { - @Override - public IBasicParticleFactory getBasicFactory() { - return (worldIn, x, y, z, vx, vy, vz, spriteSet) -> new SoulParticle(worldIn, x, y, z, vx, vy, vz, - spriteSet, this); - } @Override public ParticleType getType() { @@ -114,11 +107,6 @@ public ParticleType getType() { } public static class PerimeterData extends BasicParticleData { - @Override - public IBasicParticleFactory getBasicFactory() { - return (worldIn, x, y, z, vx, vy, vz, spriteSet) -> new SoulParticle(worldIn, x, y, z, vx, vy, vz, - spriteSet, this); - } @Override public ParticleType getType() { diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffect.java b/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffect.java index 2d2a2be40d..e6c416e6f8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffect.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffect.java @@ -8,8 +8,10 @@ import com.google.common.collect.Streams; import com.simibubi.create.content.equipment.bell.SoulParticle.ExpandingPerimeterData; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.SpawnPlacementTypes; import net.minecraft.world.entity.SpawnPlacements; @@ -81,7 +83,7 @@ public static boolean isDark(Level world, BlockPos at) { } public static boolean canSpawnSoulAt(Level world, BlockPos at, boolean ignoreLight) { - EntityType dummy = EntityType.ZOMBIE; + EntityType dummy = BuiltInRegistries.ENTITY_TYPE.getValue(Identifier.withDefaultNamespace("zombie")); double dummyWidth = 0.2, dummyHeight = 0.75; double w2 = dummyWidth / 2; @@ -95,7 +97,7 @@ public static boolean canSpawnSoulAt(Level world, BlockPos at, boolean ignoreLig } public void spawnParticles(Level world, BlockPos at) { - if (world == null || !world.isClientSide) + if (world == null || !world.isClientSide()) return; Vec3 p = Vec3.atLowerCornerOf(at); diff --git a/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffectPacket.java b/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffectPacket.java index 0aaea4433a..98826d67a9 100644 --- a/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/bell/SoulPulseEffectPacket.java @@ -5,12 +5,11 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record SoulPulseEffectPacket(BlockPos pos, int distance, boolean canOverlap) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -21,8 +20,7 @@ public record SoulPulseEffectPacket(BlockPos pos, int distance, boolean canOverl ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { CreateClient.SOUL_PULSE_EFFECT_HANDLER.addPulse(new SoulPulseEffect(pos, distance, canOverlap)); } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintAssignCompleteRecipePacket.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintAssignCompleteRecipePacket.java index e427d04c73..ae2fc4b191 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintAssignCompleteRecipePacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintAssignCompleteRecipePacket.java @@ -5,20 +5,23 @@ import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.crafting.Recipe; -public record BlueprintAssignCompleteRecipePacket(ResourceLocation recipeId) implements ServerboundPacketPayload { - public static final StreamCodec STREAM_CODEC = ResourceLocation.STREAM_CODEC.map( +public record BlueprintAssignCompleteRecipePacket(Identifier recipeId) implements ServerboundPacketPayload { + public static final StreamCodec STREAM_CODEC = Identifier.STREAM_CODEC.map( com.simibubi.create.content.equipment.blueprint.BlueprintAssignCompleteRecipePacket::new, com.simibubi.create.content.equipment.blueprint.BlueprintAssignCompleteRecipePacket::recipeId ); @Override public void handle(ServerPlayer player) { if (player.containerMenu instanceof BlueprintMenu c) { - player.level() + player.level().getServer() .getRecipeManager() - .byKey(recipeId) + .byKey(ResourceKey.create(Registries.RECIPE, recipeId)) .ifPresent(r -> BlueprintItem.assignCompleteRecipe(c.player.level(), c.ghostInventory, r.value())); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java index 9754e30a0d..a14dcf2188 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintEntity.java @@ -16,9 +16,10 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.networking.ISyncPersistentData; import com.simibubi.create.foundation.utility.IInteractionChecker; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -28,6 +29,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -50,8 +52,10 @@ import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DiodeBlock; import net.minecraft.world.level.block.state.BlockState; @@ -60,7 +64,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.CommonHooks; import net.neoforged.neoforge.common.util.FakePlayer; import net.neoforged.neoforge.entity.IEntityWithComplexSpawn; @@ -102,36 +105,30 @@ public static EntityType.Builder build(EntityType.Builder builder) { protected void defineSynchedData(SynchedEntityData.Builder builder) {} @Override - public void addAdditionalSaveData(CompoundTag p_213281_1_) { - p_213281_1_.putByte("Facing", (byte) this.direction.get3DDataValue()); - p_213281_1_.putByte("Orientation", (byte) this.verticalOrientation.get3DDataValue()); - p_213281_1_.putInt("Size", size); - super.addAdditionalSaveData(p_213281_1_); + protected void addAdditionalSaveData(ValueOutput output) { + output.putByte("Facing", (byte) this.getDirection().get3DDataValue()); + output.putByte("Orientation", (byte) this.verticalOrientation.get3DDataValue()); + output.putInt("Size", size); + super.addAdditionalSaveData(output); } @Override - public void readAdditionalSaveData(CompoundTag p_70037_1_) { - if (p_70037_1_.contains("Facing", Tag.TAG_ANY_NUMERIC)) { - this.direction = Direction.from3DDataValue(p_70037_1_.getByte("Facing")); - this.verticalOrientation = Direction.from3DDataValue(p_70037_1_.getByte("Orientation")); - this.size = p_70037_1_.getInt("Size"); - } else { - this.direction = Direction.SOUTH; - this.verticalOrientation = Direction.DOWN; - this.size = 1; - } - super.readAdditionalSaveData(p_70037_1_); - this.updateFacingWithBoundingBox(this.direction, this.verticalOrientation); + protected void readAdditionalSaveData(ValueInput input) { + setDirectionRaw(Direction.from3DDataValue(input.getByteOr("Facing", (byte) Direction.SOUTH.get3DDataValue()))); + this.verticalOrientation = Direction.from3DDataValue(input.getByteOr("Orientation", (byte) Direction.DOWN.get3DDataValue())); + this.size = input.getIntOr("Size", 1); + super.readAdditionalSaveData(input); + this.updateFacingWithBoundingBox(this.getDirection(), this.verticalOrientation); } protected void updateFacingWithBoundingBox(Direction facing, Direction verticalOrientation) { Objects.requireNonNull(facing); - this.direction = facing; + this.setDirectionRaw(facing); this.verticalOrientation = verticalOrientation; if (facing.getAxis() .isHorizontal()) { setXRot(0.0F); - setYRot(this.direction.get2DDataValue() * 90); + setYRot(this.getDirection().get2DDataValue() * 90); } else { setXRot(-90 * facing.getAxisDirection() .getStep()); @@ -153,7 +150,7 @@ public EntityDimensions getDimensions(Pose pose) { protected AABB calculateBoundingBox(BlockPos blockPos, Direction direction) { Vec3 pos = Vec3.atLowerCornerOf(getPos()) .add(.5, .5, .5) - .subtract(Vec3.atLowerCornerOf(direction.getNormal()) + .subtract(Vec3.atLowerCornerOf(direction.getUnitVec3i()) .scale(0.46875)); double d1 = pos.x; double d2 = pos.y; @@ -163,15 +160,15 @@ protected AABB calculateBoundingBox(BlockPos blockPos, Direction direction) { Axis axis = direction.getAxis(); if (size == 2) pos = pos.add(Vec3.atLowerCornerOf(axis.isHorizontal() ? direction.getCounterClockWise() - .getNormal() + .getUnitVec3i() : verticalOrientation.getClockWise() - .getNormal()) + .getUnitVec3i()) .scale(0.5)) .add(Vec3 - .atLowerCornerOf(axis.isHorizontal() ? Direction.UP.getNormal() - : direction == Direction.UP ? verticalOrientation.getNormal() + .atLowerCornerOf(axis.isHorizontal() ? Direction.UP.getUnitVec3i() + : direction == Direction.UP ? verticalOrientation.getUnitVec3i() : verticalOrientation.getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(0.5)); d1 = pos.x; @@ -181,7 +178,7 @@ protected AABB calculateBoundingBox(BlockPos blockPos, Direction direction) { double d4 = (double) this.getWidth(); double d5 = (double) this.getHeight(); double d6 = (double) this.getWidth(); - Direction.Axis direction$axis = this.direction.getAxis(); + Direction.Axis direction$axis = this.getDirection().getAxis(); switch (direction$axis) { case X: d4 = 1.0D; @@ -202,8 +199,8 @@ protected AABB calculateBoundingBox(BlockPos blockPos, Direction direction) { @Override protected void recalculateBoundingBox() { - if (this.direction != null && this.verticalOrientation != null) { - setBoundingBox(calculateBoundingBox(pos, direction)); + if (this.getDirection() != null && this.verticalOrientation != null) { + setBoundingBox(calculateBoundingBox(pos, this.getDirection())); } } @Override @@ -219,7 +216,8 @@ public boolean survives() { int i = Math.max(1, this.getWidth() / 16); int j = Math.max(1, this.getHeight() / 16); - BlockPos blockpos = this.pos.relative(this.direction.getOpposite()); + Direction direction = this.getDirection(); + BlockPos blockpos = this.pos.relative(direction.getOpposite()); Direction upDirection = direction.getAxis() .isHorizontal() ? Direction.UP : direction == Direction.UP ? verticalOrientation : verticalOrientation.getOpposite(); @@ -235,7 +233,7 @@ public boolean survives() { .move(newDirection, k + i1) .move(upDirection, l + j1); BlockState blockstate = this.level().getBlockState(blockpos$mutable); - if (Block.canSupportCenter(this.level(), blockpos$mutable, this.direction)) + if (Block.canSupportCenter(this.level(), blockpos$mutable, direction)) continue; if (!blockstate.isSolid() && !DiodeBlock.isDiode(blockstate)) { return false; @@ -243,7 +241,8 @@ public boolean survives() { } } - return this.level().getEntities(this, this.getBoundingBox(), HANGING_ENTITY) + return this.level() + .getEntitiesOfClass(HangingEntity.class, this.getBoundingBox(), entity -> entity != this) .isEmpty(); } @@ -257,7 +256,7 @@ public int getHeight() { @Override public boolean skipAttackInteraction(Entity source) { - if (!(source instanceof Player player) || level().isClientSide) + if (!(source instanceof Player player) || level().isClientSide()) return super.skipAttackInteraction(source); double attrib = player.getAttributeValue(Attributes.BLOCK_INTERACTION_RANGE) + (player.isCreative() ? 0 : -0.5F); @@ -284,9 +283,9 @@ public boolean skipAttackInteraction(Entity source) { } @Override - public void dropItem(@Nullable Entity p_110128_1_) { - if (!level().getGameRules() - .getBoolean(GameRules.RULE_DOENTITYDROPS)) + public void dropItem(ServerLevel level, @Nullable Entity p_110128_1_) { + if (!level.getGameRules() + .get(GameRules.ENTITY_DROPS)) return; playSound(SoundEvents.PAINTING_BREAK, 1.0F, 1.0F); @@ -295,10 +294,9 @@ public void dropItem(@Nullable Entity p_110128_1_) { return; } - spawnAtLocation(AllItems.CRAFTING_BLUEPRINT.asStack()); + spawnAtLocation(level, AllItems.CRAFTING_BLUEPRINT.asStack(), 0); } - @Override public ItemStack getPickedResult(HitResult target) { return AllItems.CRAFTING_BLUEPRINT.asStack(); } @@ -313,13 +311,10 @@ public void playPlacementSound() { this.playSound(SoundEvents.PAINTING_PLACE, 1.0F, 1.0F); } - @Override public void moveTo(double p_70012_1_, double p_70012_3_, double p_70012_5_, float p_70012_7_, float p_70012_8_) { this.setPos(p_70012_1_, p_70012_3_, p_70012_5_); } - @Override - @OnlyIn(Dist.CLIENT) public void lerpTo(double pX, double pY, double pZ, float pYRot, float pXRot, int pSteps) { BlockPos blockpos = this.pos.offset(BlockPos.containing(pX - this.getX(), pY - this.getY(), pZ - this.getZ())); @@ -328,20 +323,23 @@ public void lerpTo(double pX, double pY, double pZ, float pYRot, float pXRot, in @Override public void writeSpawnData(RegistryFriendlyByteBuf registryFriendlyByteBuf) { - CompoundTag compound = new CompoundTag(); - addAdditionalSaveData(compound); + CompoundTag compound = LegacyBlockEntityTagBridge.output(registryAccess(), this::addAdditionalSaveData); registryFriendlyByteBuf.writeNbt(compound); registryFriendlyByteBuf.writeNbt(getPersistentData()); } @Override public void readSpawnData(RegistryFriendlyByteBuf registryFriendlyByteBuf) { - readAdditionalSaveData(registryFriendlyByteBuf.readNbt()); - getPersistentData().merge(registryFriendlyByteBuf.readNbt()); + CompoundTag entityData = registryFriendlyByteBuf.readNbt(); + if (entityData != null) + readAdditionalSaveData(LegacyBlockEntityTagBridge.input(entityData, registryAccess())); + CompoundTag persistentData = registryFriendlyByteBuf.readNbt(); + if (persistentData != null) + getPersistentData().merge(persistentData); } @Override - public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand hand) { + public InteractionResult interact(Player player, InteractionHand hand, Vec3 vec) { if (player instanceof FakePlayer) return InteractionResult.PASS; @@ -349,8 +347,9 @@ public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand han BlueprintSection section = getSectionAt(vec); ItemStackHandler items = section.getItems(); - if (!holdingWrench && !level().isClientSide && !items.getStackInSlot(9) + if (!holdingWrench && !level().isClientSide() && !items.getStackInSlot(9) .isEmpty()) { + ServerLevel serverLevel = (ServerLevel) level(); IItemHandlerModifiable playerInv = new InvWrapper(player.getInventory()); boolean firstPass = true; @@ -392,10 +391,10 @@ public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand han CraftingContainer craftingInventory = new BlueprintCraftingInventory(craftingGrid); if (!recipe.isPresent()) - recipe = level().getRecipeManager() - .getRecipeFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), level()); + recipe = serverLevel.recipeAccess() + .getRecipeFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), serverLevel); ItemStack result = recipe.filter(r -> r.value().matches(craftingInventory.asCraftInput(), level())) - .map(r -> r.value().assemble(craftingInventory.asCraftInput(), registryAccess())) + .map(r -> r.value().assemble(craftingInventory.asCraftInput())) .orElse(ItemStack.EMPTY); if (result.isEmpty()) { @@ -404,10 +403,11 @@ public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand han success = false; } else { amountCrafted += result.getCount(); - result.onCraftedBy(player.level(), player, 1); + result.onCraftedBy(player, 1); EventHooks.firePlayerCraftingEvent(player, result, craftingInventory); - NonNullList nonnulllist = level().getRecipeManager() - .getRemainingItemsFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), level()); + NonNullList nonnulllist = recipe.map(r -> r.value() + .getRemainingItems(craftingInventory.asCraftInput())) + .orElseGet(NonNullList::create); if (firstPass) level().playSound(null, player.blockPosition(), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, @@ -433,7 +433,7 @@ public InteractionResult interactAt(Player player, Vec3 vec, InteractionHand han } int i = section.index; - if (!level().isClientSide && player instanceof ServerPlayer) { + if (!level().isClientSide() && player instanceof ServerPlayer) { player.openMenu(section, buf -> { buf.writeVarInt(getId()); buf.writeVarInt(i); @@ -489,7 +489,7 @@ public CompoundTag getOrCreateRecipeCompound() { CompoundTag persistentData = getPersistentData(); if (!persistentData.contains("Recipes")) persistentData.put("Recipes", new CompoundTag()); - return persistentData.getCompound("Recipes"); + return persistentData.getCompoundOrEmpty("Recipes"); } private Map sectionCache = new HashMap<>(); @@ -517,19 +517,19 @@ public Couple getDisplayItems() { public ItemStackHandler getItems() { ItemStackHandler newInv = new ItemStackHandler(11); CompoundTag list = getOrCreateRecipeCompound(); - CompoundTag invNBT = list.getCompound(index + ""); - inferredIcon = list.getBoolean("InferredIcon"); + CompoundTag invNBT = list.getCompoundOrEmpty(index + ""); + inferredIcon = list.getBooleanOr("InferredIcon", false); if (!invNBT.isEmpty()) - newInv.deserializeNBT(registryAccess(), invNBT); + newInv.deserialize(LegacyBlockEntityTagBridge.input(invNBT, registryAccess())); return newInv; } public void save(ItemStackHandler inventory) { CompoundTag list = getOrCreateRecipeCompound(); - list.put(index + "", inventory.serializeNBT(registryAccess())); + list.put(index + "", LegacyBlockEntityTagBridge.output(registryAccess(), inventory::serialize)); list.putBoolean("InferredIcon", inferredIcon); cachedDisplayItems = null; - if (!level().isClientSide) + if (!level().isClientSide()) syncPersistentDataWithTracking(BlueprintEntity.this); } @@ -549,7 +549,7 @@ public AbstractContainerMenu createMenu(int id, Inventory inv, Player player) { @Override public Component getDisplayName() { return AllItems.CRAFTING_BLUEPRINT.get() - .getDescription(); + .getName(AllItems.CRAFTING_BLUEPRINT.asStack()); } @Override @@ -566,7 +566,7 @@ public void onPersistentDataUpdated() { @Override public boolean canPlayerUse(Player player) { - return player.canInteractWithEntity(this, 8); + return player.isWithinEntityInteractionRange(this, 8); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintItem.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintItem.java index fa323517c2..5e3a5ddf83 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintItem.java @@ -3,7 +3,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; +import com.mojang.datafixers.util.Either; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllItems; import com.simibubi.create.content.logistics.filter.AttributeFilterWhitelistMode; @@ -14,23 +16,24 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.NonNullList; import net.minecraft.core.component.DataComponents; import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.decoration.HangingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.TypedEntityData; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.Ingredient.ItemValue; -import net.minecraft.world.item.crafting.Ingredient.TagValue; -import net.minecraft.world.item.crafting.Ingredient.Value; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraft.world.item.crafting.display.SlotDisplayContext; import net.minecraft.world.level.Level; import net.neoforged.neoforge.common.crafting.CompoundIngredient; @@ -56,33 +59,42 @@ public InteractionResult useOn(UseOnContext ctx) { Level world = ctx.getLevel(); HangingEntity hangingentity = new BlueprintEntity(world, pos, face, face.getAxis() .isHorizontal() ? Direction.DOWN : ctx.getHorizontalDirection()); - CustomData customData = stack.get(DataComponents.CUSTOM_DATA); + TypedEntityData> customData = stack.get(DataComponents.ENTITY_DATA); if (customData != null) EntityType.updateCustomEntityTag(world, player, hangingentity, customData); if (!hangingentity.survives()) return InteractionResult.CONSUME; - if (!world.isClientSide) { + if (!world.isClientSide()) { hangingentity.playPlacementSound(); world.addFreshEntity(hangingentity); } stack.shrink(1); - return InteractionResult.sidedSuccess(world.isClientSide); + return (world.isClientSide() ? InteractionResult.SUCCESS : InteractionResult.SUCCESS_SERVER); } public static void assignCompleteRecipe(Level level, ItemStackHandler inv, Recipe recipe) { - NonNullList ingredients = recipe.getIngredients(); + List ingredients = recipe.placementInfo() + .ingredients(); for (int i = 0; i < 9; i++) inv.setStackInSlot(i, ItemStack.EMPTY); - inv.setStackInSlot(9, recipe.getResultItem(level.registryAccess())); + inv.setStackInSlot(9, recipe.display() + .stream() + .findFirst() + .map(display -> display.result() + .resolveForFirstStack(SlotDisplayContext.fromLevel(level))) + .orElse(ItemStack.EMPTY)); if (recipe instanceof ShapedRecipe shapedRecipe) { + List> shapedIngredients = shapedRecipe.getIngredients(); for (int row = 0; row < shapedRecipe.getHeight(); row++) for (int col = 0; col < shapedRecipe.getWidth(); col++) inv.setStackInSlot(row * 3 + col, - convertIngredientToFilter(ingredients.get(row * shapedRecipe.getWidth() + col))); + shapedIngredients.get(row * shapedRecipe.getWidth() + col) + .map(BlueprintItem::convertIngredientToFilter) + .orElse(ItemStack.EMPTY)); } else { for (int i = 0; i < ingredients.size(); i++) inv.setStackInSlot(i, convertIngredientToFilter(ingredients.get(i))); @@ -91,54 +103,57 @@ public static void assignCompleteRecipe(Level level, ItemStackHandler inv, Recip private static ItemStack convertIngredientToFilter(Ingredient ingredient) { boolean isCompoundIngredient = ingredient.getCustomIngredient() instanceof CompoundIngredient; - Value[] acceptedItems = ingredient.values; - if (acceptedItems == null || acceptedItems.length > 18) + if (ingredient.isEmpty()) return ItemStack.EMPTY; - if (acceptedItems.length == 0) - return ItemStack.EMPTY; - if (acceptedItems.length == 1) - return convertIItemListToFilter(acceptedItems[0], isCompoundIngredient); - ItemStack result = AllItems.FILTER.asStack(); - ItemStackHandler filterItems = AllItems.FILTER.get().getFilterItemHandler(result); - for (int i = 0; i < acceptedItems.length; i++) - filterItems.setStackInSlot(i, convertIItemListToFilter(acceptedItems[i], isCompoundIngredient)); - result.set(AllDataComponents.FILTER_ITEMS, ItemHelper.containerContentsFromHandler(filterItems)); - return result; - } + if (!ingredient.isCustom()) { + HolderSet values = ingredient.getValues(); + if (values.size() > 18) + return ItemStack.EMPTY; - private static ItemStack convertIItemListToFilter(Value itemList, boolean isCompoundIngredient) { - Collection stacks = itemList.getItems(); - if (itemList instanceof ItemValue) { - for (ItemStack itemStack : stacks) - return itemStack; - } + Either, List>> unwrapped = values.unwrap(); + if (unwrapped.left().isPresent()) + return convertTagToFilter(unwrapped.left().get()); - if (itemList instanceof TagValue tagValue) { - ItemStack filterItem = AllItems.ATTRIBUTE_FILTER.asStack(); - filterItem.set(AllDataComponents.ATTRIBUTE_FILTER_WHITELIST_MODE, AttributeFilterWhitelistMode.WHITELIST_DISJ); - List attributes = new ArrayList<>(); - ItemAttribute at = new InTagAttribute(ItemTags.create(tagValue.tag().location())); - attributes.add(new ItemAttribute.ItemAttributeEntry(at, false)); - filterItem.set(AllDataComponents.ATTRIBUTE_FILTER_MATCHED_ATTRIBUTES, attributes); - return filterItem; - } + List> holders = unwrapped.right().orElse(List.of()); + if (holders.size() == 1) + return new ItemStack(holders.get(0)); - if (isCompoundIngredient) { ItemStack result = AllItems.FILTER.asStack(); ItemStackHandler filterItems = AllItems.FILTER.get().getFilterItemHandler(result); - int i = 0; - for (ItemStack itemStack : stacks) { - if (i >= 18) - break; - filterItems.setStackInSlot(i++, itemStack); - } + for (int i = 0; i < holders.size(); i++) + filterItems.setStackInSlot(i, new ItemStack(holders.get(i))); result.set(AllDataComponents.FILTER_ITEMS, ItemHelper.containerContentsFromHandler(filterItems)); - result.set(AllDataComponents.FILTER_ITEMS_RESPECT_NBT, true); return result; } - return ItemStack.EMPTY; + Collection acceptedItems = ingredient.items() + .map(ItemStack::new) + .toList(); + if (acceptedItems.size() > 18) + return ItemStack.EMPTY; + if (acceptedItems.size() == 1 && !isCompoundIngredient) + return acceptedItems.iterator().next(); + + ItemStack result = AllItems.FILTER.asStack(); + ItemStackHandler filterItems = AllItems.FILTER.get().getFilterItemHandler(result); + int i = 0; + for (ItemStack itemStack : acceptedItems) + filterItems.setStackInSlot(i++, itemStack); + result.set(AllDataComponents.FILTER_ITEMS, ItemHelper.containerContentsFromHandler(filterItems)); + if (isCompoundIngredient) + result.set(AllDataComponents.FILTER_ITEMS_RESPECT_NBT, true); + return result; + } + + private static ItemStack convertTagToFilter(TagKey tag) { + ItemStack filterItem = AllItems.ATTRIBUTE_FILTER.asStack(); + filterItem.set(AllDataComponents.ATTRIBUTE_FILTER_WHITELIST_MODE, AttributeFilterWhitelistMode.WHITELIST_DISJ); + List attributes = new ArrayList<>(); + ItemAttribute at = new InTagAttribute(ItemTags.create(tag.location())); + attributes.add(new ItemAttribute.ItemAttributeEntry(at, false)); + filterItem.set(AllDataComponents.ATTRIBUTE_FILTER_MATCHED_ATTRIBUTES, attributes); + return filterItem; } } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintMenu.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintMenu.java index c89405a6d1..379378b007 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintMenu.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintMenu.java @@ -8,6 +8,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Inventory; @@ -23,7 +24,6 @@ import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.SlotItemHandler; @@ -66,14 +66,13 @@ protected void addSlots() { public void onCraftMatrixChanged() { Level level = contentHolder.getBlueprintWorld(); - if (level.isClientSide) + if (level.isClientSide()) return; ServerPlayer serverplayerentity = (ServerPlayer) player; CraftingContainer craftingInventory = new BlueprintCraftingInventory(this, ghostInventory); - Optional> optional = player.getServer() - .getRecipeManager() - .getRecipeFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), player.getCommandSenderWorld()); + Optional> optional = ((ServerLevel) level).recipeAccess() + .getRecipeFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), level); if (!optional.isPresent()) { if (ghostInventory.getStackInSlot(9) @@ -89,7 +88,7 @@ public void onCraftMatrixChanged() { } CraftingRecipe icraftingrecipe = optional.get().value(); - ItemStack itemstack = icraftingrecipe.assemble(craftingInventory.asCraftInput(), level.registryAccess()); + ItemStack itemstack = icraftingrecipe.assemble(craftingInventory.asCraftInput()); ghostInventory.setStackInSlot(9, itemstack); contentHolder.inferredIcon = true; ItemStack toSend = itemstack.copy(); @@ -122,7 +121,6 @@ protected void saveData(BlueprintSection contentHolder) { } @Override - @OnlyIn(Dist.CLIENT) protected BlueprintSection createOnClient(RegistryFriendlyByteBuf extraData) { int entityID = extraData.readVarInt(); int section = extraData.readVarInt(); @@ -164,7 +162,7 @@ public BlueprintCraftSlot(IItemHandler itemHandler, int index, int xPosition, in @Override public void setChanged() { super.setChanged(); - if (index == 9 && hasItem() && !contentHolder.getBlueprintWorld().isClientSide) { + if (index == 9 && hasItem() && !contentHolder.getBlueprintWorld().isClientSide()) { contentHolder.inferredIcon = false; ServerPlayer serverplayerentity = (ServerPlayer) player; serverplayerentity.connection.send(new ClientboundContainerSetSlotPacket(containerId, incrementStateId(), 36 + 9, getItem())); diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintOverlayRenderer.java index b8e319759e..98e3e3200e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintOverlayRenderer.java @@ -7,7 +7,7 @@ import java.util.Map; import java.util.Optional; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllItems; import com.simibubi.create.content.equipment.blueprint.BlueprintEntity.BlueprintCraftingInventory; import com.simibubi.create.content.equipment.blueprint.BlueprintEntity.BlueprintSection; @@ -21,16 +21,16 @@ import com.simibubi.create.content.trains.track.TrackPlacement.PlacementInfo; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.gui.screens.inventory.tooltip.TooltipRenderUtil; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; @@ -42,6 +42,7 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.GameType; import net.minecraft.world.phys.EntityHitResult; @@ -54,7 +55,7 @@ // TODO - Split up into specific overlays public class BlueprintOverlayRenderer { - public static final LayeredDraw.Layer OVERLAY = BlueprintOverlayRenderer::renderOverlay; + public static final GuiLayer OVERLAY = BlueprintOverlayRenderer::renderOverlay; static boolean active; static boolean empty; @@ -173,7 +174,7 @@ public static void displayShoppingList(Couple bakedList) { private static boolean canAfford(Player player, BigItemStack entry) { int itemsPresent = 0; - for (int i = 0; i < player.getInventory().items.size(); i++) { + for (int i = 0; i < player.getInventory().getNonEquipmentItems().size(); i++) { ItemStack item = player.getInventory() .getItem(i); if (item.isEmpty() || !ItemStack.isSameItemSameComponents(item, entry.stack)) @@ -259,10 +260,11 @@ public static void rebuild(BlueprintSection sectionAt, boolean sneak) { if (success) { CraftingContainer craftingInventory = new BlueprintCraftingInventory(craftingGrid); if (!recipe.isPresent()) - recipe = mc.level.getRecipeManager() - .getRecipeFor(RecipeType.CRAFTING, craftingInventory.asCraftInput(), mc.level); + recipe = getRecipeManager(mc) + .flatMap(recipeManager -> recipeManager.getRecipeFor(RecipeType.CRAFTING, + craftingInventory.asCraftInput(), mc.level)); ItemStack resultFromRecipe = recipe.filter(r -> r.value().matches(craftingInventory.asCraftInput(), mc.level)) - .map(r -> r.value().assemble(craftingInventory.asCraftInput(), mc.level.registryAccess())) + .map(r -> r.value().assemble(craftingInventory.asCraftInput())) .orElse(ItemStack.EMPTY); if (resultFromRecipe.isEmpty()) { @@ -317,9 +319,9 @@ public static void rebuild(BlueprintSection sectionAt, boolean sneak) { } } - public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public static void renderOverlay(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.screen != null) + if (mc.gui.hud.isHidden() || mc.gui.screen() != null) return; if (!active || empty) @@ -336,29 +338,28 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac w += 30; } - int x = (guiGraphics.guiWidth() - w) / 2; - int y = guiGraphics.guiHeight() - 100; + int x = (GuiGraphicsExtractor.guiWidth() - w) / 2; + int y = GuiGraphicsExtractor.guiHeight() - 100; if (shopContext != null) { - TooltipRenderUtil.renderTooltipBackground(guiGraphics, x - 2, y + 1, w + 4, 19, 0, 0x55_000000, 0x55_000000, 0, - 0); + GuiGraphicsExtractor.fill(x - 2, y + 1, x + w + 2, y + 20, 0x55000000); - AllGuiTextures.TRADE_OVERLAY.render(guiGraphics, guiGraphics.guiWidth() / 2 - 48, y - 19); + AllGuiTextures.TRADE_OVERLAY.render(GuiGraphicsExtractor, GuiGraphicsExtractor.guiWidth() / 2 - 48, y - 19); if (shopContext.purchases() > 0) { - guiGraphics.renderItem(AllItems.SHOPPING_LIST.asStack(), guiGraphics.guiWidth() / 2 + 20, y - 20); - guiGraphics.drawString(mc.font, Component.literal("x" + shopContext.purchases()), guiGraphics.guiWidth() / 2 + 20 + 16, + GuiGraphicsExtractor.item(AllItems.SHOPPING_LIST.asStack(), GuiGraphicsExtractor.guiWidth() / 2 + 20, y - 20); + GuiGraphicsExtractor.text(mc.font, Component.literal("x" + shopContext.purchases()), GuiGraphicsExtractor.guiWidth() / 2 + 20 + 16, y - 20 + 4, 0xff_eeeeee, true); } } // Ingredients for (Pair pair : ingredients) { - RenderSystem.enableBlend(); - (pair.getSecond() ? AllGuiTextures.HOTSLOT_ACTIVE : AllGuiTextures.HOTSLOT).render(guiGraphics, x, y); + LegacyRenderSystemBridge.enableBlend(); + (pair.getSecond() ? AllGuiTextures.HOTSLOT_ACTIVE : AllGuiTextures.HOTSLOT).render(GuiGraphicsExtractor, x, y); ItemStack itemStack = pair.getFirst(); String count = shopContext != null && !shopContext.checkout() || pair.getSecond() ? null : ChatFormatting.GOLD.toString() + itemStack.getCount(); - drawItemStack(guiGraphics, mc, x, y, itemStack, count); + drawItemStack(GuiGraphicsExtractor, mc, x, y, itemStack, count); x += 21; } @@ -367,26 +368,26 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac // Arrow x += 5; - RenderSystem.enableBlend(); + LegacyRenderSystemBridge.enableBlend(); if (invalidShop) - AllGuiTextures.HOTSLOT_ARROW_BAD.render(guiGraphics, x, y + 4); + AllGuiTextures.HOTSLOT_ARROW_BAD.render(GuiGraphicsExtractor, x, y + 4); else - AllGuiTextures.HOTSLOT_ARROW.render(guiGraphics, x, y + 4); + AllGuiTextures.HOTSLOT_ARROW.render(GuiGraphicsExtractor, x, y + 4); x += 25; // Outputs if (results.isEmpty()) { - AllGuiTextures.HOTSLOT.render(guiGraphics, x, y); + AllGuiTextures.HOTSLOT.render(GuiGraphicsExtractor, x, y); GuiGameElement.of(Items.BARRIER) .at(x + 3, y + 3) - .render(guiGraphics); + .render(GuiGraphicsExtractor); } else { for (ItemStack result : results) { AllGuiTextures slot = resultCraftable ? AllGuiTextures.HOTSLOT_SUPER_ACTIVE : AllGuiTextures.HOTSLOT; if (!invalidShop && shopContext != null && shopContext.stockLevel() > shopContext.purchases()) slot = AllGuiTextures.HOTSLOT_ACTIVE; - slot.render(guiGraphics, resultCraftable ? x - 1 : x, resultCraftable ? y - 1 : y); - drawItemStack(guiGraphics, mc, x, y, result, null); + slot.render(GuiGraphicsExtractor, resultCraftable ? x - 1 : x, resultCraftable ? y - 1 : y); + drawItemStack(GuiGraphicsExtractor, mc, x, y, result, null); x += 21; } } @@ -403,22 +404,22 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac cycle++; continue; } - if ((mc.gui.getGuiTicks() / 40) % cycle != i) + if ((AnimationTickHolder.getTicks() / 40) % cycle != i) continue; - guiGraphics.renderComponentTooltip(mc.gui.getFont(), tooltipLines, mc.getWindow() + GuiGraphicsExtractor.setComponentTooltipForNextFrame(mc.font, tooltipLines, mc.getWindow() .getGuiScaledWidth(), mc.getWindow() .getGuiScaledHeight()); } } - RenderSystem.disableBlend(); + LegacyRenderSystemBridge.disableBlend(); } - public static void drawItemStack(GuiGraphics graphics, Minecraft mc, int x, int y, ItemStack itemStack, + public static void drawItemStack(GuiGraphicsExtractor graphics, Minecraft mc, int x, int y, ItemStack itemStack, String count) { if (itemStack.getItem() instanceof FilterItem) { - int step = AnimationTickHolder.getTicks(mc.level) / 10; + int step = AnimationTickHolder.getTicks() / 10; ItemStack[] itemsMatchingFilter = getItemsMatchingFilter(itemStack); if (itemsMatchingFilter.length > 0) itemStack = itemsMatchingFilter[step % itemsMatchingFilter.length]; @@ -427,7 +428,7 @@ public static void drawItemStack(GuiGraphics graphics, Minecraft mc, int x, int GuiGameElement.of(itemStack) .at(x + 3, y + 3) .render(graphics); - graphics.renderItemDecorations(mc.font, itemStack, x + 3, y + 3, count); + graphics.itemDecorations(mc.font, itemStack, x + 3, y + 3, count); } private static ItemStack[] getItemsMatchingFilter(ItemStack filter) { @@ -440,4 +441,12 @@ private static ItemStack[] getItemsMatchingFilter(ItemStack filter) { }); } + private static Optional getRecipeManager(Minecraft mc) { + if (mc.level.recipeAccess() instanceof RecipeManager recipeManager) + return Optional.of(recipeManager); + if (mc.getSingleplayerServer() != null) + return Optional.of(mc.getSingleplayerServer().getRecipeManager()); + return Optional.empty(); + } + } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintRenderer.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintRenderer.java index a77b0ae81e..eaf95b56c8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintRenderer.java @@ -8,121 +8,34 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Couple; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; -public class BlueprintRenderer extends EntityRenderer { +public class BlueprintRenderer extends EntityRenderer { public BlueprintRenderer(EntityRendererProvider.Context context) { super(context); } - @Override public void render(BlueprintEntity entity, float yaw, float pt, PoseStack ms, MultiBufferSource buffer, int light) { - PartialModel partialModel = entity.size == 3 ? AllPartialModels.CRAFTING_BLUEPRINT_3x3 - : entity.size == 2 ? AllPartialModels.CRAFTING_BLUEPRINT_2x2 : AllPartialModels.CRAFTING_BLUEPRINT_1x1; - SuperByteBuffer sbb = CachedBuffers.partial(partialModel, Blocks.AIR.defaultBlockState()); - sbb.rotateYDegrees(-yaw) - .rotateXDegrees(90.0F + entity.getXRot()) - .translate(-.5, -1 / 32f, -.5); - if (entity.size == 2) - sbb.translate(.5, 0, -.5); - - sbb.disableDiffuse() - .light(light) - .renderInto(ms, buffer.getBuffer(Sheets.solidBlockSheet())); - super.render(entity, yaw, pt, ms, buffer, light); - - ms.pushPose(); - - float fakeNormalXRotation = -15; - int bl = light >> 4 & 0xf; - int sl = light >> 20 & 0xf; - boolean vertical = entity.getXRot() != 0; - if (entity.getXRot() == -90) - fakeNormalXRotation = -45; - else if (entity.getXRot() == 90 || yaw % 180 != 0) { - bl /= 1.35; - sl /= 1.35; - } - int itemLight = Mth.floor(sl + .5) << 20 | (Mth.floor(bl + .5) & 0xf) << 4; - - TransformStack.of(ms) - .rotateYDegrees(vertical ? 0 : -yaw) - .rotateXDegrees(fakeNormalXRotation); - Matrix3f copy = new Matrix3f(ms.last() - .normal()); - - ms.popPose(); - ms.pushPose(); - - TransformStack.of(ms) - .rotateYDegrees(-yaw) - .rotateXDegrees(entity.getXRot()) - .translate(0, 0, 1 / 32f + .001); - - if (entity.size == 3) - ms.translate(-1, -1, 0); - - PoseStack squashedMS = new PoseStack(); - squashedMS.last() - .pose() - .mul(ms.last() - .pose()); - - for (int x = 0; x < entity.size; x++) { - squashedMS.pushPose(); - for (int y = 0; y < entity.size; y++) { - BlueprintSection section = entity.getSection(x * entity.size + y); - Couple displayItems = section.getDisplayItems(); - squashedMS.pushPose(); - squashedMS.scale(.5f, .5f, 1 / 1024f); - displayItems.forEachWithContext((stack, primary) -> { - if (stack.isEmpty()) - return; - - squashedMS.pushPose(); - if (!primary) { - squashedMS.translate(0.325f, -0.325f, 1); - squashedMS.scale(.625f, .625f, 1); - } - - squashedMS.last() - .normal() - .set(copy); - - Minecraft.getInstance() - .getItemRenderer() - .renderStatic(stack, ItemDisplayContext.GUI, itemLight, OverlayTexture.NO_OVERLAY, squashedMS, - buffer, entity.level(), 0); - squashedMS.popPose(); - }); - squashedMS.popPose(); - squashedMS.translate(1, 0, 0); - } - squashedMS.popPose(); - squashedMS.translate(0, 1, 0); - } - - ms.popPose(); + // TODO 26.2: Port blueprint rendering to EntityRenderer#submit. } @Override - public ResourceLocation getTextureLocation(BlueprintEntity entity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } - } diff --git a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintScreen.java b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintScreen.java index ba93df996a..90eeeafdc9 100644 --- a/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/blueprint/BlueprintScreen.java @@ -8,11 +8,11 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen; import com.simibubi.create.foundation.gui.widget.IconButton; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -63,7 +63,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int invX = getLeftOfCentered(PLAYER_INVENTORY.getWidth()); int invY = topPos + background.getHeight() + 4; renderPlayerInventory(graphics, invX, invY); @@ -72,7 +72,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in int y = topPos; background.render(graphics, x, y); - graphics.drawString(font, title, x + 15, y + 4, 0xFFFFFF, false); + graphics.text(font, title, x + 15, y + 4, 0xFFFFFF, false); GuiGameElement.of(AllPartialModels.CRAFTING_BLUEPRINT_1x1).at(x + background.getWidth() + 20, y + background.getHeight() - 32, 0) @@ -82,7 +82,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in } @Override - protected void renderTooltip(GuiGraphics graphics, int x, int y) { + protected void renderTooltip(GuiGraphicsExtractor graphics, int x, int y) { if (!menu.getCarried() .isEmpty() || this.hoveredSlot == null || hoveredSlot.container == menu.playerInventory) { super.renderTooltip(graphics, x, y); @@ -93,7 +93,7 @@ protected void renderTooltip(GuiGraphics graphics, int x, int y) { if (hoveredSlot.hasItem()) list = getTooltipFromContainerItem(hoveredSlot.getItem()); - graphics.renderComponentTooltip(font, addToTooltip(list, hoveredSlot.getSlotIndex(), true), x, y); + graphics.setComponentTooltipForNextFrame(font, addToTooltip(list, hoveredSlot.getSlotIndex(), true), x, y); } private List addToTooltip(List list, int slot, boolean isEmptySlot) { @@ -160,7 +160,7 @@ protected void containerTick() { protected void contentsCleared() {} protected void sendOptionUpdate(Option option) { - CatnipServices.NETWORK.sendToServer(new FilterScreenPacket(option)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new FilterScreenPacket(option)); } @Override diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlock.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlock.java index cc6a302b8b..a5f667255d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlock.java @@ -12,12 +12,10 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.component.DataComponentMap; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -27,6 +25,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.ShulkerBoxBlock; @@ -43,8 +42,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.util.FakePlayer; public class ClipboardBlock extends FaceAttachedHorizontalDirectionalBlock @@ -99,17 +96,11 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP return onBlockEntityUse(level, pos, cbe -> { if (level.isClientSide()) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> openScreen(player, cbe.components(), pos)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ClipboardClient.openScreen(player, cbe.components(), pos)); return InteractionResult.SUCCESS; }); } - @OnlyIn(Dist.CLIENT) - private void openScreen(Player player, DataComponentMap components, BlockPos pos) { - if (Minecraft.getInstance().player == player) - ScreenOpener.open(new ClipboardScreen(player.getInventory().selected, components, pos)); - } - @Override public void attack(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer) { breakAndCollect(pState, pLevel, pPos, pPlayer); @@ -118,15 +109,15 @@ public void attack(BlockState pState, Level pLevel, BlockPos pPos, Player pPlaye private void breakAndCollect(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer) { if (pPlayer instanceof FakePlayer) return; - if (pLevel.isClientSide) + if (pLevel.isClientSide()) return; - ItemStack cloneItemStack = getCloneItemStack(pLevel, pPos, pState); + ItemStack cloneItemStack = getCloneItemStack(pLevel, pPos, pState, true); pLevel.destroyBlock(pPos, false); if (pLevel.getBlockState(pPos) != pState) { Inventory inv = pPlayer.getInventory(); - ItemStack selected = inv.getSelected(); + ItemStack selected = inv.getSelectedItem(); if (selected.isEmpty()) { - inv.setItem(inv.selected, cloneItemStack); + inv.setItem(inv.getSelectedSlot(), cloneItemStack); } else { inv.placeItemBackInInventory(cloneItemStack); } @@ -134,7 +125,7 @@ private void breakAndCollect(BlockState pState, Level pLevel, BlockPos pPos, Pla } @Override - public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData) { return applyComponentsToDropStack(new ItemStack(this), level.getBlockEntity(pos)); } @@ -142,7 +133,7 @@ public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState s public BlockState playerWillDestroy(Level level, BlockPos pos, BlockState state, Player player) { if (!(level.getBlockEntity(pos) instanceof ClipboardBlockEntity cbe)) return state; - if (level.isClientSide || player.isCreative()) + if (level.isClientSide() || player.isCreative()) return state; Block.popResource(level, pos, applyComponentsToDropStack(new ItemStack(this), cbe)); @@ -173,10 +164,9 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - updateWater(pLevel, pState, pCurrentPos); - return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); + return super.updateShape(pState, pLevel, ticks, pCurrentPos, pFacing, pFacingPos, pFacingState, random); } @Override diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockEntity.java index 9efe4979b4..f9dfae7e9d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockEntity.java @@ -9,8 +9,9 @@ import com.simibubi.create.content.logistics.AddressEditBoxHelper; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -22,7 +23,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ClipboardBlockEntity extends SmartBlockEntity { private UUID lastEdit; @@ -76,7 +76,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean .ifPresent(encoded -> tag.put("components", encoded)); if (lastEdit != null) - tag.putUUID("LastEdit", lastEdit); + LegacyNbtUtilsBridge.putUUID(tag, "LastEdit", lastEdit); } } @@ -86,7 +86,8 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c if (clientPacket) { if (tag.contains("components")) - DataComponentMap.CODEC.decode(registries.createSerializationContext(NbtOps.INSTANCE), tag.getCompound("components")) + DataComponentMap.CODEC.decode(registries.createSerializationContext(NbtOps.INSTANCE), + tag.getCompoundOrEmpty("components")) .result() .map(Pair::getFirst) .ifPresent(this::setComponents); @@ -95,12 +96,11 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c } } - @OnlyIn(Dist.CLIENT) private void readClientSide(CompoundTag tag) { Minecraft mc = Minecraft.getInstance(); - if (!(mc.screen instanceof ClipboardScreen cs)) + if (!(mc.gui.screen() instanceof ClipboardScreen cs)) return; - if (tag.contains("LastEdit") && tag.getUUID("LastEdit") + if (tag.contains("LastEdit") && LegacyNbtUtilsBridge.getUUID(tag, "LastEdit") .equals(mc.player.getUUID())) return; if (!worldPosition.equals(cs.targetedBlock)) @@ -108,7 +108,6 @@ private void readClientSide(CompoundTag tag) { cs.reopenWith(components().getOrDefault(AllDataComponents.CLIPBOARD_CONTENT, ClipboardContent.EMPTY)); } - @OnlyIn(Dist.CLIENT) private void advertiseToAddressHelper() { AddressEditBoxHelper.advertiseClipboard(this); } diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockItem.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockItem.java index ee19ac9374..13b469b924 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardBlockItem.java @@ -6,15 +6,11 @@ import com.simibubi.create.content.equipment.clipboard.ClipboardOverrides.ClipboardType; import com.simibubi.create.foundation.recipe.ItemCopyingRecipe.SupportsItemCopying; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; -import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.component.DataComponentType; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -23,9 +19,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class ClipboardBlockItem extends BlockItem implements SupportsItemCopying { public ClipboardBlockItem(Block pBlock, Properties pProperties) { @@ -40,7 +33,7 @@ public InteractionResult useOn(UseOnContext context) { return InteractionResult.PASS; if (player.isShiftKeyDown()) return super.useOn(context); - return use(context.getLevel(), player, context.getHand()).getResult(); + return use(context.getLevel(), player, context.getHand()); } @Override @@ -55,29 +48,23 @@ protected boolean updateCustomBlockEntityTag(BlockPos pPos, Level pLevel, Player } @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { ItemStack heldItem = player.getItemInHand(hand); if (hand == InteractionHand.OFF_HAND) - return InteractionResultHolder.pass(heldItem); + return InteractionResult.PASS; player.getCooldowns() - .addCooldown(heldItem.getItem(), 10); - if (world.isClientSide) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> openScreen(player, heldItem.getComponents())); + .addCooldown(heldItem, 10); + if (world.isClientSide()) + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ClipboardClient.openScreen(player, heldItem.getComponents(), null)); ClipboardContent content = heldItem.getOrDefault(AllDataComponents.CLIPBOARD_CONTENT, ClipboardContent.EMPTY); heldItem.set(AllDataComponents.CLIPBOARD_CONTENT, content.setType(ClipboardType.EDITING)); - return InteractionResultHolder.success(heldItem); - } - - @OnlyIn(Dist.CLIENT) - private void openScreen(Player player, DataComponentMap components) { - if (Minecraft.getInstance().player == player) - ScreenOpener.open(new ClipboardScreen(player.getInventory().selected, components, null)); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldItem); } public void registerModelOverrides() { - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ClipboardOverrides.registerModelOverridesClient(this)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ClipboardClient.registerModelOverrides(this)); } @Override diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardClient.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardClient.java new file mode 100644 index 0000000000..e82b6f4182 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardClient.java @@ -0,0 +1,126 @@ +package com.simibubi.create.content.equipment.clipboard; + +import java.util.ArrayList; +import java.util.List; + +import org.jetbrains.annotations.Nullable; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllDataComponents; +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.utility.CreateLang; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ExtractBlockOutlineRenderStateEvent; + +@EventBusSubscriber(Dist.CLIENT) +public class ClipboardClient { + + public static void openScreen(Player player, DataComponentMap components, @Nullable BlockPos pos) { + if (Minecraft.getInstance().player == player) + ScreenOpener.open(new ClipboardScreen(player.getInventory().getSelectedSlot(), components, pos)); + } + + public static void registerModelOverrides(ClipboardBlockItem item) { + ClipboardOverrides.registerModelOverridesClient(item); + } + + @SubscribeEvent + public static void drawCustomBlockSelection(ExtractBlockOutlineRenderStateEvent event) { + Minecraft mc = Minecraft.getInstance(); + BlockHitResult target = event.getHitResult(); + BlockPos pos = event.getBlockPos(); + BlockState blockstate = event.getBlockState(); + + if (mc.player == null || mc.player.isSpectator()) + return; + if (!mc.level.getWorldBorder() + .isWithinBounds(pos)) + return; + if (!AllBlocks.CLIPBOARD.isIn(mc.player.getMainHandItem())) + return; + if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) + return; + if (!(smartBE instanceof ClipboardBlockEntity) && smartBE.getAllBehaviours() + .stream() + .noneMatch(b -> b instanceof ClipboardCloneable cc + && cc.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection())) + && !(smartBE instanceof ClipboardCloneable)) + return; + + VoxelShape shape = blockstate.getShape(mc.level, pos); + if (shape.isEmpty()) + return; + + event.setCanceled(true); + // TODO 26.2: Rebuild the clipboard clone outline through CustomBlockOutlineRenderer. + } + + public static void clientTick() { + Minecraft mc = Minecraft.getInstance(); + if (!(mc.hitResult instanceof BlockHitResult target)) + return; + if (!AllBlocks.CLIPBOARD.isIn(mc.player.getMainHandItem())) + return; + BlockPos pos = target.getBlockPos(); + if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) + return; + + if (smartBE instanceof ClipboardBlockEntity) { + List tip = new ArrayList<>(); + tip.add(CreateLang.translateDirect("clipboard.actions")); + tip.add(CreateLang.translateDirect("clipboard.copy_other_clipboard", Component.keybind("key.use"))); + CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip); + return; + } + + ClipboardContent content = mc.player.getMainHandItem() + .get(AllDataComponents.CLIPBOARD_CONTENT); + if (content == null) + return; + + CompoundTag tagElement = content.copiedValues().orElse(null); + + boolean canCopy = smartBE.getAllBehaviours() + .stream() + .anyMatch(b -> b instanceof ClipboardCloneable cc + && cc.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection())) + || smartBE instanceof ClipboardCloneable ccbe + && ccbe.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection()); + + boolean canPaste = tagElement != null && (smartBE.getAllBehaviours() + .stream() + .anyMatch(b -> b instanceof ClipboardCloneable cc && cc.readFromClipboard(mc.level.registryAccess(), + tagElement.getCompoundOrEmpty(cc.getClipboardKey()), mc.player, target.getDirection(), true)) + || smartBE instanceof ClipboardCloneable ccbe && ccbe.readFromClipboard(mc.level.registryAccess(), + tagElement.getCompoundOrEmpty(ccbe.getClipboardKey()), mc.player, target.getDirection(), true)); + + if (!canCopy && !canPaste) + return; + + List tip = new ArrayList<>(); + tip.add(CreateLang.translateDirect("clipboard.actions")); + if (canCopy) + tip.add(CreateLang.translateDirect("clipboard.to_copy", Component.keybind("key.use"))); + if (canPaste) + tip.add(CreateLang.translateDirect("clipboard.to_paste", Component.keybind("key.attack"))); + + CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardContent.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardContent.java index df308a4319..130ee79afc 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardContent.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardContent.java @@ -7,7 +7,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.content.equipment.clipboard.ClipboardOverrides.ClipboardType; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardEditPacket.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardEditPacket.java index b194d58ef6..8a7bc78780 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardEditPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardEditPacket.java @@ -8,8 +8,8 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllPackets; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.nbt.NBTProcessors; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.core.BlockPos; import net.minecraft.core.component.PatchedDataComponentMap; @@ -19,6 +19,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; public record ClipboardEditPacket(int hotbarSlot, @Nullable ClipboardContent clipboardContent, @Nullable BlockPos targetedBlock) implements ServerboundPacketPayload { @@ -37,7 +38,7 @@ public void handle(ServerPlayer sender) { Level world = sender.level(); if (!world.isLoaded(targetedBlock)) return; - if (!sender.canInteractWithBlock(targetedBlock, 20)) + if (sender.distanceToSqr(Vec3.atCenterOf(targetedBlock)) > 20 * 20) return; if (world.getBlockEntity(targetedBlock) instanceof ClipboardBlockEntity cbe) { PatchedDataComponentMap map = new PatchedDataComponentMap(cbe.components()); diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardOverrides.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardOverrides.java index 3a932e7e46..1603474cd3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardOverrides.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardOverrides.java @@ -6,21 +6,19 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.Create; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; +import com.tterrag.registrate.providers.generators.RegistrateItemModelGenerator; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; -import net.minecraft.client.renderer.item.ItemProperties; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.Item; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; -import net.neoforged.neoforge.client.model.generators.ModelFile.UncheckedModelFile; +import com.tterrag.registrate.providers.generators.ItemModelBuilder; +import com.tterrag.registrate.providers.generators.ModelFile.UncheckedModelFile; public class ClipboardOverrides { @@ -31,7 +29,7 @@ public enum ClipboardType implements StringRepresentable { public static final StreamCodec STREAM_CODEC = CatnipStreamCodecBuilders.ofEnum(ClipboardType.class); public final String file; - public static ResourceLocation ID = Create.asResource("clipboard_type"); + public static Identifier ID = Create.asResource("clipboard_type"); ClipboardType(String file) { this.file = file; @@ -43,15 +41,12 @@ public enum ClipboardType implements StringRepresentable { } } - @OnlyIn(Dist.CLIENT) public static void registerModelOverridesClient(ClipboardBlockItem item) { - ItemProperties.register(item, ClipboardType.ID, (pStack, pLevel, pEntity, pSeed) -> - pStack.getOrDefault(AllDataComponents.CLIPBOARD_CONTENT, ClipboardContent.EMPTY).type().ordinal() - ); + // 26.2 resolves item model variants from item model definitions instead of runtime predicates. } public static ItemModelBuilder addOverrideModels(DataGenContext c, - RegistrateItemModelProvider p) { + RegistrateItemModelGenerator p) { ItemModelBuilder builder = p.generated(c::get); for (ClipboardType type : ClipboardType.values()) { int i = type.ordinal(); diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java index baf84c7e1b..a515505106 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardScreen.java @@ -10,14 +10,7 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Lists; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.MeshData; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexFormat; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllSoundEvents; @@ -29,18 +22,17 @@ import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.Util; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.StringSplitter; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.font.TextFieldHelper; -import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.KeyEvent; import net.minecraft.client.gui.screens.inventory.PageButton; import net.minecraft.client.multiplayer.ClientPacketListener; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.core.BlockPos; @@ -51,9 +43,9 @@ import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import net.minecraft.util.StringUtil; +import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ClipboardScreen extends AbstractSimiScreen { public ClipboardContent content; @@ -134,7 +126,7 @@ protected void init() { }); clearBtn.setToolTip(CreateLang.translateDirect("gui.clipboard.erase_checked")); closeBtn = new IconButton(x + 234, y + 175, AllIcons.I_PRIORITY_VERY_LOW) - .withCallback(() -> minecraft.setScreen(null)); + .withCallback(() -> minecraft.setScreenAndShow(null)); closeBtn.setToolTip(CreateLang.translateDirect("station.close")); addRenderableWidget(closeBtn); addRenderableWidget(clearBtn); @@ -157,12 +149,12 @@ public void tick() { frameTick++; if (targetedBlock != null) { - if (!minecraft.player.canInteractWithBlock(targetedBlock, 10)) { - minecraft.setScreen(null); + if (minecraft.player.distanceToSqr(Vec3.atCenterOf(targetedBlock)) > 10 * 10) { + minecraft.setScreenAndShow(null); return; } if (!AllBlocks.CLIPBOARD.has(minecraft.level.getBlockState(targetedBlock))) { - minecraft.setScreen(null); + minecraft.setScreenAndShow(null); return; } } @@ -276,12 +268,12 @@ private void changePage(boolean next) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop - 8; AllGuiTextures.CLIPBOARD.render(graphics, x, y); - graphics.drawString(font, Component.translatable("book.pageIndicator", currentPage + 1, getNumPages()), + graphics.text(font, Component.translatable("book.pageIndicator", currentPage + 1, getNumPages()), x + 150, y + 9, 0x43ffffff, false); for (int i = 0; i < currentEntries.size(); i++) { @@ -295,15 +287,15 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .isBlank(); if (isAddress) { - RenderSystem.enableBlend(); + LegacyRenderSystemBridge.enableBlend(); (checked ? AllGuiTextures.CLIPBOARD_ADDRESS_INACTIVE : AllGuiTextures.CLIPBOARD_ADDRESS) .render(graphics, x + 44, y + 50); text = Component.literal(string.substring(1) .stripLeading()); } else { - graphics.drawString(font, "\u25A1", x + 45, y + 51, checked ? 0x668D7F6B : 0xff8D7F6B, false); + graphics.text(font, "\u25A1", x + 45, y + 51, checked ? 0x668D7F6B : 0xff8D7F6B, false); if (checked) - graphics.drawString(font, "\u2714", x + 45, y + 50, 0x31B25D, false); + graphics.text(font, "\u2714", x + 45, y + 50, 0x31B25D, false); } List split = font.split(text, 150 - iconOffset); @@ -313,11 +305,11 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float } if (!clipboardEntry.icon.isEmpty()) - graphics.renderItem(clipboardEntry.icon, x + 54, y + 50); + graphics.item(clipboardEntry.icon, x + 54, y + 50); for (FormattedCharSequence sequence : split) { if (i != editingIndex) - graphics.drawString(font, sequence, x + 58 + iconOffset, y + 50, + graphics.text(font, sequence, x + 58 + iconOffset, y + 50, checked ? isAddress ? 0x668D7F6B : 0x31B25D : 0x311A00, false); y += 9; } @@ -331,9 +323,9 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float DisplayCache cache = getDisplayCache(); for (LineInfo line : cache.lines) - graphics.drawString(font, line.asComponent, line.x, line.y, 0x311A00, false); + graphics.text(font, line.asComponent, line.x, line.y, 0x311A00, false); - renderHighlight(cache.selection); + renderHighlight(graphics, cache.selection); renderCursor(graphics, cache.cursor, cache.cursorAtEnd); } @@ -370,7 +362,7 @@ private void send() { toSend = content; } - CatnipServices.NETWORK.sendToServer(new ClipboardEditPacket(targetSlot, toSend, targetedBlock)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ClipboardEditPacket(targetSlot, toSend, targetedBlock)); } @Override @@ -382,11 +374,11 @@ public boolean mouseScrolled(double pMouseX, double pMouseY, double pScrollX, do @Override public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { if (pKeyCode == 266) { - backward.onPress(); + changePage(false); return true; } if (pKeyCode == 267) { - forward.onPress(); + changePage(true); return true; } if (editingIndex != -1 && pKeyCode != 256) { @@ -412,16 +404,17 @@ public boolean charTyped(char pCodePoint, int pModifiers) { } private boolean keyPressedWhileEditing(int pKeyCode, int pScanCode, int pModifiers) { - if (Screen.isSelectAll(pKeyCode)) { + KeyEvent event = new KeyEvent(pKeyCode, pScanCode, pModifiers); + if (event.isSelectAll()) { editContext.selectAll(); return true; - } else if (Screen.isCopy(pKeyCode)) { + } else if (event.isCopy()) { editContext.copy(); return true; - } else if (Screen.isPaste(pKeyCode)) { + } else if (event.isPaste()) { editContext.paste(); return true; - } else if (Screen.isCut(pKeyCode)) { + } else if (event.isCut()) { editContext.cut(); return true; } else { @@ -475,17 +468,17 @@ private boolean keyPressedWhileEditing(int pKeyCode, int pScanCode, int pModifie return true; case 262: if (hasControlDown()) { - editContext.moveByWords(1, Screen.hasShiftDown()); + editContext.moveByWords(1, hasShiftDown()); return true; } - editContext.moveByChars(1, Screen.hasShiftDown()); + editContext.moveByChars(1, hasShiftDown()); return true; case 263: if (hasControlDown()) { - editContext.moveByWords(-1, Screen.hasShiftDown()); + editContext.moveByWords(-1, hasShiftDown()); return true; } - editContext.moveByChars(-1, Screen.hasShiftDown()); + editContext.moveByChars(-1, hasShiftDown()); return true; case 264: keyDown(); @@ -516,58 +509,41 @@ private void keyDown() { private void changeLine(int pYChange) { int i = editContext.getCursorPos(); int j = getDisplayCache().changeLine(i, pYChange); - editContext.setCursorPos(j, Screen.hasShiftDown()); + editContext.setCursorPos(j, hasShiftDown()); } private void keyHome() { int i = editContext.getCursorPos(); int j = getDisplayCache().findLineStart(i); - editContext.setCursorPos(j, Screen.hasShiftDown()); + editContext.setCursorPos(j, hasShiftDown()); } private void keyEnd() { DisplayCache cache = getDisplayCache(); int i = editContext.getCursorPos(); int j = cache.findLineEnd(i); - editContext.setCursorPos(j, Screen.hasShiftDown()); + editContext.setCursorPos(j, hasShiftDown()); } - private void renderCursor(GuiGraphics graphics, Pos2i pCursorPos, boolean pIsEndOfText) { + private void renderCursor(GuiGraphicsExtractor graphics, Pos2i pCursorPos, boolean pIsEndOfText) { if (frameTick / 6 % 2 != 0) return; pCursorPos = convertLocalToScreen(pCursorPos); if (!pIsEndOfText) { graphics.fill(pCursorPos.x, pCursorPos.y - 1, pCursorPos.x + 1, pCursorPos.y + 9, -16777216); } else { - graphics.drawString(font, "_", (float) pCursorPos.x, (float) pCursorPos.y, 0, false); + graphics.text(font, "_", pCursorPos.x, pCursorPos.y, 0, false); } } - private void renderHighlight(Rect2i[] pSelected) { - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION); - RenderSystem.setShader(GameRenderer::getPositionShader); - RenderSystem.setShaderColor(0.0F, 0.0F, 255.0F, 255.0F); -// RenderSystem.disableTexture(); - RenderSystem.enableColorLogicOp(); - RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE); - + private void renderHighlight(GuiGraphicsExtractor graphics, Rect2i[] pSelected) { for (Rect2i rect2i : pSelected) { int i = rect2i.getX(); int j = rect2i.getY(); int k = i + rect2i.getWidth(); int l = j + rect2i.getHeight(); - bufferbuilder.addVertex(i, l, 0); - bufferbuilder.addVertex(k, l, 0); - bufferbuilder.addVertex(k, j, 0); - bufferbuilder.addVertex(i, j, 0); + graphics.fill(i, j, k, l, 0x663366ff); } - - @Nullable MeshData meshData = bufferbuilder.build(); - if (meshData != null) - BufferUploader.drawWithShader(meshData); - RenderSystem.disableColorLogicOp(); -// RenderSystem.enableTexture(); } private Pos2i convertScreenToLocal(Pos2i pScreenPos) { @@ -641,7 +617,7 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { editContext.selectAll(); } } else { - editContext.setCursorPos(j, Screen.hasShiftDown()); + editContext.setCursorPos(j, hasShiftDown()); } clearDisplayCache(); @@ -789,7 +765,6 @@ private Rect2i createSelection(Pos2i pCorner1, Pos2i pCorner2) { return new Rect2i(i, k, j - i, l - k); } - @OnlyIn(Dist.CLIENT) static class DisplayCache { static final DisplayCache EMPTY = new DisplayCache("", new Pos2i(0, 0), true, new int[] { 0 }, new LineInfo[] { new LineInfo(Style.EMPTY, "", 0, 0) }, new Rect2i[0]); @@ -847,7 +822,6 @@ public int findLineEnd(int pLine) { } } - @OnlyIn(Dist.CLIENT) static class LineInfo { final Style style; final String contents; @@ -865,7 +839,6 @@ public LineInfo(Style pStyle, String pContents, int pX, int pY) { } } - @OnlyIn(Dist.CLIENT) record Pos2i(int x, int y) { } diff --git a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java index ca29d4f824..541ee647f0 100644 --- a/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/clipboard/ClipboardValueSettingsHandler.java @@ -3,39 +3,24 @@ import java.util.ArrayList; import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllDataComponents; -import com.simibubi.create.CreateClient; import com.simibubi.create.content.equipment.clipboard.ClipboardOverrides.ClipboardType; -import com.simibubi.create.content.trains.track.TrackBlockOutline; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.ICancellableEvent; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.RenderHighlightEvent.Block; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.EntityInteract; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.EntityInteractSpecific; @@ -46,102 +31,6 @@ @EventBusSubscriber public class ClipboardValueSettingsHandler { - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void drawCustomBlockSelection(Block event) { - Minecraft mc = Minecraft.getInstance(); - BlockHitResult target = event.getTarget(); - BlockPos pos = target.getBlockPos(); - BlockState blockstate = mc.level.getBlockState(pos); - - if (mc.player == null || mc.player.isSpectator()) - return; - if (!mc.level.getWorldBorder() - .isWithinBounds(pos)) - return; - if (!AllBlocks.CLIPBOARD.isIn(mc.player.getMainHandItem())) - return; - if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) - return; - if (!(smartBE instanceof ClipboardBlockEntity) && smartBE.getAllBehaviours() - .stream() - .noneMatch(b -> b instanceof ClipboardCloneable cc - && cc.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection())) - && !(smartBE instanceof ClipboardCloneable)) - return; - - VoxelShape shape = blockstate.getShape(mc.level, pos); - if (shape.isEmpty()) - return; - - VertexConsumer vb = event.getMultiBufferSource() - .getBuffer(RenderType.lines()); - Vec3 camPos = event.getCamera() - .getPosition(); - - PoseStack ms = event.getPoseStack(); - - ms.pushPose(); - ms.translate(pos.getX() - camPos.x, pos.getY() - camPos.y, pos.getZ() - camPos.z); - TrackBlockOutline.renderShape(shape, ms, vb, true); - event.setCanceled(true); - - ms.popPose(); - } - - @OnlyIn(Dist.CLIENT) - public static void clientTick() { - Minecraft mc = Minecraft.getInstance(); - if (!(mc.hitResult instanceof BlockHitResult target)) - return; - if (!AllBlocks.CLIPBOARD.isIn(mc.player.getMainHandItem())) - return; - BlockPos pos = target.getBlockPos(); - if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) - return; - - if (smartBE instanceof ClipboardBlockEntity) { - List tip = new ArrayList<>(); - tip.add(CreateLang.translateDirect("clipboard.actions")); - tip.add(CreateLang.translateDirect("clipboard.copy_other_clipboard", Component.keybind("key.use"))); - CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip); - return; - } - - ClipboardContent content = mc.player.getMainHandItem() - .get(AllDataComponents.CLIPBOARD_CONTENT); - if (content == null) - return; - - CompoundTag tagElement = content.copiedValues().orElse(null); - - boolean canCopy = smartBE.getAllBehaviours() - .stream() - .anyMatch(b -> b instanceof ClipboardCloneable cc - && cc.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection())) - || smartBE instanceof ClipboardCloneable ccbe - && ccbe.writeToClipboard(mc.level.registryAccess(), new CompoundTag(), target.getDirection()); - - boolean canPaste = tagElement != null && (smartBE.getAllBehaviours() - .stream() - .anyMatch(b -> b instanceof ClipboardCloneable cc && cc.readFromClipboard(mc.level.registryAccess(), - tagElement.getCompound(cc.getClipboardKey()), mc.player, target.getDirection(), true)) - || smartBE instanceof ClipboardCloneable ccbe && ccbe.readFromClipboard(mc.level.registryAccess(), - tagElement.getCompound(ccbe.getClipboardKey()), mc.player, target.getDirection(), true)); - - if (!canCopy && !canPaste) - return; - - List tip = new ArrayList<>(); - tip.add(CreateLang.translateDirect("clipboard.actions")); - if (canCopy) - tip.add(CreateLang.translateDirect("clipboard.to_copy", Component.keybind("key.use"))); - if (canPaste) - tip.add(CreateLang.translateDirect("clipboard.to_paste", Component.keybind("key.attack"))); - - CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip); - } - @SubscribeEvent public static void rightClickToCopy(RightClickBlock event) { interact(event, false); @@ -220,12 +109,12 @@ private static void interact(PlayerInteractEvent event, boolean paste) { itemStack.set(AllDataComponents.CLIPBOARD_CONTENT, clipboardContent); } - player.displayClientMessage(CreateLang.translate("clipboard.copied_from_clipboard", world.getBlockState(pos) + player.sendSystemMessage(CreateLang.translate("clipboard.copied_from_clipboard", world.getBlockState(pos) .getBlock() .getName() .withStyle(ChatFormatting.WHITE)) .style(ChatFormatting.GREEN) - .component(), true); + .component()); return; } @@ -244,7 +133,7 @@ private static void interact(PlayerInteractEvent event, boolean paste) { String clipboardKey = cc.getClipboardKey(); if (paste) { anySuccess |= - cc.readFromClipboard(world.registryAccess(), tag.getCompound(clipboardKey), player, event.getFace(), world.isClientSide()); + cc.readFromClipboard(world.registryAccess(), tag.getCompoundOrEmpty(clipboardKey), player, event.getFace(), world.isClientSide()); continue; } CompoundTag compoundTag = new CompoundTag(); @@ -258,7 +147,7 @@ private static void interact(PlayerInteractEvent event, boolean paste) { anyValid = true; String clipboardKey = ccbe.getClipboardKey(); if (paste) { - anySuccess |= ccbe.readFromClipboard(world.registryAccess(), tag.getCompound(clipboardKey), player, event.getFace(), + anySuccess |= ccbe.readFromClipboard(world.registryAccess(), tag.getCompoundOrEmpty(clipboardKey), player, event.getFace(), world.isClientSide()); } else { CompoundTag compoundTag = new CompoundTag(); @@ -281,13 +170,13 @@ private static void interact(PlayerInteractEvent event, boolean paste) { if (!anySuccess) return; - player.displayClientMessage(CreateLang + player.sendSystemMessage(CreateLang .translate(paste ? "clipboard.pasted_to" : "clipboard.copied_from", world.getBlockState(pos) .getBlock() .getName() .withStyle(ChatFormatting.WHITE)) .style(ChatFormatting.GREEN) - .component(), true); + .component()); if (!paste) { clipboardContent = clipboardContent.setType(ClipboardType.WRITTEN); diff --git a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripClient.java b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripClient.java new file mode 100644 index 0000000000..c0461eb993 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripClient.java @@ -0,0 +1,128 @@ +package com.simibubi.create.content.equipment.extendoGrip; + +import java.util.function.Consumer; + +import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; + +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.network.ClientNetworkHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult.Type; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.InputEvent; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; +import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; +import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; + +@EventBusSubscriber(Dist.CLIENT) +public class ExtendoGripClient { + + @SubscribeEvent + public static void dontMissEntitiesWhenYouHaveHighReachDistance(InputEvent.InteractionKeyMappingTriggered event) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (mc.level == null || player == null) + return; + if (!ExtendoGripItem.isHoldingExtendoGrip(player)) + return; + if (mc.hitResult instanceof BlockHitResult && mc.hitResult.getType() != Type.MISS) + return; + + // Modified version of GameRenderer#getMouseOver. + double distance = player.getAttributeValue(Attributes.BLOCK_INTERACTION_RANGE); + if (!player.isCreative()) + distance -= 0.5f; + Vec3 start = player.getEyePosition(AnimationTickHolder.getPartialTicks()); + Vec3 view = player.getViewVector(1.0F); + Vec3 end = start.add(view.x * distance, view.y * distance, view.z * distance); + AABB bounds = player.getBoundingBox() + .expandTowards(view.scale(distance)) + .inflate(1.0D, 1.0D, 1.0D); + EntityHitResult result = ProjectileUtil.getEntityHitResult(player, start, end, bounds, + entity -> !entity.isSpectator() && entity.isPickable(), distance * distance); + if (result != null) { + Entity entity = result.getEntity(); + Vec3 hit = result.getLocation(); + double distanceToHit = start.distanceToSqr(hit); + if (distanceToHit < distance * distance || mc.hitResult == null || mc.hitResult.getType() == Type.MISS) { + mc.hitResult = result; + if (entity instanceof LivingEntity || entity instanceof ItemFrame) + mc.crosshairPickEntity = entity; + } + } + } + + public static void sendInteractionPacket(Entity target) { + ClientNetworkHelper.INSTANCE.sendToServer(new ExtendoGripInteractionPacket(target)); + } + + public static void sendInteractionPacket(Entity target, InteractionHand hand) { + ClientNetworkHelper.INSTANCE.sendToServer(new ExtendoGripInteractionPacket(target, hand)); + } + + public static void sendInteractionPacket(Entity target, InteractionHand hand, Vec3 localPos) { + ClientNetworkHelper.INSTANCE.sendToServer(new ExtendoGripInteractionPacket(target, hand, localPos)); + } + + private static boolean isUncaughtClientInteraction(Entity entity, Entity target) { + // Server ignores entity interaction further than 6m. + if (entity.distanceToSqr(target) < 36) + return false; + if (!entity.level().isClientSide()) + return false; + if (!(entity instanceof Player)) + return false; + return true; + } + + @SubscribeEvent + public static void notifyServerOfLongRangeAttacks(AttackEntityEvent event) { + Entity entity = event.getEntity(); + Entity target = event.getTarget(); + if (!isUncaughtClientInteraction(entity, target)) + return; + Player player = (Player) entity; + if (ExtendoGripItem.isHoldingExtendoGrip(player)) + sendInteractionPacket(target); + } + + @SubscribeEvent + public static void notifyServerOfLongRangeInteractions(PlayerInteractEvent.EntityInteract event) { + Entity entity = event.getEntity(); + Entity target = event.getTarget(); + if (!isUncaughtClientInteraction(entity, target)) + return; + Player player = (Player) entity; + if (ExtendoGripItem.isHoldingExtendoGrip(player)) + sendInteractionPacket(target, event.getHand()); + } + + @SubscribeEvent + public static void notifyServerOfLongRangeSpecificInteractions(PlayerInteractEvent.EntityInteractSpecific event) { + Entity entity = event.getEntity(); + Entity target = event.getTarget(); + if (!isUncaughtClientInteraction(entity, target)) + return; + Player player = (Player) entity; + if (ExtendoGripItem.isHoldingExtendoGrip(player)) + sendInteractionPacket(target, event.getHand(), event.getLocalPos()); + } + + public static void initializeClient(ExtendoGripItem item, Consumer consumer) { + consumer.accept(SimpleCustomRenderer.create(item, new ExtendoGripItemRenderer())); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripInteractionPacket.java b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripInteractionPacket.java index aaa023d4f3..e31ec39923 100644 --- a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripInteractionPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripInteractionPacket.java @@ -2,8 +2,8 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -54,9 +54,9 @@ public void handle(ServerPlayer sender) { if (this.hand == null) sender.attack(entityByID); else if (this.point == null) - sender.interactOn(entityByID, this.hand); + sender.interactOn(entityByID, this.hand, Vec3.ZERO); else - entityByID.interactAt(sender, this.point, this.hand); + entityByID.interact(sender, this.hand, this.point); } } } diff --git a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItem.java b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItem.java index 6d4f8a4949..4a4f221355 100644 --- a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItem.java @@ -10,13 +10,9 @@ import com.simibubi.create.Create; import com.simibubi.create.content.equipment.armor.BacktankUtil; import com.simibubi.create.foundation.advancement.AllAdvancements; -import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.Holder; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -27,32 +23,20 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.decoration.ItemFrame; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.ProjectileUtil; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.LevelReader; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.HitResult.Type; -import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.event.tick.EntityTickEvent; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.InputEvent; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.event.entity.living.LivingIncomingDamageEvent; import net.neoforged.neoforge.event.entity.living.LivingKnockBackEvent; -import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; import net.neoforged.neoforge.event.entity.player.PlayerEvent; -import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; -import net.neoforged.neoforge.event.level.BlockEvent.BreakEvent; +import net.neoforged.neoforge.event.level.block.BreakBlockEvent; import net.neoforged.neoforge.event.level.BlockEvent.EntityPlaceEvent; @EventBusSubscriber @@ -137,46 +121,8 @@ else if (persistentData.contains(EXTENDO_MARKER)) .addTransientAttributeModifiers(rangeModifier.get()); } - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void dontMissEntitiesWhenYouHaveHighReachDistance(InputEvent.InteractionKeyMappingTriggered event) { - Minecraft mc = Minecraft.getInstance(); - LocalPlayer player = mc.player; - if (mc.level == null || player == null) - return; - if (!isHoldingExtendoGrip(player)) - return; - if (mc.hitResult instanceof BlockHitResult && mc.hitResult.getType() != Type.MISS) - return; - - // Modified version of GameRenderer#getMouseOver - double d0 = player.getAttributeValue(Attributes.BLOCK_INTERACTION_RANGE); - if (!player.isCreative()) - d0 -= 0.5f; - Vec3 Vector3d = player.getEyePosition(AnimationTickHolder.getPartialTicks()); - Vec3 Vector3d1 = player.getViewVector(1.0F); - Vec3 Vector3d2 = Vector3d.add(Vector3d1.x * d0, Vector3d1.y * d0, Vector3d1.z * d0); - AABB AABB = player.getBoundingBox() - .expandTowards(Vector3d1.scale(d0)) - .inflate(1.0D, 1.0D, 1.0D); - EntityHitResult entityraytraceresult = - ProjectileUtil.getEntityHitResult(player, Vector3d, Vector3d2, AABB, (e) -> { - return !e.isSpectator() && e.isPickable(); - }, d0 * d0); - if (entityraytraceresult != null) { - Entity entity1 = entityraytraceresult.getEntity(); - Vec3 Vector3d3 = entityraytraceresult.getLocation(); - double d2 = Vector3d.distanceToSqr(Vector3d3); - if (d2 < d0 * d0 || mc.hitResult == null || mc.hitResult.getType() == Type.MISS) { - mc.hitResult = entityraytraceresult; - if (entity1 instanceof LivingEntity || entity1 instanceof ItemFrame) - mc.crosshairPickEntity = entity1; - } - } - } - @SubscribeEvent(priority = EventPriority.LOWEST) - public static void consumeDurabilityOnBlockBreak(BreakEvent event) { + public static void consumeDurabilityOnBlockBreak(BreakBlockEvent event) { findAndDamageExtendoGrip(event.getPlayer()); } @@ -195,7 +141,7 @@ public static void consumeDurabilityOnPlace(EntityPlaceEvent event) { private static void findAndDamageExtendoGrip(Player player) { if (player == null) return; - if (player.level().isClientSide) + if (player.level().isClientSide()) return; EquipmentSlot equipmentSlot = EquipmentSlot.MAINHAND; ItemStack extendo = player.getMainHandItem(); @@ -259,52 +205,6 @@ public static void attacksByExtendoGripHaveMoreKnockback(LivingKnockBackEvent ev event.setStrength(event.getStrength() + 2); } - private static boolean isUncaughtClientInteraction(Entity entity, Entity target) { - // Server ignores entity interaction further than 6m - if (entity.distanceToSqr(target) < 36) - return false; - if (!entity.level().isClientSide) - return false; - if (!(entity instanceof Player)) - return false; - return true; - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeAttacks(AttackEntityEvent event) { - Entity entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - Player player = (Player) entity; - if (isHoldingExtendoGrip(player)) - CatnipServices.NETWORK.sendToServer(new ExtendoGripInteractionPacket(target)); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeInteractions(PlayerInteractEvent.EntityInteract event) { - Entity entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - Player player = (Player) entity; - if (isHoldingExtendoGrip(player)) - CatnipServices.NETWORK.sendToServer(new ExtendoGripInteractionPacket(target, event.getHand())); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeSpecificInteractions(PlayerInteractEvent.EntityInteractSpecific event) { - Player entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - if (isHoldingExtendoGrip(entity)) - CatnipServices.NETWORK.sendToServer(new ExtendoGripInteractionPacket(target, event.getHand(), event.getLocalPos())); - } - public static boolean isHoldingExtendoGrip(Player player) { boolean inOff = AllItems.EXTENDO_GRIP.isIn(player.getOffhandItem()); boolean inMain = AllItems.EXTENDO_GRIP.isIn(player.getMainHandItem()); @@ -312,10 +212,8 @@ public static boolean isHoldingExtendoGrip(Player player) { return holdingGrip; } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { - consumer.accept(SimpleCustomRenderer.create(this, new ExtendoGripItemRenderer())); + ExtendoGripClient.initializeClient(this, consumer); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItemRenderer.java index 7df40ffd41..c420444666 100644 --- a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripItemRenderer.java @@ -9,8 +9,8 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripRenderHandler.java b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripRenderHandler.java index 8d1f84e460..03e9c46c4d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/extendoGrip/ExtendoGripRenderHandler.java @@ -1,28 +1,16 @@ package com.simibubi.create.content.equipment.extendoGrip; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllItems; import com.simibubi.create.AllPartialModels; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.util.Mth; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.ClientHooks; import net.neoforged.neoforge.client.event.RenderHandEvent; @EventBusSubscriber(value = Dist.CLIENT) @@ -44,8 +32,7 @@ public static void tick() { return; if (!(main.getItem() instanceof BlockItem)) return; - if (!Minecraft.getInstance() - .getItemRenderer() + if (!com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .getModel(main, null, null, 0) .isGui3d()) return; @@ -54,88 +41,7 @@ public static void tick() { @SubscribeEvent public static void onRenderPlayerHand(RenderHandEvent event) { - ItemStack heldItem = event.getItemStack(); - Minecraft mc = Minecraft.getInstance(); - LocalPlayer player = mc.player; - boolean rightHand = event.getHand() == InteractionHand.MAIN_HAND ^ player.getMainArm() == HumanoidArm.LEFT; - - ItemStack offhandItem = getRenderedOffHandStack(); - boolean notInOffhand = !AllItems.EXTENDO_GRIP.isIn(offhandItem); - if (notInOffhand && !AllItems.EXTENDO_GRIP.isIn(heldItem)) - return; - - PoseStack ms = event.getPoseStack(); - var msr = TransformStack.of(ms); - AbstractClientPlayer abstractclientplayerentity = mc.player; - RenderSystem.setShaderTexture(0, abstractclientplayerentity.getSkin().texture()); - - float flip = rightHand ? 1.0F : -1.0F; - float swingProgress = event.getSwingProgress(); - boolean blockItem = heldItem.getItem() instanceof BlockItem; - float equipProgress = blockItem ? 0 : event.getEquipProgress() / 4; - - ms.pushPose(); - if (event.getHand() == InteractionHand.MAIN_HAND) { - - if (1 - swingProgress > mainHandAnimation && swingProgress > 0) - mainHandAnimation = 0.95f; - float animation = Mth.lerp(AnimationTickHolder.getPartialTicks(), - ExtendoGripRenderHandler.lastMainHandAnimation, - ExtendoGripRenderHandler.mainHandAnimation); - animation = animation * animation * animation; - - ms.translate(flip * (0.64000005F - .1f), -0.4F + equipProgress * -0.6F, -0.71999997F + .3f); - - ms.pushPose(); - msr.rotateYDegrees(flip * 75.0F); - ms.translate(flip * -1.0F, 3.6F, 3.5F); - msr.rotateZDegrees(flip * 120) - .rotateXDegrees(200) - .rotateYDegrees(flip * -135.0F); - ms.translate(flip * 5.6F, 0.0F, 0.0F); - msr.rotateYDegrees(flip * 40.0F); - ms.translate(flip * 0.05f, -0.3f, -0.3f); - - PlayerRenderer playerrenderer = (PlayerRenderer) mc.getEntityRenderDispatcher() - .getRenderer(player); - if (rightHand) - playerrenderer.renderRightHand(event.getPoseStack(), event.getMultiBufferSource(), - event.getPackedLight(), player); - else - playerrenderer.renderLeftHand(event.getPoseStack(), event.getMultiBufferSource(), - event.getPackedLight(), player); - ms.popPose(); - - // Render gun - ms.pushPose(); - ms.translate(flip * -0.1f, 0, -0.3f); - ItemInHandRenderer firstPersonRenderer = mc.getEntityRenderDispatcher().getItemInHandRenderer(); - ItemDisplayContext transform = - rightHand ? ItemDisplayContext.FIRST_PERSON_RIGHT_HAND : ItemDisplayContext.FIRST_PERSON_LEFT_HAND; - firstPersonRenderer.renderItem(mc.player, notInOffhand ? heldItem : offhandItem, transform, !rightHand, - event.getPoseStack(), event.getMultiBufferSource(), event.getPackedLight()); - - if (!notInOffhand) { - ClientHooks.handleCameraTransforms(ms, mc.getItemRenderer() - .getModel(offhandItem, null, null, 0), transform, !rightHand); - ms.translate(flip * -.05f, .15f, -1.2f); - ms.translate(0, 0, -animation * 2.25f); - if (blockItem && mc.getItemRenderer() - .getModel(heldItem, null, null, 0) - .isGui3d()) { - msr.rotateYDegrees(flip * 45); - ms.translate(flip * 0.15f, -0.15f, -.05f); - ms.scale(1.25f, 1.25f, 1.25f); - } - - firstPersonRenderer.renderItem(mc.player, heldItem, transform, !rightHand, event.getPoseStack(), - event.getMultiBufferSource(), event.getPackedLight()); - } - - ms.popPose(); - } - ms.popPose(); - event.setCanceled(true); + // TODO 26.2: Rebuild custom first-person arm rendering against the new player render-state API. } private static ItemStack getRenderedMainHandStack() { diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleConfigScreen.java index 3538a8698d..3110b15eec 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleConfigScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleConfigScreen.java @@ -7,10 +7,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; @@ -105,10 +105,10 @@ private void updateOffset(double windowX, double windowY) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int posX = this.width / 2 + offsetX; int posY = this.height / 2 + offsetY; - graphics.renderComponentTooltip(font, tooltip, posX, posY); + graphics.setComponentTooltipForNextFrame(font, tooltip, posX, posY); // UIRenderHelper.breadcrumbArrow(ms, 50, 50, 100, 50, 20, 10, 0x80aa9999, 0x10aa9999); // UIRenderHelper.breadcrumbArrow(ms, 100, 80, 0, -50, 20, -10, 0x80aa9999, 0x10aa9999); diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java index 8a2a089ae2..028b157c80 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/GoggleOverlayRenderer.java @@ -5,7 +5,7 @@ import java.util.Map; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Matrix3x2fStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.api.equipment.goggles.IHaveCustomOverlayIcon; @@ -24,18 +24,18 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.CClient; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.gui.element.BoxElement; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.outliner.Outline; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.outliner.Outliner.OutlineEntry; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.gui.element.BoxElement; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.outliner.Outline; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.client.outliner.Outliner.OutlineEntry; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.MouseHandler; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -53,16 +53,16 @@ public class GoggleOverlayRenderer { - public static final LayeredDraw.Layer OVERLAY = GoggleOverlayRenderer::renderOverlay; + public static final GuiLayer OVERLAY = GoggleOverlayRenderer::renderOverlay; private static final Map outlines = Outliner.getInstance().getOutlines(); public static int hoverTicks = 0; public static BlockPos lastHovered = null; - public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public static void renderOverlay(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gui.hud.isHidden() || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; HitResult objectMouseOver = mc.hitResult; @@ -172,8 +172,8 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac return; } - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); + Matrix3x2fStack poseStack = GuiGraphicsExtractor.pose(); + poseStack.pushMatrix(); int tooltipTextWidth = 0; for (FormattedText textLine : tooltip) { @@ -188,8 +188,8 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac tooltipHeight += (tooltip.size() - 1) * 10; } - int width = guiGraphics.guiWidth(); - int height = guiGraphics.guiHeight(); + int width = GuiGraphicsExtractor.guiWidth(); + int height = GuiGraphicsExtractor.guiHeight(); CClient cfg = AllConfigs.client(); int posX = width / 2 + cfg.overlayOffsetX.get(); @@ -208,7 +208,7 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac : BoxElement.COLOR_VANILLA_BORDER.getSecond().copy(); if (fade < 1) { - poseStack.translate(Math.pow(1 - fade, 3) * Math.signum(cfg.overlayOffsetX.get() + .5f) * 8, 0, 0); + poseStack.translate((float) (Math.pow(1 - fade, 3) * Math.signum(cfg.overlayOffsetX.get() + .5f) * 8), 0); colorBackground.scaleAlpha(fade); colorBorderTop.scaleAlpha(fade); colorBorderBot.scaleAlpha(fade); @@ -216,14 +216,14 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac GuiGameElement.of(item) .at(posX + 10, posY - 16, 450) - .render(guiGraphics); + .render(GuiGraphicsExtractor); if (!Mods.MODERNUI.isLoaded()) { // default tooltip rendering when modernUI is not loaded - RemovedGuiUtils.drawHoveringText(guiGraphics, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), + RemovedGuiUtils.drawHoveringText(GuiGraphicsExtractor, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); - poseStack.popPose(); + poseStack.popMatrix(); return; } @@ -244,12 +244,12 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac ((MouseHandlerAccessor) mouseHandler).create$setXPos(Math.round(cursorX / guiScale) * guiScale); ((MouseHandlerAccessor) mouseHandler).create$setYPos(Math.round(cursorY / guiScale) * guiScale); - RemovedGuiUtils.drawHoveringText(guiGraphics, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), + RemovedGuiUtils.drawHoveringText(GuiGraphicsExtractor, tooltip, posX, posY, width, height, -1, colorBackground.getRGB(), colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font); ((MouseHandlerAccessor) mouseHandler).create$setXPos(cursorX); ((MouseHandlerAccessor) mouseHandler).create$setYPos(cursorY); - poseStack.popPose(); + poseStack.popMatrix(); } diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesItem.java b/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesItem.java index 1dda9eec8a..c4ab758a1f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesItem.java @@ -6,18 +6,11 @@ import com.simibubi.create.AllItems; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.Equipable; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.DispenserBlock; -public class GogglesItem extends Item implements Equipable { +public class GogglesItem extends Item { private static final List> IS_WEARING_PREDICATES = new ArrayList<>(); static { @@ -25,17 +18,7 @@ public class GogglesItem extends Item implements Equipable { } public GogglesItem(Properties properties) { - super(properties); - DispenserBlock.registerBehavior(this, ArmorItem.DISPENSE_ITEM_BEHAVIOR); - } - - @Override - public EquipmentSlot getEquipmentSlot() { - return EquipmentSlot.HEAD; - } - - public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { - return swapWithEquipmentSlot(this, worldIn, playerIn, handIn); + super(properties.equippable(EquipmentSlot.HEAD)); } public static boolean isWearingGoggles(Player player) { diff --git a/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesModel.java b/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesModel.java index 2e8024b3b8..27e95ff198 100644 --- a/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesModel.java +++ b/src/main/java/com/simibubi/create/content/equipment/goggles/GogglesModel.java @@ -1,10 +1,8 @@ package com.simibubi.create.content.equipment.goggles; -import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.AllPartialModels; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemDisplayContext; -import net.neoforged.neoforge.client.model.BakedModelWrapper; +import com.simibubi.create.foundation.model.BakedModelWrapper; + +import com.simibubi.create.foundation.model.BakedModel; public class GogglesModel extends BakedModelWrapper { @@ -12,12 +10,4 @@ public GogglesModel(BakedModel template) { super(template); } - @Override - public BakedModel applyTransform(ItemDisplayContext cameraItemDisplayContext, PoseStack mat, boolean leftHanded) { - if (cameraItemDisplayContext == ItemDisplayContext.HEAD) - return AllPartialModels.GOGGLES.get() - .applyTransform(cameraItemDisplayContext, mat, leftHanded); - return super.applyTransform(cameraItemDisplayContext, mat, leftHanded); - } - } diff --git a/src/main/java/com/simibubi/create/content/equipment/hats/CreateHatArmorLayer.java b/src/main/java/com/simibubi/create/content/equipment/hats/CreateHatArmorLayer.java index fb552e7183..2a4c5e870f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/hats/CreateHatArmorLayer.java +++ b/src/main/java/com/simibubi/create/content/equipment/hats/CreateHatArmorLayer.java @@ -1,122 +1,14 @@ package com.simibubi.create.content.equipment.hats; -import java.util.ArrayList; -import java.util.List; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.content.trains.schedule.hat.TrainHatInfo; -import com.simibubi.create.content.trains.schedule.hat.TrainHatInfoReloadListener; -import com.simibubi.create.foundation.mixin.accessor.AgeableListModelAccessor; -import com.simibubi.create.foundation.mixin.accessor.EntityRenderDispatcherAccessor; - -import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.minecraft.client.model.AgeableListModel; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.HierarchicalModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.ModelPart.Cube; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.LivingEntityRenderer; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; - -public class CreateHatArmorLayer> extends RenderLayer { - - public CreateHatArmorLayer(RenderLayerParent renderer) { - super(renderer); - } - - public void render(PoseStack ms, MultiBufferSource buffer, int light, LivingEntity entity, float limbSwing, float limbSwingAmount, - float partialTicks, float ageInTicks, float netHeadYaw, float headPitch) { - PartialModel hat = EntityHats.getHatFor(entity); - if (hat == null) - return; - - M entityModel = getParentModel(); - ms.pushPose(); - - var msr = TransformStack.of(ms); - TrainHatInfo info = TrainHatInfoReloadListener.getHatInfoFor(entity); - List partsToHead = new ArrayList<>(); - - if (entityModel instanceof AgeableListModel model) { - if (model.young) { - if (model.scaleHead) { - float f = 1.5F / model.babyHeadScale; - ms.scale(f, f, f); - } - ms.translate(0.0D, model.babyYHeadOffset / 16.0F, model.babyZHeadOffset / 16.0F); - } - - ModelPart head = getHeadPart(model); - if (head != null) { - partsToHead.addAll(TrainHatInfo.getAdjustedPart(info, head, "")); - } - } else if (entityModel instanceof HierarchicalModel model) { - partsToHead.addAll(TrainHatInfo.getAdjustedPart(info, model.root(), "head")); - } - - if (!partsToHead.isEmpty()) { - partsToHead.forEach(part -> part.translateAndRotate(ms)); - - ModelPart lastChild = partsToHead.get(partsToHead.size() - 1); - if (!lastChild.isEmpty()) { - Cube cube = lastChild.cubes.get(Mth.clamp(info.cubeIndex(), 0, lastChild.cubes.size() - 1)); - ms.translate(info.offset().x() / 16.0F, (cube.minY - cube.maxY + info.offset().y()) / 16.0F, info.offset().z() / 16.0F); - float max = Math.max(cube.maxX - cube.minX, cube.maxZ - cube.minZ) / 8.0F * info.scale(); - ms.scale(max, max, max); - } - - ms.scale(1, -1, -1); - ms.translate(0, -2.25F / 16.0F, 0); - msr.rotateXDegrees(-8.5F); - BlockState air = Blocks.AIR.defaultBlockState(); - CachedBuffers.partial(hat, air) - .disableDiffuse() - .light(light) - .renderInto(ms, buffer.getBuffer(Sheets.cutoutBlockSheet())); - } - - ms.popPose(); - } +public class CreateHatArmorLayer { public static void registerOnAll(EntityRenderDispatcher renderManager) { - for (EntityRenderer renderer : renderManager.getSkinMap() - .values()) - registerOn(renderer); - for (EntityRenderer renderer : ((EntityRenderDispatcherAccessor) renderManager).create$getRenderers().values()) - registerOn(renderer); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public static void registerOn(EntityRenderer entityRenderer) { - if (!(entityRenderer instanceof LivingEntityRenderer livingRenderer)) - return; - - EntityModel model = livingRenderer.getModel(); - - if (!(model instanceof HierarchicalModel) && !(model instanceof AgeableListModel)) - return; - - CreateHatArmorLayer layer = new CreateHatArmorLayer<>(livingRenderer); - livingRenderer.addLayer((CreateHatArmorLayer) layer); + // TODO 26.2: port train/conductor hat rendering to the new entity render state pipeline. } - private static ModelPart getHeadPart(AgeableListModel model) { - for (ModelPart part : ((AgeableListModelAccessor) model).create$callHeadParts()) - return part; - for (ModelPart part : ((AgeableListModelAccessor) model).create$callBodyParts()) - return part; - return null; + public static void registerOn(EntityRenderer entityRenderer) { + // TODO 26.2: port train/conductor hat rendering to the new entity render state pipeline. } } diff --git a/src/main/java/com/simibubi/create/content/equipment/hats/EntityHats.java b/src/main/java/com/simibubi/create/content/equipment/hats/EntityHats.java index b3b78d01e0..5bf5481e54 100644 --- a/src/main/java/com/simibubi/create/content/equipment/hats/EntityHats.java +++ b/src/main/java/com/simibubi/create/content/equipment/hats/EntityHats.java @@ -10,8 +10,8 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.EquipmentSlot; diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileEntityHitActions.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileEntityHitActions.java index 14097812df..7e9275bd58 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileEntityHitActions.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileEntityHitActions.java @@ -11,7 +11,7 @@ import com.simibubi.create.api.registry.CreateBuiltInRegistries; import com.simibubi.create.foundation.codec.CreateCodecs; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.component.DataComponents; @@ -28,10 +28,9 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.Fox; -import net.minecraft.world.entity.monster.ZombieVillager; +import net.minecraft.world.entity.animal.fox.Fox; +import net.minecraft.world.entity.monster.zombie.ZombieVillager; import net.minecraft.world.food.FoodProperties; -import net.minecraft.world.food.FoodProperties.PossibleEffect; import net.minecraft.world.food.Foods; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -42,8 +41,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.common.util.FakePlayer; -import net.neoforged.neoforge.event.EventHooks; -import net.neoforged.neoforge.event.entity.EntityTeleportEvent; public class AllPotatoProjectileEntityHitActions { @@ -97,7 +94,7 @@ public record PotionEffect(Holder effect, int level, int ticks, @Override public boolean execute(ItemStack projectile, EntityHitResult ray, Type type) { Entity entity = ray.getEntity(); - if (entity.level().isClientSide) + if (entity.level().isClientSide()) return true; if (entity instanceof LivingEntity livingEntity) applyEffect(livingEntity, new MobEffectInstance(effect, ticks, level - 1)); @@ -120,14 +117,11 @@ public record FoodEffects(FoodProperties foodProperty, @Override public boolean execute(ItemStack projectile, EntityHitResult ray, Type type) { Entity entity = ray.getEntity(); - if (entity.level().isClientSide) + if (entity.level().isClientSide()) return true; if (entity instanceof LivingEntity livingEntity) { - for (PossibleEffect effect : foodProperty.effects()) { - if (livingEntity.getRandom().nextFloat() < effect.probability()) - applyEffect(livingEntity, effect.effect()); - } + // TODO 26.2: Food effect payloads moved from FoodProperties to Consumable components. } return !recoverable; } @@ -146,8 +140,8 @@ public record ChorusTeleport(double teleportDiameter) implements PotatoProjectil @Override public boolean execute(ItemStack projectile, EntityHitResult ray, Type type) { Entity entity = ray.getEntity(); - Level level = entity.getCommandSenderWorld(); - if (level.isClientSide) + Level level = entity.level(); + if (level.isClientSide()) return true; if (!(entity instanceof LivingEntity livingEntity)) return false; @@ -164,11 +158,7 @@ public boolean execute(ItemStack projectile, EntityHitResult ray, Type type) { double teleportZ = entityZ + (livingEntity.getRandom() .nextDouble() - 0.5D) * teleportDiameter; - EntityTeleportEvent.ChorusFruit event = - EventHooks.onChorusFruitTeleport(livingEntity, teleportX, teleportY, teleportZ); - if (event.isCanceled()) - return false; - if (livingEntity.randomTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true)) { + if (livingEntity.randomTeleport(teleportX, teleportY, teleportZ, true, projectile)) { if (livingEntity.isPassenger()) livingEntity.stopRiding(); @@ -208,7 +198,7 @@ public boolean execute(ItemStack projectile, EntityHitResult ray, Type type) { if (!(entity instanceof ZombieVillager zombieVillager) || !zombieVillager.hasEffect(MobEffects.WEAKNESS)) return EFFECT.execute(projectile, ray, type); - if (world.isClientSide) + if (world.isClientSide()) return false; FakePlayer dummy = ZOMBIE_CONVERTERS.get(world); @@ -246,9 +236,11 @@ public MapCodec codec() { } private static void applyEffect(LivingEntity entity, MobEffectInstance effect) { - if (effect.getEffect().value().isInstantenous()) { + if (effect.getEffect().value().isInstantaneous()) { + if (!(entity.level() instanceof ServerLevel level)) + return; effect.getEffect().value() - .applyInstantenousEffect(null, null, entity, effect.getDuration(), 1.0); + .applyInstantaneousEffect(level, null, null, entity, effect.getAmplifier(), 1.0); } else { entity.addEffect(effect); } diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileRenderModes.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileRenderModes.java index b4951110f8..7149471200 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileRenderModes.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileRenderModes.java @@ -9,7 +9,7 @@ import com.simibubi.create.api.registry.CreateBuiltInRegistries; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.Registry; import net.minecraft.util.Mth; @@ -17,7 +17,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class AllPotatoProjectileRenderModes { @@ -41,7 +40,6 @@ public enum Billboard implements PotatoProjectileRenderMode { public static final MapCodec CODEC = MapCodec.unit(INSTANCE); @Override - @OnlyIn(Dist.CLIENT) public void transform(PoseStack ms, PotatoProjectileEntity entity, float pt) { Minecraft mc = Minecraft.getInstance(); Vec3 p1 = mc.getCameraEntity() @@ -67,7 +65,6 @@ public enum Tumble implements PotatoProjectileRenderMode { public static final MapCodec CODEC = MapCodec.unit(INSTANCE); @Override - @OnlyIn(Dist.CLIENT) public void transform(PoseStack ms, PotatoProjectileEntity entity, float pt) { Billboard.INSTANCE.transform(ms, entity, pt); TransformStack.of(ms) @@ -88,7 +85,6 @@ public record TowardMotion(int spriteAngleOffset, float spin) implements PotatoP ).apply(instance, TowardMotion::new)); @Override - @OnlyIn(Dist.CLIENT) public void transform(PoseStack ms, PotatoProjectileEntity entity, float pt) { Vec3 diff = entity.getDeltaMovement(); TransformStack.of(ms) @@ -112,7 +108,6 @@ public record StuckToEntity(Vec3 offset) implements PotatoProjectileRenderMode { ).apply(instance, StuckToEntity::new)); @Override - @OnlyIn(Dist.CLIENT) public void transform(PoseStack ms, PotatoProjectileEntity entity, float pt) { TransformStack.of(ms).rotateYDegrees(AngleHelper.deg(Mth.atan2(offset.x, offset.z))); } diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileTypes.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileTypes.java index 39d46cc887..ab87093f51 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileTypes.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/AllPotatoProjectileTypes.java @@ -140,7 +140,7 @@ public static void bootstrap(BootstrapContext ctx) { .knockback(0.1f) .renderTumbling() .soundPitch(1.1f) - .onEntityHit(new PotionEffect(MobEffects.MOVEMENT_SLOWDOWN, 2, 160, true)) + .onEntityHit(new PotionEffect(MobEffects.SLOWNESS, 2, 160, true)) .addItems(AllItems.HONEYED_APPLE.get()) .build()); @@ -278,7 +278,7 @@ public static void bootstrap(BootstrapContext ctx) { .knockback(0.2f) .velocity(0.8f) .renderTowardMotion(140, 1) - .dropStack(Items.BOWL.getDefaultInstance()) + .dropItem(Items.BOWL) .onEntityHit(SuspiciousStew.INSTANCE) .addItems(Items.SUSPICIOUS_STEW) .build()); diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonClient.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonClient.java new file mode 100644 index 0000000000..95b3b61ced --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonClient.java @@ -0,0 +1,91 @@ +package com.simibubi.create.content.equipment.potatoCannon; + +import java.util.function.Consumer; + +import com.simibubi.create.CreateClient; +import com.simibubi.create.api.equipment.potatoCannon.PotatoCannonProjectileType; +import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; +import com.simibubi.create.foundation.utility.CreateLang; + +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Item.TooltipContext; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; + +public class PotatoCannonClient { + + public static void dontAnimateItem(InteractionHand hand) { + CreateClient.POTATO_CANNON_RENDER_HANDLER.dontAnimateItem(hand); + } + + public static boolean addToTooltip(ItemStack stack, TooltipContext context, Consumer tooltip) { + LocalPlayer player = Minecraft.getInstance().player; + if (player == null) + return false; + + PotatoCannonItem.Ammo ammo = PotatoCannonItem.getAmmo(player, stack); + if (ammo == null) + return false; + + HolderLookup.Provider registries = context.registries(); + if (registries == null) + return true; + + ItemStack ammoStack = ammo.stack(); + PotatoCannonProjectileType type = ammo.type(); + HolderLookup lookup = registries.lookupOrThrow(Registries.ENCHANTMENT); + int power = stack.getEnchantmentLevel(lookup.getOrThrow(Enchantments.POWER)); + int punch = stack.getEnchantmentLevel(lookup.getOrThrow(Enchantments.PUNCH)); + final float additionalDamageMult = 1 + power * .2f; + final float additionalKnockback = punch * .5f; + + String _attack = "potato_cannon.ammo.attack_damage"; + String _reload = "potato_cannon.ammo.reload_ticks"; + String _knockback = "potato_cannon.ammo.knockback"; + + tooltip.accept(CommonComponents.EMPTY); + tooltip.accept(ammoStack.getHoverName() + .copy() + .append(Component.literal(":")) + .withStyle(ChatFormatting.GRAY)); + MutableComponent spacing = CommonComponents.space(); + ChatFormatting green = ChatFormatting.GREEN; + ChatFormatting darkGreen = ChatFormatting.DARK_GREEN; + + float damageF = type.damage() * additionalDamageMult; + MutableComponent damage = Component.literal(damageF == Mth.floor(damageF) ? "" + Mth.floor(damageF) : "" + damageF); + MutableComponent reloadTicks = Component.literal("" + type.reloadTicks()); + MutableComponent knockback = Component.literal("" + (type.knockback() + additionalKnockback)); + + damage = damage.withStyle(additionalDamageMult > 1 ? green : darkGreen); + knockback = knockback.withStyle(additionalKnockback > 0 ? green : darkGreen); + reloadTicks = reloadTicks.withStyle(darkGreen); + + tooltip.accept(spacing.plainCopy() + .append(CreateLang.translateDirect(_attack, damage) + .withStyle(darkGreen))); + tooltip.accept(spacing.plainCopy() + .append(CreateLang.translateDirect(_reload, reloadTicks) + .withStyle(darkGreen))); + tooltip.accept(spacing.plainCopy() + .append(CreateLang.translateDirect(_knockback, knockback) + .withStyle(darkGreen))); + return true; + } + + public static void initializeClient(PotatoCannonItem item, Consumer consumer) { + consumer.accept(SimpleCustomRenderer.create(item, new PotatoCannonItemRenderer())); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItem.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItem.java index aa87b11f2c..022a0648b8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItem.java @@ -7,22 +7,15 @@ import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.CreateClient; import com.simibubi.create.api.equipment.potatoCannon.PotatoCannonProjectileType; import com.simibubi.create.content.equipment.armor.BacktankUtil; import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods; -import com.simibubi.create.foundation.item.CustomArmPoseItem; -import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.GlobalRegistryAccess; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; -import net.minecraft.client.model.HumanoidModel.ArmPose; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Holder; @@ -35,14 +28,15 @@ import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.Projectile; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ProjectileWeaponItem; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; @@ -50,11 +44,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; -public class PotatoCannonItem extends ProjectileWeaponItem implements CustomArmPoseItem { +public class PotatoCannonItem extends ProjectileWeaponItem { private static final Predicate AMMO_PREDICATE = s -> PotatoCannonProjectileType.getTypeForItem(GlobalRegistryAccess.getOrThrow(), s.getItem()).isPresent(); @@ -84,26 +76,26 @@ protected void shoot(ServerLevel level, LivingEntity shooter, InteractionHand ha @Override public InteractionResult useOn(UseOnContext context) { - return use(context.getLevel(), context.getPlayer(), context.getHand()).getResult(); + return use(context.getLevel(), context.getPlayer(), context.getHand()); } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + public InteractionResult use(Level level, Player player, InteractionHand hand) { ItemStack heldStack = player.getItemInHand(hand); if (ShootableGadgetItemMethods.shouldSwap(player, heldStack, hand, s -> s.getItem() instanceof PotatoCannonItem)) { - return InteractionResultHolder.fail(heldStack); + return InteractionResult.FAIL; } Ammo ammo = getAmmo(player, heldStack); if (ammo == null) { - return InteractionResultHolder.pass(heldStack); + return InteractionResult.PASS; } ItemStack ammoStack = ammo.stack(); PotatoCannonProjectileType projectileType = ammo.type(); - if (level.isClientSide) { - CreateClient.POTATO_CANNON_RENDER_HANDLER.dontAnimateItem(hand); - return InteractionResultHolder.success(heldStack); + if (level.isClientSide()) { + PotatoCannonClient.dontAnimateItem(hand); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldStack); } Vec3 barrelPos = ShootableGadgetItemMethods.getGunBarrelVec(player, hand == InteractionHand.MAIN_HAND, @@ -128,7 +120,10 @@ public InteractionResultHolder use(Level level, Player player, Intera ItemStack ammoStackCopy = ammoStack.copy(); for (int i = 0; i < projectileType.split(); i++) { - PotatoProjectileEntity projectile = AllEntityTypes.POTATO_PROJECTILE.create(level); + PotatoProjectileEntity projectile = + AllEntityTypes.POTATO_PROJECTILE.get().create(level, EntitySpawnReason.TRIGGERED); + if (projectile == null) + continue; projectile.setItem(ammoStackCopy); projectile.setEnchantmentEffectsFromCannon(heldStack); @@ -155,75 +150,23 @@ public InteractionResultHolder use(Level level, Player player, Intera } if (!BacktankUtil.canAbsorbDamage(player, maxUses())) - heldStack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(hand)); + heldStack.hurtAndBreak(1, player, hand); ShootableGadgetItemMethods.applyCooldown(player, heldStack, hand, s -> s.getItem() instanceof PotatoCannonItem, projectileType.reloadTicks()); ShootableGadgetItemMethods.sendPackets(player, b -> new PotatoCannonPacket(barrelPos, lookVec.normalize(), ammoStack, hand, soundPitch, b)); - return InteractionResultHolder.success(heldStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldStack); } @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag flag) { - LocalPlayer player = Minecraft.getInstance().player; - if (player == null) { - super.appendHoverText(stack, context, tooltip, flag); - return; - } - - Ammo ammo = getAmmo(player, stack); - if (ammo == null) { - super.appendHoverText(stack, context, tooltip, flag); - return; - } - ItemStack ammoStack = ammo.stack(); - PotatoCannonProjectileType type = ammo.type(); - - HolderLookup.Provider registries = context.registries(); - if (registries == null) - return; - - HolderLookup lookup = registries.lookupOrThrow(Registries.ENCHANTMENT); - int power = stack.getEnchantmentLevel(lookup.getOrThrow(Enchantments.POWER)); - int punch = stack.getEnchantmentLevel(lookup.getOrThrow(Enchantments.PUNCH)); - final float additionalDamageMult = 1 + power * .2f; - final float additionalKnockback = punch * .5f; - - String _attack = "potato_cannon.ammo.attack_damage"; - String _reload = "potato_cannon.ammo.reload_ticks"; - String _knockback = "potato_cannon.ammo.knockback"; - - tooltip.add(CommonComponents.EMPTY); - tooltip.add(Component.translatable(ammoStack.getDescriptionId()).append(Component.literal(":")) - .withStyle(ChatFormatting.GRAY)); - MutableComponent spacing = CommonComponents.space(); - ChatFormatting green = ChatFormatting.GREEN; - ChatFormatting darkGreen = ChatFormatting.DARK_GREEN; - - float damageF = type.damage() * additionalDamageMult; - MutableComponent damage = Component.literal(damageF == Mth.floor(damageF) ? "" + Mth.floor(damageF) : "" + damageF); - MutableComponent reloadTicks = Component.literal("" + type.reloadTicks()); - MutableComponent knockback = - Component.literal("" + (type.knockback() + additionalKnockback)); - - damage = damage.withStyle(additionalDamageMult > 1 ? green : darkGreen); - knockback = knockback.withStyle(additionalKnockback > 0 ? green : darkGreen); - reloadTicks = reloadTicks.withStyle(darkGreen); - - tooltip.add(spacing.plainCopy() - .append(CreateLang.translateDirect(_attack, damage) - .withStyle(darkGreen))); - tooltip.add(spacing.plainCopy() - .append(CreateLang.translateDirect(_reload, reloadTicks) - .withStyle(darkGreen))); - tooltip.add(spacing.plainCopy() - .append(CreateLang.translateDirect(_knockback, knockback) - .withStyle(darkGreen))); + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay display, + Consumer tooltip, TooltipFlag flag) { + if (!PotatoCannonClient.addToTooltip(stack, context, tooltip)) + super.appendHoverText(stack, context, display, tooltip, flag); } @Override - public boolean canAttackBlock(BlockState state, Level world, BlockPos pos, Player player) { + public boolean canDestroyBlock(ItemStack stack, BlockState state, Level world, BlockPos pos, LivingEntity entity) { return false; } @@ -266,7 +209,7 @@ public int getBarColor(ItemStack stack) { return BacktankUtil.getBarColor(stack, maxUses()); } - private static int maxUses() { + static int maxUses() { return AllConfigs.server().equipment.maxPotatoCannonShots.get(); } @@ -276,23 +219,12 @@ public boolean onEntitySwing(ItemStack stack, LivingEntity entity, InteractionHa } @Override - public UseAnim getUseAnimation(ItemStack stack) { - return UseAnim.NONE; + public ItemUseAnimation getUseAnimation(ItemStack stack) { + return ItemUseAnimation.NONE; } - @Override - @Nullable - public ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) { - if (!player.swinging) { - return ArmPose.CROSSBOW_HOLD; - } - return null; - } - - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { - consumer.accept(SimpleCustomRenderer.create(this, new PotatoCannonItemRenderer())); + PotatoCannonClient.initializeClient(this, consumer); } public record Ammo(ItemStack stack, PotatoCannonProjectileType type) { diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItemRenderer.java index 4276ae8658..e39a83f9b5 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonItemRenderer.java @@ -2,6 +2,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Axis; +import org.joml.Matrix3x2fStack; import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; @@ -11,10 +12,10 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemDisplayContext; @@ -34,12 +35,12 @@ public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer { return false; } - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); - poseStack.translate(xOffset, yOffset + 8, 100); - poseStack.scale(.5f, .5f, .5f); - guiGraphics.renderItem(ammo.stack(), 0, 0); - poseStack.popPose(); + Matrix3x2fStack poseStack = guiGraphics.pose(); + poseStack.pushMatrix(); + poseStack.translate(xOffset, yOffset + 8); + poseStack.scale(.5f, .5f); + guiGraphics.item(ammo.stack(), 0, 0); + poseStack.popMatrix(); return false; }; diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonPacket.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonPacket.java index 20e460d0cd..f6feeac36a 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonPacket.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket; import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -13,7 +13,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class PotatoCannonPacket extends ShootGadgetPacket { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -38,13 +37,11 @@ public PotatoCannonPacket(Vec3 location, Vec3 motion, ItemStack item, Interactio } @Override - @OnlyIn(Dist.CLIENT) protected void handleAdditional() { CreateClient.POTATO_CANNON_RENDER_HANDLER.beforeShoot(pitch, location, motion, item); } @Override - @OnlyIn(Dist.CLIENT) protected ShootableGadgetRenderHandler getHandler() { return CreateClient.POTATO_CANNON_RENDER_HANDLER; } diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonRenderHandler.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonRenderHandler.java index f5c6633952..e4e034b86c 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoCannonRenderHandler.java @@ -5,7 +5,7 @@ import com.simibubi.create.foundation.particle.AirParticleData; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.particles.ItemParticleOption; @@ -34,11 +34,11 @@ public void beforeShoot(float nextPitch, Vec3 location, Vec3 motion, ItemStack s return; ClientLevel world = Minecraft.getInstance().level; for (int i = 0; i < 2; i++) { - Vec3 m = VecHelper.offsetRandomly(motion.scale(0.1f), world.random, .025f); - world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), location.x, location.y, location.z, m.x, + Vec3 m = VecHelper.offsetRandomly(motion.scale(0.1f), world.getRandom(), .025f); + world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack.getItem()), location.x, location.y, location.z, m.x, m.y, m.z); - Vec3 m2 = VecHelper.offsetRandomly(motion.scale(2f), world.random, .5f); + Vec3 m2 = VecHelper.offsetRandomly(motion.scale(2f), world.getRandom(), .5f); world.addParticle(new AirParticleData(1, 1 / 4f), location.x, location.y, location.z, m2.x, m2.y, m2.z); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileEntity.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileEntity.java index 6e637143f0..1452447577 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileEntity.java @@ -12,10 +12,11 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.damageTypes.CreateDamageSources; import com.simibubi.create.foundation.particle.AirParticleData; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.core.HolderLookup; import net.minecraft.core.BlockPos; -import net.minecraft.core.Registry; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; @@ -29,15 +30,19 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.boss.wither.WitherBoss; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; +import net.minecraft.world.entity.projectile.hurtingprojectile.AbstractHurtingProjectile; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; @@ -66,15 +71,14 @@ public void setItem(ItemStack stack) { this.stack = stack; type = PotatoCannonProjectileType.getTypeForItem(level().registryAccess(), stack.getItem()) .orElseGet(() -> level().registryAccess() - .registryOrThrow(CreateRegistries.POTATO_PROJECTILE_TYPE) - .getHolderOrThrow(AllPotatoProjectileTypes.FALLBACK)) + .lookupOrThrow(CreateRegistries.POTATO_PROJECTILE_TYPE) + .getOrThrow(AllPotatoProjectileTypes.FALLBACK)) .value(); } public void setEnchantmentEffectsFromCannon(ItemStack cannon) { - Registry enchantmentRegistry = registryAccess().registryOrThrow(Registries.ENCHANTMENT); - - int recovery = cannon.getEnchantmentLevel(enchantmentRegistry.getHolderOrThrow(AllEnchantments.POTATO_RECOVERY)); + HolderLookup.RegistryLookup enchantmentRegistry = registryAccess().lookupOrThrow(Registries.ENCHANTMENT); + int recovery = cannon.getEnchantmentLevel(enchantmentRegistry.getOrThrow(AllEnchantments.POTATO_RECOVERY)); if (recovery > 0) recoveryChance = .125f + recovery * .125f; @@ -90,21 +94,22 @@ public PotatoCannonProjectileType getProjectileType() { } @Override - public void readAdditionalSaveData(CompoundTag nbt) { - setItem(ItemStack.parseOptional(this.registryAccess(), nbt.getCompound("Item"))); - additionalDamageMult = nbt.getFloat("AdditionalDamage"); - additionalKnockback = nbt.getFloat("AdditionalKnockback"); - recoveryChance = nbt.getFloat("Recovery"); - super.readAdditionalSaveData(nbt); + protected void readAdditionalSaveData(ValueInput input) { + input.read("Item", ItemStack.OPTIONAL_CODEC) + .ifPresent(this::setItem); + additionalDamageMult = input.getFloatOr("AdditionalDamage", 1); + additionalKnockback = input.getFloatOr("AdditionalKnockback", 0); + recoveryChance = input.getFloatOr("Recovery", 0); + super.readAdditionalSaveData(input); } @Override - public void addAdditionalSaveData(CompoundTag nbt) { - nbt.put("Item", stack.saveOptional(this.registryAccess())); - nbt.putFloat("AdditionalDamage", additionalDamageMult); - nbt.putFloat("AdditionalKnockback", additionalKnockback); - nbt.putFloat("Recovery", recoveryChance); - super.addAdditionalSaveData(nbt); + protected void addAdditionalSaveData(ValueOutput output) { + output.store("Item", ItemStack.OPTIONAL_CODEC, stack); + output.putFloat("AdditionalDamage", additionalDamageMult); + output.putFloat("AdditionalKnockback", additionalKnockback); + output.putFloat("Recovery", recoveryChance); + super.addAdditionalSaveData(output); } @Nullable @@ -137,7 +142,7 @@ public void tick() { if (stuckEntity != null) { if (getY() < stuckEntity.getY() - 0.1) { pop(position()); - kill(); + killOrDiscard(); } else { stuckFallSpeed += 0.007 * type.gravityMultiplier(); stuckOffset = stuckOffset.add(0, -stuckFallSpeed, 0); @@ -204,16 +209,17 @@ protected void onHitEntity(EntityHitResult ray) { if (type.preEntityHit(stack, ray)) return; - boolean targetIsEnderman = target.getType() == EntityType.ENDERMAN; + boolean targetIsEnderman = target.getType() == EntityTypes.ENDERMAN; int k = target.getRemainingFireTicks(); if (this.isOnFire() && !targetIsEnderman) target.igniteForSeconds(5); - boolean onServer = !level().isClientSide; + boolean onServer = !level().isClientSide(); + ServerLevel serverLevel = onServer ? (ServerLevel) level() : null; DamageSource damageSource = causePotatoDamage(); - if (onServer && !target.hurt(damageSource, damage)) { + if (serverLevel != null && !target.hurtServer(serverLevel, damageSource, damage)) { target.setRemainingFireTicks(k); - kill(); + killOrDiscard(); return; } @@ -224,13 +230,13 @@ protected void onHitEntity(EntityHitResult ray) { if (random.nextDouble() <= recoveryChance) { recoverItem(); } else { - spawnAtLocation(type.dropStack()); + spawnProjectileDrop(type.dropStack()); } } if (!(target instanceof LivingEntity livingentity)) { playHitSound(level(), position()); - kill(); + killOrDiscard(); return; } @@ -242,17 +248,17 @@ protected void onHitEntity(EntityHitResult ray) { .multiply(1.0D, 0.0D, 1.0D) .normalize(); if (appliedMotion.lengthSqr() > 0.0D) - livingentity.knockback(knockback * 0.6, -appliedMotion.x, -appliedMotion.z); + livingentity.knockback(knockback * 0.6, -appliedMotion.x, -appliedMotion.z, damageSource, damage); } - if (onServer && owner instanceof LivingEntity) { - EnchantmentHelper.doPostAttackEffects((ServerLevel) level(), livingentity, damageSource); + if (serverLevel != null && owner instanceof LivingEntity) { + EnchantmentHelper.doPostAttackEffects(serverLevel, livingentity, damageSource); } if (livingentity != owner && livingentity instanceof Player && owner instanceof ServerPlayer && !this.isSilent()) { ((ServerPlayer) owner).connection - .send(new ClientboundGameEventPacket(ClientboundGameEventPacket.ARROW_HIT_PLAYER, 0.0F)); + .send(new ClientboundGameEventPacket(ClientboundGameEventPacket.PLAY_ARROW_HIT_SOUND, 0.0F)); } if (onServer && owner instanceof ServerPlayer serverplayerentity) { @@ -264,14 +270,14 @@ protected void onHitEntity(EntityHitResult ray) { if (type.sticky() && target.isAlive()) { setStuckEntity(target); } else { - kill(); + killOrDiscard(); } } private void recoverItem() { if (!stack.isEmpty()) - spawnAtLocation(stack.copyWithCount(1)); + spawnProjectileDrop(stack.copyWithCount(1)); } public static void playHitSound(Level world, Vec3 location) { @@ -286,38 +292,43 @@ public static void playLaunchSound(Level world, Vec3 location, float pitch) { protected void onHitBlock(BlockHitResult ray) { Vec3 hit = ray.getLocation(); pop(hit); - if (!type.onBlockHit(level(), stack, ray) && !level().isClientSide) { + if (!type.onBlockHit(level(), stack, ray) && !level().isClientSide()) { if (random.nextDouble() <= recoveryChance) { recoverItem(); } else { - spawnAtLocation(getProjectileType().dropStack()); + spawnProjectileDrop(getProjectileType().dropStack()); } } super.onHitBlock(ray); - kill(); + killOrDiscard(); } @Override - public boolean hurt(@NotNull DamageSource source, float amt) { + public boolean hurtServer(ServerLevel level, @NotNull DamageSource source, float amt) { if (source.is(DamageTypeTags.IS_FIRE)) return false; - if (this.isInvulnerableTo(source)) + if (this.isInvulnerableToBase(source)) return false; pop(position()); - kill(); + kill(level); return true; } + @Override + public boolean hurtClient(DamageSource source) { + return !source.is(DamageTypeTags.IS_FIRE) && !this.isInvulnerableToBase(source); + } + private void pop(Vec3 hit) { if (!stack.isEmpty()) { for (int i = 0; i < 7; i++) { Vec3 m = VecHelper.offsetRandomly(Vec3.ZERO, this.random, .25f); - level().addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), hit.x, hit.y, hit.z, m.x, m.y, + level().addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)), hit.x, hit.y, hit.z, m.x, m.y, m.z); } } - if (!level().isClientSide) + if (!level().isClientSide()) playHitSound(level(), position()); } @@ -333,14 +344,27 @@ public static EntityType.Builder build(EntityType.Builder builder) { @Override public void writeSpawnData(RegistryFriendlyByteBuf buffer) { - CompoundTag compound = new CompoundTag(); - addAdditionalSaveData(compound); + CompoundTag compound = LegacyBlockEntityTagBridge.output(registryAccess(), this::addAdditionalSaveData); buffer.writeNbt(compound); } @Override public void readSpawnData(RegistryFriendlyByteBuf additionalData) { - readAdditionalSaveData(additionalData.readNbt()); + CompoundTag data = additionalData.readNbt(); + if (data != null) + readAdditionalSaveData(LegacyBlockEntityTagBridge.input(data, registryAccess())); + } + + private void killOrDiscard() { + if (level() instanceof ServerLevel serverLevel) + kill(serverLevel); + else + discard(); + } + + private void spawnProjectileDrop(ItemStack stack) { + if (!stack.isEmpty() && level() instanceof ServerLevel serverLevel) + spawnAtLocation(serverLevel, stack); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileRenderer.java b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileRenderer.java index 089bfd5178..e722ac039b 100644 --- a/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/potatoCannon/PotatoProjectileRenderer.java @@ -3,42 +3,27 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -public class PotatoProjectileRenderer extends EntityRenderer { +public class PotatoProjectileRenderer extends EntityRenderer { public PotatoProjectileRenderer(EntityRendererProvider.Context context) { super(context); } - @Override public void render(PotatoProjectileEntity entity, float yaw, float pt, PoseStack ms, MultiBufferSource buffer, int light) { - ItemStack item = entity.getItem(); - if (item.isEmpty()) - return; - ms.pushPose(); - ms.translate(0, entity.getBoundingBox() - .getYsize() / 2 - 1 / 8f, 0); - entity.getRenderMode() - .transform(ms, entity, pt); - - Minecraft.getInstance() - .getItemRenderer() - .renderStatic(item, ItemDisplayContext.GROUND, light, OverlayTexture.NO_OVERLAY, ms, buffer, entity.level(), - 0); - ms.popPose(); + // TODO 26.2: Port potato projectile item rendering to EntityRenderer#submit. } @Override - public ResourceLocation getTextureLocation(PotatoProjectileEntity entity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } - } diff --git a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItem.java b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItem.java index ecb6d16dee..e6bccf1854 100644 --- a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItem.java @@ -10,9 +10,8 @@ import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.mixin.accessor.LivingEntityAccessor; -import net.createmod.catnip.data.TriState; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.TriState; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; @@ -20,14 +19,15 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemInstance; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ItemStackTemplate; +import net.minecraft.world.item.ItemUseAnimation; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; @@ -38,12 +38,10 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.common.ItemAbilities; import net.neoforged.neoforge.common.ItemAbility; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class SandPaperItem extends Item implements CustomUseEffectsItem { @@ -52,13 +50,13 @@ public SandPaperItem(Properties properties) { } @Override - public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { + public InteractionResult use(Level worldIn, Player playerIn, InteractionHand handIn) { ItemStack itemstack = playerIn.getItemInHand(handIn); - InteractionResultHolder FAIL = new InteractionResultHolder<>(InteractionResult.FAIL, itemstack); + InteractionResult FAIL = InteractionResult.FAIL; if (itemstack.has(AllDataComponents.SAND_PAPER_POLISHING)) { playerIn.startUsingItem(handIn); - return new InteractionResultHolder<>(InteractionResult.PASS, itemstack); + return InteractionResult.PASS; } InteractionHand otherHand = @@ -70,7 +68,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In playerIn.startUsingItem(handIn); itemstack.set(AllDataComponents.SAND_PAPER_POLISHING, new SandPaperItemComponent(toPolish)); playerIn.setItemInHand(otherHand, item); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, itemstack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemstack); } BlockHitResult raytraceresult = getPlayerPOVHitResult(worldIn, playerIn, ClipContext.Fluid.NONE); @@ -100,7 +98,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In playerIn.startUsingItem(handIn); - if (!worldIn.isClientSide) { + if (!worldIn.isClientSide()) { itemstack.set(AllDataComponents.SAND_PAPER_POLISHING, new SandPaperItemComponent(toPolish)); if (item.isEmpty()) pickUp.discard(); @@ -108,7 +106,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In pickUp.setItem(item); } - return new InteractionResultHolder<>(InteractionResult.SUCCESS, itemstack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemstack); } @Override @@ -121,7 +119,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity enti ItemStack polished = SandPaperPolishingRecipe.applyPolish(level, entityLiving.position(), toPolish, stack); - if (level.isClientSide) { + if (level.isClientSide()) { spawnParticles(entityLiving.getEyePosition(1) .add(entityLiving.getLookAngle().scale(.5f)), toPolish, level); return stack; @@ -132,36 +130,44 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity enti playerInv.placeItemBackInInventory(polished); } - if (toPolish.hasCraftingRemainingItem()) { - playerInv.placeItemBackInInventory(toPolish.getCraftingRemainingItem()); - } + ItemStack craftingRemainder = getCraftingRemainder(toPolish); + if (!craftingRemainder.isEmpty()) + playerInv.placeItemBackInInventory(craftingRemainder); stack.remove(AllDataComponents.SAND_PAPER_POLISHING); - stack.hurtAndBreak(1, entityLiving, LivingEntity.getSlotForHand(entityLiving.getUsedItemHand())); + stack.hurtAndBreak(1, entityLiving, entityLiving.getUsedItemHand()); } return stack; } + private static ItemStack getCraftingRemainder(ItemStack stack) { + return stack.getItem() + .getCraftingRemainder() + .create(); + } + public static void spawnParticles(Vec3 location, ItemStack polishedStack, Level world) { for (int i = 0; i < 20; i++) { - Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, world.random, 1 / 8f); - world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, polishedStack), location.x, location.y, + Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, world.getRandom(), 1 / 8f); + world.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromStack(polishedStack)), location.x, location.y, location.z, motion.x, motion.y, motion.z); } } @Override - public void releaseUsing(ItemStack stack, Level worldIn, LivingEntity entityLiving, int timeLeft) { + public boolean releaseUsing(ItemStack stack, Level worldIn, LivingEntity entityLiving, int timeLeft) { if (!(entityLiving instanceof Player player)) - return; + return false; if (stack.has(AllDataComponents.SAND_PAPER_POLISHING)) { ItemStack toPolish = stack.get(AllDataComponents.SAND_PAPER_POLISHING).item(); //noinspection DataFlowIssue - toPolish won't be null as we do call .has before calling .get player.getInventory() .placeItemBackInInventory(toPolish); stack.remove(AllDataComponents.SAND_PAPER_POLISHING); + return true; } + return false; } @Override @@ -174,13 +180,13 @@ public InteractionResult useOn(UseOnContext context) { BlockState newState = state.getToolModifiedState(context, ItemAbilities.AXE_SCRAPE, false); if (newState != null) { - AllSoundEvents.SANDING_LONG.play(level, player, pos, 1, 1 + (level.random.nextFloat() * 0.5f - 1f) / 5f); + AllSoundEvents.SANDING_LONG.play(level, player, pos, 1, 1 + (level.getRandom().nextFloat() * 0.5f - 1f) / 5f); level.levelEvent(player, LevelEvent.PARTICLES_SCRAPE, pos, 0); // Spawn particles } else { newState = state.getToolModifiedState(context, ItemAbilities.AXE_WAX_OFF, false); if (newState != null) { AllSoundEvents.SANDING_LONG.play(level, player, pos, 1, - 1 + (level.random.nextFloat() * 0.5f - 1f) / 5f); + 1 + (level.getRandom().nextFloat() * 0.5f - 1f) / 5f); level.levelEvent(player, LevelEvent.PARTICLES_WAX_OFF, pos, 0); // Spawn particles } } @@ -188,15 +194,15 @@ public InteractionResult useOn(UseOnContext context) { if (newState != null) { level.setBlockAndUpdate(pos, newState); if (player != null) - stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(player.getUsedItemHand())); - return InteractionResult.sidedSuccess(level.isClientSide); + stack.hurtAndBreak(1, player, player.getUsedItemHand()); + return (level.isClientSide() ? InteractionResult.SUCCESS : InteractionResult.SUCCESS_SERVER); } return InteractionResult.PASS; } @Override - public boolean canPerformAction(ItemStack stack, ItemAbility itemAbility) { + public boolean canPerformAction(ItemInstance stack, ItemAbility itemAbility) { return itemAbility == ItemAbilities.AXE_SCRAPE || itemAbility == ItemAbilities.AXE_WAX_OFF; } @@ -216,20 +222,19 @@ public boolean triggerUseEffects(ItemStack stack, LivingEntity entity, int count // After 6 ticks play the sound every 7th if ((entity.getTicksUsingItem() - 6) % 7 == 0) - entity.playSound(entity.getEatingSound(stack), 0.9F + 0.2F * random.nextFloat(), + entity.playSound(AllSoundEvents.SANDING_SHORT.getMainEvent(), 0.9F + 0.2F * random.nextFloat(), random.nextFloat() * 0.2F + 0.9F); return true; } - @Override public SoundEvent getEatingSound() { return AllSoundEvents.SANDING_SHORT.getMainEvent(); } @Override - public UseAnim getUseAnimation(ItemStack stack) { - return UseAnim.EAT; + public ItemUseAnimation getUseAnimation(ItemStack stack) { + return ItemUseAnimation.EAT; } @Override @@ -237,13 +242,10 @@ public int getUseDuration(ItemStack stack, LivingEntity entity) { return 32; } - @Override public int getEnchantmentValue() { return 1; } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { consumer.accept(SimpleCustomRenderer.create(this, new SandPaperItemRenderer())); } diff --git a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItemRenderer.java index 8c2e2de37f..f31d2186c4 100644 --- a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperItemRenderer.java @@ -7,11 +7,11 @@ import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import com.simibubi.create.foundation.render.ItemRenderer; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @@ -22,7 +22,7 @@ public class SandPaperItemRenderer extends CustomRenderedItemModelRenderer { protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { Minecraft mc = Minecraft.getInstance(); - ItemRenderer itemRenderer = mc.getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); LocalPlayer player = mc.player; float partialTicks = AnimationTickHolder.getPartialTicks(); @@ -74,7 +74,7 @@ protected void render(ItemStack stack, CustomRenderedItemModel model, PartialIte } } - itemRenderer.render(stack, ItemDisplayContext.NONE, false, ms, buffer, light, overlay, model.getOriginalModel()); + renderer.render(model.getOriginalModel(), light); ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperPolishingRecipe.java b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperPolishingRecipe.java index a9e987c112..86be0ad2f4 100644 --- a/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperPolishingRecipe.java +++ b/src/main/java/com/simibubi/create/content/equipment/sandPaper/SandPaperPolishingRecipe.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.SingleRecipeInput; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; @@ -46,13 +47,17 @@ public static ItemStack applyPolish(Level world, Vec3 position, ItemStack stack, List>> matchingRecipes = getMatchingRecipes(world, stack); if (!matchingRecipes.isEmpty()) return matchingRecipes.get(0).value() - .assemble(new SingleRecipeInput(stack), world.registryAccess()) + .assemble(new SingleRecipeInput(stack)) .copy(); return stack; } public static List>> getMatchingRecipes(Level world, ItemStack stack) { - return world.getRecipeManager() - .getRecipesFor(AllRecipeTypes.SANDPAPER_POLISHING.getType(), new SingleRecipeInput(stack), world); + if (!(world instanceof ServerLevel serverLevel)) + return List.of(); + return serverLevel.recipeAccess() + .recipeMap() + .getRecipesFor(AllRecipeTypes.SANDPAPER_POLISHING.getType(), new SingleRecipeInput(stack), world) + .toList(); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/ConfigureSymmetryWandPacket.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/ConfigureSymmetryWandPacket.java index 0d118a937e..0ae639c47e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/ConfigureSymmetryWandPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/ConfigureSymmetryWandPacket.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.equipment.symmetryWand.mirror.SymmetryMirror; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerPlayer; diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryEffectPacket.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryEffectPacket.java index 3c081925d3..e79df61dc8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryEffectPacket.java @@ -3,16 +3,15 @@ import java.util.List; import com.simibubi.create.AllPackets; -import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.net.base.ClientboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record SymmetryEffectPacket(BlockPos mirror, List positions) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -27,11 +26,10 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (player.position().distanceTo(Vec3.atLowerCornerOf(mirror)) > 100) return; for (BlockPos to : positions) - SymmetryHandler.drawEffect(mirror, to); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> SymmetryWandClient.drawEffect(mirror, to)); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryHandler.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryHandler.java index e8c0fa0057..1ad057ee1c 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryHandler.java @@ -1,50 +1,19 @@ package com.simibubi.create.content.equipment.symmetryWand; -import org.joml.Vector3f; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllItems; -import com.simibubi.create.content.equipment.symmetryWand.mirror.EmptyMirror; -import com.simibubi.create.content.equipment.symmetryWand.mirror.SymmetryMirror; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.Camera; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.particles.DustParticleOptions; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.util.Mth; -import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.ClientTickEvent; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent.Stage; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.event.level.BlockEvent.BreakEvent; +import net.neoforged.neoforge.event.level.block.BreakBlockEvent; import net.neoforged.neoforge.event.level.BlockEvent.EntityPlaceEvent; @EventBusSubscriber public class SymmetryHandler { - private static int tickCounter = 0; - @SubscribeEvent(priority = EventPriority.LOWEST) public static void onBlockPlaced(EntityPlaceEvent event) { if (event.getLevel() @@ -60,7 +29,7 @@ public static void onBlockPlaced(EntityPlaceEvent event) { } @SubscribeEvent(priority = EventPriority.LOWEST) - public static void onBlockDestroyed(BreakEvent event) { + public static void onBlockDestroyed(BreakBlockEvent event) { if (event.getLevel() .isClientSide()) return; @@ -72,128 +41,4 @@ public static void onBlockDestroyed(BreakEvent event) { SymmetryWandItem.remove(player.level(), inv.getItem(i), player, event.getPos()); } - @OnlyIn(Dist.CLIENT) - @SubscribeEvent - public static void onRenderWorld(RenderLevelStageEvent event) { - if (event.getStage() != Stage.AFTER_PARTICLES) - return; - - Minecraft mc = Minecraft.getInstance(); - LocalPlayer player = mc.player; - RandomSource random = RandomSource.create(); - - for (int i = 0; i < Inventory.getSelectionSize(); i++) { - ItemStack stackInSlot = player.getInventory() - .getItem(i); - if (!AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot)) - continue; - if (!SymmetryWandItem.isEnabled(stackInSlot)) - continue; - SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); - if (mirror instanceof EmptyMirror) - continue; - - BlockPos pos = BlockPos.containing(mirror.getPosition()); - - float yShift = 0; - double speed = 1 / 16d; - yShift = Mth.sin((float) (AnimationTickHolder.getRenderTime() * speed)) / 5f; - - MultiBufferSource.BufferSource buffer = mc.renderBuffers() - .bufferSource(); - Camera info = mc.gameRenderer.getMainCamera(); - Vec3 view = info.getPosition(); - - PoseStack ms = event.getPoseStack(); - ms.pushPose(); - ms.translate(pos.getX() - view.x(), pos.getY() - view.y(), pos.getZ() - view.z()); - ms.translate(0, yShift + .2f, 0); - mirror.applyModelTransform(ms); - BakedModel model = mirror.getModel() - .get(); - VertexConsumer builder = buffer.getBuffer(RenderType.solid()); - - mc.getBlockRenderer() - .getModelRenderer() - .tesselateBlock(player.level(), model, Blocks.AIR.defaultBlockState(), pos, ms, builder, true, - random, Mth.getSeed(pos), OverlayTexture.NO_OVERLAY, ModelData.EMPTY, RenderType.solid()); - - ms.popPose(); - buffer.endBatch(); - } - } - - @OnlyIn(Dist.CLIENT) - @SubscribeEvent - public static void onClientTick(ClientTickEvent.Post event) { - Minecraft mc = Minecraft.getInstance(); - LocalPlayer player = mc.player; - - if (mc.level == null) - return; - if (mc.isPaused()) - return; - - tickCounter++; - - if (tickCounter % 10 == 0) { - for (int i = 0; i < Inventory.getSelectionSize(); i++) { - ItemStack stackInSlot = player.getInventory() - .getItem(i); - - if (stackInSlot != null && AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot) - && SymmetryWandItem.isEnabled(stackInSlot)) { - - SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); - if (mirror instanceof EmptyMirror) - continue; - - RandomSource random = mc.level.random; - double offsetX = (random.nextDouble() - 0.5) * 0.3; - double offsetZ = (random.nextDouble() - 0.5) * 0.3; - - Vec3 pos = mirror.getPosition() - .add(0.5 + offsetX, 1 / 4d, 0.5 + offsetZ); - Vec3 speed = new Vec3(0, random.nextDouble() * 1 / 8f, 0); - mc.level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, speed.z); - } - } - } - - } - - public static void drawEffect(BlockPos from, BlockPos to) { - ClientLevel level = Minecraft.getInstance().level; - RandomSource random = level.random; - - double density = 0.8f; - Vec3 start = Vec3.atLowerCornerOf(from) - .add(0.5, 0.5, 0.5); - Vec3 end = Vec3.atLowerCornerOf(to) - .add(0.5, 0.5, 0.5); - Vec3 diff = end.subtract(start); - - Vec3 step = diff.normalize() - .scale(density); - int steps = (int) (diff.length() / step.length()); - - for (int i = 3; i < steps - 1; i++) { - Vec3 pos = start.add(step.scale(i)); - Vec3 speed = new Vec3(0, random.nextDouble() * -40f, 0); - - level.addParticle(new DustParticleOptions(new Vector3f(1, 1, 1), 1), pos.x, pos.y, - pos.z, speed.x, speed.y, speed.z); - } - - Vec3 speed = new Vec3(0, random.nextDouble() * 1 / 32f, 0); - Vec3 pos = start.add(step.scale(2)); - level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, - speed.z); - - speed = new Vec3(0, random.nextDouble() * 1 / 32f, 0); - pos = start.add(step.scale(steps)); - level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, - speed.z); - } - } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandClient.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandClient.java new file mode 100644 index 0000000000..9aa8d9cf1d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandClient.java @@ -0,0 +1,145 @@ +package com.simibubi.create.content.equipment.symmetryWand; + +import java.util.function.Consumer; + +import com.simibubi.create.AllItems; +import com.simibubi.create.content.equipment.symmetryWand.mirror.EmptyMirror; +import com.simibubi.create.content.equipment.symmetryWand.mirror.SymmetryMirror; +import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; + +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.Vec3; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.client.event.ClientTickEvent; +import net.neoforged.neoforge.client.event.RenderLevelStageEvent; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; + +@EventBusSubscriber(Dist.CLIENT) +public class SymmetryWandClient { + + private static int tickCounter = 0; + + public static void initializeClient(SymmetryWandItem item, Consumer consumer) { + consumer.accept(SimpleCustomRenderer.create(item, new SymmetryWandItemRenderer())); + } + + public static void openScreen(ItemStack wand, InteractionHand hand) { + ScreenOpener.open(new SymmetryWandScreen(wand, hand)); + } + + @SubscribeEvent + public static void onRenderWorld(RenderLevelStageEvent.AfterTranslucentParticles event) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + if (player == null) + return; + RandomSource random = RandomSource.create(); + + for (int i = 0; i < Inventory.getSelectionSize(); i++) { + ItemStack stackInSlot = player.getInventory() + .getItem(i); + if (!AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot)) + continue; + if (!SymmetryWandItem.isEnabled(stackInSlot)) + continue; + SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); + if (mirror instanceof EmptyMirror) + continue; + + BlockPos pos = BlockPos.containing(mirror.getPosition()); + + float yShift = 0; + double speed = 1 / 16d; + yShift = Mth.sin((float) (AnimationTickHolder.getRenderTime() * speed)) / 5f; + + // TODO 26.2: Rebuild symmetry mirror preview rendering on the new BlockModel pipeline. + } + } + + @SubscribeEvent + public static void onClientTick(ClientTickEvent.Post event) { + Minecraft mc = Minecraft.getInstance(); + Player player = mc.player; + + if (mc.level == null || player == null) + return; + if (mc.isPaused()) + return; + + tickCounter++; + + if (tickCounter % 10 == 0) { + for (int i = 0; i < Inventory.getSelectionSize(); i++) { + ItemStack stackInSlot = player.getInventory() + .getItem(i); + + if (stackInSlot != null && AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot) + && SymmetryWandItem.isEnabled(stackInSlot)) { + + SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); + if (mirror instanceof EmptyMirror) + continue; + + RandomSource random = mc.level.getRandom(); + double offsetX = (random.nextDouble() - 0.5) * 0.3; + double offsetZ = (random.nextDouble() - 0.5) * 0.3; + + Vec3 pos = mirror.getPosition() + .add(0.5 + offsetX, 1 / 4d, 0.5 + offsetZ); + Vec3 speed = new Vec3(0, random.nextDouble() * 1 / 8f, 0); + mc.level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, speed.z); + } + } + } + + } + + public static void drawEffect(BlockPos from, BlockPos to) { + ClientLevel level = Minecraft.getInstance().level; + RandomSource random = level.getRandom(); + + double density = 0.8f; + Vec3 start = Vec3.atLowerCornerOf(from) + .add(0.5, 0.5, 0.5); + Vec3 end = Vec3.atLowerCornerOf(to) + .add(0.5, 0.5, 0.5); + Vec3 diff = end.subtract(start); + + Vec3 step = diff.normalize() + .scale(density); + int steps = (int) (diff.length() / step.length()); + + for (int i = 3; i < steps - 1; i++) { + Vec3 pos = start.add(step.scale(i)); + Vec3 speed = new Vec3(0, random.nextDouble() * -40f, 0); + + level.addParticle(new DustParticleOptions(0xffffff, 1), pos.x, pos.y, + pos.z, speed.x, speed.y, speed.z); + } + + Vec3 speed = new Vec3(0, random.nextDouble() * 1 / 32f, 0); + Vec3 pos = start.add(step.scale(2)); + level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, + speed.z); + + speed = new Vec3(0, random.nextDouble() * 1 / 32f, 0); + pos = start.add(step.scale(steps)); + level.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, + speed.z); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItem.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItem.java index 1185a5fbe8..0d0a694f7a 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItem.java @@ -16,18 +16,15 @@ import com.simibubi.create.content.equipment.symmetryWand.mirror.EmptyMirror; import com.simibubi.create.content.equipment.symmetryWand.mirror.PlaneMirror; import com.simibubi.create.content.equipment.symmetryWand.mirror.SymmetryMirror; -import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -44,8 +41,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.common.util.BlockSnapshot; import net.neoforged.neoforge.event.EventHooks; @@ -63,24 +58,24 @@ public InteractionResult useOn(UseOnContext context) { BlockPos pos = context.getClickedPos(); if (player == null) return InteractionResult.PASS; - player.getCooldowns() - .addCooldown(this, 5); ItemStack wand = player.getItemInHand(context.getHand()); + player.getCooldowns() + .addCooldown(wand, 5); checkComponents(wand); // Shift -> open GUI if (player.isShiftKeyDown()) { - if (player.level().isClientSide) { + if (player.level().isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { openWandGUI(wand, context.getHand()); }); player.getCooldowns() - .addCooldown(this, 5); + .addCooldown(wand, 5); } return InteractionResult.SUCCESS; } - if (context.getLevel().isClientSide || context.getHand() != InteractionHand.MAIN_HAND) + if (context.getLevel().isClientSide() || context.getHand() != InteractionHand.MAIN_HAND) return InteractionResult.SUCCESS; pos = pos.relative(context.getClickedFace()); @@ -126,30 +121,29 @@ public InteractionResult useOn(UseOnContext context) { } @Override - public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { + public InteractionResult use(Level worldIn, Player playerIn, InteractionHand handIn) { ItemStack wand = playerIn.getItemInHand(handIn); checkComponents(wand); // Shift -> Open GUI if (playerIn.isShiftKeyDown()) { - if (worldIn.isClientSide) { + if (worldIn.isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { openWandGUI(playerIn.getItemInHand(handIn), handIn); }); playerIn.getCooldowns() - .addCooldown(this, 5); + .addCooldown(wand, 5); } - return new InteractionResultHolder<>(InteractionResult.SUCCESS, wand); + return InteractionResult.SUCCESS.heldItemTransformedTo(wand); } // No Shift -> Clear Mirror wand.set(AllDataComponents.SYMMETRY_WAND_ENABLE, false); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, wand); + return InteractionResult.SUCCESS.heldItemTransformedTo(wand); } - @OnlyIn(Dist.CLIENT) private void openWandGUI(ItemStack wand, InteractionHand hand) { - ScreenOpener.open(new SymmetryWandScreen(wand, hand)); + SymmetryWandClient.openScreen(wand, hand); } private static void checkComponents(ItemStack wand) { @@ -205,8 +199,8 @@ public static void apply(Level world, ItemStack wand, Player player, BlockPos po if (world.isUnobstructed(block, position, CollisionContext.of(player))) { BlockState blockState = blockSet.get(position); for (Direction face : Iterate.directions) - blockState = blockState.updateShape(face, world.getBlockState(position.relative(face)), world, - position, position.relative(face)); + blockState = blockState.updateShape(world, world, position, face, position.relative(face), + world.getBlockState(position.relative(face)), world.getRandom()); if (player.isCreative()) { world.setBlockAndUpdate(position, blockState); @@ -312,10 +306,8 @@ public static boolean presentInHotbar(Player player) { return false; } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { - consumer.accept(SimpleCustomRenderer.create(this, new SymmetryWandItemRenderer())); + SymmetryWandClient.initializeClient(this, consumer); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItemRenderer.java index eb04c0b9e5..c51286460a 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandItemRenderer.java @@ -8,9 +8,9 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @@ -25,7 +25,7 @@ public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer { protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { float worldTime = AnimationTickHolder.getRenderTime() / 20; - int maxLight = LightTexture.FULL_BRIGHT; + int maxLight = LightCoordsUtil.FULL_BRIGHT; renderer.render(model.getOriginalModel(), light); renderer.renderSolidGlowing(CORE.get(), maxLight); diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandScreen.java index 52267442f7..04d1db7e46 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/SymmetryWandScreen.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.equipment.symmetryWand; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import org.joml.Vector3f; @@ -19,9 +19,9 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; @@ -121,12 +121,12 @@ private void initAlign(SymmetryMirror element, int x, int y) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); - graphics.drawString(font, wand.getHoverName(), + graphics.text(font, wand.getHoverName(), x + (background.getWidth() - font.width(wand.getHoverName())) / 2, y + 4, 0x592424, false); renderBlock(graphics, x, y); @@ -137,25 +137,14 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .render(graphics); } - protected void renderBlock(GuiGraphics graphics, int x, int y) { - PoseStack ms = graphics.pose(); - - ms.pushPose(); - ms.translate(x + 26, y + 39, 20); - ms.scale(16, 16, 16); - ms.mulPose(Axis.of(new Vector3f(.3f, 1f, 0f)).rotationDegrees(-22.5f)); - currentElement.applyModelTransform(ms); - // RenderSystem.multMatrix(ms.peek().getModel()); - GuiGameElement.of(currentElement.getModel()) - .render(graphics); - - ms.popPose(); + protected void renderBlock(GuiGraphicsExtractor graphics, int x, int y) { + // TODO 26.2: Rebuild symmetry mirror GUI preview on the GUI extractor PIP model path. } @Override public void removed() { SymmetryWandItem.configureSettings(wand, currentElement); - CatnipServices.NETWORK.sendToServer(new ConfigureSymmetryWandPacket(hand, currentElement)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ConfigureSymmetryWandPacket(hand, currentElement)); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/CrossPlaneMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/CrossPlaneMirror.java index 657f93bf19..9473a96784 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/CrossPlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/CrossPlaneMirror.java @@ -17,7 +17,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class CrossPlaneMirror extends SymmetryMirror { @@ -89,7 +88,6 @@ public String typeName() { } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getModel() { return AllPartialModels.SYMMETRY_CROSSPLANE; } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/EmptyMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/EmptyMirror.java index 01d0ddf651..bd86228473 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/EmptyMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/EmptyMirror.java @@ -13,7 +13,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class EmptyMirror extends SymmetryMirror { @@ -52,7 +51,6 @@ public String typeName() { } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getModel() { return null; } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/PlaneMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/PlaneMirror.java index 4e7785d6bd..2f1f134a0c 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/PlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/PlaneMirror.java @@ -17,7 +17,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class PlaneMirror extends SymmetryMirror { @@ -85,7 +84,6 @@ public String typeName() { } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getModel() { return AllPartialModels.SYMMETRY_PLANE; } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java index ee1f50cd48..4bf2d720d3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/SymmetryMirror.java @@ -13,7 +13,7 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -24,12 +24,11 @@ import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class SymmetryMirror { public static final String EMPTY = "empty"; @@ -115,7 +114,6 @@ public void process(Map blocks) { public abstract String typeName(); - @OnlyIn(Dist.CLIENT) public abstract PartialModel getModel(); public void applyModelTransform(PoseStack ms) {} @@ -140,11 +138,13 @@ protected BlockState flipY(BlockState in) { if (property == BlockStateProperties.HALF) return in.cycle(property); // Directional Blocks - if (property instanceof DirectionProperty) { + if (property instanceof EnumProperty && property.getPossibleValues() + .stream() + .allMatch(Direction.class::isInstance)) { if (in.getValue(property) == Direction.DOWN) { - return in.setValue((DirectionProperty) property, Direction.UP); + return in.setValue((EnumProperty) property, Direction.UP); } else if (in.getValue(property) == Direction.UP) { - return in.setValue((DirectionProperty) property, Direction.DOWN); + return in.setValue((EnumProperty) property, Direction.DOWN); } } } diff --git a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/TriplePlaneMirror.java b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/TriplePlaneMirror.java index 28ed63f39c..5a031570fe 100644 --- a/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/TriplePlaneMirror.java +++ b/src/main/java/com/simibubi/create/content/equipment/symmetryWand/mirror/TriplePlaneMirror.java @@ -15,7 +15,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TriplePlaneMirror extends SymmetryMirror { @@ -46,7 +45,6 @@ public String typeName() { } @Override - @OnlyIn(Dist.CLIENT) public PartialModel getModel() { return AllPartialModels.SYMMETRY_TRIPLEPLANE; } diff --git a/src/main/java/com/simibubi/create/content/equipment/tool/AllToolMaterials.java b/src/main/java/com/simibubi/create/content/equipment/tool/AllToolMaterials.java index c870a4754f..e21357f2ec 100644 --- a/src/main/java/com/simibubi/create/content/equipment/tool/AllToolMaterials.java +++ b/src/main/java/com/simibubi/create/content/equipment/tool/AllToolMaterials.java @@ -1,68 +1,14 @@ package com.simibubi.create.content.equipment.tool; -import java.util.function.Supplier; - -import org.jetbrains.annotations.NotNull; - -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; +import com.simibubi.create.AllTags.AllItemTags; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.block.Block; - -public enum AllToolMaterials implements Tier { - CARDBOARD(Create.asResource("cardboard") - .toString(), 0, 1, 2, 1, () -> Ingredient.of(AllItems.CARDBOARD.asItem())) - ; - - public final String name; - - private final int uses; - private final float speed; - private final float damageBonus; - private final int enchantValue; - private final Supplier repairMaterial; - - private AllToolMaterials(String name, int uses, float speed, float damageBonus, int enchantValue, - Supplier repairMaterial) { - this.name = name; - this.uses = uses; - this.speed = speed; - this.damageBonus = damageBonus; - this.enchantValue = enchantValue; - this.repairMaterial = repairMaterial; - } - - @Override - public int getUses() { - return uses; - } - - @Override - public float getSpeed() { - return speed; - } - - @Override - public float getAttackDamageBonus() { - return damageBonus; - } - - @Override - public @NotNull TagKey getIncorrectBlocksForDrops() { - return BlockTags.INCORRECT_FOR_WOODEN_TOOL; - } +import net.minecraft.world.item.ToolMaterial; - @Override - public int getEnchantmentValue() { - return enchantValue; - } +public class AllToolMaterials { + public static final ToolMaterial CARDBOARD = + new ToolMaterial(BlockTags.INCORRECT_FOR_WOODEN_TOOL, 0, 1, 2, 1, AllItemTags.CARDBOARD_PLATES.tag); - @Override - public @NotNull Ingredient getRepairIngredient() { - return repairMaterial.get(); + private AllToolMaterials() { } } diff --git a/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItem.java b/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItem.java index 3901ba74f5..a1e28d38ae 100644 --- a/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItem.java @@ -6,7 +6,7 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; import net.minecraft.server.level.ServerLevel; @@ -20,15 +20,14 @@ import net.minecraft.world.entity.MobCategory; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.ItemEnchantments; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.LogicalSide; @@ -38,10 +37,10 @@ import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @EventBusSubscriber -public class CardboardSwordItem extends SwordItem { +public class CardboardSwordItem extends Item { public CardboardSwordItem(Properties pProperties) { - super(AllToolMaterials.CARDBOARD, pProperties); + super(pProperties); } @Override @@ -49,7 +48,6 @@ public boolean supportsEnchantment(ItemStack stack, Holder enchantm return enchantment.getKey() == Enchantments.KNOCKBACK; } - @Override public boolean isBookEnchantable(ItemStack stack, ItemStack book) { ItemEnchantments enchants = book.getOrDefault(DataComponents.STORED_ENCHANTMENTS, ItemEnchantments.EMPTY); for (Holder enchantment : enchants.keySet()) { @@ -76,7 +74,9 @@ public static void cardboardSwordsMakeNoiseOnClick(PlayerInteractEvent.LeftClick @SubscribeEvent(priority = EventPriority.HIGHEST) public static void cardboardSwordsCannotHurtYou(AttackEntityEvent event) { Player attacker = event.getEntity(); - if (!(event.getTarget() instanceof LivingEntity target) || target.getType().is(EntityTypeTags.ARTHROPOD)) + if (!(event.getTarget() instanceof LivingEntity target) || target.getType() + .builtInRegistryHolder() + .is(EntityTypeTags.ARTHROPOD)) return; ItemStack stack = attacker.getItemInHand(InteractionHand.MAIN_HAND); if (!(AllItems.CARDBOARD_SWORD.isIn(stack))) @@ -108,7 +108,7 @@ public static void cardboardSwordsCannotHurtYou(AttackEntityEvent event) { CatnipServices.NETWORK.sendToClient(sp, new KnockbackPacket(yRot, (float) knockbackStrength)); if ((targetType == MobCategory.MISC || targetType == MobCategory.CREATURE) && !targetIsPlayer) - target.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 60, 9, true, false, false)); + target.addEffect(new MobEffectInstance(MobEffects.SLOWNESS, 60, 9, true, false, false)); attacker.setDeltaMovement(attacker.getDeltaMovement() .multiply(0.6D, 1.0D, 0.6D)); @@ -117,11 +117,10 @@ public static void cardboardSwordsCannotHurtYou(AttackEntityEvent event) { public static void knockback(LivingEntity target, double knockbackStrength, float yRot) { target.stopRiding(); - target.knockback(knockbackStrength * 0.5F, Mth.sin(yRot * Mth.DEG_TO_RAD), -Mth.cos(yRot * Mth.DEG_TO_RAD)); + target.knockback(knockbackStrength * 0.5F, Mth.sin(yRot * Mth.DEG_TO_RAD), + -Mth.cos(yRot * Mth.DEG_TO_RAD), target.damageSources().generic(), 0); } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { consumer.accept(SimpleCustomRenderer.create(this, new CardboardSwordItemRenderer())); } diff --git a/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItemRenderer.java index 85ab0fba12..e359c8c524 100644 --- a/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/tool/CardboardSwordItemRenderer.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/equipment/tool/KnockbackPacket.java b/src/main/java/com/simibubi/create/content/equipment/tool/KnockbackPacket.java index 4f96b415c8..e6ea347baa 100644 --- a/src/main/java/com/simibubi/create/content/equipment/tool/KnockbackPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/tool/KnockbackPacket.java @@ -4,12 +4,11 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record KnockbackPacket(float yRot, float strength) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -24,8 +23,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (player != null) CardboardSwordItem.knockback(player, strength, yRot); } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/RadialToolboxMenu.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/RadialToolboxMenu.java index 8068890231..005ff8ac0d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/RadialToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/RadialToolboxMenu.java @@ -8,24 +8,24 @@ import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; +import org.joml.Matrix3x2fStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.client.KeyMapping; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.item.DyeColor; @@ -58,7 +58,7 @@ public void prevSlot(int slot) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { float fade = Mth.clamp((ticksOpen + AnimationTickHolder.getPartialTicks()) / 10f, 1 / 512f, 1); hoveredSlot = -1; @@ -77,9 +77,9 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (renderCenterSlot && distance <= 150) hoveredSlot = UNEQUIP; - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(width / 2, height / 2, 0); + Matrix3x2fStack ms = graphics.pose(); + ms.pushMatrix(); + ms.translate(width / 2, height / 2); Component tip = null; if (state == State.DETACH) { @@ -88,50 +88,49 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (hoveredX > -20 && hoveredX < 20 && hoveredY > -80 && hoveredY < -20) hoveredSlot = UNEQUIP; - ms.pushPose(); + ms.pushMatrix(); AllGuiTextures.TOOLBELT_INACTIVE_SLOT.render(graphics, -12, -12); GuiGameElement.of(AllBlocks.TOOLBOXES.get(DyeColor.BROWN) .asStack()) .at(-9, -9) .render(graphics); - ms.translate(0, -40 + (10 * (1 - fade) * (1 - fade)), 0); + ms.translate(0, -40 + (10 * (1 - fade) * (1 - fade))); AllGuiTextures.TOOLBELT_SLOT.render(graphics, -12, -12); - ms.translate(-0.5, 0.5, 0); + ms.translate(-0.5f, 0.5f); AllIcons.I_DISABLE.render(graphics, -9, -9); - ms.translate(0.5, -0.5, 0); + ms.translate(0.5f, -0.5f); if (!scrollMode && hoveredSlot == UNEQUIP) { AllGuiTextures.TOOLBELT_SLOT_HIGHLIGHT.render(graphics, -13, -13); tip = CreateLang.translateDirect("toolbox.detach") .withStyle(ChatFormatting.GOLD); } - ms.popPose(); + ms.popMatrix(); } else { if (hoveredX > 60 && hoveredX < 100 && hoveredY > -20 && hoveredY < 20) hoveredSlot = DEPOSIT; - ms.pushPose(); - ms.translate(80 + (-5 * (1 - fade) * (1 - fade)), 0, 0); + ms.pushMatrix(); + ms.translate(80 + (-5 * (1 - fade) * (1 - fade)), 0); AllGuiTextures.TOOLBELT_SLOT.render(graphics, -12, -12); - ms.translate(-0.5, 0.5, 0); + ms.translate(-0.5f, 0.5f); AllIcons.I_TOOLBOX.render(graphics, -9, -9); - ms.translate(0.5, -0.5, 0); + ms.translate(0.5f, -0.5f); if (!scrollMode && hoveredSlot == DEPOSIT) { AllGuiTextures.TOOLBELT_SLOT_HIGHLIGHT.render(graphics, -13, -13); tip = CreateLang.translateDirect(state == State.SELECT_BOX ? "toolbox.depositAll" : "toolbox.depositBox") .withStyle(ChatFormatting.GOLD); } - ms.popPose(); + ms.popMatrix(); for (int slot = 0; slot < 8; slot++) { - ms.pushPose(); - TransformStack.of(ms) - .rotateZDegrees(slot * 45 - 45) - .translate(0, -40 + (10 * (1 - fade) * (1 - fade)), 0) - .rotateZDegrees(-slot * 45 + 45); - ms.translate(-12, -12, 0); + ms.pushMatrix(); + ms.rotate((float) Math.toRadians(slot * 45 - 45)); + ms.translate(0, -40 + (10 * (1 - fade) * (1 - fade))); + ms.rotate((float) Math.toRadians(-slot * 45 + 45)); + ms.translate(-12, -12); if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { ToolboxInventory inv = selectedBox.inventory; @@ -173,11 +172,11 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float } - ms.popPose(); + ms.popMatrix(); } if (renderCenterSlot) { - ms.pushPose(); + ms.pushMatrix(); AllGuiTextures.TOOLBELT_SLOT.render(graphics, -12, -12); (scrollMode ? AllIcons.I_REFRESH : AllIcons.I_FLIP).render(graphics, -9, -9); if (!scrollMode && UNEQUIP == hoveredSlot) { @@ -186,10 +185,10 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .getHoverName()) .withStyle(ChatFormatting.GOLD); } - ms.popPose(); + ms.popMatrix(); } } - ms.popPose(); + ms.popMatrix(); if (tip != null) { int i1 = (int) (fade * 255.0F); @@ -197,23 +196,23 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float i1 = 255; if (i1 > 8) { - ms.pushPose(); - ms.translate((float) (width / 2), (float) (height - 68), 0.0F); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); + ms.pushMatrix(); + ms.translate((float) (width / 2), (float) (height - 68)); + LegacyRenderSystemBridge.enableBlend(); + LegacyRenderSystemBridge.defaultBlendFunc(); int k1 = 16777215; int k = i1 << 24 & -16777216; int l = font.width(tip); - graphics.drawString(font, tip, Math.round(-l / 2f), -4, k1 | k, false); - RenderSystem.disableBlend(); - ms.popPose(); + graphics.text(font, tip, Math.round(-l / 2f), -4, k1 | k, false); + LegacyRenderSystemBridge.disableBlend(); + ms.popMatrix(); } } } @Override - public void renderBackground(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { + public void renderBackground(GuiGraphicsExtractor pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { Color color = BACKGROUND_COLOR .scaleAlpha(Math.min(1, (ticksOpen + AnimationTickHolder.getPartialTicks()) / 20f)); @@ -236,9 +235,9 @@ public void removed() { if (state == State.DETACH) return; else if (state == State.SELECT_BOX) - toolboxes.forEach(be -> CatnipServices.NETWORK.sendToServer(new ToolboxDisposeAllPacket(be.getBlockPos()))); + toolboxes.forEach(be -> net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxDisposeAllPacket(be.getBlockPos()))); else - CatnipServices.NETWORK.sendToServer(new ToolboxDisposeAllPacket(selectedBox.getBlockPos())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxDisposeAllPacket(selectedBox.getBlockPos())); return; } @@ -247,14 +246,14 @@ else if (state == State.SELECT_BOX) if (state == State.DETACH) { if (selected == UNEQUIP) - CatnipServices.NETWORK.sendToServer( - new ToolboxEquipPacket(null, selected, minecraft.player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( + new ToolboxEquipPacket(null, selected, minecraft.player.getInventory().getSelectedSlot())); return; } if (selected == UNEQUIP) - CatnipServices.NETWORK.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - minecraft.player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, + minecraft.player.getInventory().getSelectedSlot())); if (selected < 0) return; @@ -266,8 +265,8 @@ else if (state == State.SELECT_BOX) .isEmpty()) return; - CatnipServices.NETWORK.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - minecraft.player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, + minecraft.player.getInventory().getSelectedSlot())); } @Override @@ -339,8 +338,8 @@ public boolean mouseClicked(double x, double y, int button) { if (state == State.SELECT_ITEM_UNEQUIP && selected == UNEQUIP) { if (toolboxes.size() > 1) { - CatnipServices.NETWORK.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, - minecraft.player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxEquipPacket(selectedBox.getBlockPos(), selected, + minecraft.player.getInventory().getSelectedSlot())); state = State.SELECT_BOX; return true; } @@ -357,8 +356,9 @@ public boolean mouseClicked(double x, double y, int button) { @Override public boolean keyPressed(int code, int scanCode, int modifiers) { KeyMapping[] hotbarBinds = minecraft.options.keyHotbarSlots; + KeyEvent event = new KeyEvent(code, scanCode, modifiers); for (int i = 0; i < hotbarBinds.length && i < 8; i++) { - if (hotbarBinds[i].matches(code, scanCode)) { + if (hotbarBinds[i].matches(event)) { if (state == State.SELECT_ITEM || state == State.SELECT_ITEM_UNEQUIP) { ToolboxInventory inv = selectedBox.inventory; @@ -384,7 +384,7 @@ public boolean keyPressed(int code, int scanCode, int modifiers) { @Override public boolean keyReleased(int code, int scanCode, int modifiers) { - InputConstants.Key mouseKey = InputConstants.getKey(code, scanCode); + InputConstants.Key mouseKey = InputConstants.getKey(new KeyEvent(code, scanCode, modifiers)); if (AllKeys.TOOLBELT.getKeybind() .isActiveAndMatches(mouseKey)) { onClose(); diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java index 75efd8229b..4fea4e5820 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolBoxVisual.java @@ -13,7 +13,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; public class ToolBoxVisual extends AbstractBlockEntityVisual implements SimpleDynamicVisual { diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlock.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlock.java index 629062d0d9..597bab6ca9 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlock.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlock.java @@ -17,10 +17,11 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.component.DataComponents; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; @@ -30,6 +31,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.SimpleWaterloggedBlock; @@ -71,7 +73,7 @@ protected void createBlockStateDefinition(Builder builder) { @Override public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { super.setPlacedBy(worldIn, pos, state, placer, stack); - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; if (stack == null) return; @@ -85,20 +87,21 @@ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEnt } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moving) { - if (state.hasBlockEntity() && (!newState.hasBlockEntity() || !(newState.getBlock() instanceof ToolboxBlock))) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean moving) { + if (state.hasBlockEntity()) world.removeBlockEntity(pos); + super.affectNeighborsAfterRemoval(state, world, pos, moving); } @Override public void attack(BlockState state, Level world, BlockPos pos, Player player) { if (player instanceof FakePlayer) return; - if (world.isClientSide) + if (world.isClientSide()) return; withBlockEntityDo(world, pos, ToolboxBlockEntity::unequipTracked); if (world instanceof ServerLevel) { - ItemStack cloneItemStack = getCloneItemStack(world, pos, state); + ItemStack cloneItemStack = getCloneItemStack(world, pos, state, true); withBlockEntityDo(world, pos, i -> { cloneItemStack.applyComponents(i.collectComponents()); }); @@ -109,7 +112,7 @@ public void attack(BlockState state, Level world, BlockPos pos, Player player) { } @Override - public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData) { ItemStack item = new ItemStack(this); Optional blockEntityOptional = getBlockEntityOptional(level, pos); @@ -124,10 +127,9 @@ public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState s } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -137,28 +139,28 @@ public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, Co } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null || player.isCrouching()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; DyeColor color = DyeColor.getColor(stack); if (color != null && color != this.color) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; BlockState newState = BlockHelper.copyProperties(state, AllBlocks.TOOLBOXES.get(color) .getDefaultState()); level.setBlockAndUpdate(pos, newState); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (player instanceof FakePlayer) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, toolbox -> player.openMenu(toolbox, toolbox::sendToMenu)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -190,7 +192,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return ItemHelper.calcRedstoneFromBlockEntity(this, pLevel, pPos); } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlockEntity.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlockEntity.java index c8c5cd1d16..3276ae22dd 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxBlockEntity.java @@ -17,13 +17,17 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.foundation.utility.ResetableLazy; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponentGetter; import net.minecraft.core.component.DataComponentMap.Builder; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -77,9 +81,9 @@ public ToolboxBlockEntity(BlockEntityType type, BlockPos pos, BlockState stat public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.TOOLBOX.get(), - (be, context) -> be.inventory + (be, context) -> new LegacyItemTransferAdapter(be.inventory) ); } @@ -108,9 +112,9 @@ public void invalidate() { public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) tickAudio(); - if (!level.isClientSide) + if (!level.isClientSide()) tickPlayers(); lid.chase(openTracker.openCount > 0 ? 1 : 0, 0.2f, Chaser.LINEAR); @@ -148,7 +152,7 @@ private void tickPlayers() { if (clear || !playerStack.isEmpty() && !ToolboxInventory.canItemsShareCompartment(playerStack, referenceItem)) { player.getPersistentData() - .getCompound("CreateToolboxData") + .getCompoundOrEmpty("CreateToolboxData") .remove(String.valueOf(hotbarSlot)); playerEntries.remove(); if (player instanceof ServerPlayer) @@ -220,7 +224,7 @@ private boolean isOpenInContainer(Player player) { } public void unequipTracked() { - if (level.isClientSide) + if (level.isClientSide()) return; Set affected = new HashSet<>(); @@ -266,28 +270,29 @@ private void tickAudio() { if (lid.settled()) { if (openTracker.openCount > 0 && lid.getChaseTarget() == 0) { level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_OPEN, SoundSource.BLOCKS, 0.25F, - level.random.nextFloat() * 0.1F + 1.2F, true); + level.getRandom().nextFloat() * 0.1F + 1.2F, true); level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_OPEN, SoundSource.BLOCKS, 0.1F, - level.random.nextFloat() * 0.1F + 1.1F, true); + level.getRandom().nextFloat() * 0.1F + 1.1F, true); } if (openTracker.openCount == 0 && lid.getChaseTarget() == 1) level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.1F, - level.random.nextFloat() * 0.1F + 1.1F, true); + level.getRandom().nextFloat() * 0.1F + 1.1F, true); } else if (openTracker.openCount == 0 && lid.getChaseTarget() == 0 && lid.getValue(0) > 1 / 16f && lid.getValue(1) < 1 / 16f) level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, 0.25F, - level.random.nextFloat() * 0.1F + 1.2F, true); + level.getRandom().nextFloat() * 0.1F + 1.2F, true); } @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); + inventory.deserializeNBT(registries, compound.getCompoundOrEmpty("Inventory")); super.read(compound, registries, clientPacket); - if (compound.contains("UniqueId", 11)) - this.uniqueId = compound.getUUID("UniqueId"); - if (compound.contains("CustomName", 8)) - this.customName = Component.Serializer.fromJson(compound.getString("CustomName"), registries); + if (LegacyNbtUtilsBridge.hasUUID(compound, "UniqueId")) + this.uniqueId = LegacyNbtUtilsBridge.getUUID(compound, "UniqueId"); + if (compound.contains("CustomName")) + this.customName = + LegacyComponentSerializationBridge.fromJson(compound.getStringOr("CustomName", ""), registries); } @Override @@ -296,10 +301,10 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo uniqueId = UUID.randomUUID(); compound.put("Inventory", inventory.serializeNBT(registries)); - compound.putUUID("UniqueId", uniqueId); + LegacyNbtUtilsBridge.putUUID(compound, "UniqueId", uniqueId); if (customName != null) - compound.putString("CustomName", Component.Serializer.toJson(customName, registries)); + compound.putString("CustomName", LegacyComponentSerializationBridge.toJson(customName, registries)); super.write(compound, registries, clientPacket); } @@ -316,7 +321,7 @@ public void lazyTick() { } public void connectPlayer(int slot, Player player, int hotbarSlot) { - if (level.isClientSide) + if (level.isClientSide()) return; WeakHashMap map = connectedPlayers.computeIfAbsent(slot, WeakHashMap::new); Integer previous = map.get(player); @@ -384,7 +389,7 @@ public void setBlockState(BlockState state) { } @Override - protected void applyImplicitComponents(DataComponentInput componentInput) { + protected void applyImplicitComponents(DataComponentGetter componentInput) { setUniqueId(componentInput.get(AllDataComponents.TOOLBOX_UUID)); readInventory(componentInput.get(AllDataComponents.TOOLBOX_INVENTORY)); } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDisposeAllPacket.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDisposeAllPacket.java index c27117ebbf..d42e31d418 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDisposeAllPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDisposeAllPacket.java @@ -4,7 +4,7 @@ import com.simibubi.create.AllPackets; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.createmod.catnip.net.base.ServerboundPacketPayload; import io.netty.buffer.ByteBuf; @@ -41,13 +41,13 @@ public void handle(ServerPlayer player) { return; CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); MutableBoolean sendData = new MutableBoolean(false); toolbox.inventory.inLimitedMode(inventory -> { for (int i = 0; i < 36; i++) { String key = String.valueOf(i); - if (compound.contains(key) && NBTHelper.readBlockPos(compound.getCompound(key), "Pos") + if (compound.contains(key) && NBTHelper.readBlockPos(compound.getCompoundOrEmpty(key), "Pos") .equals(toolboxPos)) { ToolboxHandler.unequip(player, i, true); sendData.setTrue(); diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDyeingRecipe.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDyeingRecipe.java index d7df2c73b7..68c410cf15 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDyeingRecipe.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxDyeingRecipe.java @@ -2,10 +2,12 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; +import com.mojang.serialization.MapCodec; -import net.minecraft.core.HolderLookup; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.Identifier; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -18,9 +20,13 @@ import net.neoforged.neoforge.common.Tags; public class ToolboxDyeingRecipe extends CustomRecipe { + public static final MapCodec CODEC = + MapCodec.unit(() -> new ToolboxDyeingRecipe(CraftingBookCategory.MISC)); + public static final StreamCodec STREAM_CODEC = + StreamCodec.unit(new ToolboxDyeingRecipe(CraftingBookCategory.MISC)); + public static final RecipeSerializer SERIALIZER = new RecipeSerializer<>(CODEC, STREAM_CODEC); public ToolboxDyeingRecipe(CraftingBookCategory category) { - super(category); } @Override @@ -49,7 +55,7 @@ public boolean matches(CraftingInput input, Level level) { } @Override - public ItemStack assemble(CraftingInput input, HolderLookup.Provider registries) { + public ItemStack assemble(CraftingInput input) { ItemStack toolbox = ItemStack.EMPTY; DyeColor color = DyeColor.BROWN; @@ -76,14 +82,13 @@ public ItemStack assemble(CraftingInput input, HolderLookup.Provider registries) return dyedToolbox; } - @Override public boolean canCraftInDimensions(int width, int height) { return width * height >= 2; } @Override - public RecipeSerializer getSerializer() { - return AllRecipeTypes.TOOLBOX_DYEING.getSerializer(); + public RecipeSerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxEquipPacket.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxEquipPacket.java index 7ee582066e..6264d74af3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxEquipPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxEquipPacket.java @@ -3,7 +3,7 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -70,12 +70,12 @@ public void handle(ServerPlayer player) { } CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); String key = String.valueOf(hotbarSlot); CompoundTag data = new CompoundTag(); data.putInt("Slot", slot); - data.put("Pos", NbtUtils.writeBlockPos(toolboxPos)); + data.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(toolboxPos)); compound.put(key, data); player.getPersistentData() diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandler.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandler.java index 161c231edc..9724c1cc88 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandler.java @@ -7,9 +7,9 @@ import com.simibubi.create.foundation.networking.ISyncPersistentData.PersistentDataPacket; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; @@ -39,7 +39,7 @@ public static void onUnload(ToolboxBlockEntity be) { static int validationTimer = 20; public static void entityTick(Entity entity, Level world) { - if (world.isClientSide) + if (world.isClientSide()) return; if (!(world instanceof ServerLevel)) return; @@ -54,15 +54,15 @@ public static void entityTick(Entity entity, Level world) { boolean sendData = false; CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); for (int i = 0; i < 9; i++) { String key = String.valueOf(i); if (!compound.contains(key)) continue; - CompoundTag data = compound.getCompound(key); + CompoundTag data = compound.getCompoundOrEmpty(key); BlockPos pos = NBTHelper.readBlockPos(data, "Pos"); - int slot = data.getInt("Slot"); + int slot = data.getIntOr("Slot", 0); if (!world.isLoaded(pos)) continue; @@ -88,7 +88,7 @@ public static void playerLogin(Player player) { if (player.getPersistentData() .contains("CreateToolboxData") && !player.getPersistentData() - .getCompound("CreateToolboxData") + .getCompoundOrEmpty("CreateToolboxData") .isEmpty()) { syncData(player); } @@ -115,15 +115,15 @@ public static List getNearest(LevelAccessor world, Player pl public static void unequip(Player player, int hotbarSlot, boolean keepItems) { CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); Level world = player.level(); String key = String.valueOf(hotbarSlot); if (!compound.contains(key)) return; - CompoundTag prevData = compound.getCompound(key); + CompoundTag prevData = compound.getCompoundOrEmpty(key); BlockPos prevPos = NBTHelper.readBlockPos(prevData, "Pos"); - int prevSlot = prevData.getInt("Slot"); + int prevSlot = prevData.getIntOr("Slot", 0); BlockEntity prevBlockEntity = world.getBlockEntity(prevPos); if (prevBlockEntity instanceof ToolboxBlockEntity toolbox) { diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandlerClient.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandlerClient.java index 697e9f3af2..7f271795ab 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandlerClient.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxHandlerClient.java @@ -9,18 +9,17 @@ import java.util.List; import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -37,7 +36,7 @@ public class ToolboxHandlerClient { - public static final LayeredDraw.Layer OVERLAY = ToolboxHandlerClient::renderOverlay; + public static final GuiLayer OVERLAY = ToolboxHandlerClient::renderOverlay; static int COOLDOWN = 0; @@ -70,14 +69,14 @@ public static boolean onPickItem() { BlockState state = level.getBlockState(pos); if (state.isAir()) return false; - result = state.getCloneItemStack(hitResult, level, pos, player); + result = state.getCloneItemStack(level, pos, true); } else if (hitResult.getType() == HitResult.Type.ENTITY) { Entity entity = ((EntityHitResult) hitResult).getEntity(); - result = entity.getPickedResult(hitResult); + result = entity.getPickResult(); } - if (result.isEmpty()) + if (result == null || result.isEmpty()) return false; for (ToolboxBlockEntity toolboxBlockEntity : toolboxes) { @@ -91,8 +90,8 @@ public static boolean onPickItem() { if (!ItemStack.matches(inSlot, result)) continue; - CatnipServices.NETWORK.sendToServer( - new ToolboxEquipPacket(toolboxBlockEntity.getBlockPos(), comp, player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( + new ToolboxEquipPacket(toolboxBlockEntity.getBlockPos(), comp, player.getInventory().getSelectedSlot())); return true; } @@ -119,13 +118,14 @@ public static void onKeyInput(int key, boolean pressed) { toolboxes.sort(Comparator.comparing(ToolboxBlockEntity::getUniqueId)); CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); - String slotKey = String.valueOf(player.getInventory().selected); + String slotKey = String.valueOf(player.getInventory().getSelectedSlot()); boolean equipped = compound.contains(slotKey); if (equipped) { - BlockPos pos = NBTHelper.readBlockPos(compound.getCompound(slotKey), "Pos"); + CompoundTag slotData = compound.getCompoundOrEmpty(slotKey); + BlockPos pos = NBTHelper.readBlockPos(slotData, "Pos"); double max = ToolboxHandler.getMaxRange(player); boolean canReachToolbox = ToolboxHandler.distance(player.position(), pos) < max * max; @@ -134,8 +134,7 @@ public static void onKeyInput(int key, boolean pressed) { if (blockEntity instanceof ToolboxBlockEntity) { RadialToolboxMenu screen = new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_ITEM_UNEQUIP, (ToolboxBlockEntity) blockEntity); - screen.prevSlot(compound.getCompound(slotKey) - .getInt("Slot")); + screen.prevSlot(slotData.getIntOr("Slot", 0)); ScreenOpener.open(screen); return; } @@ -154,16 +153,16 @@ public static void onKeyInput(int key, boolean pressed) { ScreenOpener.open(new RadialToolboxMenu(toolboxes, RadialToolboxMenu.State.SELECT_BOX, null)); } - public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { - int width = guiGraphics.guiWidth(); - int height = guiGraphics.guiHeight(); + public static void renderOverlay(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { + int width = GuiGraphicsExtractor.guiWidth(); + int height = GuiGraphicsExtractor.guiHeight(); Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gui.hud.isHidden() || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; int x = width / 2 - 90; int y = height - 23; - RenderSystem.enableDepthTest(); + LegacyRenderSystemBridge.enableDepthTest(); Player player = mc.player; CompoundTag persistentData = player.getPersistentData(); @@ -171,27 +170,24 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac return; CompoundTag compound = player.getPersistentData() - .getCompound("CreateToolboxData"); + .getCompoundOrEmpty("CreateToolboxData"); if (compound.isEmpty()) return; - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); for (int slot = 0; slot < 9; slot++) { String key = String.valueOf(slot); if (!compound.contains(key)) continue; - BlockPos pos = NBTHelper.readBlockPos(compound.getCompound(key), "Pos"); + BlockPos pos = NBTHelper.readBlockPos(compound.getCompoundOrEmpty(key), "Pos"); double max = ToolboxHandler.getMaxRange(player); - boolean selected = player.getInventory().selected == slot; + boolean selected = player.getInventory().getSelectedSlot() == slot; int offset = selected ? 1 : 0; AllGuiTextures texture = ToolboxHandler.distance(player.position(), pos) < max * max ? selected ? TOOLBELT_SELECTED_ON : TOOLBELT_HOTBAR_ON : selected ? TOOLBELT_SELECTED_OFF : TOOLBELT_HOTBAR_OFF; - texture.render(guiGraphics, x + 20 * slot - offset, y + offset); + texture.render(GuiGraphicsExtractor, x + 20 * slot - offset, y + offset); } - poseStack.popPose(); } } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxInventory.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxInventory.java index 3b14baee84..c800116e0f 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxInventory.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxInventory.java @@ -14,12 +14,12 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemSlots; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.ItemStack; @@ -160,30 +160,28 @@ public void setStackInSlot(int slot, ItemStack stack) { return insertItem; } - @Override public @NotNull CompoundTag serializeNBT(@NotNull HolderLookup.Provider registries) { - CompoundTag compound = super.serializeNBT(registries); + CompoundTag compound = LegacyItemStackNbtBridge.serializeHandler(this, registries); compound.put("Compartments", NBTHelper.writeItemList(filters, registries)); return compound; } @Override protected void onContentsChanged(int slot) { - if (!settling && (blockEntity == null || !blockEntity.getLevel().isClientSide)) + if (!settling && (blockEntity == null || !blockEntity.getLevel().isClientSide())) settle(slot / STACKS_PER_COMPARTMENT); notifyUpdate(); super.onContentsChanged(slot); } - @Override public void deserializeNBT(@NotNull HolderLookup.Provider registries, CompoundTag nbt) { - filters = NBTHelper.readItemList(nbt.getList("Compartments", Tag.TAG_COMPOUND), registries); + filters = NBTHelper.readItemList(nbt.getListOrEmpty("Compartments"), registries); if (filters.size() != 8) { filters.clear(); for (int i = 0; i < 8; i++) filters.add(ItemStack.EMPTY); } - super.deserializeNBT(registries, nbt); + LegacyItemStackNbtBridge.deserializeHandler(this, registries, nbt); } public ItemStack distributeToCompartment(@NotNull ItemStack stack, int compartment, boolean simulate) { diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxMenu.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxMenu.java index 7891de7fd9..98e1041d82 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxMenu.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxMenu.java @@ -14,7 +14,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; @@ -76,14 +76,14 @@ protected void initAndReadInventory(ToolboxBlockEntity contentHolder) { } @Override - public void clicked(int index, int flags, ClickType type, Player player) { + public void clicked(int index, int flags, ContainerInput type, Player player) { int size = contentHolder.inventory.getSlots(); if (index >= 0 && index < size) { ItemStack itemInClickedSlot = getSlot(index).getItem(); ItemStack carried = getCarried(); - if (type == ClickType.PICKUP && !carried.isEmpty() && !itemInClickedSlot.isEmpty() + if (type == ContainerInput.PICKUP && !carried.isEmpty() && !itemInClickedSlot.isEmpty() && ToolboxInventory.canItemsShareCompartment(itemInClickedSlot, carried)) { int subIndex = index % STACKS_PER_COMPARTMENT; if (subIndex != STACKS_PER_COMPARTMENT - 1) { @@ -92,8 +92,8 @@ public void clicked(int index, int flags, ClickType type, Player player) { } } - if (type == ClickType.PICKUP && carried.isEmpty() && itemInClickedSlot.isEmpty()) - if (!player.level().isClientSide) { + if (type == ContainerInput.PICKUP && carried.isEmpty() && itemInClickedSlot.isEmpty()) + if (!player.level().isClientSide()) { contentHolder.inventory.filters.set(index / STACKS_PER_COMPARTMENT, ItemStack.EMPTY); contentHolder.sendData(); } @@ -154,7 +154,7 @@ protected void saveData(ToolboxBlockEntity contentHolder) { @Override public void removed(Player playerIn) { super.removed(playerIn); - if (!playerIn.level().isClientSide) + if (!playerIn.level().isClientSide()) BlockEntityBehaviour.get(contentHolder, AnimatedContainerBehaviour.TYPE) .stopOpen(playerIn); } diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxRenderer.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxRenderer.java index 1a61d5bade..b3a72d6762 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxRenderer.java @@ -5,11 +5,11 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -34,7 +34,7 @@ protected void renderSafe(ToolboxBlockEntity blockEntity, float partialTicks, Po float lidAngle = blockEntity.lid.getValue(partialTicks); float drawerOffset = blockEntity.drawers.getValue(partialTicks); - VertexConsumer builder = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer builder = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); lid.center() .rotateYDegrees(-facing.toYRot()) .uncenter() diff --git a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java index 72e8f85797..14ffec2534 100644 --- a/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/toolbox/ToolboxScreen.java @@ -4,21 +4,19 @@ import java.util.List; import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.menu.AbstractSimiContainerScreen; import com.simibubi.create.foundation.gui.widget.IconButton; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -60,7 +58,7 @@ protected void init() { disposeButton = new IconButton(leftPos + 30 + 81, topPos + 69, AllIcons.I_TOOLBOX); disposeButton.withCallback(() -> { - CatnipServices.NETWORK.sendToServer(new ToolboxDisposeAllPacket(menu.contentHolder.getBlockPos())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ToolboxDisposeAllPacket(menu.contentHolder.getBlockPos())); }); disposeButton.setToolTip(CreateLang.translateDirect("toolbox.depositBox")); addRenderableWidget(disposeButton); @@ -71,19 +69,19 @@ protected void init() { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { menu.renderPass = true; super.render(graphics, mouseX, mouseY, partialTicks); menu.renderPass = false; } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int x = leftPos + imageWidth - BG.getWidth(); int y = topPos; BG.render(graphics, x, y); - graphics.drawString(font, title, x + 15, y + 4, 0x592424, false); + graphics.text(font, title, x + 15, y + 4, 0x592424, false); int invX = leftPos; int invY = topPos + imageHeight - PLAYER.getHeight(); @@ -91,8 +89,6 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in renderToolbox(graphics, x + BG.getWidth() + 50, y + BG.getHeight() + 12, partialTicks); - PoseStack ms = graphics.pose(); - hoveredToolboxSlot = null; for (int compartment = 0; compartment < 8; compartment++) { int baseIndex = compartment * ToolboxInventory.STACKS_PER_COMPARTMENT; @@ -107,61 +103,34 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in if (!itemstack.isEmpty()) { int count = menu.totalCountInCompartment(compartment); String s = String.valueOf(count); - ms.pushPose(); - ms.translate(0, 0, 100); - RenderSystem.enableDepthTest(); - graphics.renderItem(minecraft.player, itemstack, i, j, 0); - graphics.renderItemDecorations(font, itemstack, i, j, s); - ms.popPose(); + LegacyRenderSystemBridge.enableDepthTest(); + graphics.item(minecraft.player, itemstack, i, j, 0); + graphics.itemDecorations(font, itemstack, i, j, s); } if (isHovering(slot.x, slot.y, 16, 16, mouseX, mouseY)) { hoveredToolboxSlot = slot; - RenderSystem.disableDepthTest(); - RenderSystem.colorMask(true, true, true, false); + LegacyRenderSystemBridge.disableDepthTest(); + LegacyRenderSystemBridge.colorMask(true, true, true, false); int slotColor = this.getSlotColor(baseIndex); graphics.fillGradient(i, j, i + 16, j + 16, slotColor, slotColor); - RenderSystem.colorMask(true, true, true, true); - RenderSystem.enableDepthTest(); + LegacyRenderSystemBridge.colorMask(true, true, true, true); + LegacyRenderSystemBridge.enableDepthTest(); } } } - private void renderToolbox(GuiGraphics graphics, int x, int y, float partialTicks) { - PoseStack ms = graphics.pose(); - TransformStack.of(ms) - .pushPose() - .translate(x, y, 100) - .scale(50) - .rotateXDegrees(-22) - .rotateYDegrees(-202); - + private void renderToolbox(GuiGraphicsExtractor graphics, int x, int y, float partialTicks) { + // TODO 26.2: Restore animated toolbox lid/drawer preview with GUI PIP rendering. GuiGameElement.of(AllBlocks.TOOLBOXES.get(color) .getDefaultState()) + .scale(50) + .at(x, y) .render(graphics); - - TransformStack.of(ms) - .pushPose() - .translate(0, -6 / 16f, 12 / 16f) - .rotateXDegrees(-105 * menu.contentHolder.lid.getValue(partialTicks)) - .translate(0, 6 / 16f, -12 / 16f); - GuiGameElement.of(AllPartialModels.TOOLBOX_LIDS.get(color)) - .render(graphics); - ms.popPose(); - - for (int offset : Iterate.zeroAndOne) { - ms.pushPose(); - ms.translate(0, -offset * 1 / 8f, - menu.contentHolder.drawers.getValue(partialTicks) * -.175f * (2 - offset)); - GuiGameElement.of(AllPartialModels.TOOLBOX_DRAWER) - .render(graphics); - ms.popPose(); - } - ms.popPose(); } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { if (hoveredToolboxSlot != null) hoveredSlot = hoveredToolboxSlot; super.renderForeground(graphics, mouseX, mouseY, partialTicks); diff --git a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java index 69869fa158..b7354f41de 100644 --- a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java +++ b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchable.java @@ -9,7 +9,7 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -21,7 +21,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.event.level.block.BreakBlockEvent; public interface IWrenchable { @@ -53,7 +53,7 @@ default InteractionResult onSneakWrenched(BlockState state, UseOnContext context if (!(world instanceof ServerLevel serverLevel)) return InteractionResult.SUCCESS; - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, world.getBlockState(pos), player); + BreakBlockEvent event = new BreakBlockEvent(world, pos, world.getBlockState(pos), player); NeoForge.EVENT_BUS.post(event); if (event.isCanceled()) return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchableWithBracket.java b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchableWithBracket.java index dd7f115fd2..b569f12c91 100644 --- a/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchableWithBracket.java +++ b/src/main/java/com/simibubi/create/content/equipment/wrench/IWrenchableWithBracket.java @@ -35,9 +35,9 @@ default boolean tryRemoveBracket(UseOnContext context) { BlockState blockState = world.getBlockState(pos); if (bracket.isPresent()) { Player player = context.getPlayer(); - if (!world.isClientSide && !player.isCreative()) + if (!world.isClientSide() && !player.isCreative()) player.getInventory().placeItemBackInInventory(bracket.get()); - if (!world.isClientSide && AllBlocks.FLUID_PIPE.has(blockState)) { + if (!world.isClientSide() && AllBlocks.FLUID_PIPE.has(blockState)) { Axis preferred = FluidPropagator.getStraightPipeAxis(blockState); Direction preferredDirection = preferred == null ? Direction.UP : Direction.get(AxisDirection.POSITIVE, preferred); diff --git a/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItem.java b/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItem.java index 64e0dac140..61f7093bfb 100644 --- a/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItem.java @@ -15,7 +15,7 @@ import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -24,7 +24,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; @@ -34,8 +33,6 @@ public WrenchItem(Properties properties) { super(properties); } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { consumer.accept(SimpleCustomRenderer.create(this, new WrenchItemRenderer())); } diff --git a/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItemRenderer.java index 93561881fa..8ead52c272 100644 --- a/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/wrench/WrenchItemRenderer.java @@ -9,8 +9,8 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/PlacementPatterns.java b/src/main/java/com/simibubi/create/content/equipment/zapper/PlacementPatterns.java index 505876763e..0682e30722 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/PlacementPatterns.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/PlacementPatterns.java @@ -11,8 +11,8 @@ import com.simibubi.create.foundation.gui.AllIcons; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.RandomSource; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootGadgetPacket.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootGadgetPacket.java index 088e691a74..e8d0132b80 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootGadgetPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootGadgetPacket.java @@ -3,13 +3,12 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class ShootGadgetPacket implements ClientboundPacketPayload { protected final Vec3 location; @@ -22,15 +21,12 @@ public ShootGadgetPacket(Vec3 location, InteractionHand hand, boolean self) { this.self = self; } - @OnlyIn(Dist.CLIENT) protected abstract void handleAdditional(); - @OnlyIn(Dist.CLIENT) protected abstract ShootableGadgetRenderHandler getHandler(); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { Entity renderViewEntity = Minecraft.getInstance() .getCameraEntity(); if (renderViewEntity == null) diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetItemMethods.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetItemMethods.java index 577acf4062..f8dad9d42d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetItemMethods.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetItemMethods.java @@ -6,7 +6,7 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllPackets; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; @@ -25,7 +25,7 @@ public static void applyCooldown(Player player, ItemStack item, InteractionHand boolean gunInOtherHand = predicate.test(player.getItemInHand(hand == InteractionHand.MAIN_HAND ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND)); player.getCooldowns() - .addCooldown(item.getItem(), gunInOtherHand ? cooldown * 2 / 3 : cooldown); + .addCooldown(item, gunInOtherHand ? cooldown * 2 / 3 : cooldown); } public static void sendPackets(Player player, Function factory) { diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetRenderHandler.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetRenderHandler.java index 4cef100fa7..9f58349fa3 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ShootableGadgetRenderHandler.java @@ -1,19 +1,12 @@ package com.simibubi.create.content.equipment.zapper; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; import net.neoforged.bus.api.IEventBus; @@ -73,70 +66,7 @@ protected void onRenderPlayerHand(RenderHandEvent event) { ItemStack heldItem = event.getItemStack(); if (!appliesTo(heldItem)) return; - - Minecraft mc = Minecraft.getInstance(); - AbstractClientPlayer player = mc.player; - PlayerRenderer playerrenderer = (PlayerRenderer) mc.getEntityRenderDispatcher() - .getRenderer(player); - ItemInHandRenderer firstPersonRenderer = mc.getEntityRenderDispatcher().getItemInHandRenderer(); - - PoseStack ms = event.getPoseStack(); - MultiBufferSource buffer = event.getMultiBufferSource(); - int light = event.getPackedLight(); - float pt = event.getPartialTick(); - - boolean rightHand = event.getHand() == InteractionHand.MAIN_HAND ^ mc.player.getMainArm() == HumanoidArm.LEFT; - float recoil = rightHand ? Mth.lerp(pt, lastRightHandAnimation, rightHandAnimation) - : Mth.lerp(pt, lastLeftHandAnimation, leftHandAnimation); - float equipProgress = event.getEquipProgress(); - - if (rightHand && (rightHandAnimation > .01f || dontReequipRight)) - equipProgress = 0; - if (!rightHand && (leftHandAnimation > .01f || dontReequipLeft)) - equipProgress = 0; - - // Render arm - ms.pushPose(); - RenderSystem.setShaderTexture(0, player.getSkin().texture()); - - float flip = rightHand ? 1.0F : -1.0F; - float f1 = Mth.sqrt(event.getSwingProgress()); - float f2 = -0.3F * Mth.sin(f1 * (float) Math.PI); - float f3 = 0.4F * Mth.sin(f1 * ((float) Math.PI * 2F)); - float f4 = -0.4F * Mth.sin(event.getSwingProgress() * (float) Math.PI); - float f5 = Mth.sin(event.getSwingProgress() * event.getSwingProgress() * (float) Math.PI); - float f6 = Mth.sin(f1 * (float) Math.PI); - - ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F + .3f + recoil); - ms.mulPose(Axis.YP.rotationDegrees(flip * 75.0F)); - ms.mulPose(Axis.YP.rotationDegrees(flip * f6 * 70.0F)); - ms.mulPose(Axis.ZP.rotationDegrees(flip * f5 * -20.0F)); - ms.translate(flip * -1.0F, 3.6F, 3.5F); - ms.mulPose(Axis.ZP.rotationDegrees(flip * 120.0F)); - ms.mulPose(Axis.XP.rotationDegrees(200.0F)); - ms.mulPose(Axis.YP.rotationDegrees(flip * -135.0F)); - ms.translate(flip * 5.6F, 0.0F, 0.0F); - ms.mulPose(Axis.YP.rotationDegrees(flip * 40.0F)); - transformHand(ms, flip, equipProgress, recoil, pt); - if (rightHand) - playerrenderer.renderRightHand(ms, buffer, light, player); - else - playerrenderer.renderLeftHand(ms, buffer, light, player); - ms.popPose(); - - // Render gadget - ms.pushPose(); - ms.translate(flip * (f2 + 0.64F - .1f), f3 + -0.4F + equipProgress * -0.6F, f4 + -0.72F - 0.1f + recoil); - ms.mulPose(Axis.YP.rotationDegrees(flip * f6 * 70.0F)); - ms.mulPose(Axis.ZP.rotationDegrees(flip * f5 * -20.0F)); - transformTool(ms, flip, equipProgress, recoil, pt); - firstPersonRenderer.renderItem(mc.player, heldItem, - rightHand ? ItemDisplayContext.FIRST_PERSON_RIGHT_HAND - : ItemDisplayContext.FIRST_PERSON_LEFT_HAND, - !rightHand, ms, buffer, light); - ms.popPose(); - - event.setCanceled(true); + // TODO 26.2: Rebuild custom first-person gadget rendering against the new player render-state API. } public void dontAnimateItem(InteractionHand hand) { diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperBeamPacket.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperBeamPacket.java index e6cd3cd4bb..94ce527753 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperBeamPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperBeamPacket.java @@ -4,14 +4,13 @@ import com.simibubi.create.CreateClient; import com.simibubi.create.content.equipment.zapper.ZapperRenderHandler.LaserBeam; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.InteractionHand; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ZapperBeamPacket extends ShootGadgetPacket { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -30,13 +29,11 @@ public ZapperBeamPacket(Vec3 start, InteractionHand hand, boolean self, Vec3 tar } @Override - @OnlyIn(Dist.CLIENT) protected ShootableGadgetRenderHandler getHandler() { return CreateClient.ZAPPER_RENDER_HANDLER; } @Override - @OnlyIn(Dist.CLIENT) protected void handleAdditional() { CreateClient.ZAPPER_RENDER_HANDLER.addBeam(new LaserBeam(location, target)); } diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperClient.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperClient.java new file mode 100644 index 0000000000..488a3404e2 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperClient.java @@ -0,0 +1,13 @@ +package com.simibubi.create.content.equipment.zapper; + +import com.simibubi.create.CreateClient; + +import net.minecraft.world.InteractionHand; + +public class ZapperClient { + + public static void dontAnimateItem(InteractionHand hand) { + CreateClient.ZAPPER_RENDER_HANDLER.dontAnimateItem(hand); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperInteractionHandler.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperInteractionHandler.java index 459e575bee..f8128c7aed 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperInteractionHandler.java @@ -29,7 +29,7 @@ public class ZapperInteractionHandler { @SubscribeEvent public static void leftClickingBlocksWithTheZapperSelectsTheBlock(PlayerInteractEvent.LeftClickBlock event) { - if (event.getLevel().isClientSide) + if (event.getLevel().isClientSide()) return; ItemStack heldItem = event.getEntity() .getMainHandItem(); diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java index 792e094d02..fe0de15a34 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItem.java @@ -1,36 +1,32 @@ package com.simibubi.create.content.equipment.zapper; -import java.util.List; +import java.util.function.Consumer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.item.CustomArmPoseItem; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.nbt.NBTProcessors; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.nbt.NBTProcessors; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; -import net.minecraft.client.model.HumanoidModel.ArmPose; -import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ItemUseAnimation; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.ClipContext.Block; @@ -42,21 +38,19 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -public abstract class ZapperItem extends Item implements CustomArmPoseItem { +public abstract class ZapperItem extends Item { public ZapperItem(Properties properties) { super(properties.stacksTo(1)); } @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag flagIn) { + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay display, + Consumer tooltip, TooltipFlag flagIn) { if (stack.has(AllDataComponents.SHAPER_BLOCK_USED)) { MutableComponent usedBlock = stack.get(AllDataComponents.SHAPER_BLOCK_USED).getBlock().getName(); - tooltip.add(CreateLang.translateDirect("terrainzapper.usingBlock", usedBlock.withStyle(ChatFormatting.GRAY)) + tooltip.accept(CreateLang.translateDirect("terrainzapper.usingBlock", usedBlock.withStyle(ChatFormatting.GRAY)) .withStyle(ChatFormatting.DARK_GRAY)); } } @@ -79,14 +73,13 @@ public InteractionResult useOn(UseOnContext context) { // Shift -> open GUI if (context.getPlayer() != null && context.getPlayer() .isShiftKeyDown()) { - if (context.getLevel().isClientSide) { + if (context.getLevel().isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { openHandgunGUI(context.getItemInHand(), context.getHand()); }); context.getPlayer() .getCooldowns() - .addCooldown(context.getItemInHand() - .getItem(), 10); + .addCooldown(context.getItemInHand(), 10); } return InteractionResult.SUCCESS; } @@ -94,32 +87,32 @@ public InteractionResult useOn(UseOnContext context) { } @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { ItemStack item = player.getItemInHand(hand); boolean mainHand = hand == InteractionHand.MAIN_HAND; // Shift -> Open GUI if (player.isShiftKeyDown()) { - if (world.isClientSide) { + if (world.isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { openHandgunGUI(item, hand); }); player.getCooldowns() - .addCooldown(item.getItem(), 10); + .addCooldown(item, 10); } - return new InteractionResultHolder<>(InteractionResult.SUCCESS, item); + return InteractionResult.SUCCESS.heldItemTransformedTo(item); } if (ShootableGadgetItemMethods.shouldSwap(player, item, hand, this::isZapper)) - return new InteractionResultHolder<>(InteractionResult.FAIL, item); + return InteractionResult.FAIL; // Check if can be used Component msg = validateUsage(item); if (msg != null) { AllSoundEvents.DENY.play(world, player, player.blockPosition()); - player.displayClientMessage(msg.plainCopy() - .withStyle(ChatFormatting.RED), true); - return new InteractionResultHolder<>(InteractionResult.FAIL, item); + player.sendOverlayMessage(msg.plainCopy() + .withStyle(ChatFormatting.RED)); + return InteractionResult.FAIL; } BlockState stateToUse = Blocks.AIR.defaultBlockState(); @@ -144,16 +137,16 @@ public InteractionResultHolder use(Level world, Player player, Intera // No target if (pos == null || stateReplaced.getBlock() == Blocks.AIR) { ShootableGadgetItemMethods.applyCooldown(player, item, hand, this::isZapper, getCooldownDelay(item)); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, item); + return InteractionResult.SUCCESS.heldItemTransformedTo(item); } // Find exact position of gun barrel for VFX Vec3 barrelPos = ShootableGadgetItemMethods.getGunBarrelVec(player, mainHand, new Vec3(.35f, -0.1f, 1)); // Client side - if (world.isClientSide) { - CreateClient.ZAPPER_RENDER_HANDLER.dontAnimateItem(hand); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, item); + if (world.isClientSide()) { + ZapperClient.dontAnimateItem(hand); + return InteractionResult.SUCCESS.heldItemTransformedTo(item); } // Server side @@ -163,7 +156,7 @@ public InteractionResultHolder use(Level world, Player player, Intera b -> new ZapperBeamPacket(barrelPos, hand, b, raytrace.getLocation())); } - return new InteractionResultHolder<>(InteractionResult.SUCCESS, item); + return InteractionResult.SUCCESS.heldItemTransformedTo(item); } public Component validateUsage(ItemStack item) { @@ -175,7 +168,6 @@ public Component validateUsage(ItemStack item) { protected abstract boolean activate(Level world, Player player, ItemStack item, BlockState stateToUse, BlockHitResult raytrace, CompoundTag data); - @OnlyIn(Dist.CLIENT) protected abstract void openHandgunGUI(ItemStack item, InteractionHand hand); protected abstract int getCooldownDelay(ItemStack item); @@ -187,27 +179,18 @@ protected boolean canActivateWithoutSelectedBlock(ItemStack stack) { } @Override - public boolean onEntitySwing(ItemStack stack, LivingEntity entity) { + public boolean onEntitySwing(ItemStack stack, LivingEntity entity, InteractionHand hand) { return true; } @Override - public boolean canAttackBlock(BlockState state, Level worldIn, BlockPos pos, Player player) { + public boolean canDestroyBlock(ItemStack stack, BlockState state, Level worldIn, BlockPos pos, LivingEntity entity) { return false; } @Override - public UseAnim getUseAnimation(ItemStack stack) { - return UseAnim.NONE; - } - - @Override - @Nullable - public ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) { - if (!player.swinging) { - return ArmPose.CROSSBOW_HOLD; - } - return null; + public ItemUseAnimation getUseAnimation(ItemStack stack) { + return ItemUseAnimation.NONE; } public static void setBlockEntityData(Level world, BlockPos pos, BlockState state, CompoundTag data, Player player) { @@ -220,7 +203,7 @@ public static void setBlockEntityData(Level world, BlockPos pos, BlockState stat data.putInt("x", pos.getX()); data.putInt("y", pos.getY()); data.putInt("z", pos.getZ()); - blockEntity.loadWithComponents(data, world.registryAccess()); + blockEntity.loadWithComponents(LegacyBlockEntityTagBridge.input(data, world.registryAccess())); } } } diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItemRenderer.java index 0a1c9bf643..b524f90e3d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperItemRenderer.java @@ -8,8 +8,8 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.NbtUtils; import net.minecraft.util.Mth; @@ -35,17 +35,14 @@ private void renderBlockUsed(ItemStack stack, PoseStack ms, MultiBufferSource bu ms.pushPose(); ms.translate(-0.3F, -0.45F, -0.0F); ms.scale(0.25F, 0.25F, 0.25F); - BakedModel modelForState = Minecraft.getInstance() - .getBlockRenderer() + BakedModel modelForState = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(state); if (state.getBlock() instanceof CrossCollisionBlock) - modelForState = Minecraft.getInstance() - .getItemRenderer() + modelForState = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .getModel(new ItemStack(state.getBlock()), null, null, 0); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .render(new ItemStack(state.getBlock()), ItemDisplayContext.NONE, false, ms, buffer, light, overlay, modelForState); ms.popPose(); diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperRenderHandler.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperRenderHandler.java index 6df5b69f28..aae57933ef 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperRenderHandler.java @@ -8,7 +8,7 @@ import com.mojang.math.Axis; import com.simibubi.create.AllSoundEvents; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.particles.ParticleTypes; @@ -64,7 +64,7 @@ protected void playSound(InteractionHand hand, Vec3 position) { } public void addBeam(LaserBeam beam) { - RandomSource random = Minecraft.getInstance().level.random; + RandomSource random = Minecraft.getInstance().level.getRandom(); double x = beam.end.x; double y = beam.end.y; double z = beam.end.z; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperScreen.java index 0f810eb45d..4bf1983ebc 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/ZapperScreen.java @@ -3,18 +3,16 @@ import java.util.ArrayList; import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Axis; import com.simibubi.create.AllDataComponents; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; @@ -89,7 +87,7 @@ protected void init() { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; @@ -100,8 +98,8 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float renderZapper(graphics, x, y); } - protected void drawOnBackground(GuiGraphics graphics, int x, int y) { - graphics.drawString(font, title, x + (background.getWidth() - font.width(title)) / 2, y + 4, 0x54214F, false); + protected void drawOnBackground(GuiGraphicsExtractor graphics, int x, int y) { + graphics.text(font, title, x + (background.getWidth() - font.width(title)) / 2, y + 4, 0x54214F, false); } @Override @@ -114,29 +112,23 @@ public void tick() { public void removed() { ConfigureZapperPacket packet = getConfigurationPacket(); packet.configureZapper(zapper); - CatnipServices.NETWORK.sendToServer(packet); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(packet); } - protected void renderZapper(GuiGraphics graphics, int x, int y) { + protected void renderZapper(GuiGraphicsExtractor graphics, int x, int y) { GuiGameElement.of(zapper) .scale(4) .at(x + background.getWidth(), y + background.getHeight() - 48, -200) .render(graphics); } - protected void renderBlock(GuiGraphics graphics, int x, int y) { - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(x + 32, y + 42, 120); - ms.mulPose(Axis.XP.rotationDegrees(-25f)); - ms.mulPose(Axis.YP.rotationDegrees(-45f)); - ms.scale(20, 20, 20); - + protected void renderBlock(GuiGraphicsExtractor graphics, int x, int y) { BlockState state = zapper.getOrDefault(AllDataComponents.SHAPER_BLOCK_USED, Blocks.AIR.defaultBlockState());; GuiGameElement.of(state) + .scale(20) + .at(x + 32, y + 42) .render(graphics); - ms.popPose(); } protected abstract ConfigureZapperPacket getConfigurationPacket(); diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/ConfigureWorldshaperPacket.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/ConfigureWorldshaperPacket.java index f16a4f2444..6eb5eb4788 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/ConfigureWorldshaperPacket.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/ConfigureWorldshaperPacket.java @@ -4,8 +4,8 @@ import com.simibubi.create.content.equipment.zapper.ConfigureZapperPacket; import com.simibubi.create.content.equipment.zapper.PlacementPatterns; -import net.createmod.catnip.codecs.stream.CatnipLargerStreamCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipLargerStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/CylinderBrush.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/CylinderBrush.java index 8dfec4faf6..9ada9a061e 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/CylinderBrush.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/CylinderBrush.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/PlacementOptions.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/PlacementOptions.java index 8f1878d620..1055817f53 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/PlacementOptions.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/PlacementOptions.java @@ -6,8 +6,8 @@ import com.simibubi.create.foundation.gui.AllIcons; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.StringRepresentable; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/SphereBrush.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/SphereBrush.java index 560deb3278..47561868b5 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/SphereBrush.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/SphereBrush.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainBrushes.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainBrushes.java index 2f48deabad..56d183ebf6 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainBrushes.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainBrushes.java @@ -5,8 +5,8 @@ import com.mojang.serialization.Codec; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.StringRepresentable; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainTools.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainTools.java index 31599d7436..4ef4fd910d 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainTools.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/TerrainTools.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.equipment.zapper.ZapperItem; import com.simibubi.create.foundation.gui.AllIcons; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperClient.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperClient.java new file mode 100644 index 0000000000..7cf0e01b40 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperClient.java @@ -0,0 +1,22 @@ +package com.simibubi.create.content.equipment.zapper.terrainzapper; + +import java.util.function.Consumer; + +import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; + +public class WorldshaperClient { + + public static void initializeClient(WorldshaperItem item, Consumer consumer) { + consumer.accept(SimpleCustomRenderer.create(item, new WorldshaperItemRenderer())); + } + + public static void openScreen(ItemStack item, InteractionHand hand) { + ScreenOpener.open(new WorldshaperScreen(item, hand)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItem.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItem.java index 27909fc395..7bef26d4c0 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItem.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItem.java @@ -7,10 +7,8 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.content.equipment.zapper.PlacementPatterns; import com.simibubi.create.content.equipment.zapper.ZapperItem; -import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.ScreenOpener; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -21,8 +19,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; public class WorldshaperItem extends ZapperItem { @@ -31,16 +27,13 @@ public WorldshaperItem(Properties properties) { super(properties); } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { - consumer.accept(SimpleCustomRenderer.create(this, new WorldshaperItemRenderer())); + WorldshaperClient.initializeClient(this, consumer); } @Override - @OnlyIn(value = Dist.CLIENT) protected void openHandgunGUI(ItemStack item, InteractionHand hand) { - ScreenOpener.open(new WorldshaperScreen(item, hand)); + WorldshaperClient.openScreen(item, hand); } @Override @@ -81,7 +74,7 @@ protected boolean activate(Level level, Player player, ItemStack stack, BlockSta brush.set(params.getX(), params.getY(), params.getZ()); targetPos = targetPos.offset(brush.getOffset(player.getLookAngle(), raytrace.getDirection(), option)); brush.addToGlobalPositions(level, targetPos, raytrace.getDirection(), affectedPositions, tool); - PlacementPatterns.applyPattern(affectedPositions, stack, level.random); + PlacementPatterns.applyPattern(affectedPositions, stack, level.getRandom()); brush.redirectTool(tool) .run(level, affectedPositions, raytrace.getDirection(), stateToUse, data, player); diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItemRenderer.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItemRenderer.java index 336a3b71c3..5bc67d1954 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperItemRenderer.java @@ -10,11 +10,11 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemDisplayContext; @@ -50,7 +50,7 @@ protected void render(ItemStack stack, CustomRenderedItemModel model, PartialIte multiplier = Mth.sin(worldTime * 5); int lightItensity = (int) (15 * Mth.clamp(multiplier, 0, 1)); - int glowLight = LightTexture.pack(lightItensity, max(lightItensity, 4)); + int glowLight = LightCoordsUtil.pack(lightItensity, max(lightItensity, 4)); renderer.renderSolidGlowing(CORE.get(), glowLight); renderer.renderGlowing(CORE_GLOW.get(), glowLight); diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperRenderHandler.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperRenderHandler.java index d3ebcba3b5..5cf20a49ab 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperRenderHandler.java @@ -8,8 +8,8 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllSpecialTextures; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperScreen.java index cb12ca14a0..e1c5580ef8 100644 --- a/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperScreen.java +++ b/src/main/java/com/simibubi/create/content/equipment/zapper/terrainzapper/WorldshaperScreen.java @@ -16,7 +16,7 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -235,16 +235,16 @@ protected void initBrushParams(int x, int y) { } @Override - protected void drawOnBackground(GuiGraphics graphics, int x, int y) { + protected void drawOnBackground(GuiGraphicsExtractor graphics, int x, int y) { super.drawOnBackground(graphics, x, y); Brush currentBrush = this.currentBrush.get(); for (int index = 2; index >= currentBrush.amtParams; index--) AllGuiTextures.TERRAINZAPPER_INACTIVE_PARAM.render(graphics, x + 56 + 20 * index, y + 40); - graphics.drawString(font, toolSection, x + 7, y + 69, fontColor, false); + graphics.text(font, toolSection, x + 7, y + 69, fontColor, false); if (currentBrush.hasPlacementOptions()) - graphics.drawString(font, placementSection, x + 136, y + 69, fontColor, false); + graphics.text(font, placementSection, x + 136, y + 69, fontColor, false); } @Override diff --git a/src/main/java/com/simibubi/create/content/fluids/FlowSource.java b/src/main/java/com/simibubi/create/content/fluids/FlowSource.java index 28f80eed4e..66e2875dd2 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FlowSource.java +++ b/src/main/java/com/simibubi/create/content/fluids/FlowSource.java @@ -7,9 +7,11 @@ import com.simibubi.create.foundation.ICapabilityProvider; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; -import net.createmod.catnip.math.BlockFace; -import net.createmod.ponder.api.level.PonderLevel; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; @@ -19,6 +21,8 @@ import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.fluid.FluidResource; public abstract class FlowSource { @@ -83,23 +87,23 @@ public void manageSource(Level level, BlockEntity networkBE) { BlockEntity blockEntity = level.getBlockEntity(location.getConnectedPos()); if (blockEntity != null) { if (level instanceof ServerLevel serverLevel) { - fluidHandlerCache = ICapabilityProvider.of((invalidate) -> BlockCapabilityCache.create( - Capabilities.FluidHandler.BLOCK, + BlockCapabilityCache, Direction> cache = BlockCapabilityCache.create( + Capabilities.Fluid.BLOCK, serverLevel, blockEntity.getBlockPos(), location.getOppositeFace(), () -> !networkBE.isRemoved(), () -> { fluidHandlerCache = EMPTY; - invalidate.run(); } - )); + ); + fluidHandlerCache = () -> LegacyFluidHandlerAdapter.of(cache.getCapability()); } else if (level instanceof PonderLevel) { - fluidHandlerCache = ICapabilityProvider.of(() -> level.getCapability( - Capabilities.FluidHandler.BLOCK, + fluidHandlerCache = ICapabilityProvider.of(() -> LegacyFluidHandlerAdapter.of(level.getCapability( + Capabilities.Fluid.BLOCK, blockEntity.getBlockPos(), location.getOppositeFace() - )); + ))); } } } diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidBottleItemHook.java b/src/main/java/com/simibubi/create/content/fluids/FluidBottleItemHook.java index 553f4359ca..0b8520cd3f 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidBottleItemHook.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidBottleItemHook.java @@ -2,7 +2,7 @@ import com.simibubi.create.Create; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.tags.FluidTags; import net.minecraft.world.InteractionResult; diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidFX.java b/src/main/java/com/simibubi/create/content/fluids/FluidFX.java index 7cc95f941d..be3871c04f 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidFX.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidFX.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.fluids.particle.FluidParticleData; import com.simibubi.create.foundation.fluid.FluidHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -60,7 +60,7 @@ public static ParticleOptions getDrippingParticle(FluidStack fluid) { public static void spawnRimParticles(Level world, BlockPos pos, Direction side, int amount, ParticleOptions particle, float rimRadius) { - Vec3 directionVec = Vec3.atLowerCornerOf(side.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(side.getUnitVec3i()); for (int i = 0; i < amount; i++) { Vec3 vec = VecHelper.offsetRandomly(Vec3.ZERO, r, 1) .normalize(); diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidMesh.java b/src/main/java/com/simibubi/create/content/fluids/FluidMesh.java index 879c31b1b7..1dee1dcc0e 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidMesh.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidMesh.java @@ -11,7 +11,7 @@ import dev.engine_room.flywheel.lib.model.QuadMesh; import dev.engine_room.flywheel.lib.model.SingleMeshModel; import dev.engine_room.flywheel.lib.util.RendererReloadCache; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; @@ -76,7 +76,7 @@ public void write(MutableVertexList vertexList) { int vertex = 0; - float shrink = texture.uvShrinkRatio() * 0.25f * textureScale; + float shrink = 0; float centerU = texture.getU0() + (texture.getU1() - texture.getU0()) * 0.5f; float centerV = texture.getV0() + (texture.getV1() - texture.getV0()) * 0.5f; @@ -148,7 +148,7 @@ public void write(MutableVertexList vertexList) { float textureScale = 1 / 32f; - float shrink = texture.uvShrinkRatio() * 0.25f * textureScale; + float shrink = 0; float centerU = texture.getU0() + (texture.getU1() - texture.getU0()) * 0.5f; float radius = PIPE_RADIUS; diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/fluids/FluidNetwork.java index 474a995bbd..1424c1a2bc 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidNetwork.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidNetwork.java @@ -19,9 +19,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java index 6f8dfdefe0..01ece00b64 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidPropagator.java @@ -18,14 +18,15 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.infrastructure.config.AllConfigs; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.fluids.capability.IFluidHandler; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -136,7 +137,7 @@ public static void resetAffectedFluidNetworks(Level world, BlockPos start, Direc public static Direction validateNeighbourChange(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, boolean isMoving) { - if (world.isClientSide) + if (world.isClientSide()) return null; // calling getblockstate() as otherBlock param seems to contain the block which // was replaced @@ -204,7 +205,7 @@ public static boolean hasFluidCapability(BlockGetter world, BlockPos pos, Direct if (blockEntity == null || blockEntity.getLevel() == null) return false; IFluidHandler capability = - blockEntity.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, blockEntity.getBlockPos(), side); + LegacyFluidHandlerAdapter.of(blockEntity.getLevel().getCapability(Capabilities.Fluid.BLOCK, blockEntity.getBlockPos(), side)); return capability != null; } diff --git a/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java index faef77eb69..d292d43877 100644 --- a/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/FluidTransportBehaviour.java @@ -15,13 +15,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.state.BlockState; @@ -63,7 +63,7 @@ public void tick() { super.tick(); Level world = getWorld(); BlockPos pos = getPos(); - boolean onServer = !world.isClientSide || blockEntity.isVirtual(); + boolean onServer = !world.isClientSide() || blockEntity.isVirtual(); if (interfaces == null) return; diff --git a/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java b/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java index b1ee89ee56..ae82f382f9 100644 --- a/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java +++ b/src/main/java/com/simibubi/create/content/fluids/OpenEndedPipe.java @@ -12,13 +12,15 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.mixin.accessor.FlowingFluidAccessor; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.FluidTags; @@ -93,18 +95,25 @@ public boolean isEndpoint() { public CompoundTag serializeNBT(HolderLookup.Provider registries) { CompoundTag compound = new CompoundTag(); - fluidHandler.writeToNBT(registries, compound); + compound.merge(com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.serializeTank(fluidHandler, registries)); compound.putBoolean("Pulling", wasPulling); - compound.put("Location", location.serializeNBT()); + CompoundTag locationTag = new CompoundTag(); + locationTag.put("Pos", LegacyNbtUtilsBridge.writeBlockPos(location.getPos())); + locationTag.putString("Face", location.getFace().getName()); + compound.put("Location", locationTag); return compound; } public static OpenEndedPipe fromNBT(CompoundTag compound, HolderLookup.Provider registries, BlockPos blockEntityPos) { - BlockFace fromNBT = BlockFace.fromNBT(compound.getCompound("Location")); + CompoundTag locationTag = compound.getCompoundOrEmpty("Location"); + Direction face = Direction.byName(locationTag.getStringOr("Face", Direction.DOWN.getName())); + if (face == null) + face = Direction.DOWN; + BlockFace fromNBT = new BlockFace(LegacyNbtUtilsBridge.readBlockPos(locationTag.get("Pos")), face); OpenEndedPipe oep = new OpenEndedPipe(new BlockFace(blockEntityPos, fromNBT.getFace())); - oep.fluidHandler.readFromNBT(registries, compound); - oep.wasPulling = compound.getBoolean("Pulling"); + com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.deserializeTank(oep.fluidHandler, registries, compound); + oep.wasPulling = compound.getBooleanOr("Pulling", false); return oep; } @@ -149,8 +158,8 @@ private FluidStack removeFluidFromSpace(boolean simulate) { var newFluidState = newState.getFluidState(); - if (newFluidState.getType() instanceof FlowingFluidAccessor flowing) { - var potentiallyFilled = flowing.create$getNewLiquid(world, outputPos, newState); + if (newFluidState.getType() instanceof FlowingFluidAccessor flowing && world instanceof ServerLevel serverLevel) { + var potentiallyFilled = flowing.create$getNewLiquid(serverLevel, outputPos, newState); // Check if we'd immediately become the same fluid again. if (potentiallyFilled.equals(fluidState)) { @@ -199,13 +208,12 @@ private boolean provideFluidToSpace(FluidStack fluid, boolean simulate) { if (!AllConfigs.server().fluids.pipesPlaceFluidSourceBlocks.get()) return true; - if (world.dimensionType() - .ultraWarm() && FluidHelper.isTag(fluid, FluidTags.WATER)) { + if (vaporizesWater() && FluidHelper.isTag(fluid, FluidTags.WATER)) { int i = outputPos.getX(); int j = outputPos.getY(); int k = outputPos.getZ(); world.playSound(null, i, j, k, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, - 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); + 2.6F + (world.getRandom().nextFloat() - world.getRandom().nextFloat()) * 0.8F); return true; } @@ -221,6 +229,11 @@ private boolean provideFluidToSpace(FluidStack fluid, boolean simulate) { return true; } + private boolean vaporizesWater() { + // TODO 26.2: Reconnect to the replacement for DimensionType#ultraWarm. + return false; + } + private class OpenEndFluidHandler extends FluidTank { public OpenEndFluidHandler() { diff --git a/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java index 4bce8b5f4e..a8abec9652 100644 --- a/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java +++ b/src/main/java/com/simibubi/create/content/fluids/PipeAttachmentModel.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Set; import org.jetbrains.annotations.NotNull; @@ -14,22 +15,21 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.model.BakedModelWrapperWithData; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.ChunkRenderTypeSet; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; -import net.neoforged.neoforge.common.util.TriState; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; +import net.minecraft.util.TriState; public class PipeAttachmentModel extends BakedModelWrapperWithData { @@ -67,25 +67,8 @@ protected ModelData.Builder gatherModelData(Builder builder, BlockAndTintGetter } @Override - public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) { - List set = new ArrayList<>(); - - set.add(super.getRenderTypes(state, rand, data)); - set.add(AllPartialModels.FLUID_PIPE_CASING.get().getRenderTypes(state, rand, data)); - - if (data.has(PIPE_PROPERTY)) { - PipeModelData pipeData = data.get(PIPE_PROPERTY); - for (Direction d : Iterate.directions) { - AttachmentTypes type = pipeData.getAttachment(d); - for (ComponentPartials partial : type.partials) { - ChunkRenderTypeSet attachmentRenderTypeSet = AllPartialModels.PIPE_ATTACHMENTS.get(partial).get(d) - .get().getRenderTypes(state, rand, data); - set.add(attachmentRenderTypeSet); - } - } - } - - return ChunkRenderTypeSet.union(set); + public Set getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) { + return super.getRenderTypes(state, rand, data); } @Override @@ -99,7 +82,6 @@ public List getQuads(BlockState state, Direction side, RandomSource r return quads; } - @Override public TriState useAmbientOcclusion(BlockState state, ModelData data, RenderType renderType) { if (ao) { return TriState.TRUE; @@ -121,15 +103,12 @@ private void addQuads(List quads, BlockState state, Direction side, R for (Direction d : Iterate.directions) { AttachmentTypes type = pipeData.getAttachment(d); for (ComponentPartials partial : type.partials) { - quads.addAll(AllPartialModels.PIPE_ATTACHMENTS.get(partial) - .get(d) - .get() - .getQuads(state, side, rand, data, renderType)); + // TODO 26.2: Partial pipe attachment models now bake as BlockModel. } } - if (pipeData.isEncased()) - quads.addAll(AllPartialModels.FLUID_PIPE_CASING.get() - .getQuads(state, side, rand, data, renderType)); + if (pipeData.isEncased()) { + // TODO 26.2: Restore casing partial quads through the new BlockModel path. + } } private static class PipeModelData { @@ -144,8 +123,7 @@ public PipeModelData() { public void putBracket(BlockState state) { if (state != null) { - this.bracket = Minecraft.getInstance() - .getBlockRenderer() + this.bracket = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(state); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/fluids/PipeConnection.java index a22d02feb5..365f5b17dd 100644 --- a/src/main/java/com/simibubi/create/content/fluids/PipeConnection.java +++ b/src/main/java/com/simibubi/create/content/fluids/PipeConnection.java @@ -5,12 +5,12 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -28,7 +28,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; public class PipeConnection { @@ -193,7 +192,7 @@ public void tickFlowProgress(Level world, BlockPos pos) { if (flow.fluid.isEmpty()) return; - if (world.isClientSide) { + if (world.isClientSide()) { if (!source.isPresent()) determineSource(world, pos); @@ -226,7 +225,8 @@ public void serializeNBT(CompoundTag tag, HolderLookup.Provider registries, bool if (hasFlow()) { CompoundTag flowData = new CompoundTag(); Flow flow = this.flow.get(); - flowData.put("Fluid", flow.fluid.saveOptional(registries)); + flowData.put("Fluid", com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.saveOptional(flow.fluid, + registries)); flowData.putBoolean("In", flow.inbound); if (!flow.complete) flowData.put("Progress", flow.progress.writeNBT()); @@ -240,23 +240,23 @@ private boolean hasOpenEnd() { } public void deserializeNBT(CompoundTag tag, HolderLookup.Provider registries, BlockPos blockEntityPos, boolean clientPacket) { - CompoundTag connectionData = tag.getCompound(side.getName()); + CompoundTag connectionData = tag.getCompoundOrEmpty(side.getName()); if (connectionData.contains("Pressure")) { - ListTag pressureData = connectionData.getList("Pressure", Tag.TAG_FLOAT); - pressure = Couple.create(pressureData.getFloat(0), pressureData.getFloat(1)); + ListTag pressureData = connectionData.getListOrEmpty("Pressure"); + pressure = Couple.create(pressureData.getFloatOr(0, 0), pressureData.getFloatOr(1, 0)); } else pressure.replace(f -> 0f); source = Optional.empty(); if (connectionData.contains("OpenEnd")) - source = Optional.of(OpenEndedPipe.fromNBT(connectionData.getCompound("OpenEnd"), registries, blockEntityPos)); + source = Optional.of(OpenEndedPipe.fromNBT(connectionData.getCompoundOrEmpty("OpenEnd"), registries, blockEntityPos)); if (connectionData.contains("Flow")) { - CompoundTag flowData = connectionData.getCompound("Flow"); + CompoundTag flowData = connectionData.getCompoundOrEmpty("Flow"); - FluidStack fluid = FluidStack.parseOptional(registries, flowData.getCompound("Fluid")); - boolean inbound = flowData.getBoolean("In"); + FluidStack fluid = com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.parseOptional(registries, flowData.getCompoundOrEmpty("Fluid")); + boolean inbound = flowData.getBooleanOr("In", false); if (flow.isEmpty()) { flow = Optional.of(new Flow(inbound, fluid)); if (clientPacket) @@ -269,7 +269,7 @@ public void deserializeNBT(CompoundTag tag, HolderLookup.Provider registries, Bl flow.complete = !flowData.contains("Progress"); if (!flow.complete) - flow.progress.readNBT(flowData.getCompound("Progress"), clientPacket); + flow.progress.readNBT(flowData.getCompoundOrEmpty("Progress"), clientPacket); else { if (flow.progress.getValue() == 0) flow.progress.startWithValue(1); @@ -369,18 +369,16 @@ public void spawnParticles(Level world, BlockPos pos, FluidStack fluid) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> spawnParticlesInner(world, pos, fluid)); } - @OnlyIn(Dist.CLIENT) private void spawnParticlesInner(Level level, BlockPos pos, FluidStack fluid) { if (level == Minecraft.getInstance().level) if (!isRenderEntityWithinDistance(pos)) return; if (hasOpenEnd()) spawnPouringLiquid(level, pos, fluid, 1); - else if (level.random.nextFloat() < IDLE_PARTICLE_SPAWN_CHANCE) + else if (level.getRandom().nextFloat() < IDLE_PARTICLE_SPAWN_CHANCE) spawnRimParticles(level, pos, fluid, 1); } - @OnlyIn(Dist.CLIENT) private void spawnSplashOnRimInner(Level world, BlockPos pos, FluidStack fluid) { if (world == Minecraft.getInstance().level) if (!isRenderEntityWithinDistance(pos)) @@ -388,7 +386,6 @@ private void spawnSplashOnRimInner(Level world, BlockPos pos, FluidStack fluid) spawnRimParticles(world, pos, fluid, SPLASH_PARTICLE_AMOUNT); } - @OnlyIn(Dist.CLIENT) private void spawnRimParticles(Level world, BlockPos pos, FluidStack fluid, int amount) { if (hasOpenEnd()) { spawnPouringLiquid(world, pos, fluid, amount); @@ -399,17 +396,15 @@ private void spawnRimParticles(Level world, BlockPos pos, FluidStack fluid, int FluidFX.spawnRimParticles(world, pos, side, amount, particle, RIM_RADIUS); } - @OnlyIn(Dist.CLIENT) private void spawnPouringLiquid(Level world, BlockPos pos, FluidStack fluid, int amount) { ParticleOptions particle = FluidFX.getFluidParticle(fluid); - Vec3 directionVec = Vec3.atLowerCornerOf(side.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(side.getUnitVec3i()); if (!hasFlow()) return; Flow flow = this.flow.get(); FluidFX.spawnPouringLiquid(world, pos, amount, particle, RIM_RADIUS, directionVec, flow.inbound); } - @OnlyIn(Dist.CLIENT) public static boolean isRenderEntityWithinDistance(BlockPos pos) { Entity renderViewEntity = Minecraft.getInstance() .getCameraEntity(); diff --git a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlock.java b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlock.java index c877c379de..1f755a09a7 100644 --- a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlock.java @@ -10,13 +10,15 @@ import com.simibubi.create.foundation.blockEntity.ComparatorUtil; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -43,38 +45,38 @@ public ItemDrainBlock(Properties p_i48440_1_) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - if (stack.getItem() instanceof BlockItem && stack.getCapability(Capabilities.FluidHandler.ITEM) == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + if (stack.getItem() instanceof BlockItem && stack.getCapability(Capabilities.Fluid.ITEM, null) == null) + return InteractionResult.TRY_WITH_EMPTY_HAND; return onBlockEntityUseItemOn(level, pos, be -> { if (!stack.isEmpty()) { be.internalTank.allowInsertion(); - ItemInteractionResult tryExchange = tryExchange(level, player, hand, stack, be); + InteractionResult tryExchange = tryExchange(level, player, hand, stack, be); be.internalTank.forbidInsertion(); if (tryExchange.consumesAction()) return tryExchange; } ItemStack heldItemStack = be.getHeldItemStack(); - if (!level.isClientSide && !heldItemStack.isEmpty()) { + if (!level.isClientSide() && !heldItemStack.isEmpty()) { player.getInventory() .placeItemBackInInventory(heldItemStack); be.heldItem = null; be.notifyUpdate(); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); if (!(entityIn instanceof ItemEntity itemEntity)) return; if (!entityIn.isAlive()) return; - if (entityIn.level().isClientSide) + if (entityIn.level().isClientSide()) return; DirectBeltInputBehaviour inputBehaviour = @@ -84,20 +86,20 @@ public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { Vec3 deltaMovement = entityIn.getDeltaMovement() .multiply(1, 0, 1) .normalize(); - Direction nearest = Direction.getNearest(deltaMovement.x, deltaMovement.y, deltaMovement.z); + Direction nearest = LegacyDirectionBridge.nearest(deltaMovement.x, deltaMovement.y, deltaMovement.z, Direction.NORTH); ItemStack remainder = inputBehaviour.handleInsertion(itemEntity.getItem(), nearest, false); itemEntity.setItem(remainder); if (remainder.isEmpty()) itemEntity.discard(); } - protected ItemInteractionResult tryExchange(Level worldIn, Player player, InteractionHand handIn, ItemStack heldItem, + protected InteractionResult tryExchange(Level worldIn, Player player, InteractionHand handIn, ItemStack heldItem, ItemDrainBlockEntity be) { if (FluidHelper.tryEmptyItemIntoBE(worldIn, player, handIn, heldItem, be)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (GenericItemEmptying.canItemBeEmptied(worldIn, heldItem)) - return ItemInteractionResult.SUCCESS; - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -107,8 +109,8 @@ public VoxelShape getShape(BlockState p_220053_1_, BlockGetter p_220053_2_, Bloc } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasBlockEntity() || state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (!state.hasBlockEntity()) return; withBlockEntityDo(worldIn, pos, be -> { ItemStack heldItemStack = be.getHeldItemStack(); @@ -116,6 +118,7 @@ public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState n Containers.dropItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), heldItemStack); }); worldIn.removeBlockEntity(pos); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override @@ -140,7 +143,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return ComparatorUtil.levelOfSmartFluidTank(worldIn, pos); } diff --git a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlockEntity.java index a585dc44fa..7d2a83a5b0 100644 --- a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainBlockEntity.java @@ -15,9 +15,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -55,21 +55,21 @@ public ItemDrainBlockEntity(BlockEntityType type, BlockPos pos, BlockState st public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.ITEM_DRAIN.get(), (be, context) -> { if (context != null && context.getAxis().isHorizontal()) - return be.itemHandlers.get(context); + return new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.itemHandlers.get(context)); return null; } ); event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.ITEM_DRAIN.get(), (be, context) -> { if (context != Direction.UP) - return be.internalTank.getCapability(); + return new com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter(be.internalTank.getCapability()); return null; } ); @@ -126,7 +126,7 @@ public void tick() { return; } - boolean onClient = level.isClientSide && !isVirtual(); + boolean onClient = level.isClientSide() && !isVirtual(); if (processingTicks > 0) { heldItem.prevBeltPosition = .5f; @@ -178,10 +178,10 @@ public void tick() { side.getOpposite())) { ItemStack ejected = heldItem.stack; Vec3 outPos = VecHelper.getCenterOf(worldPosition) - .add(Vec3.atLowerCornerOf(side.getNormal()) + .add(Vec3.atLowerCornerOf(side.getUnitVec3i()) .scale(.75)); float movementSpeed = itemMovementPerTick(); - Vec3 outMotion = Vec3.atLowerCornerOf(side.getNormal()) + Vec3 outMotion = Vec3.atLowerCornerOf(side.getUnitVec3i()) .scale(movementSpeed) .add(0, 1 / 8f, 0); outPos.add(outMotion.normalize()); @@ -232,7 +232,7 @@ public void tick() { } protected boolean continueProcessing() { - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return true; if (processingTicks < 5) return true; @@ -302,15 +302,15 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { heldItem = null; - processingTicks = compound.getInt("ProcessingTicks"); + processingTicks = compound.getIntOr("ProcessingTicks", 0); if (compound.contains("HeldItem")) - heldItem = TransportedItemStack.read(compound.getCompound("HeldItem"), registries); + heldItem = TransportedItemStack.read(compound.getCompoundOrEmpty("HeldItem"), registries); super.read(compound, registries, clientPacket); } @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - return containedFluidTooltip(tooltip, isPlayerSneaking, level.getCapability(Capabilities.FluidHandler.BLOCK, worldPosition, null)); + return containedFluidTooltip(tooltip, isPlayerSneaking, level.getCapability(Capabilities.Fluid.BLOCK, worldPosition, null)); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java index 95f0285edc..8d9953e7ad 100644 --- a/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/drain/ItemDrainRenderer.java @@ -12,13 +12,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.NeoForgeCatnipServices; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.NeoForgeCatnipServices; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; @@ -63,7 +63,7 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack float sideOffset = Mth.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); Vec3 offsetVec = Vec3.atLowerCornerOf(insertedFrom.getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(.5f - offset); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); boolean alongX = insertedFrom.getClockWise() @@ -74,8 +74,7 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack ItemStack itemStack = transported.stack; Random r = new Random(0); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); int count = (int) (Mth.log2((int) (itemStack.getCount()))) / 2; boolean renderUpright = BeltHelper.isItemUpright(itemStack); BakedModel bakedModel = itemRenderer.getModel(itemStack, null, null, 0); @@ -93,7 +92,7 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack msr.rotateZDegrees(-verticalAngle); if (renderUpright) { - Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.mainCamera().position(); Vec3 vectorForOffset = itemPosition.add(offsetVec); Vec3 diff = vectorForOffset.subtract(cameraPosition); @@ -121,9 +120,9 @@ protected void renderItem(ItemDrainBlockEntity be, float partialTicks, PoseStack if (!blockItem) msr.rotateYDegrees(10); ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0); - } else - ms.translate(0, 0, -1 / 16f); - } + } else + ms.translate(0, 0, -1 / 16f); + } ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlock.java b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlock.java index f81d9c8f2c..ab0ffef8a8 100644 --- a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlock.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.kinetics.base.HorizontalKineticBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlockEntity.java index 4dfa9ba415..c94d6fded9 100644 --- a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyBlockEntity.java @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -47,11 +47,11 @@ public HosePulleyBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.HOSE_PULLEY.get(), (be, context) -> { if (context == null || HosePulleyBlock.hasPipeTowards(be.level, be.worldPosition, be.getBlockState(), context)) - return be.handler; + return new com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter(be.handler); return null; } ); @@ -137,7 +137,7 @@ public void tick() { @Override public void lazyTick() { super.lazyTick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (isMoving) return; @@ -159,7 +159,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo if (clientPacket) offset.forceNextSync(); compound.put("Offset", offset.writeNBT()); - compound.put("Tank", internalTank.writeToNBT(registries, new CompoundTag())); + compound.put("Tank", com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.serializeTank(internalTank, registries)); super.write(compound, registries, clientPacket); if (clientPacket) compound.putBoolean("Infinite", infinite); @@ -167,12 +167,12 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - offset.readNBT(compound.getCompound("Offset"), clientPacket); + offset.readNBT(compound.getCompoundOrEmpty("Offset"), clientPacket); - internalTank.readFromNBT(registries, compound.getCompound("Tank")); + com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.deserializeTank(internalTank, registries, compound.getCompoundOrEmpty("Tank")); super.read(compound, registries, clientPacket); if (clientPacket) - infinite = compound.getBoolean("Infinite"); + infinite = compound.getBooleanOr("Infinite", false); } @Override @@ -183,7 +183,7 @@ public void invalidate() { public float getMovementSpeed() { float movementSpeed = convertToLinear(getSpeed()); - if (level.isClientSide) + if (level.isClientSide()) movementSpeed *= ServerSpeedProvider.get(); return movementSpeed; } diff --git a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyRenderer.java b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyRenderer.java index e0fe91c6a5..3295a78109 100644 --- a/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/hosePulley/HosePulleyRenderer.java @@ -5,9 +5,9 @@ import com.simibubi.create.content.contraptions.pulley.AbstractPulleyRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java b/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java index 1e739ca4ed..cd99ef76cb 100644 --- a/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java +++ b/src/main/java/com/simibubi/create/content/fluids/particle/BasinFluidParticle.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.content.processing.basin.BasinBlockEntity; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; @@ -30,7 +30,7 @@ public BasinFluidParticle(ClientLevel world, FluidStack fluid, double x, double xd = 0; yd = 0; zd = 0; - yOffset = world.random.nextFloat() * 1 / 32f; + yOffset = world.getRandom().nextFloat() * 1 / 32f; y += yOffset; quadSize = 0; lifetime = 60; @@ -83,17 +83,6 @@ public void tick() { } } - @Override - public void render(VertexConsumer vb, Camera info, float pt) { - Quaternionf rotation = info.rotation(); - Quaternionf prevRotation = new Quaternionf(rotation); - rotation.set(-1, 0, 0, 1); - rotation.normalize(); - super.render(vb, info, pt); - rotation.set(0, 0, 0, 1); - rotation.mul(prevRotation); - } - @Override protected boolean canEvaporate() { return false; diff --git a/src/main/java/com/simibubi/create/content/fluids/particle/FluidParticleData.java b/src/main/java/com/simibubi/create/content/fluids/particle/FluidParticleData.java index ac4632b253..7e679f6dae 100644 --- a/src/main/java/com/simibubi/create/content/fluids/particle/FluidParticleData.java +++ b/src/main/java/com/simibubi/create/content/fluids/particle/FluidParticleData.java @@ -5,14 +5,12 @@ import com.simibubi.create.AllParticleTypes; import com.simibubi.create.foundation.particle.ICustomParticleData; -import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; public class FluidParticleData implements ParticleOptions, ICustomParticleData { @@ -29,11 +27,8 @@ public FluidParticleData(ParticleType type, FluidStack fluid) { this.fluid = fluid; } - @Override - @OnlyIn(Dist.CLIENT) - public ParticleProvider getFactory() { - return (data, world, x, y, z, vx, vy, vz) -> FluidStackParticle.create(data.type, world, data.fluid, x, y, z, - vx, vy, vz); + public FluidStack getFluid() { + return fluid; } @Override diff --git a/src/main/java/com/simibubi/create/content/fluids/particle/FluidStackParticle.java b/src/main/java/com/simibubi/create/content/fluids/particle/FluidStackParticle.java index a19638ddab..2878cb894a 100644 --- a/src/main/java/com/simibubi/create/content/fluids/particle/FluidStackParticle.java +++ b/src/main/java/com/simibubi/create/content/fluids/particle/FluidStackParticle.java @@ -6,23 +6,21 @@ import com.simibubi.create.AllParticleTypes; import com.simibubi.create.content.fluids.potion.PotionFluid; +import com.simibubi.create.foundation.fluid.FluidRenderProperties; -import net.createmod.catnip.theme.Color; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.particle.ParticleRenderType; -import net.minecraft.client.particle.TextureSheetParticle; +import net.minecraft.client.particle.SingleQuadParticle; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.particles.ParticleType; import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.world.inventory.InventoryMenu; -import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.fluids.FluidStack; -public class FluidStackParticle extends TextureSheetParticle { +public class FluidStackParticle extends SingleQuadParticle { private final float uo; private final float vo; private final FluidStack fluid; - private final IClientFluidTypeExtensions clientFluid; + private final int tintColor; public static FluidStackParticle create(ParticleType type, ClientLevel world, FluidStack fluid, double x, double y, double z, double vx, double vy, double vz) { @@ -33,20 +31,16 @@ public static FluidStackParticle create(ParticleType type, Cl public FluidStackParticle(ClientLevel world, FluidStack fluid, double x, double y, double z, double vx, double vy, double vz) { - super(world, x, y, z, vx, vy, vz); - - clientFluid = IClientFluidTypeExtensions.of(fluid.getFluid()); + super(world, x, y, z, vx, vy, vz, getFluidSprite(fluid)); this.fluid = fluid; - this.setSprite(Minecraft.getInstance() - .getTextureAtlas(InventoryMenu.BLOCK_ATLAS) - .apply(clientFluid.getStillTexture(fluid))); + tintColor = FluidRenderProperties.getTintColor(fluid); this.gravity = 1.0F; this.rCol = 0.8F; this.gCol = 0.8F; this.bCol = 0.8F; - this.multiplyColor(clientFluid.getTintColor(fluid)); + this.multiplyColor(tintColor); this.xd = vx; this.yd = vy; @@ -57,9 +51,13 @@ public FluidStackParticle(ClientLevel world, FluidStack fluid, double x, double this.vo = this.random.nextFloat() * 3.0F; } + private static TextureAtlasSprite getFluidSprite(FluidStack fluid) { + return FluidRenderProperties.getStillTexture(fluid); + } + @Override - protected int getLightColor(float p_189214_1_) { - int brightnessForRender = super.getLightColor(p_189214_1_); + protected int getLightCoords(float p_189214_1_) { + int brightnessForRender = super.getLightCoords(p_189214_1_); int skyLight = brightnessForRender >> 20; int blockLight = (brightnessForRender >> 4) & 0xf; blockLight = Math.max(blockLight, fluid.getFluid() @@ -99,10 +97,10 @@ public void tick() { remove(); if (!removed) return; - if (!onGround && level.random.nextFloat() < 1 / 8f) + if (!onGround && level.getRandom().nextFloat() < 1 / 8f) return; - Color color = new Color(clientFluid.getTintColor(fluid)); + Color color = new Color(tintColor); level.addParticle(ColorParticleOption.create(ParticleTypes.ENTITY_EFFECT, color.getRedAsFloat(), color.getGreenAsFloat(), color.getBlueAsFloat()), x, y, z, 0, 0, 0); } @@ -111,8 +109,8 @@ protected boolean canEvaporate() { } @Override - public @NotNull ParticleRenderType getRenderType() { - return ParticleRenderType.TERRAIN_SHEET; + protected @NotNull SingleQuadParticle.Layer getLayer() { + return SingleQuadParticle.Layer.bySprite(sprite); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/AxisPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/AxisPipeBlock.java index ba1b7bd535..9db998b902 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/AxisPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/AxisPipeBlock.java @@ -12,17 +12,16 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -31,6 +30,7 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BooleanProperty; @@ -47,29 +47,28 @@ public AxisPipeBlock(Properties p_i48339_1_) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - if (state != newState && !isMoving) + if (!isMoving) removeBracket(world, pos, true).ifPresent(stack -> Block.popResource(world, pos, stack)); - if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasBlockEntity())) + if (state.hasBlockEntity()) world.removeBlockEntity(pos); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!AllBlocks.COPPER_CASING.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; BlockState newState = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState(); for (Direction d : Iterate.directionsInAxis(getAxis(state))) newState = newState.setValue(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true); FluidTransportBehaviour.cacheFlows(level, pos); level.setBlockAndUpdate(pos, newState); FluidTransportBehaviour.loadFlows(level, pos); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -80,22 +79,20 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isClientSide) + if (world.isClientSide()) return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.FLUID_PIPE.asStack(); } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java index 6afa23f6f2..edad520f63 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/EncasedPipeBlock.java @@ -23,10 +23,9 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -38,6 +37,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.PipeBlock; @@ -81,29 +81,27 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasBlockEntity())) + if (state.hasBlockEntity()) world.removeBlockEntity(pos); } @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (!world.isClientSide && state != oldState) + if (!world.isClientSide() && state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.FLUID_PIPE.asStack(); } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; @@ -122,7 +120,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { Level world = context.getLevel(); BlockPos pos = context.getClickedPos(); - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; context.getLevel() diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java index 9604eafbee..28f93b3228 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlock.java @@ -5,7 +5,7 @@ import org.jetbrains.annotations.Nullable; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import org.jetbrains.annotations.NotNull; @@ -24,11 +24,10 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; @@ -38,11 +37,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.PipeBlock; import net.minecraft.world.level.block.Rotation; @@ -89,7 +90,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { for (Direction direction : Iterate.directions) { if (clickedFace.getAxis() == direction.getAxis()) continue; - Vec3 centerOf = Vec3.atCenterOf(direction.getNormal()); + Vec3 centerOf = Vec3.atCenterOf(direction.getUnitVec3i()); double distance = centerOf.distanceToSqr(clickLocation); if (distance < closest) { closest = distance; @@ -101,7 +102,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { if (clickedFace.getAxis() == axis) return InteractionResult.PASS; - if (!world.isClientSide) { + if (!world.isClientSide()) { withBlockEntityDo(world, pos, fpte -> fpte.getBehaviour(FluidTransportBehaviour.TYPE).interfaces.values() .stream() .filter(pc -> pc != null && pc.hasFlow()) @@ -124,12 +125,12 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - ItemInteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + InteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); if (result.consumesAction()) return result; - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } public BlockState getAxisState(Axis axis) { @@ -145,28 +146,26 @@ private Axis getAxis(BlockGetter world, BlockPos pos, BlockState state) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - if (state != newState && !isMoving) + if (!isMoving) removeBracket(world, pos, true).ifPresent(stack -> Block.popResource(world, pos, stack)); - if (state.hasBlockEntity() && (blockTypeChanged || !newState.hasBlockEntity())) + if (state.hasBlockEntity()) world.removeBlockEntity(pos); } @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isClientSide) + if (world.isClientSide()) return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; @@ -184,7 +183,7 @@ public static boolean isPipe(BlockState state) { return state.getBlock() instanceof FluidPipeBlock; } - public static boolean canConnectTo(BlockAndTintGetter world, BlockPos neighbourPos, BlockState neighbour, + public static boolean canConnectTo(BlockGetter world, BlockPos neighbourPos, BlockState neighbour, Direction direction) { if (FluidPropagator.hasFluidCapability(world, neighbourPos, direction.getOpposite())) return true; @@ -201,7 +200,7 @@ public static boolean canConnectTo(BlockAndTintGetter world, BlockPos neighbourP return transport.canHaveFlowToward(neighbour, direction.getOpposite()); } - public static boolean shouldDrawRim(BlockAndTintGetter world, BlockPos pos, BlockState state, Direction direction) { + public static boolean shouldDrawRim(BlockGetter world, BlockPos pos, BlockState state, Direction direction) { BlockPos offsetPos = pos.relative(direction); BlockState facingState = world.getBlockState(offsetPos); if (facingState.getBlock() instanceof EncasedPipeBlock) @@ -217,12 +216,12 @@ public static boolean isOpenAt(BlockState state, Direction direction) { return state.getValue(PROPERTY_BY_DIRECTION.get(direction)); } - public static boolean isCornerOrEndPipe(BlockAndTintGetter world, BlockPos pos, BlockState state) { + public static boolean isCornerOrEndPipe(BlockGetter world, BlockPos pos, BlockState state) { return isPipe(state) && FluidPropagator.getStraightPipeAxis(state) == null && !shouldDrawCasing(world, pos, state); } - public static boolean shouldDrawCasing(BlockAndTintGetter world, BlockPos pos, BlockState state) { + public static boolean shouldDrawCasing(BlockGetter world, BlockPos pos, BlockState state) { if (!isPipe(state)) return false; for (Axis axis : Iterate.axes) { @@ -252,17 +251,16 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); if (isOpenAt(state, direction) && neighbourState.hasProperty(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, this, 1, TickPriority.HIGH); + ticks.scheduleTick(pos, this, 1, TickPriority.HIGH); return updateBlockState(state, direction, direction.getOpposite(), world, pos); } public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore, - BlockAndTintGetter world, BlockPos pos) { + BlockGetter world, BlockPos pos) { BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE); if (bracket != null && bracket.isBracketPresent()) @@ -343,7 +341,7 @@ public boolean supportsExternalFaceHiding(BlockState state) { } @Override - public VoxelShape getOcclusionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) { + protected VoxelShape getOcclusionShape(BlockState pState) { return OCCLUSION_BOX; } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java index 31d65dcef4..491ba7d91d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockEntity.java @@ -12,7 +12,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockRotation.java b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockRotation.java index 0c044fa00d..37b0b6efb8 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockRotation.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/FluidPipeBlockRotation.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.contraptions.StructureTransform; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.PipeBlock; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java index 2b8cbc1cfd..c4538ad3c2 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassFluidPipeBlock.java @@ -9,7 +9,6 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.context.BlockPlaceContext; @@ -27,7 +26,6 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.pathfinder.PathComputationType; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class GlassFluidPipeBlock extends AxisPipeBlock implements IBE, SimpleWaterloggedBlock, SpecialBlockItemRequirement { diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassPipeVisual.java b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassPipeVisual.java index 4655348a77..04e9709a1b 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/GlassPipeVisual.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/GlassPipeVisual.java @@ -2,7 +2,6 @@ import java.util.function.Consumer; -import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.FluidType; @@ -14,6 +13,7 @@ import com.simibubi.create.content.fluids.FluidTransportBehaviour; import com.simibubi.create.content.fluids.PipeConnection.Flow; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.FluidRenderProperties; import com.simibubi.create.foundation.render.AllInstanceTypes; import dev.engine_room.flywheel.api.instance.Instance; @@ -24,13 +24,11 @@ import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; import dev.engine_room.flywheel.lib.visual.util.SmartRecycler; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; import net.minecraft.util.Mth; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.material.Fluid; public class GlassPipeVisual extends AbstractBlockEntityVisual implements SimpleDynamicVisual { @@ -93,13 +91,10 @@ public void beginFrame(Context ctx) { } Fluid fluid = fluidStack.getFluid(); - IClientFluidTypeExtensions clientFluid = IClientFluidTypeExtensions.of(fluid); FluidType fluidAttributes = fluid.getFluidType(); - var atlas = Minecraft.getInstance() - .getTextureAtlas(InventoryMenu.BLOCK_ATLAS); - TextureAtlasSprite flowTexture = atlas.apply(clientFluid.getFlowingTexture(fluidStack)); + TextureAtlasSprite flowTexture = FluidRenderProperties.getFlowingTexture(fluidStack); - int color = clientFluid.getTintColor(fluidStack); + int color = FluidRenderProperties.getTintColor(fluidStack); int blockLightIn = (light >> 4) & 0xF; int luminosity = Math.max(blockLightIn, fluidAttributes.getLightLevel(fluidStack)); int light = (this.light & 0xF00000) | luminosity << 4; @@ -129,7 +124,7 @@ public void beginFrame(Context ctx) { fluidInstance.setChanged(); if (progress != 1) { - TextureAtlasSprite stillTexture = atlas.apply(clientFluid.getStillTexture(fluidStack)); + TextureAtlasSprite stillTexture = FluidRenderProperties.getStillTexture(fluidStack); surface.get(stillTexture) .setIdentityTransform() .translate(getVisualPosition()) diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlock.java index b2135ea8b8..d740d26e02 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlock.java @@ -11,12 +11,11 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.LivingEntity; @@ -26,7 +25,10 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -93,11 +95,10 @@ protected boolean prefersConnectionTo(LevelReader reader, BlockPos pos, Directio } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - IBE.onRemove(state, world, pos, newState); + IBE.onRemove(state, world, pos, Blocks.AIR.defaultBlockState()); } @Override @@ -107,16 +108,15 @@ public boolean canSurvive(BlockState p_196260_1_, LevelReader p_196260_2_, Block @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isClientSide) + if (world.isClientSide()) return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; @@ -166,9 +166,8 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlockEntity.java index bec868c0c1..8a642f2f4d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeBlockEntity.java @@ -11,8 +11,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -47,7 +47,7 @@ public void clearContent() { } private void onFilterChanged(ItemStack newFilter) { - if (!level.isClientSide) + if (!level.isClientSide()) FluidPropagator.propagateChangedPipe(level, worldPosition, getBlockState()); } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeGenerator.java b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeGenerator.java index 1aa15fc3b5..5e9be385db 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeGenerator.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/SmartFluidPipeGenerator.java @@ -3,12 +3,12 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.AttachFace; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class SmartFluidPipeGenerator extends SpecialBlockStateGen { @@ -26,7 +26,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return AssetLookup.partialBaseModel(ctx, prov); } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/StraightPipeBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pipes/StraightPipeBlockEntity.java index 2a4dc3d92d..1a03e28607 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/StraightPipeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/StraightPipeBlockEntity.java @@ -12,7 +12,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/TransparentStraightPipeRenderer.java b/src/main/java/com/simibubi/create/content/fluids/pipes/TransparentStraightPipeRenderer.java index 794f5921d4..be6d3f09f0 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/TransparentStraightPipeRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/TransparentStraightPipeRenderer.java @@ -7,9 +7,9 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.fluid.FluidRenderer; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.animation.LerpedFloat; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.neoforged.neoforge.fluids.FluidStack; diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlock.java b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlock.java index 914f39feed..0a449d7327 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlock.java @@ -11,11 +11,10 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.item.context.BlockPlaceContext; @@ -23,7 +22,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -90,11 +91,9 @@ public Axis getAxis(BlockState state) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = !state.is(newState.getBlock()); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - super.onRemove(state, world, pos, newState, isMoving); } @Override @@ -105,16 +104,15 @@ public boolean canSurvive(BlockState p_196260_1_, LevelReader p_196260_2_, Block @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { super.onPlace(state, world, pos, oldState, isMoving); - if (world.isClientSide) + if (world.isClientSide()) return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; @@ -153,9 +151,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { - updateWater(world, state, pos); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { + updateWater(ticks, world, state, pos); return state; } diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlockEntity.java index 5e7cd6c213..5946447233 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveBlockEntity.java @@ -8,8 +8,8 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -43,7 +43,7 @@ public void tick() { super.tick(); pointer.tickChaser(); - if (level.isClientSide) + if (level.isClientSide()) return; BlockState blockState = getBlockState(); @@ -74,7 +74,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - pointer.readNBT(compound.getCompound("Pointer"), clientPacket); + pointer.readNBT(compound.getCompoundOrEmpty("Pointer"), clientPacket); } @Override diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveRenderer.java b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveRenderer.java index 5294b1a53a..6126fb831e 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveRenderer.java @@ -5,11 +5,11 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -47,7 +47,7 @@ protected void renderSafe(FluidValveBlockEntity be, float partialTicks, PoseStac .rotateYDegrees(pointerRotationOffset + pointerRotation) .uncenter() .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Override diff --git a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java index f7dc4e3cbc..e313b84af6 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java +++ b/src/main/java/com/simibubi/create/content/fluids/pipes/valve/FluidValveVisual.java @@ -13,7 +13,7 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluid.java index ed1f1e2a6a..4e36390253 100644 --- a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluid.java +++ b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluid.java @@ -9,16 +9,15 @@ import com.simibubi.create.content.fluids.VirtualFluid; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.StringRepresentable; -import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionContents; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.material.FluidState; @@ -69,8 +68,8 @@ public enum BottleType implements StringRepresentable { public static class PotionFluidType extends TintedFluidType { - public PotionFluidType(net.neoforged.neoforge.fluids.FluidType.Properties properties, ResourceLocation stillTexture, ResourceLocation flowingTexture) { - super(properties, stillTexture, flowingTexture); + public PotionFluidType(net.neoforged.neoforge.fluids.FluidType.Properties properties) { + super(properties); } @Override @@ -83,11 +82,14 @@ public String getDescriptionId(FluidStack stack) { PotionContents contents = stack.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY); ItemLike itemFromBottleType = PotionFluidHandler.itemFromBottleType(stack.getOrDefault(AllDataComponents.POTION_FLUID_BOTTLE_TYPE, BottleType.REGULAR)); - return Potion.getName(contents.potion(), itemFromBottleType.asItem().getDescriptionId() + ".effect."); + String suffix = contents.customName() + .or(() -> contents.potion().map(potion -> potion.value().name())) + .orElse("empty"); + return itemFromBottleType.asItem().getDescriptionId() + ".effect." + suffix; } @Override - protected int getTintColor(FluidState state, BlockAndTintGetter getter, BlockPos pos) { + public int getTintColor(FluidState state, BlockAndTintGetter getter, BlockPos pos) { return NO_TINT; } diff --git a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java index 9d9f57e326..48e8ba6a71 100644 --- a/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java +++ b/src/main/java/com/simibubi/create/content/fluids/potion/PotionFluidHandler.java @@ -8,8 +8,9 @@ import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.content.fluids.potion.PotionFluid.BottleType; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.fluid.LazyComponentFluidIngredient; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; @@ -35,17 +36,16 @@ import net.minecraft.world.level.material.Fluids; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; -import net.neoforged.neoforge.fluids.crafting.DataComponentFluidIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; public class PotionFluidHandler { private static final Component NO_EFFECT = Component.translatable("effect.none").withStyle(ChatFormatting.GRAY); public static boolean isPotionItem(ItemStack stack) { + var remainder = stack.getItem().getCraftingRemainder(); return stack.getItem() instanceof PotionItem - && !(stack.getCraftingRemainingItem().getItem() instanceof BucketItem) + && !(remainder != null && remainder.item().value() instanceof BucketItem) && !AllItemTags.NOT_POTION.matches(stack); } @@ -59,7 +59,7 @@ public static Pair emptyPotion(ItemStack stack, boolean s public static SizedFluidIngredient potionIngredient(Holder potion, int amount) { FluidStack stack = FluidHelper.copyStackWithAmount(PotionFluidHandler .getFluidFromPotionItem(PotionContents.createItemStack(Items.POTION, potion)), amount); - return new SizedFluidIngredient(DataComponentFluidIngredient.of(false, stack), amount); + return new SizedFluidIngredient(LazyComponentFluidIngredient.of(false, stack), amount); } public static FluidStack getFluidFromPotionItem(ItemStack stack) { @@ -105,7 +105,6 @@ public static ItemStack fillBottle(ItemStack stack, FluidStack availableFluid) { } // Modified version of PotionContents#addPotionTooltip - @OnlyIn(Dist.CLIENT) public static void addPotionTooltip(FluidStack fs, Consumer tooltipAdder, float durationFactor) { PotionContents contents = fs.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY); Iterable effects = contents.getAllEffects(); diff --git a/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java b/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java index afd2dfc95c..30b1f1ed37 100644 --- a/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java +++ b/src/main/java/com/simibubi/create/content/fluids/potion/PotionMixingRecipes.java @@ -12,11 +12,13 @@ import com.simibubi.create.content.kinetics.mixer.MixingRecipe; import com.simibubi.create.content.processing.recipe.HeatCondition; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe.Builder; +import com.simibubi.create.foundation.fluid.LazyComponentFluidIngredient; import com.simibubi.create.foundation.mixin.accessor.PotionBrewingAccessor; import net.minecraft.core.Holder.Reference; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -30,7 +32,6 @@ import net.neoforged.neoforge.common.brewing.BrewingRecipe; import net.neoforged.neoforge.common.brewing.IBrewingRecipe; import net.neoforged.neoforge.fluids.FluidStack; -import net.neoforged.neoforge.fluids.crafting.DataComponentFluidIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; public class PotionMixingRecipes { @@ -127,11 +128,7 @@ private static List> createRecipesImpl(Level level) { FluidStack outputFluid = null; for (ItemStack stack : supportedContainerStacks) { if (input.test(stack)) { - ItemStack[] stacks = input.getItems(); - if (stacks.length == 0){ - continue; - } - FluidStack inputFluid = PotionFluidHandler.getFluidFromPotionItem(stacks[0]); + FluidStack inputFluid = PotionFluidHandler.getFluidFromPotionItem(stack); inputFluid.setAmount(1000); if (outputFluid == null) { outputFluid = PotionFluidHandler.getFluidFromPotionItem(output); @@ -147,15 +144,15 @@ private static List> createRecipesImpl(Level level) { } private static RecipeHolder createRecipe(String id, Ingredient ingredient, FluidStack fromFluid, FluidStack toFluid) { - ResourceLocation recipeId = Create.asResource(id); + Identifier recipeId = Create.asResource(id); MixingRecipe recipe = new Builder<>(MixingRecipe::new, recipeId) .require(ingredient) - .require(new SizedFluidIngredient(DataComponentFluidIngredient.of(false, fromFluid), fromFluid.getAmount())) + .require(new SizedFluidIngredient(LazyComponentFluidIngredient.of(false, fromFluid), fromFluid.getAmount())) .output(toFluid) .requiresHeat(HeatCondition.HEATED) .build(); - return new RecipeHolder<>(recipeId, recipe); + return new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, recipeId), recipe); } private static Map> sortRecipesByItem(List> all) { @@ -163,8 +160,7 @@ private static Map> sortRecipesByItem(List processedItems = new HashSet<>(); for (RecipeHolder recipe : all) { for (Ingredient ingredient : recipe.value().getIngredients()) { - for (ItemStack itemStack : ingredient.getItems()) { - Item item = itemStack.getItem(); + for (Item item : ingredient.items().map(itemHolder -> itemHolder.value()).toList()) { if (processedItems.add(item)) { byItem.computeIfAbsent(item, i -> new ArrayList<>()) .add(recipe.value()); diff --git a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlock.java b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlock.java index 932f9ce287..0b974f8552 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlock.java @@ -9,11 +9,10 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.network.protocol.game.DebugPackets; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; @@ -21,7 +20,10 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -63,9 +65,8 @@ public VoxelShape getShape(BlockState state, BlockGetter p_220053_2_, BlockPos p } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPackets.sendNeighborsUpdatePacket(world, pos); + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block otherBlock, Orientation orientation, boolean isMoving) { + BlockPos neighborPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); if (d == null) return; @@ -87,10 +88,9 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -113,8 +113,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { BlockState adjState = level.getBlockState(adjPos); if (!FluidPipeBlock.canConnectTo(level, adjPos, adjState, d)) continue; - double distance = Vec3.atLowerCornerOf(d.getNormal()) - .distanceTo(Vec3.atLowerCornerOf(targetDirection.getNormal())); + double distance = Vec3.atLowerCornerOf(d.getUnitVec3i()) + .distanceTo(Vec3.atLowerCornerOf(targetDirection.getUnitVec3i())); if (distance > bestDistance) continue; bestDistance = distance; @@ -134,7 +134,7 @@ public static boolean isPump(BlockState state) { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean isMoving) { super.onPlace(state, world, pos, oldState, isMoving); - if (world.isClientSide) + if (world.isClientSide()) return; if (state != oldState) world.scheduleTick(pos, this, 1, TickPriority.HIGH); @@ -159,11 +159,9 @@ public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = !state.is(newState.getBlock()); - if (blockTypeChanged && !world.isClientSide) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!world.isClientSide()) FluidPropagator.propagateChangedPipe(world, pos, state); - super.onRemove(state, world, pos, newState, isMoving); } @Override diff --git a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java index d1e066e0c8..3da7eb72ce 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/pump/PumpBlockEntity.java @@ -23,14 +23,14 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -64,7 +64,7 @@ public void addBehaviours(List behaviours) { public void tick() { super.tick(); - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; if (scheduleFlip) { @@ -90,7 +90,7 @@ public void onSpeedChanged(float previousSpeed) { return; if (speed != 0) award(AllAdvancements.PUMP); - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; updatePressureChange(); @@ -112,7 +112,7 @@ public void updatePressureChange() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - if (compound.getBoolean("Reversed")) + if (compound.getBooleanOr("Reversed", false)) scheduleFlip = true; } @@ -288,7 +288,7 @@ private boolean hasReachedValidEndpoint(LevelAccessor world, BlockFace blockFace // fluid handler endpoint if (blockEntity != null) { - IFluidHandler capability = blockEntity.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, blockEntity.getBlockPos(), face.getOpposite()); + IFluidHandler capability = com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter.of(blockEntity.getLevel().getCapability(Capabilities.Fluid.BLOCK, blockEntity.getBlockPos(), face.getOpposite())); if (capability != null) return true; } diff --git a/src/main/java/com/simibubi/create/content/fluids/pump/PumpRenderer.java b/src/main/java/com/simibubi/create/content/fluids/pump/PumpRenderer.java index b475a80b7d..7e30b2d283 100644 --- a/src/main/java/com/simibubi/create/content/fluids/pump/PumpRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/pump/PumpRenderer.java @@ -3,8 +3,8 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/fluids/spout/FillingBySpout.java b/src/main/java/com/simibubi/create/content/fluids/spout/FillingBySpout.java index 4ebc8a4a08..92ee978ba5 100644 --- a/src/main/java/com/simibubi/create/content/fluids/spout/FillingBySpout.java +++ b/src/main/java/com/simibubi/create/content/fluids/spout/FillingBySpout.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.level.Level; @@ -46,8 +47,7 @@ public static int getRequiredAmountForItem(Level world, ItemStack stack, FluidSt return requiredFluid.amount(); } - for (RecipeHolder> recipe : world.getRecipeManager() - .getRecipesFor(AllRecipeTypes.FILLING.getType(), input, world)) { + for (RecipeHolder> recipe : getFillingRecipes(world, input)) { FillingRecipe fillingRecipe = (FillingRecipe) recipe.value(); SizedFluidIngredient requiredFluid = fillingRecipe.getRequiredFluid(); if (requiredFluid.ingredient().test(availableFluid)) @@ -68,8 +68,7 @@ public static ItemStack fillItem(Level level, int requiredAmount, ItemStack stac .filter(fr -> fr.value().getRequiredFluid() .test(toFill)) .orElseGet(() -> { - for (RecipeHolder> recipe : level.getRecipeManager() - .getRecipesFor(AllRecipeTypes.FILLING.getType(), input, level)) { + for (RecipeHolder> recipe : getFillingRecipes(level, input)) { FillingRecipe fr = (FillingRecipe) recipe.value(); SizedFluidIngredient requiredFluid = fr.getRequiredFluid(); if (requiredFluid.test(toFill)) @@ -79,7 +78,7 @@ public static ItemStack fillItem(Level level, int requiredAmount, ItemStack stac }); if (fillingRecipe != null) { - List results = fillingRecipe.value().rollResults(level.random); + List results = fillingRecipe.value().rollResults(level.getRandom()); availableFluid.shrink(requiredAmount); stack.shrink(1); return results.isEmpty() ? ItemStack.EMPTY : results.get(0); @@ -93,4 +92,16 @@ private static Predicate> matchItemAndFluid(Level wo .test(availableFluid); } + @SuppressWarnings("unchecked") + private static List>> getFillingRecipes(Level level, SingleRecipeInput input) { + if (!(level.recipeAccess() instanceof RecipeManager recipeManager)) + return List.of(); + return recipeManager.getRecipes() + .stream() + .filter(holder -> holder.value().getType() == AllRecipeTypes.FILLING.getType()) + .map(holder -> (RecipeHolder>) (RecipeHolder) holder) + .filter(holder -> holder.value().matches(input, level)) + .toList(); + } + } diff --git a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlock.java b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlock.java index b8ca460807..ea79efde78 100644 --- a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlock.java @@ -8,11 +8,14 @@ import com.simibubi.create.foundation.blockEntity.ComparatorUtil; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.pathfinder.PathComputationType; @@ -43,7 +46,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return ComparatorUtil.levelOfSmartFluidTank(worldIn, pos); } @@ -63,7 +66,7 @@ public BlockEntityType getBlockEntityType() { } @Override - public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, level, pos, newState); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, level, pos, Blocks.AIR.defaultBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java index 4301418d8d..44022d4ad4 100644 --- a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutBlockEntity.java @@ -24,8 +24,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -62,11 +62,11 @@ public SpoutBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.SPOUT.get(), (be, context) -> { if (context != Direction.DOWN) - return be.tank.getCapability(); + return new com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter(be.tank.getCapability()); return null; } ); @@ -186,7 +186,7 @@ private boolean trackFoods() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - processingTicks = compound.getInt("ProcessingTicks"); + processingTicks = compound.getIntOr("ProcessingTicks", 0); createdChocolateBerries = compound.contains("ChocolateBerries"); createdHoneyApple = compound.contains("HoneyApple"); @@ -228,7 +228,7 @@ public void tick() { } } - if (processingTicks >= 8 && level.isClientSide) { + if (processingTicks >= 8 && level.isClientSide()) { spawnProcessingParticles(tank.getPrimaryTank() .getRenderedFluid()); } @@ -252,7 +252,7 @@ protected void spawnSplash(FluidStack fluid) { vec = vec.subtract(0, 2 - 5 / 16f, 0); ParticleOptions particle = FluidFX.getFluidParticle(fluid); for (int i = 0; i < SPLASH_PARTICLE_COUNT; i++) { - Vec3 m = VecHelper.offsetRandomly(Vec3.ZERO, level.random, 0.125f); + Vec3 m = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), 0.125f); m = new Vec3(m.x, Math.abs(m.y), m.z); level.addAlwaysVisibleParticle(particle, vec.x, vec.y, vec.z, m.x, m.y, m.z); } @@ -261,6 +261,6 @@ protected void spawnSplash(FluidStack fluid) { @Override public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { return containedFluidTooltip(tooltip, isPlayerSneaking, - level.getCapability(Capabilities.FluidHandler.BLOCK, worldPosition, null)); + level.getCapability(Capabilities.Fluid.BLOCK, worldPosition, null)); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutRenderer.java b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutRenderer.java index 2cbee94bb3..027575ac9d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/spout/SpoutRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/spout/SpoutRenderer.java @@ -7,10 +7,10 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.platform.NeoForgeCatnipServices; -import net.createmod.catnip.render.CachedBuffers; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.platform.NeoForgeCatnipServices; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.util.Mth; import net.minecraft.world.phys.AABB; @@ -83,7 +83,7 @@ else if (processingPT < 10) for (PartialModel bit : BITS) { CachedBuffers.partial(bit, be.getBlockState()) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); ms.translate(0, -3 * squeeze / 32f, 0); } ms.popPose(); diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java b/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java index e38ec75530..e3b5abe3fb 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/BoilerData.java @@ -21,9 +21,9 @@ import com.simibubi.create.foundation.utility.CreateLang; import joptsimple.internal.Strings; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -77,7 +77,7 @@ public class BoilerData { // re-use the same lambda for each side private final SoundPool.Sound sound = (level, pos) -> { float volume = 3f / Math.max(2, attachedEngines / 6); - float pitch = 1.18f - level.random.nextFloat() * .25f; + float pitch = 1.18f - level.getRandom().nextFloat() * .25f; level.playLocalSound(pos.getX(), pos.getY(), pos.getZ(), SoundEvents.CANDLE_EXTINGUISH, SoundSource.BLOCKS, volume, pitch, false); @@ -90,12 +90,12 @@ public void tick(FluidTankBlockEntity controller) { if (!isActive()) return; Level level = controller.getLevel(); - if (level.isClientSide) { + if (level.isClientSide()) { pools.values().forEach(p -> p.play(level)); gauge.tickChaser(); float current = gauge.getValue(1); - if (current > 1 && level.random.nextFloat() < 1 / 2f) - gauge.setValueNoUpdate(current + Math.min(-(current - 1) * level.random.nextFloat(), 0)); + if (current > 1 && level.getRandom().nextFloat() < 1 / 2f) + gauge.setValueNoUpdate(current + Math.min(-(current - 1) * level.getRandom().nextFloat(), 0)); return; } if (needsHeatLevelUpdate && updateTemperature(controller)) @@ -129,7 +129,7 @@ public void tick(FluidTankBlockEntity controller) { } public void updateOcclusion(FluidTankBlockEntity controller) { - if (!controller.getLevel().isClientSide) + if (!controller.getLevel().isClientSide()) return; if (attachedEngines + attachedWhistles == 0) return; @@ -431,12 +431,12 @@ public CompoundTag write() { } public void read(CompoundTag nbt, int boilerSize) { - waterSupply = nbt.getFloat("Supply"); - activeHeat = nbt.getInt("ActiveHeat"); - passiveHeat = nbt.getBoolean("PassiveHeat"); - attachedEngines = nbt.getInt("Engines"); - attachedWhistles = nbt.getInt("Whistles"); - needsHeatLevelUpdate = nbt.getBoolean("Update"); + waterSupply = nbt.getFloatOr("Supply", 0); + activeHeat = nbt.getIntOr("ActiveHeat", 0); + passiveHeat = nbt.getBooleanOr("PassiveHeat", false); + attachedEngines = nbt.getIntOr("Engines", 0); + attachedWhistles = nbt.getIntOr("Whistles", 0); + needsHeatLevelUpdate = nbt.getBooleanOr("Update", false); Arrays.fill(supplyOverTime, (int) waterSupply); int forBoilerSize = getMaxHeatLevelForBoilerSize(boilerSize); diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/CreativeFluidTankBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/tank/CreativeFluidTankBlockEntity.java index 5cf6884264..551e6c0c35 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/CreativeFluidTankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/CreativeFluidTankBlockEntity.java @@ -27,12 +27,13 @@ public CreativeFluidTankBlockEntity(BlockEntityType type, BlockPos pos, Block public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.CREATIVE_FLUID_TANK.get(), (be, context) -> { if (be.fluidCapability == null) be.refreshCapability(); - return be.fluidCapability; + return be.fluidCapability == null ? null + : new com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter(be.fluidCapability); } ); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlock.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlock.java index e2bd34b222..0cfb34703d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlock.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlock.java @@ -12,19 +12,21 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.fluid.FluidHelper.FluidExchange; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -34,6 +36,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; @@ -144,30 +147,31 @@ public VoxelShape getBlockSupportShape(BlockState pState, BlockGetter pReader, B } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, + BlockState pNeighborState, RandomSource random) { if (pDirection == Direction.DOWN && pNeighborState.getBlock() != this) withBlockEntityDo(pLevel, pCurrentPos, FluidTankBlockEntity::updateBoilerTemperature); return pState; } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - boolean onClient = level.isClientSide; + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + boolean onClient = level.isClientSide(); if (stack.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!player.isCreative() && !creative) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; FluidExchange exchange = null; FluidTankBlockEntity be = ConnectivityHandler.partAt(getBlockEntityType(), level, pos); if (be == null) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; - IFluidHandler tankCapability = level.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler tankCapability = com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter.of(level.getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (tankCapability == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; FluidStack prevFluidInTank = tankCapability.getFluidInTank(0) .copy(); @@ -179,8 +183,8 @@ else if (FluidHelper.tryFillItemFromBE(level, player, hand, stack, be)) if (exchange == null) { if (GenericItemEmptying.canItemBeEmptied(level, stack) || GenericItemFilling.canItemBeFilled(level, stack)) - return ItemInteractionResult.SUCCESS; - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; } SoundEvent soundevent = null; @@ -217,7 +221,7 @@ else if (FluidHelper.tryFillItemFromBE(level, player, hand, stack, be)) .clamp(1 - (1f * fluidInTank.getAmount() / (FluidTankBlockEntity.getCapacityMultiplier() * 16)), 0, 1); pitch /= 1.5f; pitch += .5f; - pitch += (level.random.nextFloat() - .5f) / 4f; + pitch += (level.getRandom().nextFloat() - .5f) / 4f; level.playSound(null, pos, soundevent, SoundSource.BLOCKS, .5f, pitch); } @@ -244,7 +248,7 @@ else if (FluidHelper.tryFillItemFromBE(level, player, hand, stack, be)) .scale(1 / 20f); vec = vec.add(motion); level.addParticle(blockParticleData, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } controllerBE.sendDataImmediately(); @@ -253,18 +257,16 @@ else if (FluidHelper.tryFillItemFromBE(level, player, hand, stack, be)) } } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) { - BlockEntity be = world.getBlockEntity(pos); - if (!(be instanceof FluidTankBlockEntity tankBE)) - return; + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (state.hasBlockEntity() && world.getBlockEntity(pos) instanceof FluidTankBlockEntity tankBE) { world.removeBlockEntity(pos); ConnectivityHandler.splitMulti(tankBE); } + super.affectNeighborsAfterRemoval(state, world, pos, isMoving); } @Override @@ -347,7 +349,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return getBlockEntityOptional(worldIn, pos).map(FluidTankBlockEntity::getControllerBE) .map(be -> ComparatorUtil.fractionToRedstoneLevel(be.getFillState())) .orElse(0); diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java index 9840730b0f..19c374e942 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankBlockEntity.java @@ -15,12 +15,14 @@ import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter; import com.simibubi.create.foundation.fluid.SmartFluidTank; +import com.simibubi.create.foundation.utility.LegacyFluidNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -82,12 +84,12 @@ public FluidTankBlockEntity(BlockEntityType type, BlockPos pos, BlockState st public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.FLUID_TANK.get(), (be, context) -> { if (be.fluidCapability == null) be.refreshCapability(); - return be.fluidCapability; + return be.fluidCapability == null ? null : new LegacyFluidTransferAdapter(be.fluidCapability); } ); } @@ -98,7 +100,7 @@ protected SmartFluidTank createInventory() { protected void updateConnectivity() { updateConnectivity = false; - if (level.isClientSide) + if (level.isClientSide()) return; if (!isController()) return; @@ -155,7 +157,7 @@ public boolean isController() { public void initialize() { super.initialize(); sendData(); - if (level.isClientSide) + if (level.isClientSide()) invalidateRenderBoundingBox(); } @@ -193,7 +195,7 @@ protected void onFluidStackChanged(FluidStack newFluidStack) { } } - if (!level.isClientSide) { + if (!level.isClientSide()) { setChanged(); sendData(); } @@ -207,7 +209,7 @@ protected void onFluidStackChanged(FluidStack newFluidStack) { } protected void setLuminosity(int luminosity) { - if (level.isClientSide) + if (level.isClientSide()) return; if (this.luminosity == luminosity) return; @@ -235,7 +237,7 @@ public void applyFluidTankSize(int blocks) { } public void removeController(boolean keepFluids) { - if (level.isClientSide) + if (level.isClientSide()) return; updateConnectivity = true; if (!keepFluids) @@ -355,7 +357,7 @@ public void updateBoilerState() { @Override public void setController(BlockPos controller) { - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; if (controller.equals(this.controller)) return; @@ -404,7 +406,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak if (controllerBE.boiler.addToGoggleTooltip(tooltip, isPlayerSneaking, controllerBE.getTotalTankSize())) return true; return containedFluidTooltip(tooltip, isPlayerSneaking, - level.getCapability(Capabilities.FluidHandler.BLOCK, controllerBE.getBlockPos(), null)); + level.getCapability(Capabilities.Fluid.BLOCK, controllerBE.getBlockPos(), null)); } @Override @@ -417,7 +419,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool int prevLum = luminosity; updateConnectivity = compound.contains("Uninitialized"); - luminosity = compound.getInt("Luminosity"); + luminosity = compound.getIntOr("Luminosity", 0); lastKnownPos = null; if (compound.contains("LastKnownPos")) @@ -428,17 +430,17 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool controller = NBTHelper.readBlockPos(compound, "Controller"); if (isController()) { - window = compound.getBoolean("Window"); - width = compound.getInt("Size"); - height = compound.getInt("Height"); + window = compound.getBooleanOr("Window", false); + width = compound.getIntOr("Size", 1); + height = compound.getIntOr("Height", 1); tankInventory.setCapacity(getTotalTankSize() * getCapacityMultiplier()); - tankInventory.readFromNBT(registries, compound.getCompound("TankContent")); + LegacyFluidNbtBridge.deserializeTank(tankInventory, registries, compound.getCompoundOrEmpty("TankContent")); if (tankInventory.getSpace() < 0) tankInventory.drain(-tankInventory.getSpace(), FluidAction.EXECUTE); } - boiler.read(compound.getCompound("Boiler"), width * width * height); + boiler.read(compound.getCompoundOrEmpty("Boiler"), width * width * height); if (compound.contains("ForceFluidLevel") || fluidLevel == null) fluidLevel = LerpedFloat.linear() @@ -483,12 +485,12 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putBoolean("Uninitialized", true); compound.put("Boiler", boiler.write()); if (lastKnownPos != null) - compound.put("LastKnownPos", NbtUtils.writeBlockPos(lastKnownPos)); + compound.put("LastKnownPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(lastKnownPos)); if (!isController()) - compound.put("Controller", NbtUtils.writeBlockPos(controller)); + compound.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controller)); if (isController()) { compound.putBoolean("Window", window); - compound.put("TankContent", tankInventory.writeToNBT(registries, new CompoundTag())); + compound.put("TankContent", LegacyFluidNbtBridge.serializeTank(tankInventory, registries)); compound.putInt("Size", width); compound.putInt("Height", height); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankCTBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankCTBehaviour.java index d197b6c97a..83d976dae3 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankCTBehaviour.java @@ -10,7 +10,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class FluidTankCTBehaviour extends HorizontalCTBehaviour { diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankGenerator.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankGenerator.java index fee477e26c..bca6554b4b 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankGenerator.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankGenerator.java @@ -4,11 +4,11 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class FluidTankGenerator extends SpecialBlockStateGen { @@ -33,7 +33,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { Boolean top = state.getValue(FluidTankBlock.TOP); Boolean bottom = state.getValue(FluidTankBlock.BOTTOM); diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankItem.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankItem.java index d131523f4f..a67cbf5feb 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankItem.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankItem.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.equipment.symmetryWand.SymmetryWandItem; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -16,11 +17,9 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.fluids.FluidStack; @@ -45,23 +44,21 @@ protected boolean updateCustomBlockEntityTag(BlockPos blockPos, Level level, Pla MinecraftServer minecraftserver = level.getServer(); if (minecraftserver == null) return false; - CustomData blockEntityData = itemStack.get(DataComponents.BLOCK_ENTITY_DATA); - if (blockEntityData != null) { - CompoundTag nbt = blockEntityData.copyTag(); + if (itemStack.has(DataComponents.BLOCK_ENTITY_DATA)) { + CompoundTag nbt = LegacyBlockEntityDataComponentBridge.get(itemStack); nbt.remove("Luminosity"); nbt.remove("Size"); nbt.remove("Height"); nbt.remove("Controller"); nbt.remove("LastKnownPos"); if (nbt.contains("TankContent")) { - FluidStack fluid = FluidStack.parseOptional(minecraftserver.registryAccess(), nbt.getCompound("TankContent")); + FluidStack fluid = com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.parseOptional(minecraftserver.registryAccess(), nbt.getCompoundOrEmpty("TankContent")); if (!fluid.isEmpty()) { fluid.setAmount(Math.min(FluidTankBlockEntity.getCapacityMultiplier(), fluid.getAmount())); - nbt.put("TankContent", fluid.saveOptional(minecraftserver.registryAccess())); + nbt.put("TankContent", com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.saveOptional(fluid, minecraftserver.registryAccess())); } } - BlockEntity.addEntityType(nbt, ((IBE) this.getBlock()).getBlockEntityType()); - itemStack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(nbt)); + LegacyBlockEntityDataComponentBridge.set(itemStack, ((IBE) this.getBlock()).getBlockEntityType(), nbt); } return super.updateCustomBlockEntityTag(blockPos, level, player, itemStack, blockState); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankModel.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankModel.java index 9d9a0fec72..45b3164594 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankModel.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankModel.java @@ -10,18 +10,18 @@ import com.simibubi.create.foundation.block.connected.CTModel; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; public class FluidTankModel extends CTModel { diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankMovementBehavior.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankMovementBehavior.java index 93cecc5f9b..55e95b644c 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankMovementBehavior.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankMovementBehavior.java @@ -14,7 +14,7 @@ public boolean mustTickWhileDisabled() { @Override public void tick(MovementContext context) { - if (context.world.isClientSide) { + if (context.world.isClientSide()) { BlockEntity be = context.contraption.getBlockEntityClientSide(context.localPos); if (be instanceof FluidTankBlockEntity tank) { tank.getFluidLevel().tickChaser(); diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankRenderer.java b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankRenderer.java index 37c2e4f461..59fa4165e8 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankRenderer.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/FluidTankRenderer.java @@ -6,12 +6,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.platform.NeoForgeCatnipServices; -import net.createmod.catnip.render.CachedBuffers; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.platform.NeoForgeCatnipServices; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -82,7 +82,7 @@ protected void renderSafe(FluidTankBlockEntity be, float partialTicks, PoseStack protected void renderAsBoiler(FluidTankBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { BlockState blockState = be.getBlockState(); - VertexConsumer vb = buffer.getBuffer(RenderType.cutout()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutout()); ms.pushPose(); var msr = TransformStack.of(ms); msr.translate(be.width / 2f, 0.5, be.width / 2f); @@ -117,7 +117,6 @@ protected void renderAsBoiler(FluidTankBlockEntity be, float partialTicks, PoseS ms.popPose(); } - @Override public boolean shouldRenderOffScreen(FluidTankBlockEntity be) { return be.isController(); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/SoundPool.java b/src/main/java/com/simibubi/create/content/fluids/tank/SoundPool.java index 1a37870d36..50abdfcf35 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/SoundPool.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/SoundPool.java @@ -86,7 +86,7 @@ public void play(Level level) { } private void rollNextPosition(Level level) { - int index = level.random.nextInt(queuedPositions.size()); + int index = level.getRandom().nextInt(queuedPositions.size()); long pos = queuedPositions.removeLong(index); playAt(level, pos); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/storage/FluidTankMountedStorage.java b/src/main/java/com/simibubi/create/content/fluids/tank/storage/FluidTankMountedStorage.java index 7cec57a333..35fa1fb417 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/storage/FluidTankMountedStorage.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/storage/FluidTankMountedStorage.java @@ -12,7 +12,7 @@ import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import com.simibubi.create.content.fluids.tank.storage.FluidTankMountedStorage.Handler; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -90,8 +90,8 @@ public static FluidTankMountedStorage fromTank(FluidTankBlockEntity tank) { } public static FluidTankMountedStorage fromLegacy(HolderLookup.Provider registries, CompoundTag nbt) { - int capacity = nbt.getInt("Capacity"); - FluidStack fluid = FluidStack.parseOptional(registries, nbt); + int capacity = nbt.getIntOr("Capacity", 0); + FluidStack fluid = com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.parseOptional(registries, nbt); return new FluidTankMountedStorage(capacity, fluid); } diff --git a/src/main/java/com/simibubi/create/content/fluids/tank/storage/creative/CreativeFluidTankMountedStorage.java b/src/main/java/com/simibubi/create/content/fluids/tank/storage/creative/CreativeFluidTankMountedStorage.java index 12df55f218..7491bea52a 100644 --- a/src/main/java/com/simibubi/create/content/fluids/tank/storage/creative/CreativeFluidTankMountedStorage.java +++ b/src/main/java/com/simibubi/create/content/fluids/tank/storage/creative/CreativeFluidTankMountedStorage.java @@ -46,8 +46,8 @@ public static CreativeFluidTankMountedStorage fromTank(CreativeFluidTankBlockEnt } public static CreativeFluidTankMountedStorage fromLegacy(HolderLookup.Provider registries, CompoundTag nbt) { - int capacity = nbt.getInt("Capacity"); - FluidStack fluid = FluidStack.parseOptional(registries, nbt.getCompound("ProvidedStack")); + int capacity = nbt.getIntOr("Capacity", 0); + FluidStack fluid = com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.parseOptional(registries, nbt.getCompoundOrEmpty("ProvidedStack")); CreativeSmartFluidTank tank = new CreativeSmartFluidTank(capacity, $ -> {}); tank.setContainedFluid(fluid); return new CreativeFluidTankMountedStorage(tank); diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/EmptyingRecipe.java b/src/main/java/com/simibubi/create/content/fluids/transfer/EmptyingRecipe.java index e07facad40..a469d7c09b 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/EmptyingRecipe.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/EmptyingRecipe.java @@ -38,7 +38,8 @@ protected int getMaxFluidOutputCount() { public FluidStack getResultingFluid() { if (fluidResults.isEmpty()) throw new IllegalStateException("Emptying Recipe has no fluid output!"); - return fluidResults.get(0); + return fluidResults.get(0) + .getStack(); } } diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FillingRecipe.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FillingRecipe.java index 7d8b0b27be..d1fd590146 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FillingRecipe.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FillingRecipe.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.fluids.transfer; -import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.function.Supplier; @@ -11,6 +10,7 @@ import com.simibubi.create.content.processing.recipe.ProcessingRecipeParams; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; import com.simibubi.create.content.processing.sequenced.IAssemblyRecipe; +import com.simibubi.create.foundation.fluid.LegacyFluidIngredientBridge; import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.network.chat.Component; @@ -20,7 +20,6 @@ import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; @@ -66,10 +65,8 @@ public void addAssemblyFluidIngredients(List list) { } @Override - @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { - List matchingFluidStacks = Arrays.asList(fluidIngredients.get(0) - .getFluids()); + List matchingFluidStacks = LegacyFluidIngredientBridge.getFluids(fluidIngredients.get(0)); if (matchingFluidStacks.size() == 0) { return Component.literal("Invalid"); } diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidDrainingBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidDrainingBehaviour.java index 1541bd45af..ab2b865f6b 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidDrainingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidDrainingBehaviour.java @@ -15,8 +15,8 @@ import it.unimi.dsi.fastutil.PriorityQueue; import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BBHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BBHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidFillingBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidFillingBehaviour.java index 99afb9cac0..2b1a3e788c 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidFillingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidFillingBehaviour.java @@ -14,14 +14,15 @@ import it.unimi.dsi.fastutil.PriorityQueue; import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BBHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BBHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; import net.minecraft.tags.FluidTags; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -134,8 +135,8 @@ public boolean tryDeposit(Fluid fluid, BlockPos root, boolean simulate) { int maxRange = maxRange(); int maxRangeSq = maxRange * maxRange; int maxBlocks = maxBlocks(); - boolean evaporate = world.dimensionType() - .ultraWarm() && FluidHelper.isTag(fluid, FluidTags.WATER); + boolean evaporate = world.environmentAttributes() + .getValue(EnvironmentAttributes.WATER_EVAPORATES, root) && FluidHelper.isTag(fluid, FluidTags.WATER); boolean canPlaceSources = AllConfigs.server().fluids.fluidFillPlaceFluidSourceBlocks.get(); if ((!fillInfinite() && infinite) || evaporate || !canPlaceSources) { @@ -152,7 +153,7 @@ public boolean tryDeposit(Fluid fluid, BlockPos root, boolean simulate) { int j = root.getY(); int k = root.getZ(); world.playSound(null, i, j, k, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, - 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); + 2.6F + (world.getRandom().nextFloat() - world.getRandom().nextFloat()) * 0.8F); } else if (!canPlaceSources) blockEntity.award(AllAdvancements.HOSE_PULLEY); return true; diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java index 6e420ba23f..a57dd87d61 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidManipulationBehaviour.java @@ -15,10 +15,10 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -229,12 +229,12 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli if (infinite) NBTHelper.putMarker(nbt, "Infinite"); if (rootPos != null) - nbt.put("LastPos", NbtUtils.writeBlockPos(rootPos)); + nbt.put("LastPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(rootPos)); if (affectedArea != null) { nbt.put("AffectedAreaFrom", - NbtUtils.writeBlockPos(new BlockPos(affectedArea.minX(), affectedArea.minY(), affectedArea.minZ()))); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(new BlockPos(affectedArea.minX(), affectedArea.minY(), affectedArea.minZ()))); nbt.put("AffectedAreaTo", - NbtUtils.writeBlockPos(new BlockPos(affectedArea.maxX(), affectedArea.maxY(), affectedArea.maxZ()))); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(new BlockPos(affectedArea.maxX(), affectedArea.maxY(), affectedArea.maxZ()))); } super.write(nbt, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidSplashPacket.java b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidSplashPacket.java index d3601fd4f5..36ee3fd80d 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/FluidSplashPacket.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/FluidSplashPacket.java @@ -4,13 +4,12 @@ import com.simibubi.create.content.fluids.FluidFX; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; public record FluidSplashPacket(BlockPos pos, FluidStack fluid) implements ClientboundPacketPayload { @@ -21,8 +20,7 @@ public record FluidSplashPacket(BlockPos pos, FluidStack fluid) implements Clien ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (player.position().distanceTo(new Vec3(pos.getX(), pos.getY(), pos.getZ())) > 100) return; FluidFX.splash(pos, fluid); diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java index 2874439779..8f630fa559 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemEmptying.java @@ -5,15 +5,15 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.fluids.potion.PotionFluidHandler; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.level.Level; -import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; @@ -28,7 +28,7 @@ public static boolean canItemBeEmptied(Level world, ItemStack stack) { .isPresent()) return true; - IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack); if (capability == null) return false; for (int i = 0; i < capability.getTanks(); i++) { @@ -49,7 +49,7 @@ public static Pair emptyItem(Level level, ItemStack stack Optional>> recipe = AllRecipeTypes.EMPTYING.find(new SingleRecipeInput(stack), level); if (recipe.isPresent()) { EmptyingRecipe emptyingRecipe = (EmptyingRecipe) recipe.get().value(); - List results = emptyingRecipe.rollResults(level.random); + List results = emptyingRecipe.rollResults(level.getRandom()); if (!simulate) stack.shrink(1); resultingItem = results.isEmpty() ? ItemStack.EMPTY : results.get(0); @@ -59,7 +59,7 @@ public static Pair emptyItem(Level level, ItemStack stack ItemStack split = stack.copy(); split.setCount(1); - IFluidHandlerItem capability = split.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(split); if (capability == null) return Pair.of(resultingFluid, resultingItem); resultingFluid = capability.drain(1000, simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE); diff --git a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemFilling.java b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemFilling.java index c22a0f20d4..4e221e4060 100644 --- a/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemFilling.java +++ b/src/main/java/com/simibubi/create/content/fluids/transfer/GenericItemFilling.java @@ -4,18 +4,17 @@ import com.simibubi.create.AllItems; import com.simibubi.create.content.fluids.potion.PotionFluidHandler; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.MilkBucketItem; import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.item.alchemy.Potions; import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; -import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; @@ -43,7 +42,7 @@ public static boolean isFluidHandlerValid(ItemStack stack, IFluidHandlerItem flu if (fluidHandler.getClass() == FluidBucketWrapper.class) { Item item = stack.getItem(); // Forge does not patch the FluidBucketWrapper onto subclasses of BucketItem - if (item.getClass() != BucketItem.class && !(item instanceof MilkBucketItem)) { + if (item.getClass() != BucketItem.class && item != Items.MILK_BUCKET) { return false; } } @@ -56,7 +55,7 @@ public static boolean canItemBeFilled(Level world, ItemStack stack) { if (stack.getItem() == Items.MILK_BUCKET) return false; - IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack); if (capability == null) return false; if (!isFluidHandlerValid(stack, capability)) @@ -75,7 +74,7 @@ public static int getRequiredAmountForItem(Level world, ItemStack stack, FluidSt if (stack.getItem() == Items.BUCKET && canFillBucketInternally(availableFluid)) return 1000; - IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack); if (capability == null) return -1; if (capability instanceof FluidBucketWrapper) { @@ -128,7 +127,7 @@ else if (fluid.isSame(AllFluids.TEA.get())) ItemStack split = stack.copy(); split.setCount(1); - IFluidHandlerItem capability = split.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(split); if (capability == null) return ItemStack.EMPTY; capability.fill(toFill, FluidAction.EXECUTE); diff --git a/src/main/java/com/simibubi/create/content/kinetics/KineticDebugger.java b/src/main/java/com/simibubi/create/content/kinetics/KineticDebugger.java index a5747321a3..4e8d4ea0e6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/KineticDebugger.java +++ b/src/main/java/com/simibubi/create/content/kinetics/KineticDebugger.java @@ -4,10 +4,10 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.render.SuperByteBufferCache; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; @@ -53,7 +53,7 @@ public static void tick() { if (state.getBlock() instanceof IRotate) { Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); Vec3 vec = Vec3.atLowerCornerOf(Direction.get(AxisDirection.POSITIVE, axis) - .getNormal()); + .getUnitVec3i()); Vec3 center = VecHelper.getCenterOf(be.getBlockPos()); Outliner.getInstance().showLine("rotationAxis", center.add(vec), center.subtract(vec)) .lineWidth(1 / 16f); diff --git a/src/main/java/com/simibubi/create/content/kinetics/RotationPropagator.java b/src/main/java/com/simibubi/create/content/kinetics/RotationPropagator.java index c02ea8cfeb..6a02b27423 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/RotationPropagator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/RotationPropagator.java @@ -17,8 +17,9 @@ import com.simibubi.create.content.kinetics.speedController.SpeedControllerBlockEntity; import com.simibubi.create.content.kinetics.transmission.SplitShaftBlockEntity; import com.simibubi.create.infrastructure.config.AllConfigs; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -52,7 +53,7 @@ private static float getRotationSpeedModifier(KineticBlockEntity from, KineticBl final BlockPos diff = to.getBlockPos() .subtract(from.getBlockPos()); - final Direction direction = Direction.getNearest(diff.getX(), diff.getY(), diff.getZ()); + final Direction direction = LegacyDirectionBridge.nearest(diff.getX(), diff.getY(), diff.getZ(), Direction.NORTH); final Level world = from.getLevel(); boolean alignedAxes = true; @@ -204,7 +205,7 @@ private static boolean isLargeCogToSpeedController(BlockState from, BlockState t * @param pos */ public static void handleAdded(Level worldIn, BlockPos pos, KineticBlockEntity addedTE) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; if (!worldIn.isLoaded(pos)) return; @@ -307,7 +308,7 @@ private static void propagateNewSource(KineticBlockEntity currentTE) { * @param removedBE */ public static void handleRemoved(Level worldIn, BlockPos pos, KineticBlockEntity removedBE) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; if (removedBE == null) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/TorquePropagator.java b/src/main/java/com/simibubi/create/content/kinetics/TorquePropagator.java index bd4dbaf69b..62a93f1999 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/TorquePropagator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/TorquePropagator.java @@ -6,7 +6,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import net.createmod.catnip.levelWrappers.WorldHelper; +import net.createmod.catnip.api.level.WorldHelper; import net.minecraft.world.level.LevelAccessor; public class TorquePropagator { diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/AbstractEncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/AbstractEncasedShaftBlock.java index 0a2cf06b1a..8e0f0738ed 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/AbstractEncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/AbstractEncasedShaftBlock.java @@ -2,7 +2,6 @@ import org.jetbrains.annotations.Nullable; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; @@ -13,7 +12,6 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.material.PushReaction; -@MethodsReturnNonnullByDefault public abstract class AbstractEncasedShaftBlock extends RotatedPillarKineticBlock { public AbstractEncasedShaftBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingKineticBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingKineticBlockEntity.java index c36b29c604..be3964d86c 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingKineticBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingKineticBlockEntity.java @@ -5,8 +5,8 @@ import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -14,7 +14,8 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.level.GameRules; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.block.AirBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -61,14 +62,14 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putInt("Progress", destroyProgress); compound.putInt("NextTick", ticksUntilNextProgress); if (breakingPos != null) - compound.put("Breaking", NbtUtils.writeBlockPos(breakingPos)); + compound.put("Breaking", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(breakingPos)); super.write(compound, registries, clientPacket); } @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - destroyProgress = compound.getInt("Progress"); - ticksUntilNextProgress = compound.getInt("NextTick"); + destroyProgress = compound.getIntOr("Progress", 0); + ticksUntilNextProgress = compound.getIntOr("NextTick", 0); breakingPos = null; if (compound.contains("Breaking")) breakingPos = NBTHelper.readBlockPos(compound, "Breaking"); @@ -78,7 +79,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool @Override public void invalidate() { super.invalidate(); - if (!level.isClientSide && destroyProgress != 0) + if (!level.isClientSide() && destroyProgress != 0) level.destroyBlockProgress(breakerId, breakingPos, -1); } @@ -86,7 +87,7 @@ public void invalidate() { public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (!shouldRun()) return; @@ -137,12 +138,12 @@ public static boolean isBreakable(BlockState stateToBreak, float blockHardness) } public void onBlockBroken(BlockState stateToBreak) { - Vec3 vec = VecHelper.offsetRandomly(VecHelper.getCenterOf(breakingPos), level.random, .125f); + Vec3 vec = VecHelper.offsetRandomly(VecHelper.getCenterOf(breakingPos), level.getRandom(), .125f); BlockHelper.destroyBlock(level, breakingPos, 1f, (stack) -> { if (stack.isEmpty()) return; - if (!level.getGameRules() - .getBoolean(GameRules.RULE_DOBLOCKDROPS)) + if (level instanceof ServerLevel serverLevel && !serverLevel.getGameRules() + .get(GameRules.BLOCK_DROPS)) return; if (level.restoringBlockSnapshots) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingMovementBehaviour.java index b5c2c85af6..1262becd90 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/BlockBreakingMovementBehaviour.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.trains.entity.CarriageContraption; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; @@ -18,7 +18,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.FallingBlock; import net.minecraft.world.level.block.state.BlockState; @@ -29,7 +29,7 @@ public class BlockBreakingMovementBehaviour implements MovementBehaviour { @Override public void startMoving(MovementContext context) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; context.data.putInt("BreakerId", -BlockBreakingKineticBlockEntity.NEXT_BREAKER_ID.incrementAndGet()); } @@ -41,12 +41,12 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { if (!stateVisited.isRedstoneConductor(world, pos)) damageEntities(context, pos, world); - if (world.isClientSide) + if (world.isClientSide()) return; if (!canBreak(world, pos, stateVisited)) return; - context.data.put("BreakingPos", NbtUtils.writeBlockPos(pos)); + context.data.put("BreakingPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); context.stall = true; } @@ -69,11 +69,11 @@ public void damageEntities(MovementContext context, BlockPos pos, Level world) { && ((AbstractContraptionEntity) passenger).getContraption() == context.contraption) continue Entities; - if (damageSource != null && !world.isClientSide) { + if (damageSource != null && !world.isClientSide()) { float damage = (float) Mth.clamp(6 * Math.pow(context.relativeMotion.length(), 0.4) + 1, 2, 10); entity.hurt(damageSource, damage); } - if (throwsEntities(world) && (world.isClientSide == (entity instanceof Player))) + if (throwsEntities(world) && (world.isClientSide() == (entity instanceof Player))) throwEntity(context, entity); } } @@ -101,13 +101,13 @@ protected boolean throwsEntities(Level level) { @Override public void cancelStall(MovementContext context) { CompoundTag data = context.data; - if (context.world.isClientSide) + if (context.world.isClientSide()) return; if (!data.contains("BreakingPos")) return; Level world = context.world; - int id = data.getInt("BreakerId"); + int id = data.getIntOr("BreakerId", 0); BlockPos breakingPos = NBTHelper.readBlockPos(data, "BreakingPos"); data.remove("Progress"); @@ -131,7 +131,7 @@ public void tick(MovementContext context) { if (!data.contains("WaitingTicks")) return; - int waitingTicks = data.getInt("WaitingTicks"); + int waitingTicks = data.getIntOr("WaitingTicks", 0); if (waitingTicks-- > 0) { data.putInt("WaitingTicks", waitingTicks); context.stall = true; @@ -147,7 +147,7 @@ public void tick(MovementContext context) { public void tickBreaker(MovementContext context) { CompoundTag data = context.data; - if (context.world.isClientSide) + if (context.world.isClientSide()) return; if (!data.contains("BreakingPos")) { context.stall = false; @@ -158,7 +158,7 @@ public void tickBreaker(MovementContext context) { return; } - int ticksUntilNextProgress = data.getInt("TicksUntilNextProgress"); + int ticksUntilNextProgress = data.getIntOr("TicksUntilNextProgress", 0); if (ticksUntilNextProgress-- > 0) { data.putInt("TicksUntilNextProgress", ticksUntilNextProgress); return; @@ -166,8 +166,8 @@ public void tickBreaker(MovementContext context) { Level world = context.world; BlockPos breakingPos = NBTHelper.readBlockPos(data, "BreakingPos"); - int destroyProgress = data.getInt("Progress"); - int id = data.getInt("BreakerId"); + int destroyProgress = data.getIntOr("Progress", 0); + int id = data.getIntOr("BreakerId", 0); BlockState stateToBreak = world.getBlockState(breakingPos); float blockHardness = stateToBreak.getDestroySpeed(world, breakingPos); @@ -246,7 +246,7 @@ protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState b CompoundTag data = context.data; data.putInt("WaitingTicks", 10); - data.put("LastPos", NbtUtils.writeBlockPos(pos)); + data.put("LastPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); context.stall = true; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java index 92c8a065e4..2944537e7a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalAxisKineticBlock.java @@ -3,7 +3,7 @@ import com.simibubi.create.api.contraption.transformable.TransformableBlock; import com.simibubi.create.content.contraptions.StructureTransform; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalKineticBlock.java index 6ff6962bf4..5926bc3e70 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalKineticBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.base; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -9,11 +9,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; public abstract class DirectionalKineticBlock extends KineticBlock { - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; public DirectionalKineticBlock(Properties properties) { super(properties); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalShaftHalvesBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalShaftHalvesBlockEntity.java index aa67359878..6a8ce34f14 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalShaftHalvesBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/DirectionalShaftHalvesBlockEntity.java @@ -1,5 +1,7 @@ package com.simibubi.create.content.kinetics.base; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; + import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -13,7 +15,7 @@ public DirectionalShaftHalvesBlockEntity(BlockEntityType type, BlockPos pos, public Direction getSourceFacing() { BlockPos localSource = source.subtract(getBlockPos()); - return Direction.getNearest(localSource.getX(), localSource.getY(), localSource.getZ()); + return LegacyDirectionBridge.nearest(localSource.getX(), localSource.getY(), localSource.getZ(), Direction.NORTH); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/GeneratingKineticBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/base/GeneratingKineticBlockEntity.java index e3c5e67db3..030b60c292 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/GeneratingKineticBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/GeneratingKineticBlockEntity.java @@ -90,7 +90,7 @@ public void updateGeneratedRotation() { float speed = getGeneratedSpeed(); float prevSpeed = this.speed; - if (level == null || level.isClientSide) + if (level == null || level.isClientSide()) return; if (prevSpeed != speed) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalAxisKineticBlock.java index 827615518f..c7c565dc9a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalAxisKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalAxisKineticBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.base; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalKineticBlock.java index cfbc1bd4df..fdbd40c8a0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/HorizontalKineticBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.base; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/IRotate.java b/src/main/java/com/simibubi/create/content/kinetics/base/IRotate.java index 1275ec7f35..f2589a1ac4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/IRotate.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/IRotate.java @@ -5,8 +5,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.lang.LangBuilder; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlock.java index d92c48f1db..22999897e4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlock.java @@ -11,8 +11,10 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.server.level.ServerLevel; public abstract class KineticBlock extends Block implements IRotate { @@ -43,8 +45,9 @@ public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState ol } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); } @Override @@ -80,7 +83,7 @@ public void updateIndirectNeighbourShapes(BlockState stateIn, LevelAccessor worl @Override public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { AdvancementBehaviour.setPlacedBy(worldIn, pos, placer); - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; BlockEntity blockEntity = worldIn.getBlockEntity(pos); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntity.java index 6e9a6e5eda..6eee06baa5 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntity.java @@ -29,9 +29,9 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.lang.FontHelper.Palette; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; @@ -51,7 +51,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class KineticBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation, IHaveHoveringInformation { @@ -84,7 +83,7 @@ public KineticBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState st @Override public void initialize() { - if (hasNetwork() && !level.isClientSide) { + if (hasNetwork() && !level.isClientSide()) { KineticNetwork network = getOrCreateNetwork(); if (!network.initialized) network.initFromTE(capacity, stress, networkSize); @@ -96,7 +95,7 @@ public void initialize() { @Override public void tick() { - if (!level.isClientSide && needsSpeedUpdate()) + if (!level.isClientSide() && needsSpeedUpdate()) attachKinetics(); super.tick(); @@ -104,7 +103,7 @@ public void tick() { preventSpeedUpdate = 0; - if (level.isClientSide) { + if (level.isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> this.tickAudio()); return; } @@ -198,7 +197,7 @@ public void onSpeedChanged(float previousSpeed) { @Override public void remove() { - if (!level.isClientSide) { + if (!level.isClientSide()) { if (hasNetwork()) getOrCreateNetwork().remove(this); detachKinetics(); @@ -216,7 +215,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo compound.putBoolean("NeedsSpeedUpdate", true); if (hasSource()) - compound.put("Source", NbtUtils.writeBlockPos(source)); + compound.put("Source", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(source)); if (hasNetwork()) { CompoundTag networkTag = new CompoundTag(); @@ -251,21 +250,21 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool return; } - speed = compound.getFloat("Speed"); - sequenceContext = SequenceContext.fromNBT(compound.getCompound("Sequence")); + speed = compound.getFloatOr("Speed", 0); + sequenceContext = SequenceContext.fromNBT(compound.getCompoundOrEmpty("Sequence")); source = null; if (compound.contains("Source")) source = NBTHelper.readBlockPos(compound, "Source"); if (compound.contains("Network")) { - CompoundTag networkTag = compound.getCompound("Network"); - network = networkTag.getLong("Id"); - stress = networkTag.getFloat("Stress"); - capacity = networkTag.getFloat("Capacity"); - networkSize = networkTag.getInt("Size"); - lastStressApplied = networkTag.getFloat("AddedStress"); - lastCapacityProvided = networkTag.getFloat("AddedCapacity"); + CompoundTag networkTag = compound.getCompoundOrEmpty("Network"); + network = networkTag.getLongOr("Id", 0); + stress = networkTag.getFloatOr("Stress", 0); + capacity = networkTag.getFloatOr("Capacity", 0); + networkSize = networkTag.getIntOr("Size", 0); + lastStressApplied = networkTag.getFloatOr("AddedStress", 0); + lastCapacityProvided = networkTag.getFloatOr("AddedCapacity", 0); overStressed = capacity < stress && StressImpact.isEnabled(); } @@ -306,7 +305,7 @@ public boolean hasSource() { public void setSource(BlockPos source) { this.source = source; - if (level == null || level.isClientSide) + if (level == null || level.isClientSide()) return; BlockEntity blockEntity = level.getBlockEntity(source); @@ -379,7 +378,7 @@ public boolean isSpeedRequirementFulfilled() { } public static void switchToBlockState(Level world, BlockPos pos, BlockState state) { - if (world.isClientSide) + if (world.isClientSide()) return; BlockEntity blockEntity = world.getBlockEntity(pos); @@ -596,7 +595,6 @@ public void requestModelDataUpdate() { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> VisualizationHelper.queueUpdate(this)); } - @OnlyIn(Dist.CLIENT) public void tickAudio() { float componentSpeed = Math.abs(getSpeed()); if (componentSpeed == 0) diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityRenderer.java index e305c7a59a..d4f873bd6a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityRenderer.java @@ -1,24 +1,25 @@ package com.simibubi.create.content.kinetics.base; -import org.apache.commons.lang3.ArrayUtils; +import java.util.Set; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.kinetics.KineticDebugger; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; +import com.simibubi.create.foundation.render.LegacyRenderTypes; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.render.SuperByteBufferCache; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -27,19 +28,18 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.neoforged.neoforge.client.ChunkRenderTypeSet; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class KineticBlockEntityRenderer extends SafeBlockEntityRenderer { public static final SuperByteBufferCache.Compartment KINETIC_BLOCK = new SuperByteBufferCache.Compartment<>(); public static boolean rainbowMode = false; - protected static final RenderType[] REVERSED_CHUNK_BUFFER_LAYERS = RenderType.chunkBufferLayers().toArray(RenderType[]::new); - - static { - ArrayUtils.reverse(REVERSED_CHUNK_BUFFER_LAYERS); - } + protected static final RenderType[] REVERSED_CHUNK_BUFFER_LAYERS = new RenderType[] { + LegacyRenderTypes.translucent(), + LegacyRenderTypes.cutoutMipped(), + LegacyRenderTypes.solid() + }; public KineticBlockEntityRenderer(BlockEntityRendererProvider.Context context) { } @@ -60,13 +60,12 @@ protected BlockState getRenderedBlockState(T be) { protected RenderType getRenderType(T be, BlockState state) { // TODO: this is not very clean - BakedModel model = Minecraft.getInstance() - .getBlockRenderer().getBlockModel(state); - ChunkRenderTypeSet typeSet = model.getRenderTypes(state, RandomSource.create(42L), ModelData.EMPTY); + BakedModel model = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer().getBlockModel(state); + Set typeSet = model.getRenderTypes(state, RandomSource.create(42L), ModelData.EMPTY); for (RenderType type : REVERSED_CHUNK_BUFFER_LAYERS) if (typeSet.contains(type)) return type; - return RenderType.cutoutMipped(); + return LegacyRenderTypes.cutoutMipped(); } protected SuperByteBuffer getRotatedModel(T be, BlockState state) { @@ -85,7 +84,7 @@ public static void renderRotatingBuffer(KineticBlockEntity be, SuperByteBuffer s } public static float getAngleForBe(KineticBlockEntity be, final BlockPos pos, Axis axis) { - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); float offset = getRotationOffsetForPosition(be, pos, axis); float angle = ((time * be.getSpeed() * 3f / 10 + offset) % 360) / 180 * (float) Math.PI; return angle; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityVisual.java b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityVisual.java index 20fea7fa13..dcc4f77c38 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/KineticBlockEntityVisual.java @@ -4,7 +4,7 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/KineticEffectHandler.java b/src/main/java/com/simibubi/create/content/kinetics/base/KineticEffectHandler.java index a23ba15e3f..0b078d7492 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/KineticEffectHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/KineticEffectHandler.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.kinetics.base.IRotate.SpeedLevel; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleOptions; @@ -28,7 +28,7 @@ public KineticEffectHandler(KineticBlockEntity kte) { public void tick() { Level world = kte.getLevel(); - if (world.isClientSide) { + if (world.isClientSide()) { if (overStressedTime > 0) if (--overStressedTime == 0) if (kte.isOverStressed()) { @@ -59,9 +59,9 @@ public void spawnEffect(ParticleOptions particle, float maxMotion, int amount) { Level world = kte.getLevel(); if (world == null) return; - if (!world.isClientSide) + if (!world.isClientSide()) return; - RandomSource r = world.random; + RandomSource r = world.getRandom(); for (int i = 0; i < amount; i++) { Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, r, maxMotion); Vec3 position = VecHelper.getCenterOf(kte.getBlockPos()); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/RotatedPillarKineticBlock.java b/src/main/java/com/simibubi/create/content/kinetics/base/RotatedPillarKineticBlock.java index f56a793d85..2bbb671e4a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/RotatedPillarKineticBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/RotatedPillarKineticBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.base; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.item.context.BlockPlaceContext; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/RotatingInstance.java b/src/main/java/com/simibubi/create/content/kinetics/base/RotatingInstance.java index f71325bc10..eb6810c86b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/RotatingInstance.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/RotatingInstance.java @@ -6,7 +6,7 @@ import dev.engine_room.flywheel.api.instance.InstanceHandle; import dev.engine_room.flywheel.api.instance.InstanceType; import dev.engine_room.flywheel.lib.instance.ColoredLitOverlayInstance; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticle.java b/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticle.java index 66eeaad9d6..9450cdcd13 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticle.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticle.java @@ -3,9 +3,9 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.content.equipment.goggles.GogglesItem; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -15,6 +15,7 @@ import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.phys.Vec3; public class RotationIndicatorParticle extends SimpleAnimatedParticle { @@ -59,15 +60,8 @@ public void tick() { radius += (radius2 - radius) * .1f; } - @Override - public void render(VertexConsumer buffer, Camera renderInfo, float partialTicks) { - if (!isVisible) - return; - super.render(buffer, renderInfo, partialTicks); - } - public void move(double x, double y, double z) { - float time = AnimationTickHolder.getTicks(level); + float time = AnimationTickHolder.getTicks(); float angle = (float) ((time * speed) % 360) - (speed / 2 * age * (((float) age) / lifetime)); if (speed < 0 && axis.isVertical()) angle += 180; @@ -85,7 +79,7 @@ public Factory(SpriteSet animatedSprite) { } public Particle createParticle(RotationIndicatorParticleData data, ClientLevel worldIn, double x, double y, double z, - double xSpeed, double ySpeed, double zSpeed) { + double xSpeed, double ySpeed, double zSpeed, RandomSource random) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; boolean visible = worldIn != mc.level || player != null && GogglesItem.isWearingGoggles(player); diff --git a/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticleData.java b/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticleData.java index 8a24aaccf6..4a96f8eddc 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticleData.java +++ b/src/main/java/com/simibubi/create/content/kinetics/base/RotationIndicatorParticleData.java @@ -6,8 +6,7 @@ import com.simibubi.create.AllParticleTypes; import com.simibubi.create.foundation.particle.ICustomParticleDataWithSprite; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; -import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; @@ -16,7 +15,6 @@ import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class RotationIndicatorParticleData implements ParticleOptions, ICustomParticleDataWithSprite { @@ -85,11 +83,4 @@ public StreamCodec getCodec(ParticleType type) { return CODEC; } - - @Override - @OnlyIn(Dist.CLIENT) - public SpriteParticleRegistration getMetaFactory() { - return RotationIndicatorParticle.Factory::new; - } - } diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java index fface85127..7b4a173edd 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlock.java @@ -34,22 +34,27 @@ import com.simibubi.create.foundation.block.render.MultiPosDestructionHandler; import com.simibubi.create.foundation.block.render.ReducedDestroyEffects; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.RandomSource; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -60,6 +65,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LevelEvent; @@ -133,8 +139,7 @@ public Axis getRotationAxis(BlockState state) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllItems.BELT_CONNECTOR.asStack(); } @@ -163,25 +168,24 @@ public boolean isFlammable(BlockState state, BlockGetter world, BlockPos pos, Di } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level level, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(level, state, pos, entityIn, fallDistance); BlockPos entityPosition = entityIn.blockPosition(); BlockPos beltPos = null; - if (AllBlocks.BELT.has(worldIn.getBlockState(entityPosition))) + if (AllBlocks.BELT.has(level.getBlockState(entityPosition))) beltPos = entityPosition; - else if (AllBlocks.BELT.has(worldIn.getBlockState(entityPosition.below()))) + else if (AllBlocks.BELT.has(level.getBlockState(entityPosition.below()))) beltPos = entityPosition.below(); if (beltPos == null) return; - if (!(worldIn instanceof Level)) - return; - entityInside(worldIn.getBlockState(beltPos), (Level) worldIn, beltPos, entityIn); + entityInside(level.getBlockState(beltPos), level, beltPos, entityIn, InsideBlockEffectApplier.NOOP, false); } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (!canTransportObjects(state)) return; if (entityIn instanceof Player player) { @@ -199,7 +203,7 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e return; ItemStack asItem = ItemHelper.fromItemEntity(entityIn); if (!asItem.isEmpty()) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; if (entityIn.getDeltaMovement().y > 0) return; @@ -210,7 +214,7 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e if (BeltTunnelInteractionHandler.getTunnelOnPosition(worldIn, pos) != null) return; withBlockEntityDo(worldIn, pos, be -> { - IItemHandler handler = worldIn.getCapability(Capabilities.ItemHandler.BLOCK, pos, state, be, null); + IItemHandler handler = LegacyItemHandlerAdapter.of(worldIn.getCapability(Capabilities.Item.BLOCK, pos, state, be, null)); if (handler == null) return; ItemStack remainder = handler.insertItem(0, asItem, false); @@ -243,9 +247,9 @@ public static boolean canTransportObjects(BlockState state) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || !player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; boolean isWrench = AllItems.WRENCH.isIn(stack); boolean isConnector = AllItems.BELT_CONNECTOR.isIn(stack); boolean isShaft = AllBlocks.SHAFT.isIn(stack); @@ -258,7 +262,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (isDye || hasWater) return onBlockEntityUseItemOn(level, pos, - be -> be.applyColor(DyeColor.getColor(stack)) ? ItemInteractionResult.SUCCESS : ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION); + be -> be.applyColor(DyeColor.getColor(stack)) ? InteractionResult.SUCCESS : InteractionResult.TRY_WITH_EMPTY_HAND); if (isConnector) return BeltSlicer.useConnector(state, level, pos, player, hand, hitResult, new Feedback()); @@ -267,26 +271,26 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev BeltBlockEntity belt = BeltHelper.getSegmentBE(level, pos); if (belt == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (PackageItem.isPackage(stack)) { ItemStack toInsert = stack.copy(); - IItemHandler handler = level.getCapability(Capabilities.ItemHandler.BLOCK, belt.getBlockPos(), null); + IItemHandler handler = LegacyItemHandlerAdapter.of(level.getCapability(Capabilities.Item.BLOCK, belt.getBlockPos(), null)); if (handler == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ItemStack remainder = handler.insertItem(0, toInsert, false); if (remainder.isEmpty()) { stack.shrink(1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } if (isHand) { BeltBlockEntity controllerBelt = belt.getControllerBE(); if (controllerBelt == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; MutableBoolean success = new MutableBoolean(false); controllerBelt.getInventory() .applyToEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { @@ -297,18 +301,18 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev }); if (success.isTrue()) level.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, - 1f + level.random.nextFloat()); + 1f + level.getRandom().nextFloat()); } if (isShaft) { if (state.getValue(PART) != BeltPart.MIDDLE) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; if (!player.isCreative()) stack.shrink(1); KineticBlockEntity.switchToBlockState(level, pos, state.setValue(PART, BeltPart.PULLEY)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (AllBlocks.BRASS_CASING.isIn(stack)) { @@ -320,7 +324,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev level.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (AllBlocks.ANDESITE_CASING.isIn(stack)) { @@ -332,10 +336,10 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev level.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -345,14 +349,14 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { BlockPos pos = context.getClickedPos(); if (state.getValue(CASING)) { - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.NONE)); return InteractionResult.SUCCESS; } if (state.getValue(PART) == BeltPart.PULLEY) { - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; KineticBlockEntity.switchToBlockState(world, pos, state.setValue(PART, BeltPart.MIDDLE)); if (player != null && !player.isCreative()) @@ -407,11 +411,11 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, Block @Override public RenderShape getRenderShape(BlockState state) { - return state.getValue(CASING) ? RenderShape.MODEL : RenderShape.ENTITYBLOCK_ANIMATED; + return state.getValue(CASING) ? RenderShape.MODEL : RenderShape.MODEL; } public static void initBelt(Level world, BlockPos pos) { - if (world.isClientSide) + if (world.isClientSide()) return; if (world instanceof ServerLevel && ((ServerLevel) world).getChunkSource() .getGenerator() instanceof DebugLevelSource) @@ -470,12 +474,8 @@ public static void initBelt(Level world, BlockPos pos) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - super.onRemove(state, world, pos, newState, isMoving); - - if (world.isClientSide) - return; - if (state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (world.isClientSide()) return; if (isMoving) return; @@ -509,14 +509,13 @@ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState new } @Override - public BlockState updateShape(BlockState state, Direction side, BlockState p_196271_3_, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { - updateWater(world, state, pos); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction side, BlockPos p_196271_6_, BlockState p_196271_3_, RandomSource random) { + updateWater(ticks, world, state, pos); if (side.getAxis() - .isHorizontal()) - updateTunnelConnections(world, pos.above()); - if (side == Direction.UP) - updateCoverProperty(world, pos, state); + .isHorizontal() && world instanceof LevelAccessor accessor) + updateTunnelConnections(accessor, pos.above()); + if (side == Direction.UP && world instanceof LevelAccessor accessor) + updateCoverProperty(accessor, pos, state); return state; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java index a43ac92b7e..d6aba89799 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java @@ -29,7 +29,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.VersionedInventoryTrackerBehaviour; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -52,7 +52,7 @@ import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; import net.neoforged.neoforge.items.IItemHandler; public class BeltBlockEntity extends KineticBlockEntity implements Clearable { @@ -84,17 +84,7 @@ public BeltBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) } public static void registerCapabilities(RegisterCapabilitiesEvent event) { - event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, - AllBlockEntityTypes.BELT.get(), - (be, context) -> { - if (!BeltBlock.canTransportObjects(be.getBlockState())) - return null; - if (!be.isRemoved() && be.itemHandler == null) - be.initializeItemHandler(); - return be.itemHandler; - } - ); + // TODO 26.2: port belt automation from IItemHandler to NeoForge's ResourceHandler item capability. } @Override @@ -167,7 +157,7 @@ public AABB createRenderBoundingBox() { } protected void initializeItemHandler() { - if (level.isClientSide || itemHandler != null) + if (level.isClientSide() || itemHandler != null) return; if (beltLength == 0 || controller == null) return; @@ -206,7 +196,7 @@ public void invalidate() { @Override public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (controller != null) - compound.put("Controller", NbtUtils.writeBlockPos(controller)); + compound.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controller)); compound.putBoolean("IsController", isController()); compound.putInt("Length", beltLength); compound.putInt("Index", index); @@ -224,7 +214,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - if (compound.getBoolean("IsController")) + if (compound.getBooleanOr("IsController", false)) controller = worldPosition; color = compound.contains("Dye") ? Optional.of(NBTHelper.readEnum(compound, "Dye", DyeColor.class)) @@ -234,17 +224,17 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool if (!isController()) controller = NBTHelper.readBlockPos(compound, "Controller"); trackerUpdateTag = compound; - index = compound.getInt("Index"); - beltLength = compound.getInt("Length"); + index = compound.getIntOr("Index", 0); + beltLength = compound.getIntOr("Length", 0); } if (isController()) - getInventory().read(compound.getCompound("Inventory"), registries); + getInventory().read(compound.getCompoundOrEmpty("Inventory"), registries); CasingType casingBefore = casing; boolean coverBefore = covered; casing = NBTHelper.readEnum(compound, "Casing", CasingType.class); - covered = compound.getBoolean("Covered"); + covered = compound.getBooleanOr("Covered", false); if (!clientPacket) return; @@ -368,7 +358,7 @@ protected Vec3i getMovementDirection(boolean firstHalf, boolean ignoreHalves) { boolean notHorizontal = blockState.getValue(BeltBlock.SLOPE) != HORIZONTAL; if (getSpeed() < 0) movementFacing = movementFacing.getOpposite(); - Vec3i movement = movementFacing.getNormal(); + Vec3i movement = movementFacing.getUnitVec3i(); boolean slopeBeforeHalf = (part == BeltPart.END) == (beltFacing.getAxisDirection() == POSITIVE); boolean onSlope = notHorizontal && (part == MIDDLE || slopeBeforeHalf == firstHalf || ignoreHalves); @@ -426,7 +416,7 @@ public void setCasingType(CasingType type) { BlockState blockState = getBlockState(); boolean shouldBlockHaveCasing = type != CasingType.NONE; - if (level.isClientSide) { + if (level.isClientSide()) { casing = type; level.setBlock(worldPosition, blockState.setValue(BeltBlock.CASING, shouldBlockHaveCasing), 0); requestModelDataUpdate(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltGenerator.java index 6337e60f0a..8ff7efb5f1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltGenerator.java @@ -2,14 +2,14 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class BeltGenerator extends SpecialBlockStateGen { @@ -33,7 +33,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { Boolean casing = state.getValue(BeltBlock.CASING); @@ -69,7 +69,7 @@ public ModelFile getModel(DataGenContext ctx, Regist if (diagonal) slopeName = "diagonal"; - ResourceLocation location = prov.modLoc(path + slopeName + "_" + partName); + Identifier location = prov.modLoc(path + slopeName + "_" + partName); return prov.models() .getExistingFile(location); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java index 0d442eedbc..a78ad900ef 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java @@ -3,9 +3,10 @@ import java.util.Map; import com.simibubi.create.AllTags.AllItemTags; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; @@ -17,7 +18,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.capabilities.Capabilities; public class BeltHelper { @@ -28,7 +28,7 @@ public static boolean isItemUpright(ItemStack stack) { return uprightCache.computeIfAbsent( stack.getItem(), item -> { - boolean isFluidHandler = stack.getCapability(Capabilities.FluidHandler.ITEM) != null; + boolean isFluidHandler = LegacyFluidHandlerItemAdapter.of(stack) != null; boolean useUpright = AllItemTags.UPRIGHT_ON_BELT.matches(stack); boolean forceDisableUpright = !AllItemTags.NOT_UPRIGHT_ON_BELT.matches(stack); @@ -72,7 +72,7 @@ public static BeltBlockEntity getBeltAtSegment(BeltBlockEntity controller, int s public static BlockPos getPositionForOffset(BeltBlockEntity controller, int offset) { BlockPos pos = controller.getBlockPos(); Vec3i vec = controller.getBeltFacing() - .getNormal(); + .getUnitVec3i(); BeltSlope slope = controller.getBlockState() .getValue(BeltBlock.SLOPE); int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; @@ -91,7 +91,7 @@ public static Vec3 getVectorForOffset(BeltBlockEntity controller, float offset) verticalMovement = verticalMovement * (Math.min(offset, controller.beltLength - .5f) - .5f); Vec3 vec = VecHelper.getCenterOf(controller.getBlockPos()); Vec3 horizontalMovement = Vec3.atLowerCornerOf(controller.getBeltFacing() - .getNormal()) + .getUnitVec3i()) .scale(offset - .5f); if (slope == BeltSlope.VERTICAL) @@ -106,7 +106,7 @@ public static Vec3 getBeltVector(BlockState state) { BeltSlope slope = state.getValue(BeltBlock.SLOPE); int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; Vec3 horizontalMovement = Vec3.atLowerCornerOf(state.getValue(BeltBlock.HORIZONTAL_FACING) - .getNormal()); + .getUnitVec3i()); if (slope == BeltSlope.VERTICAL) return new Vec3(0, state.getValue(BeltBlock.HORIZONTAL_FACING) .getAxisDirection() diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltModel.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltModel.java index df1d5955d2..7b1d401962 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltModel.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltModel.java @@ -6,20 +6,20 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.content.kinetics.belt.BeltBlockEntity.CasingType; +import com.simibubi.create.foundation.model.BakedModelWrapper; import com.simibubi.create.foundation.model.BakedQuadHelper; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.BakedModelWrapper; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelProperty; public class BeltModel extends BakedModelWrapper { @@ -58,12 +58,7 @@ public List getQuads(BlockState state, Direction side, RandomSource r quads = new ArrayList<>(quads); if (cover) { - boolean alongX = state.getValue(BeltBlock.HORIZONTAL_FACING) - .getAxis() == Axis.X; - BakedModel coverModel = - (brassCasing ? alongX ? AllPartialModels.BRASS_BELT_COVER_X : AllPartialModels.BRASS_BELT_COVER_Z - : alongX ? AllPartialModels.ANDESITE_BELT_COVER_X : AllPartialModels.ANDESITE_BELT_COVER_Z).get(); - quads.addAll(coverModel.getQuads(state, side, rand, extraData, renderType)); + // TODO 26.2: Restore belt cover partial quads through the new BlockModel path. } if (brassCasing) diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltPart.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltPart.java index 370245ea12..cd7344bd23 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltPart.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltPart.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.belt; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.util.StringRepresentable; public enum BeltPart implements StringRepresentable { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java index 4766487301..6ac3d0562b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltRenderer.java @@ -19,21 +19,20 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.levelWrappers.WrappedLevel; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.ponder.api.level.PonderLevel; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.ponder.api.client.level.PonderLevel; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; @@ -48,7 +47,6 @@ public class BeltRenderer extends SafeBlockEntityRenderer { public BeltRenderer(BlockEntityRendererProvider.Context context) {} - @Override public boolean shouldRenderOffScreen(BeltBlockEntity be) { return be.isController(); } @@ -78,8 +76,8 @@ protected void renderSafe(BeltBlockEntity be, float partialTicks, PoseStack ms, PoseStack localTransforms = new PoseStack(); var msr = TransformStack.of(localTransforms); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); - float renderTick = AnimationTickHolder.getRenderTime(be.getLevel()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); + float renderTick = AnimationTickHolder.getRenderTime(); msr.center() .rotateYDegrees(AngleHelper.horizontalAngle(facing) + (upward ? 180 : 0) + (sideways ? 270 : 0)) @@ -202,7 +200,7 @@ protected void renderItems(BeltBlockEntity be, float partialTicks, PoseStack ms, ms.pushPose(); Direction beltFacing = be.getBeltFacing(); - Vec3i directionVec = beltFacing.getNormal(); + Vec3i directionVec = beltFacing.getUnitVec3i(); Vec3 beltStartOffset = Vec3.atLowerCornerOf(directionVec) .scale(-.5) .add(.5, 15 / 16f, .5); @@ -228,7 +226,7 @@ private void renderItem(BeltBlockEntity be, float partialTicks, PoseStack ms, Mu int overlay, Direction beltFacing, Vec3i directionVec, BeltSlope slope, int verticality, boolean slopeAlongX, boolean onContraption, TransportedItemStack transported, Vec3 beltStartOffset) { Minecraft mc = Minecraft.getInstance(); - ItemRenderer itemRenderer = mc.getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); MutableBlockPos mutablePos = new MutableBlockPos(); float offset = Mth.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); @@ -279,7 +277,7 @@ private void renderItem(BeltBlockEntity be, float partialTicks, PoseStack ms, Mu } else { int segment = (int) Math.floor(offset); mutablePos.set(be.getBlockPos()).move(directionVec.getX() * segment, verticality * segment, directionVec.getZ() * segment); - stackLight = LevelRenderer.getLightColor(be.getLevel(), mutablePos); + stackLight = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(be.getLevel(), mutablePos); } boolean renderUpright = BeltHelper.isItemUpright(transported.stack); @@ -310,7 +308,7 @@ private void renderItem(BeltBlockEntity be, float partialTicks, PoseStack ms, Mu } if (renderUpright) { - Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.mainCamera().position(); Vec3 vectorForOffset = BeltHelper.getVectorForOffset(be, offset); Vec3 diff = vectorForOffset.subtract(cameraPosition); float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltShapes.java index 44b1201c8d..8eeca715d3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltShapes.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltShapes.java @@ -7,7 +7,7 @@ import com.simibubi.create.AllShapes; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java index 854e09917f..2b5178efd7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java @@ -15,8 +15,8 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -27,7 +27,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; @@ -43,7 +43,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class BeltSlicer { @@ -54,20 +53,20 @@ public static class Feedback { ChatFormatting formatting = ChatFormatting.WHITE; } - public static ItemInteractionResult useWrench(BlockState state, Level world, BlockPos pos, Player player, + public static InteractionResult useWrench(BlockState state, Level world, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit, Feedback feedBack) { BeltBlockEntity controllerBE = BeltHelper.getControllerBE(world, pos); if (controllerBE == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (state.getValue(BeltBlock.CASING) && hit.getDirection() != Direction.UP) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (state.getValue(BeltBlock.PART) == BeltPart.PULLEY && hit.getDirection() .getAxis() != Axis.Y) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; int beltLength = controllerBE.beltLength; if (beltLength == 2) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; BlockPos beltVector = BlockPos.containing(BeltHelper.getBeltVector(state)); BeltPart part = state.getValue(BeltBlock.PART); @@ -76,8 +75,8 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo // Shorten from End if (hoveringEnd(state, hit)) { - if (world.isClientSide) - return ItemInteractionResult.SUCCESS; + if (world.isClientSide()) + return InteractionResult.SUCCESS; for (BlockPos blockPos : beltChain) { BeltBlockEntity belt = BeltHelper.getSegmentBE(world, blockPos); @@ -133,12 +132,12 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo } } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } BeltBlockEntity segmentBE = BeltHelper.getSegmentBE(world, pos); if (segmentBE == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; // Split in half int hitSegment = segmentBE.index; @@ -149,9 +148,9 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo BlockPos next = !towardPositive ? pos.subtract(beltVector) : pos.offset(beltVector); if (hitSegment == 0 || hitSegment == 1 && !towardPositive) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (hitSegment == controllerBE.beltLength - 1 || hitSegment == controllerBE.beltLength - 2 && towardPositive) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; // Look for shafts if (!creative) { @@ -176,7 +175,7 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo int count = itemstack.getCount(); if (AllItems.BELT_CONNECTOR.isIn(itemstack) && !beltFound) { - if (!world.isClientSide) + if (!world.isClientSide()) itemstack.shrink(1); beltFound = true; continue; @@ -184,7 +183,7 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo if (AllBlocks.SHAFT.isIn(itemstack)) { int taken = Math.min(count, requiredShafts - amountRetrieved); - if (!world.isClientSide) + if (!world.isClientSide()) if (taken == count) player.getInventory().setItem(i, ItemStack.EMPTY); else @@ -193,15 +192,15 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo } } - if (!world.isClientSide){ + if (!world.isClientSide()){ player.getInventory().placeItemBackInInventory(AllBlocks.SHAFT.asStack(amountRetrieved)); if (beltFound) player.getInventory().placeItemBackInInventory(AllItems.BELT_CONNECTOR.asStack()); } - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; } } - if (!world.isClientSide) { + if (!world.isClientSide()) { for (BlockPos blockPos : beltChain) { BeltBlockEntity belt = BeltHelper.getSegmentBE(world, blockPos); if (belt == null) @@ -238,18 +237,18 @@ public static ItemInteractionResult useWrench(BlockState state, Level world, Blo } } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - public static ItemInteractionResult useConnector(BlockState state, Level world, BlockPos pos, Player player, + public static InteractionResult useConnector(BlockState state, Level world, BlockPos pos, Player player, InteractionHand handIn, BlockHitResult hit, Feedback feedBack) { BeltBlockEntity controllerBE = BeltHelper.getControllerBE(world, pos); if (controllerBE == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; int beltLength = controllerBE.beltLength; if (beltLength == BeltConnectorItem.maxLength()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; BlockPos beltVector = BlockPos.containing(BeltHelper.getBeltVector(state)); BeltPart part = state.getValue(BeltBlock.PART); @@ -258,7 +257,7 @@ public static ItemInteractionResult useConnector(BlockState state, Level world, boolean creative = player.isCreative(); if (!hoveringEnd(state, hit)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; BlockPos next = part == BeltPart.START ? pos.subtract(beltVector) : pos.offset(beltVector); BeltBlockEntity mergedController = null; @@ -268,19 +267,19 @@ public static ItemInteractionResult useConnector(BlockState state, Level world, BlockState nextState = world.getBlockState(next); if (!nextState.canBeReplaced()) { if (!AllBlocks.BELT.has(nextState)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (!beltStatesCompatible(state, nextState)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; mergedController = BeltHelper.getControllerBE(world, next); if (mergedController == null) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (mergedController.beltLength + beltLength > BeltConnectorItem.maxLength()) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; mergedBeltLength = mergedController.beltLength; - if (!world.isClientSide) { + if (!world.isClientSide()) { boolean flipBelt = facing != nextState.getValue(BeltBlock.HORIZONTAL_FACING); Optional color = controllerBE.color; for (BlockPos blockPos : BeltBlock.getBeltChain(world, mergedController.getBlockPos())) { @@ -309,7 +308,7 @@ public static ItemInteractionResult useConnector(BlockState state, Level world, } } - if (!world.isClientSide) { + if (!world.isClientSide()) { for (BlockPos blockPos : beltChain) { BeltBlockEntity belt = BeltHelper.getSegmentBE(world, blockPos); if (belt == null) @@ -403,7 +402,7 @@ public static ItemInteractionResult useConnector(BlockState state, Level world, } } } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } static boolean beltStatesCompatible(BlockState state, BlockState nextState) { @@ -457,7 +456,6 @@ static boolean hoveringEnd(BlockState state, BlockHitResult hit) { return subtract.dot(beltVector) > 0 == (part == BeltPart.END); } - @OnlyIn(Dist.CLIENT) public static void tickHoveringInformation() { Minecraft mc = Minecraft.getInstance(); HitResult target = mc.hitResult; @@ -486,10 +484,10 @@ else if (AllItems.BELT_CONNECTOR.isIn(held) || AllItems.BELT_CONNECTOR.isIn(held return; if (feedback.langKey != null) - mc.player.displayClientMessage(CreateLang.translateDirect(feedback.langKey) - .withStyle(feedback.formatting), true); + mc.player.sendOverlayMessage(CreateLang.translateDirect(feedback.langKey) + .withStyle(feedback.formatting)); else - mc.player.displayClientMessage(CommonComponents.EMPTY, true); + mc.player.sendOverlayMessage(CommonComponents.EMPTY); if (feedback.bb != null) Outliner.getInstance().chaseAABB("BeltSlicer", feedback.bb) diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlope.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlope.java index bd45112741..bcc74fdb4a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlope.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlope.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.belt; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.util.StringRepresentable; public enum BeltSlope implements StringRepresentable { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java index 05f20ca30a..b80dbfe685 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltVisual.java @@ -18,8 +18,8 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.DyeColor; diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/DirectBeltInputBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/DirectBeltInputBehaviour.java index e17cc77480..3225c6725f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/DirectBeltInputBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/DirectBeltInputBehaviour.java @@ -12,6 +12,7 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -22,6 +23,8 @@ import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.item.ItemResource; /** * Behaviour for BlockEntities to which belts can transfer items directly in a @@ -70,7 +73,9 @@ public DirectBeltInputBehaviour setInsertionHandler(InsertionCallback callback) } private ItemStack defaultInsertionCallback(TransportedItemStack inserted, Direction side, boolean simulate) { - IItemHandler lazy = blockEntity.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, blockEntity.getBlockPos(), side); + ResourceHandler handler = + blockEntity.getLevel().getCapability(Capabilities.Item.BLOCK, blockEntity.getBlockPos(), side); + IItemHandler lazy = LegacyItemHandlerAdapter.of(handler); if (lazy == null) return inserted.stack; return ItemHandlerHelper.insertItemStacked(lazy, inserted.stack.copy(), simulate); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/TransportedItemStackHandlerBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/TransportedItemStackHandlerBehaviour.java index 4f0e371edf..0159a6192b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/TransportedItemStackHandlerBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/behaviour/TransportedItemStackHandlerBehaviour.java @@ -11,7 +11,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorHandler.java b/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorHandler.java index 49d639c887..1e8e6babde 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorHandler.java @@ -3,8 +3,6 @@ import java.util.LinkedList; import java.util.List; -import org.joml.Vector3f; - import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllItems; import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; @@ -31,10 +29,10 @@ public static void tick() { if (player == null || level == null) return; - if (Minecraft.getInstance().screen != null) + if (Minecraft.getInstance().gui.screen() != null) return; - RandomSource random = level.random; + RandomSource random = level.getRandom(); for (InteractionHand hand : InteractionHand.values()) { ItemStack heldItem = player.getItemInHand(hand); @@ -56,7 +54,7 @@ public static void tick() { HitResult rayTrace = Minecraft.getInstance().hitResult; if (rayTrace == null || !(rayTrace instanceof BlockHitResult)) { if (random.nextInt(50) == 0) { - level.addParticle(new DustParticleOptions(new Vector3f(.3f, .9f, .5f), 1), + level.addParticle(new DustParticleOptions(0x4de680, 1), first.getX() + .5f + randomOffset(random, .25f), first.getY() + .5f + randomOffset(random, .25f), first.getZ() + .5f + randomOffset(random, .25f), 0, 0, 0); } @@ -123,7 +121,7 @@ public static void tick() { Vec3 position = start.add(step.scale(f)); if (random.nextInt(10) == 0) { level.addParticle( - new DustParticleOptions(new Vector3f(canConnect ? .3f : .9f, canConnect ? .9f : .3f, .5f), 1), + new DustParticleOptions(canConnect ? 0x4de680 : 0xe64d80, 1), position.x + .5f, position.y + .5f, position.z + .5f, 0, 0, 0); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorItem.java index 4277f41df5..355aca5a78 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorItem.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/item/BeltConnectorItem.java @@ -17,7 +17,7 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -40,11 +40,6 @@ public BeltConnectorItem(Properties properties) { super(AllBlocks.BELT.get(), properties); } - @Override - public String getDescriptionId() { - return getOrCreateDescriptionId(); - } - @NotNull @Override public InteractionResult useOn(UseOnContext context) { @@ -60,7 +55,7 @@ public InteractionResult useOn(UseOnContext context) { BlockPos pos = context.getClickedPos(); boolean validAxis = validateAxis(world, pos); - if (world.isClientSide) + if (world.isClientSide()) return validAxis ? InteractionResult.SUCCESS : InteractionResult.FAIL; BlockPos firstPulley = null; @@ -93,14 +88,14 @@ public InteractionResult useOn(UseOnContext context) { .isEmpty()) { heldStack.remove(AllDataComponents.BELT_FIRST_SHAFT); playerEntity.getCooldowns() - .addCooldown(this, 5); + .addCooldown(heldStack, 5); } return InteractionResult.SUCCESS; } heldStack.set(AllDataComponents.BELT_FIRST_SHAFT, pos); playerEntity.getCooldowns() - .addCooldown(this, 5); + .addCooldown(heldStack, 5); return InteractionResult.SUCCESS; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java index c48e34fdfb..5c85d219bd 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltFunnelInteractionHandler.java @@ -51,7 +51,7 @@ public static boolean checkForFunnels(BeltInventory beltInventory, TransportedIt if (blocking) currentItem.beltPosition = funnelEntry; - if (world.isClientSide || funnelState.getOptionalValue(BeltFunnelBlock.POWERED).orElse(false)) + if (world.isClientSide() || funnelState.getOptionalValue(BeltFunnelBlock.POWERED).orElse(false)) if (blocking) return true; else diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java index a451d1b810..5ba903a36a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltInventory.java @@ -94,7 +94,7 @@ public void tick() { .getValue(BeltBlock.SLOPE) == BeltSlope.HORIZONTAL; float spacing = 1; Level world = belt.getLevel(); - boolean onClient = world.isClientSide && !belt.isVirtual(); + boolean onClient = world.isClientSide() && !belt.isVirtual(); // resolve ending only when items will reach it this tick Ending ending = Ending.UNRESOLVED; @@ -117,7 +117,7 @@ public void tick() { movement *= ServerSpeedProvider.get(); // Don't move if held by processing (client) - if (world.isClientSide && currentItem.locked) + if (world.isClientSide() && currentItem.locked) continue; // Don't move if held by external components @@ -407,11 +407,11 @@ public TransportedItemStack getStackAtOffset(int offset) { public void read(CompoundTag nbt, HolderLookup.Provider registries) { items.clear(); - nbt.getList("Items", Tag.TAG_COMPOUND) + nbt.getListOrEmpty("Items") .forEach(inbt -> items.add(TransportedItemStack.read((CompoundTag) inbt, registries))); if (nbt.contains("LazyItem")) - lazyClientItem = TransportedItemStack.read(nbt.getCompound("LazyItem"), registries); - beltMovementPositive = nbt.getBoolean("PositiveOrder"); + lazyClientItem = TransportedItemStack.read(nbt.getCompoundOrEmpty("LazyItem"), registries); + beltMovementPositive = nbt.getBooleanOr("PositiveOrder", false); } public CompoundTag write(HolderLookup.Provider registries) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltMovementHandler.java index 49ec4c8aa7..c06deb9160 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltMovementHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltMovementHandler.java @@ -99,7 +99,7 @@ public static void transportEntity(BeltBlockEntity beltBE, Entity entityIn, Tran // Lock entities in place boolean isPlayer = entityIn instanceof Player; if (entityIn instanceof LivingEntity livingEntity && !isPlayer) - livingEntity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 10, 1, false, false)); + livingEntity.addEffect(new MobEffectInstance(MobEffects.SLOWNESS, 10, 1, false, false)); final Direction beltFacing = blockState.getValue(BlockStateProperties.HORIZONTAL_FACING); final BeltSlope slope = blockState.getValue(BeltBlock.SLOPE); @@ -109,8 +109,8 @@ public static void transportEntity(BeltBlockEntity beltBE, Entity entityIn, Tran Vec3i centeringDirection = Direction.get(POSITIVE, beltFacing.getClockWise() .getAxis()) - .getNormal(); - Vec3 movement = Vec3.atLowerCornerOf(movementDirection.getNormal()) + .getUnitVec3i(); + Vec3 movement = Vec3.atLowerCornerOf(movementDirection.getUnitVec3i()) .scale(movementSpeed); double diffCenter = diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltTunnelInteractionHandler.java index 15dfbf4f6f..293256a9f0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltTunnelInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/BeltTunnelInteractionHandler.java @@ -14,7 +14,7 @@ import com.simibubi.create.content.redstone.displayLink.source.AccumulatedItemCountDisplaySource; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -44,7 +44,7 @@ public static boolean flapTunnelsAndCheckIfStuck(BeltInventory beltInventory, Tr } Level world = beltInventory.belt.getLevel(); - boolean onServer = !world.isClientSide || beltInventory.belt.isVirtual(); + boolean onServer = !world.isClientSide() || beltInventory.belt.isVirtual(); boolean removed = false; BeltTunnelBlockEntity nextTunnel = getTunnelOnSegment(beltInventory, upcomingSegment); int transferred = current.stack.getCount(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/TransportedItemStack.java b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/TransportedItemStack.java index 69bc0209ca..a4f230168b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/transport/TransportedItemStack.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/transport/TransportedItemStack.java @@ -7,11 +7,12 @@ import com.simibubi.create.content.kinetics.fan.processing.AllFanProcessingTypes; import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType; import com.simibubi.create.content.logistics.box.PackageItem; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; public class TransportedItemStack implements Comparable { @@ -73,7 +74,7 @@ public TransportedItemStack copy() { public CompoundTag serializeNBT(HolderLookup.Provider registries) { CompoundTag nbt = new CompoundTag(); - nbt.put("Item", stack.saveOptional(registries)); + nbt.put("Item", LegacyItemStackNbtBridge.saveOptional(stack, registries)); nbt.putFloat("Pos", beltPosition); nbt.putFloat("PrevPos", prevBeltPosition); nbt.putFloat("Offset", sideOffset); @@ -83,7 +84,7 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { nbt.putInt("InDirection", insertedFrom.get3DDataValue()); if (processedBy != null) { - ResourceLocation key = CreateBuiltInRegistries.FAN_PROCESSING_TYPE.getKey(processedBy); + Identifier key = CreateBuiltInRegistries.FAN_PROCESSING_TYPE.getKey(processedBy); if (key == null) throw new IllegalArgumentException("Could not get id for FanProcessingType " + processedBy + "!"); @@ -99,20 +100,20 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { } public static TransportedItemStack read(CompoundTag nbt, HolderLookup.Provider registries) { - TransportedItemStack stack = new TransportedItemStack(ItemStack.parseOptional(registries, nbt.getCompound("Item"))); - stack.beltPosition = nbt.getFloat("Pos"); - stack.prevBeltPosition = nbt.getFloat("PrevPos"); - stack.sideOffset = nbt.getFloat("Offset"); - stack.prevSideOffset = nbt.getFloat("PrevOffset"); - stack.insertedAt = nbt.getInt("InSegment"); - stack.angle = nbt.getInt("Angle"); - stack.insertedFrom = Direction.from3DDataValue(nbt.getInt("InDirection")); - stack.locked = nbt.getBoolean("Locked"); - stack.lockedExternally = nbt.getBoolean("LockedExternally"); + TransportedItemStack stack = new TransportedItemStack(LegacyItemStackNbtBridge.parseOptional(registries, nbt.getCompound("Item"))); + stack.beltPosition = nbt.getFloatOr("Pos", 0); + stack.prevBeltPosition = nbt.getFloatOr("PrevPos", 0); + stack.sideOffset = nbt.getFloatOr("Offset", 0); + stack.prevSideOffset = nbt.getFloatOr("PrevOffset", 0); + stack.insertedAt = nbt.getIntOr("InSegment", 0); + stack.angle = nbt.getIntOr("Angle", 0); + stack.insertedFrom = Direction.from3DDataValue(nbt.getIntOr("InDirection", Direction.UP.get3DDataValue())); + stack.locked = nbt.getBooleanOr("Locked", false); + stack.lockedExternally = nbt.getBooleanOr("LockedExternally", false); if (nbt.contains("FanProcessingType")) { - stack.processedBy = AllFanProcessingTypes.parseLegacy(nbt.getString("FanProcessingType")); - stack.processingTime = nbt.getInt("FanProcessingTime"); + stack.processedBy = AllFanProcessingTypes.parseLegacy(nbt.getStringOr("FanProcessingType", "")); + stack.processingTime = nbt.getIntOr("FanProcessingTime", 0); } return stack; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlock.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlock.java index e9fe80d6a6..6433b9cbc7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlock.java @@ -14,7 +14,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -23,6 +23,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -53,12 +55,12 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - if (!level.isClientSide() && stack.is(Items.CHAIN)) - return ItemInteractionResult.SUCCESS; + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + if (!level.isClientSide() && stack.is(Items.IRON_CHAIN)) + return InteractionResult.SUCCESS; if (AllBlocks.PACKAGE_FROGPORT.isIn(stack)) - return ItemInteractionResult.SUCCESS; - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -91,7 +93,7 @@ public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) int chainCost = ChainConveyorBlockEntity.getChainCost(targetPos); while (chainCost > 0) { player.getInventory() - .placeItemBackInInventory(new ItemStack(Items.CHAIN, Math.min(chainCost, 64))); + .placeItemBackInInventory(new ItemStack(Items.IRON_CHAIN, Math.min(chainCost, 64))); chainCost -= 64; } } @@ -120,8 +122,8 @@ public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, Block } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java index 3dd961c226..d4dce2cd30 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorBlockEntity.java @@ -27,12 +27,12 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.codecs.CatnipCodecs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecs; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; @@ -381,7 +381,7 @@ public boolean addTravellingPackage(ChainConveyorPackage box, BlockPos connectio return false; travellingPackages.computeIfAbsent(connection, $ -> new ArrayList<>()) .add(box); - if (level.isClientSide) + if (level.isClientSide()) return true; notifyUpdate(); return true; @@ -531,9 +531,9 @@ public void chainDestroyed(BlockPos target, boolean spawnDrops, boolean sendEffe return; if (!forPointsAlongChains(target, chainCount, - vec -> level.addFreshEntity(new ItemEntity(level, vec.x, vec.y, vec.z, new ItemStack(Items.CHAIN))))) { + vec -> level.addFreshEntity(new ItemEntity(level, vec.x, vec.y, vec.z, new ItemStack(Items.IRON_CHAIN))))) { while (chainCount > 0) { - Block.popResource(level, worldPosition, new ItemStack(Blocks.CHAIN.asItem(), Math.min(chainCount, 64))); + Block.popResource(level, worldPosition, new ItemStack(Blocks.IRON_CHAIN.asItem(), Math.min(chainCount, 64))); chainCount -= 64; } } @@ -589,7 +589,7 @@ public void remove() { private void spawnDestroyParticles(BlockPos blockPos) { forPointsAlongChains(blockPos, (int) Math.round(Vec3.atLowerCornerOf(blockPos) .length() * 8), - vec -> level.addParticle(new BlockParticleOption(ParticleTypes.BLOCK, Blocks.CHAIN.defaultBlockState()), + vec -> level.addParticle(new BlockParticleOption(ParticleTypes.BLOCK, Blocks.IRON_CHAIN.defaultBlockState()), vec.x, vec.y, vec.z, 0, 0, 0)); } @@ -683,14 +683,14 @@ public void writeSafe(CompoundTag tag, HolderLookup.Provider registries) { protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.write(compound, registries, clientPacket); if (clientPacket && chainDestroyedEffectToSend != null) { - compound.put("DestroyEffect", NbtUtils.writeBlockPos(chainDestroyedEffectToSend)); + compound.put("DestroyEffect", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(chainDestroyedEffectToSend)); chainDestroyedEffectToSend = null; } compound.put("Connections", CatnipCodecUtils.encode(CatnipCodecs.set(BlockPos.CODEC), registries, connections).orElseThrow()); compound.put("TravellingPackages", NBTHelper.writeCompoundList(travellingPackages.entrySet(), entry -> { CompoundTag compoundTag = new CompoundTag(); - compoundTag.put("Target", NbtUtils.writeBlockPos(entry.getKey())); + compoundTag.put("Target", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(entry.getKey())); compoundTag.put("Packages", NBTHelper.writeCompoundList(entry.getValue(), p -> clientPacket ? p.writeToClient(registries) : p.write(registries))); return compoundTag; @@ -709,16 +709,16 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool connections.clear(); CatnipCodecUtils.decode(CatnipCodecs.set(BlockPos.CODEC), registries, compound.get("Connections")).ifPresent(connections::addAll); travellingPackages.clear(); - NBTHelper.iterateCompoundList(compound.getList("TravellingPackages", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(compound.getListOrEmpty("TravellingPackages"), c -> travellingPackages.put(NBTHelper.readBlockPos(c, "Target"), - NBTHelper.readCompoundList(c.getList("Packages", Tag.TAG_COMPOUND), t -> ChainConveyorPackage.read(t, registries)))); - loopingPackages = NBTHelper.readCompoundList(compound.getList("LoopingPackages", Tag.TAG_COMPOUND), + NBTHelper.readCompoundList(c.getListOrEmpty("Packages"), t -> ChainConveyorPackage.read(t, registries)))); + loopingPackages = NBTHelper.readCompoundList(compound.getListOrEmpty("LoopingPackages"), t -> ChainConveyorPackage.read(t, registries)); connectionStats = null; updateBoxWorldPositions(); updateChainShapes(); - if (connections.size() != sizeBefore && level != null && level.isClientSide) + if (connections.size() != sizeBefore && level != null && level.isClientSide()) invalidateRenderBoundingBox(); } @@ -738,18 +738,18 @@ public static boolean getChainsFromInventory(Player player, ItemStack chain, int int found = 0; Inventory inv = player.getInventory(); - int size = inv.items.size(); + int size = inv.getNonEquipmentItems().size(); for (int j = 0; j <= size + 1; j++) { int i = j; boolean offhand = j == size + 1; if (j == size) - i = inv.selected; + i = inv.getSelectedSlot(); else if (offhand) i = 0; - else if (j == inv.selected) + else if (j == inv.getSelectedSlot()) continue; - ItemStack stackInSlot = (offhand ? inv.offhand : inv.items).get(i); + ItemStack stackInSlot = offhand ? player.getOffhandItem() : inv.getNonEquipmentItems().get(i); if (!stackInSlot.is(chain.getItem())) continue; if (found >= cost) diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionHandler.java index cf5c7df45a..3878081151 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionHandler.java @@ -3,16 +3,15 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.equipment.blueprint.BlueprintOverlayRenderer; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.resources.ResourceKey; @@ -105,7 +104,7 @@ public static void onItemUsedOnBlock(PlayerInteractEvent.RightClickBlock event) return; } - SoundType soundtype = Blocks.CHAIN.defaultBlockState() + SoundType soundtype = Blocks.IRON_CHAIN.defaultBlockState() .getSoundType(); if (soundtype != null) level.playSound(player, pos, soundtype.getPlaceSound(), SoundSource.BLOCKS, @@ -113,14 +112,16 @@ public static void onItemUsedOnBlock(PlayerInteractEvent.RightClickBlock event) } private static boolean isChain(ItemStack itemStack) { - return itemStack.is(Items.CHAIN); // Replace with tag? generic renderer? + return itemStack.is(Items.IRON_CHAIN); // Replace with tag? generic renderer? } public static void clientTick() { if (firstPos == null) return; - LocalPlayer player = Minecraft.getInstance().player; + Player player = Minecraft.getInstance().player; + if (player == null) + return; BlockEntity sourceLift = player.level() .getBlockEntity(firstPos); @@ -262,7 +263,7 @@ public static boolean validateAndConnect(LevelAccessor level, BlockPos pos, Play if (simulate) return true; - CatnipServices.NETWORK.sendToServer(new ChainConveyorConnectionPacket(firstPos, pos, chain, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ChainConveyorConnectionPacket(firstPos, pos, chain, true)); CreateLang.text("") // Clear status message .sendStatus(player); diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionPacket.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionPacket.java index acc30f0db3..9bdc8d40bf 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionPacket.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorConnectionPacket.java @@ -66,7 +66,7 @@ protected void applySettings(ServerPlayer player, ChainConveyorBlockEntity be) { int chainCost = ChainConveyorBlockEntity.getChainCost(targetPos.subtract(pos)); while (chainCost > 0) { player.getInventory() - .placeItemBackInInventory(new ItemStack(Items.CHAIN, Math.min(chainCost, 64))); + .placeItemBackInInventory(new ItemStack(Items.IRON_CHAIN, Math.min(chainCost, 64))); chainCost -= 64; } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorInteractionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorInteractionHandler.java index 1e97912de9..4253c9a202 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorInteractionHandler.java @@ -14,13 +14,13 @@ import com.simibubi.create.foundation.utility.RaycastHelper; import com.simibubi.create.foundation.utility.TickBasedCache; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.item.ItemStack; @@ -31,7 +31,7 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.RenderHighlightEvent; +import net.neoforged.neoforge.client.event.ExtractBlockOutlineRenderStateEvent; import net.neoforged.neoforge.common.Tags; @EventBusSubscriber(Dist.CLIENT) @@ -134,7 +134,7 @@ public static boolean onUse() { return true; } - CatnipServices.NETWORK.sendToServer(new ChainConveyorConnectionPacket(selectedLift, selectedLift.offset(selectedConnection), + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ChainConveyorConnectionPacket(selectedLift, selectedLift.offset(selectedConnection), usedItem, false)); return true; } @@ -147,7 +147,7 @@ public static boolean onUse() { } if (PackageItem.isPackage(mainHandItem)) { - CatnipServices.NETWORK.sendToServer(new ChainPackageInteractionPacket(selectedLift, selectedConnection, selectedChainPosition, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ChainPackageInteractionPacket(selectedLift, selectedConnection, selectedChainPosition, false)); return true; } @@ -159,7 +159,7 @@ public static void drawCustomBlockSelection(PoseStack ms, MultiBufferSource buff if (selectedLift == null || selectedShape == null) return; - VertexConsumer vb = buffer.getBuffer(RenderType.lines()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.lines()); ms.pushPose(); ms.translate(selectedLift.getX() - camera.x, selectedLift.getY() - camera.y, selectedLift.getZ() - camera.z); selectedShape.drawOutline(selectedLift, ms, vb); @@ -167,7 +167,7 @@ public static void drawCustomBlockSelection(PoseStack ms, MultiBufferSource buff } @SubscribeEvent - public static void hideVanillaBlockSelection(RenderHighlightEvent.Block event) { + public static void hideVanillaBlockSelection(ExtractBlockOutlineRenderStateEvent event) { if (selectedLift == null || selectedShape == null) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorPackage.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorPackage.java index 6d5de63ea6..0daed2faaf 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorPackage.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorPackage.java @@ -7,11 +7,11 @@ import com.google.common.cache.Cache; import com.simibubi.create.foundation.utility.TickBasedCache; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.phys.Vec3; @@ -37,7 +37,7 @@ public class ChainConveyorPackagePhysicsData { public float yaw; public float prevYaw; public boolean flipped; - public ResourceLocation modelKey; + public Identifier modelKey; public WeakReference beReference; @@ -95,15 +95,16 @@ public CompoundTag writeToClient(HolderLookup.Provider registries) { public CompoundTag write(HolderLookup.Provider registries) { CompoundTag compoundTag = new CompoundTag(); compoundTag.putFloat("Position", chainPosition); - compoundTag.put("Item", item.saveOptional(registries)); + compoundTag.put("Item", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(item, registries)); return compoundTag; } public static ChainConveyorPackage read(CompoundTag compoundTag, HolderLookup.Provider registries) { - float pos = compoundTag.getFloat("Position"); - ItemStack item = ItemStack.parseOptional(registries, compoundTag.getCompound("Item")); + float pos = compoundTag.getFloatOr("Position", 0); + ItemStack item = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, + compoundTag.getCompound("Item")); if (compoundTag.contains("NetID")) - return new ChainConveyorPackage(pos, item, compoundTag.getInt("NetID")); + return new ChainConveyorPackage(pos, item, compoundTag.getIntOr("NetID", 0)); return new ChainConveyorPackage(pos, item); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRenderer.java index d3faea6d23..acee5db320 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRenderer.java @@ -16,21 +16,21 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; @@ -39,7 +39,7 @@ public class ChainConveyorRenderer extends KineticBlockEntityRenderer { - public static final ResourceLocation CHAIN_LOCATION = ResourceLocation.withDefaultNamespace("textures/block/chain.png"); + public static final Identifier CHAIN_LOCATION = Identifier.withDefaultNamespace("textures/block/chain.png"); public static final int MIP_DISTANCE = 48; public ChainConveyorRenderer(Context context) { @@ -60,7 +60,7 @@ protected void renderSafe(ChainConveyorBlockEntity be, float partialTicks, PoseS CachedBuffers.partial(AllPartialModels.CHAIN_CONVEYOR_WHEEL, be.getBlockState()) .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); for (ChainConveyorPackage box : be.loopingPackages) renderBox(be, ms, buffer, overlay, pos, box, partialTicks); @@ -89,11 +89,11 @@ private void renderBox(ChainConveyorBlockEntity be, PoseStack ms, MultiBufferSou BlockPos containingPos = BlockPos.containing(position); Level level = be.getLevel(); BlockState blockState = be.getBlockState(); - int light = LightTexture.pack(level.getBrightness(LightLayer.BLOCK, containingPos), + int light = LightCoordsUtil.pack(level.getBrightness(LightLayer.BLOCK, containingPos), level.getBrightness(LightLayer.SKY, containingPos)); if (physicsData.modelKey == null) { - ResourceLocation key = BuiltInRegistries.ITEM.getKey(box.item.getItem()); + Identifier key = BuiltInRegistries.ITEM.getKey(box.item.getItem()); if (key == BuiltInRegistries.ITEM.getDefaultKey()) return; physicsData.modelKey = key; @@ -127,13 +127,13 @@ private void renderBox(ChainConveyorBlockEntity be, PoseStack ms, MultiBufferSou buf.light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } } private void renderChains(ChainConveyorBlockEntity be, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - float time = AnimationTickHolder.getRenderTime(be.getLevel()) / (360f / Math.abs(be.getSpeed())); + float time = AnimationTickHolder.getRenderTime() / (360f / Math.abs(be.getSpeed())); time %= 1; if (time < 0) time += 1; @@ -165,7 +165,7 @@ private void renderChains(ChainConveyorBlockEntity be, PoseStack ms, MultiBuffer guard.uncenter(); guard.light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } ms.pushPose(); @@ -178,13 +178,13 @@ private void renderChains(ChainConveyorBlockEntity be, PoseStack ms, MultiBuffer chain.translate(0, 8 / 16f, 0); chain.uncenter(); - int light1 = LightTexture.pack(level.getBrightness(LightLayer.BLOCK, tilePos), + int light1 = LightCoordsUtil.pack(level.getBrightness(LightLayer.BLOCK, tilePos), level.getBrightness(LightLayer.SKY, tilePos)); - int light2 = LightTexture.pack(level.getBrightness(LightLayer.BLOCK, tilePos.offset(blockPos)), + int light2 = LightCoordsUtil.pack(level.getBrightness(LightLayer.BLOCK, tilePos.offset(blockPos)), level.getBrightness(LightLayer.SKY, tilePos.offset(blockPos))); boolean far = Minecraft.getInstance().level == be.getLevel() && !Minecraft.getInstance() - .getBlockEntityRenderDispatcher().camera.getPosition() + .gameRenderer.mainCamera().position() .closerThan(Vec3.atCenterOf(tilePos) .add(blockPos.getX() / 2f, blockPos.getY() / 2f, blockPos.getZ() / 2f), MIP_DISTANCE); @@ -248,12 +248,10 @@ private static void addVertex(Matrix4f pPose, PoseStack.Pose pNormal, VertexCons .setNormal(pNormal, 0.0F, 1.0F, 0.0F); } - @Override public int getViewDistance() { return 256; } - @Override public boolean shouldRenderOffScreen(ChainConveyorBlockEntity be) { return true; } @@ -265,7 +263,7 @@ protected SuperByteBuffer getRotatedModel(ChainConveyorBlockEntity be, BlockStat @Override protected RenderType getRenderType(ChainConveyorBlockEntity be, BlockState state) { - return RenderType.cutoutMipped(); + return com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped(); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRidingHandler.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRidingHandler.java index 61ed407609..fad961a0a8 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRidingHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorRidingHandler.java @@ -4,9 +4,9 @@ import com.simibubi.create.content.kinetics.chainConveyor.ChainConveyorBlockEntity.ConnectionStats; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.core.BlockPos; @@ -35,7 +35,8 @@ public static void embark(BlockPos lift, float position, BlockPos connection) { flipped = clbe.getSpeed() < 0; Component component = Component.translatable("mount.onboard", mc.options.keyShift.getTranslatedKeyMessage()); - mc.gui.setOverlayMessage(component, false); + if (mc.player != null) + mc.player.sendSystemMessage(component); mc.getSoundManager() .play(SimpleSoundInstance.forUI(SoundEvents.CHAIN_HIT, 1f, 0.5f)); } @@ -102,12 +103,12 @@ public static void clientTick() { .scale(0.75) .add(diff.scale(0.25))); if (AnimationTickHolder.getTicks() % 10 == 0) - CatnipServices.NETWORK.sendToServer(new ServerboundChainConveyorRidingPacket(ridingChainConveyor, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ServerboundChainConveyorRidingPacket(ridingChainConveyor, false)); } private static void stopRiding() { if (ridingChainConveyor != null) - CatnipServices.NETWORK.sendToServer(new ServerboundChainConveyorRidingPacket(ridingChainConveyor, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ServerboundChainConveyorRidingPacket(ridingChainConveyor, true)); ridingChainConveyor = null; ridingConnection = null; Minecraft.getInstance() diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorShape.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorShape.java index cbc2d228ba..5a1ab73599 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorShape.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorShape.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.trains.track.TrackBlockOutline; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorVisual.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorVisual.java index 3f2050ecca..573172a587 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainConveyorVisual.java @@ -18,13 +18,13 @@ import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; import dev.engine_room.flywheel.lib.visual.SimpleTickableVisual; import dev.engine_room.flywheel.lib.visual.util.SmartRecycler; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.LightTexture; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; @@ -34,8 +34,8 @@ public class ChainConveyorVisual extends SingleAxisRotatingVisual guards = new ArrayList<>(); - private final SmartRecycler boxes; - private final SmartRecycler rigging; + private final SmartRecycler boxes; + private final SmartRecycler rigging; public ChainConveyorVisual(VisualizationContext context, ChainConveyorBlockEntity blockEntity, float partialTick) { super(context, blockEntity, partialTick, Models.partial(AllPartialModels.CHAIN_CONVEYOR_SHAFT)); @@ -95,11 +95,11 @@ private void setupBoxVisual(ChainConveyorBlockEntity be, ChainConveyorPackage bo BlockPos containingPos = BlockPos.containing(position); Level level = be.getLevel(); - int light = LightTexture.pack(level.getBrightness(LightLayer.BLOCK, containingPos), + int light = LightCoordsUtil.pack(level.getBrightness(LightLayer.BLOCK, containingPos), level.getBrightness(LightLayer.SKY, containingPos)); if (physicsData.modelKey == null) { - ResourceLocation key = BuiltInRegistries.ITEM.getKey(box.item.getItem()); + Identifier key = BuiltInRegistries.ITEM.getKey(box.item.getItem()); if (key == BuiltInRegistries.ITEM.getDefaultKey()) return; physicsData.modelKey = key; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionHandler.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionHandler.java index d29a02b86c..7b1c418548 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionHandler.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.utility.RaycastHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -44,7 +44,7 @@ public static boolean onUse() { for (ChainConveyorPackage pckg : ccbe.getLoopingPackages()) { if (pckg.netId == i) { - CatnipServices.NETWORK.sendToServer( + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( new ChainPackageInteractionPacket(ccbe.getBlockPos(), null, pckg.chainPosition, true)); success.setTrue(); return; @@ -57,7 +57,7 @@ public static boolean onUse() { continue; for (ChainConveyorPackage pckg : list) { if (pckg.netId == i) { - CatnipServices.NETWORK.sendToServer(new ChainPackageInteractionPacket(ccbe.getBlockPos(), connection, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ChainPackageInteractionPacket(ccbe.getBlockPos(), connection, pckg.chainPosition, true)); success.setTrue(); return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionPacket.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionPacket.java index 95f7fd70e1..6f9e405de3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionPacket.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ChainPackageInteractionPacket.java @@ -6,8 +6,8 @@ import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ClientboundChainConveyorRidingPacket.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ClientboundChainConveyorRidingPacket.java index e5d765be50..1af7210c04 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ClientboundChainConveyorRidingPacket.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ClientboundChainConveyorRidingPacket.java @@ -9,13 +9,12 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ClientboundChainConveyorRidingPacket(Collection uuids) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -29,8 +28,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { PlayerSkyhookRenderer.updatePlayerList(this.uuids); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ServerChainConveyorHandler.java b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ServerChainConveyorHandler.java index 45879f0695..f1eb9ad6d3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ServerChainConveyorHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainConveyor/ServerChainConveyorHandler.java @@ -6,7 +6,7 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIterator; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.world.entity.player.Player; public class ServerChainConveyorHandler { diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java index 33900b8d34..f728e811a4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveBlock.java @@ -8,17 +8,18 @@ import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Mirror; @@ -74,15 +75,15 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { continue; BlockPos pos = context.getClickedPos(); BlockPos offset = pos.relative(facing); - state = updateShape(state, facing, context.getLevel() - .getBlockState(offset), context.getLevel(), pos, offset); + state = updateShape(state, context.getLevel(), context.getLevel(), pos, facing, offset, + context.getLevel().getBlockState(offset), context.getLevel().getRandom()); } return state; } @Override - public BlockState updateShape(BlockState stateIn, Direction face, BlockState neighbour, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { + public BlockState updateShape(BlockState stateIn, LevelReader level, ScheduledTickAccess ticks, BlockPos currentPos, + Direction face, BlockPos facingPos, BlockState neighbour, RandomSource random) { Part part = stateIn.getValue(PART); Axis axis = stateIn.getValue(AXIS); boolean connectionAlongFirst = stateIn.getValue(CONNECTED_ALONG_FIRST_COORDINATE); @@ -153,8 +154,8 @@ public BlockState updateAfterWrenched(BlockState newState, UseOnContext context) continue; BlockPos pos = context.getClickedPos(); BlockPos offset = pos.relative(facing); - newState = updateShape(newState, facing, context.getLevel() - .getBlockState(offset), context.getLevel(), pos, offset); + newState = updateShape(newState, context.getLevel(), context.getLevel(), pos, facing, offset, + context.getLevel().getBlockState(offset), context.getLevel().getRandom()); } // newState.updateNeighbors(context.getWorld(), context.getPos(), 1 | 2); return newState; diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveGenerator.java index 230aba8bc7..4369e425b1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainDriveGenerator.java @@ -5,12 +5,12 @@ import com.simibubi.create.content.kinetics.chainDrive.ChainDriveBlock.Part; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class ChainDriveGenerator extends SpecialBlockStateGen { @@ -52,7 +52,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return modelFunc.apply(state, getModelSuffix(state)); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlock.java index 6e04c70a40..140e38af4e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlock.java @@ -8,6 +8,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -48,9 +49,9 @@ protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; withBlockEntityDo(worldIn, pos, kbe -> ((ChainGearshiftBlockEntity) kbe).neighbourChanged()); diff --git a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlockEntity.java index 5fa5bcb4bf..5dbf501609 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/chainDrive/ChainGearshiftBlockEntity.java @@ -27,7 +27,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - signal = compound.getInt("Signal"); + signal = compound.getIntOr("Signal", 0); super.read(compound, registries, clientPacket); } @@ -52,7 +52,7 @@ public void lazyTick() { @Override public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (signalChanged) { signalChanged = false; diff --git a/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockBlockEntity.java index a88dcf50b3..7b4a6f8b9e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockBlockEntity.java @@ -7,11 +7,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.damageTypes.CreateDamageSources; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; @@ -73,13 +73,13 @@ public void tick() { return; - boolean isNatural = level.dimensionType().natural(); - int dayTime = (int) ((level.getDayTime() * (isNatural ? 1 : 24)) % 24000); + boolean isNatural = level.dimensionType().hasSkyLight(); + int dayTime = (int) ((level.getDefaultClockTime() * (isNatural ? 1 : 24)) % 24000); int hours = (dayTime / 1000 + 6) % 24; int minutes = (dayTime % 1000) * 60 / 1000; if (!isNatural) { - if (level.isClientSide) { + if (level.isClientSide()) { moveHands(hours, minutes); if (AnimationTickHolder.getTicks() % 6 == 0) @@ -90,7 +90,7 @@ else if (AnimationTickHolder.getTicks() % 3 == 0) return; } - if (!level.isClientSide) { + if (!level.isClientSide()) { if (animationType == Animation.NONE) { if (hours == 12 && minutes < 5) startAnimation(Animation.PIG); @@ -113,7 +113,7 @@ else if (AnimationTickHolder.getTicks() % 3 == 0) } } - if (level.isClientSide) { + if (level.isClientSide()) { moveHands(hours, minutes); if (animationType == Animation.NONE) { @@ -137,7 +137,7 @@ else if (AnimationTickHolder.getTicks() % 16 == 0) playSound(SoundEvents.NOTE_BLOCK_CHIME.value(), 2, 0.793701f); if (value > 30 && isSurprise) { - Vec3 pos = VecHelper.offsetRandomly(VecHelper.getCenterOf(this.worldPosition), level.random, .5f); + Vec3 pos = VecHelper.offsetRandomly(VecHelper.getCenterOf(this.worldPosition), level.getRandom(), .5f); level.addParticle(ParticleTypes.LARGE_SMOKE, pos.x, pos.y, pos.z, 0, 0, 0); } if (value == 40 && isSurprise) @@ -149,7 +149,7 @@ else if (AnimationTickHolder.getTicks() % 16 == 0) playSound(SoundEvents.CHEST_OPEN, 1 / 16f, 2f); if (value == phase) { if (animationType == Animation.PIG) - playSound(SoundEvents.PIG_AMBIENT, 1 / 4f, 1f); + playSound(SoundEvents.PIG_AMBIENT_BABY.value(), 1 / 4f, 1f); else playSound(SoundEvents.CREEPER_HURT, 1 / 4f, 3f); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockRenderer.java index 112957f5b8..b61437184b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/clock/CuckooClockRenderer.java @@ -7,11 +7,11 @@ import com.simibubi.create.content.kinetics.clock.CuckooClockBlockEntity.Animation; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -33,7 +33,7 @@ protected void renderSafe(CuckooClockBlockEntity be, float partialTicks, PoseSta BlockState blockState = be.getBlockState(); Direction direction = blockState.getValue(CuckooClockBlock.HORIZONTAL_FACING); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); // Render Hands SuperByteBuffer hourHand = CachedBuffers.partial(AllPartialModels.CUCKOO_HOUR_HAND, blockState); diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/ConnectedInputHandler.java index d9459c47e8..0ee621a02e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/ConnectedInputHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/ConnectedInputHandler.java @@ -16,8 +16,8 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity.Inventory; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -227,9 +227,9 @@ public void write(CompoundTag nbt) { } public void read(CompoundTag nbt) { - isController = nbt.getBoolean("Controller"); - data = NBTHelper.readCompoundList(nbt.getList("Data", Tag.TAG_COMPOUND), - c -> new BlockPos(c.getInt("X"), c.getInt("Y"), c.getInt("Z"))); + isController = nbt.getBooleanOr("Controller", true); + data = NBTHelper.readCompoundList(nbt.getListOrEmpty("Data"), + c -> new BlockPos(c.getIntOr("X", 0), c.getIntOr("Y", 0), c.getIntOr("Z", 0))); // nbt got wiped -> reset if (data.isEmpty()) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterCTBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterCTBehaviour.java index b6a7758cac..e68ae482e6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterCTBehaviour.java @@ -13,7 +13,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class CrafterCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterHelper.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterHelper.java index 54c4176612..ab4e806fec 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterHelper.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/CrafterHelper.java @@ -3,16 +3,22 @@ import com.simibubi.create.content.kinetics.crafter.ConnectedInputHandler.ConnectedInput; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; public class CrafterHelper { public static MechanicalCrafterBlockEntity getCrafter(BlockAndTintGetter reader, BlockPos pos) { - BlockEntity blockEntity = reader.getBlockEntity(pos); - if (!(blockEntity instanceof MechanicalCrafterBlockEntity)) - return null; - return (MechanicalCrafterBlockEntity) blockEntity; + return getCrafter(reader.getBlockEntity(pos)); + } + + public static MechanicalCrafterBlockEntity getCrafter(Level level, BlockPos pos) { + return getCrafter(level.getBlockEntity(pos)); + } + + private static MechanicalCrafterBlockEntity getCrafter(BlockEntity blockEntity) { + return blockEntity instanceof MechanicalCrafterBlockEntity crafter ? crafter : null; } public static ConnectedInputHandler.ConnectedInput getInput(BlockAndTintGetter reader, BlockPos pos) { @@ -20,10 +26,24 @@ public static ConnectedInputHandler.ConnectedInput getInput(BlockAndTintGetter r return crafter == null ? null : crafter.input; } + public static ConnectedInputHandler.ConnectedInput getInput(Level level, BlockPos pos) { + MechanicalCrafterBlockEntity crafter = getCrafter(level, pos); + return crafter == null ? null : crafter.input; + } + public static boolean areCraftersConnected(BlockAndTintGetter reader, BlockPos pos, BlockPos otherPos) { ConnectedInput input1 = getInput(reader, pos); ConnectedInput input2 = getInput(reader, otherPos); - + return areCraftersConnected(input1, input2, pos, otherPos); + } + + public static boolean areCraftersConnected(Level level, BlockPos pos, BlockPos otherPos) { + ConnectedInput input1 = getInput(level, pos); + ConnectedInput input2 = getInput(level, otherPos); + return areCraftersConnected(input1, input2, pos, otherPos); + } + + private static boolean areCraftersConnected(ConnectedInput input1, ConnectedInput input2, BlockPos pos, BlockPos otherPos) { if (input1 == null || input2 == null) return false; if (input1.data.isEmpty() || input2.data.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlock.java index f9fc2fc859..b9706b56b9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlock.java @@ -11,24 +11,28 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -86,16 +90,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() == newState.getBlock()) { - if (getTargetDirection(state) != getTargetDirection(newState)) { - MechanicalCrafterBlockEntity crafter = CrafterHelper.getCrafter(worldIn, pos); - if (crafter != null) - crafter.blockChanged(); - } - } - - if (state.hasBlockEntity() && !state.is(newState.getBlock())) { + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (state.hasBlockEntity()) { MechanicalCrafterBlockEntity crafter = CrafterHelper.getCrafter(worldIn, pos); if (crafter != null) { if (crafter.covered) @@ -123,7 +119,7 @@ public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState n } } - super.onRemove(state, worldIn, pos, newState, isMoving); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } public static Pointing pointingFromFacing(Direction pointingFace, Direction blockFacing) { @@ -144,7 +140,7 @@ public static Pointing pointingFromFacing(Direction pointingFace, Direction bloc @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { if (context.getClickedFace() == state.getValue(HORIZONTAL_FACING)) { - if (!context.getLevel().isClientSide) + if (!context.getLevel().isClientSide()) KineticBlockEntity.switchToBlockState(context.getLevel(), context.getClickedPos(), state.cycle(POINTING)); return InteractionResult.SUCCESS; @@ -154,13 +150,13 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { BlockEntity blockEntity = level.getBlockEntity(pos); if (!(blockEntity instanceof MechanicalCrafterBlockEntity crafter)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.MECHANICAL_ARM.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; boolean isHand = stack.isEmpty() && hand == InteractionHand.MAIN_HAND; boolean wrenched = AllItems.WRENCH.isIn(stack); @@ -169,70 +165,70 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (crafter.phase != Phase.IDLE && !wrenched) { crafter.ejectWholeGrid(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (crafter.phase == Phase.IDLE && !isHand && !wrenched) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; if (AllItems.CRAFTER_SLOT_COVER.isIn(stack)) { if (crafter.covered) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!crafter.inventory.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; crafter.covered = true; crafter.setChanged(); crafter.sendData(); if (!player.isCreative()) stack.shrink(1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - IItemHandler capability = level.getCapability(Capabilities.ItemHandler.BLOCK, crafter.getBlockPos(), null); + IItemHandler capability = LegacyItemHandlerAdapter.of(level.getCapability(Capabilities.Item.BLOCK, crafter.getBlockPos(), null)); if (capability == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ItemStack remainder = ItemHandlerHelper.insertItem(capability, stack.copy(), false); if (remainder.getCount() != stack.getCount()) player.setItemInHand(hand, remainder); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } ItemStack inSlot = crafter.getInventory() .getItem(0); if (inSlot.isEmpty()) { if (crafter.covered && !wrenched) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; crafter.covered = false; crafter.setChanged(); crafter.sendData(); if (!player.isCreative()) player.getInventory() .placeItemBackInInventory(AllItems.CRAFTER_SLOT_COVER.asStack()); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } if (!isHand && !ItemStack.isSameItemSameComponents(stack, inSlot)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; player.getInventory() .placeItemBackInInventory(inSlot); crafter.getInventory() .setStackInSlot(0, ItemStack.EMPTY); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { InvManipulationBehaviour behaviour = BlockEntityBehaviour.get(worldIn, pos, InvManipulationBehaviour.TYPE); + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (behaviour != null) behaviour.onNeighborChanged(fromPos); } @@ -255,7 +251,7 @@ public static Direction getTargetDirection(BlockState state) { Vec3 targetVec = new Vec3(0, 1, 0); targetVec = VecHelper.rotate(targetVec, -point.getXRotation(), Axis.Z); targetVec = VecHelper.rotate(targetVec, AngleHelper.horizontalAngle(facing), Axis.Y); - return Direction.getNearest(targetVec.x, targetVec.y, targetVec.z); + return LegacyDirectionBridge.nearest(targetVec.x, targetVec.y, targetVec.z, Direction.NORTH); } public static boolean isValidTarget(Level world, BlockPos targetPos, BlockState crafterState) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlockEntity.java index dd4f01ca4a..fe4d9239ba 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterBlockEntity.java @@ -23,11 +23,12 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.edgeInteraction.EdgeInteractionBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.item.SmartInventory; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -39,6 +40,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -117,9 +119,9 @@ public MechanicalCrafterBlockEntity(BlockEntityType type, BlockPos pos, Block public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.MECHANICAL_CRAFTER.get(), - (be, context) -> be.getInvCapability() + (be, context) -> new LegacyItemTransferAdapter(be.getInvCapability()) ); } @@ -207,17 +209,17 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool Phase phaseBefore = phase; GroupedItems before = this.groupedItems; - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); - input.read(compound.getCompound("ConnectedInput")); - groupedItems = GroupedItems.read(compound.getCompound("GroupedItems"), registries); + inventory.deserializeNBT(registries, compound.getCompoundOrEmpty("Inventory")); + input.read(compound.getCompoundOrEmpty("ConnectedInput")); + groupedItems = GroupedItems.read(compound.getCompoundOrEmpty("GroupedItems"), registries); phase = Phase.IDLE; - String name = compound.getString("Phase"); + String name = compound.getStringOr("Phase", Phase.IDLE.name()); for (Phase phase : Phase.values()) if (phase.name() .equals(name)) this.phase = phase; - countDown = compound.getInt("CountDown"); - covered = compound.getBoolean("Cover"); + countDown = compound.getIntOr("CountDown", 0); + covered = compound.getBooleanOr("Cover", false); super.read(compound, registries, clientPacket); if (!clientPacket) return; @@ -229,11 +231,11 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool if (before.onlyEmptyItems()) return; Direction facing = getBlockState().getValue(MechanicalCrafterBlock.HORIZONTAL_FACING); - Vec3 vec = Vec3.atLowerCornerOf(facing.getNormal()) + Vec3 vec = Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(.75) .add(VecHelper.getCenterOf(worldPosition)); Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(getBlockState()); - vec = vec.add(Vec3.atLowerCornerOf(targetDirection.getNormal()) + vec = vec.add(Vec3.atLowerCornerOf(targetDirection.getUnitVec3i()) .scale(1)); level.addParticle(ParticleTypes.CRIT, vec.x, vec.y, vec.z, 0, 0, 0); } @@ -258,7 +260,7 @@ public void tick() { if (phase == Phase.ACCEPTING) return; - boolean onClient = level.isClientSide; + boolean onClient = level.isClientSide(); boolean runLogic = !onClient || isVirtual(); if (wasPoweredBefore != level.hasNeighborSignal(worldPosition)) { @@ -290,9 +292,9 @@ public void tick() { List containers = new ArrayList<>(); groupedItems.grid.values() .forEach(stack -> { - if (stack.hasCraftingRemainingItem()) - containers.add(stack.getCraftingRemainingItem() - .copy()); + ItemStackTemplate craftingRemainder = stack.getCraftingRemainder(); + if (craftingRemainder != null) + containers.add(craftingRemainder.create()); }); if (isVirtual()) @@ -354,10 +356,10 @@ public void tick() { if (onClient) { Direction facing = getBlockState().getValue(MechanicalCrafterBlock.HORIZONTAL_FACING); float progress = countDown / 2000f; - Vec3 facingVec = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 facingVec = Vec3.atLowerCornerOf(facing.getUnitVec3i()); Vec3 vec = facingVec.scale(.65) .add(VecHelper.getCenterOf(worldPosition)); - Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, level.random, .125f) + Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .125f) .multiply(VecHelper.axisAlingedPlaneOf(facingVec)) .normalize() .scale(progress * .5f) @@ -371,14 +373,15 @@ public void tick() { groupedItemsBeforeCraft = new GroupedItems(); for (int i = 0; i < 10; i++) { - Vec3 randVec = VecHelper.offsetRandomly(Vec3.ZERO, level.random, .125f) + Vec3 randVec = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .125f) .multiply(VecHelper.axisAlingedPlaneOf(facingVec)) .normalize() .scale(.25f); Vec3 offset2 = randVec.add(vec); randVec = randVec.scale(.35f); - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), offset2.x, offset2.y, - offset2.z, randVec.x, randVec.y, randVec.z); + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, + ItemStackTemplate.fromNonEmptyStack(stack)), offset2.x, offset2.y, offset2.z, randVec.x, + randVec.y, randVec.z); } } } @@ -463,7 +466,7 @@ public void eject() { BlockState blockState = getBlockState(); boolean present = AllBlocks.MECHANICAL_CRAFTER.has(blockState); Vec3 vec = present ? Vec3.atLowerCornerOf(blockState.getValue(HORIZONTAL_FACING) - .getNormal()) + .getUnitVec3i()) .scale(.75f) : Vec3.ZERO; Vec3 ejectPos = VecHelper.getCenterOf(worldPosition) .add(vec); @@ -486,7 +489,7 @@ public void dropItem(Vec3 ejectPos, ItemStack stack) { @Override public void lazyTick() { super.lazyTick(); - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; if (phase == Phase.IDLE && craftingItemPresent()) checkCompletedRecipe(false); @@ -507,7 +510,7 @@ public boolean craftingItemOrCoverPresent() { public void checkCompletedRecipe(boolean poweredStart) { if (getSpeed() == 0) return; - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; List chain = RecipeGridHandler.getAllCraftersOfChainIf(this, poweredStart ? MechanicalCrafterBlockEntity::craftingItemPresent diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterRenderer.java index 6bf59c6468..5e616f0be2 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCrafterRenderer.java @@ -15,14 +15,14 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -43,7 +43,7 @@ protected void renderSafe(MechanicalCrafterBlockEntity be, float partialTicks, P ms.pushPose(); Direction facing = be.getBlockState() .getValue(HORIZONTAL_FACING); - Vec3 vec = Vec3.atLowerCornerOf(facing.getNormal()) + Vec3 vec = Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(.58) .add(.5, .5, .5); @@ -51,7 +51,7 @@ protected void renderSafe(MechanicalCrafterBlockEntity be, float partialTicks, P Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(be.getBlockState()); float progress = Mth.clamp((1000 - be.countDown + be.getCountDownSpeed() * partialTicks) / 1000f, 0, 1); - vec = vec.add(Vec3.atLowerCornerOf(targetDirection.getNormal()) + vec = vec.add(Vec3.atLowerCornerOf(targetDirection.getUnitVec3i()) .scale(progress * .75f)); } @@ -74,8 +74,7 @@ public void renderItems(MechanicalCrafterBlockEntity be, float partialTicks, Pos ms.pushPose(); ms.translate(0, 0, -1 / 256f); ms.mulPose(Axis.YP.rotationDegrees(180)); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(stack, ItemDisplayContext.FIXED, light, overlay, ms, buffer, be.getLevel(), 0); ms.popPose(); } @@ -125,8 +124,7 @@ public void renderItems(MechanicalCrafterBlockEntity be, float partialTicks, Pos TransformStack.of(ms) .rotateYDegrees(180) .translate(0, 0, (x + y * 3 + offset * 9) / 1024f ); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(stack, ItemDisplayContext.FIXED, light, overlay, ms, buffer, be.getLevel(), 0); ms.popPose(); }); @@ -154,8 +152,7 @@ public void renderItems(MechanicalCrafterBlockEntity be, float partialTicks, Pos return; ms.pushPose(); ms.mulPose(Axis.YP.rotationDegrees(180)); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(stack, ItemDisplayContext.FIXED, light, overlay, ms, buffer, be.getLevel(), 0); ms.popPose(); }); @@ -167,7 +164,7 @@ public void renderItems(MechanicalCrafterBlockEntity be, float partialTicks, Pos public void renderFast(MechanicalCrafterBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light) { BlockState blockState = be.getBlockState(); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); if (!VisualizationManager.supportsVisualization(be.getLevel())) { SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState); diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCraftingRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCraftingRecipe.java index d9cefc803a..476eb9d867 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCraftingRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/MechanicalCraftingRecipe.java @@ -8,31 +8,55 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.foundation.mixin.accessor.ShapedRecipeAccessor; -import net.minecraft.core.NonNullList; +import java.util.List; +import java.util.Optional; + import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; +import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.NormalCraftingRecipe; +import net.minecraft.world.item.crafting.PlacementInfo; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapedRecipe; import net.minecraft.world.item.crafting.ShapedRecipePattern; import net.minecraft.world.level.Level; -public class MechanicalCraftingRecipe extends ShapedRecipe { +public class MechanicalCraftingRecipe extends NormalCraftingRecipe { + private final ShapedRecipePattern pattern; + private final ItemStackTemplate result; private final boolean acceptMirrored; public MechanicalCraftingRecipe(String groupIn, CraftingBookCategory category, ShapedRecipePattern pattern, ItemStack recipeOutputIn, boolean acceptMirrored) { - super(groupIn, category, pattern, recipeOutputIn, acceptMirrored); + this(new Recipe.CommonInfo(true), new CraftingRecipe.CraftingBookInfo(category, groupIn), pattern, + ItemStackTemplate.fromNonEmptyStack(recipeOutputIn), acceptMirrored); + } + + public MechanicalCraftingRecipe(Recipe.CommonInfo commonInfo, CraftingRecipe.CraftingBookInfo bookInfo, + ShapedRecipePattern pattern, ItemStackTemplate recipeOutputIn, boolean acceptMirrored) { + super(commonInfo, bookInfo); + this.pattern = pattern; + this.result = recipeOutputIn; this.acceptMirrored = acceptMirrored; } private static MechanicalCraftingRecipe fromShaped(ShapedRecipe recipe, boolean acceptMirrored) { - return new MechanicalCraftingRecipe(recipe.getGroup(), recipe.category(), ((ShapedRecipeAccessor) recipe).create$getPattern(), recipe.getResultItem(null), acceptMirrored); + return new MechanicalCraftingRecipe(new Recipe.CommonInfo(recipe.showNotification()), + new CraftingRecipe.CraftingBookInfo(recipe.category(), recipe.group()), + ((ShapedRecipeAccessor) recipe).create$getPattern(), + ((ShapedRecipeAccessor) recipe).create$getResult(), acceptMirrored); + } + + private ShapedRecipe asShapedRecipe() { + return new ShapedRecipe(commonInfo, bookInfo, pattern, result); } @Override @@ -40,7 +64,7 @@ public boolean matches(CraftingInput input, Level worldIn) { if (!(input instanceof MechanicalCraftingInput)) return false; if (acceptsMirrored()) - return super.matches(input, worldIn); + return pattern.matches(input); // From ShapedRecipe except the symmetry for (int i = 0; i <= input.width() - this.getWidth(); ++i) @@ -52,17 +76,18 @@ public boolean matches(CraftingInput input, Level worldIn) { // From ShapedRecipe private boolean matchesSpecific(CraftingInput input, int p_77573_2_, int p_77573_3_) { - NonNullList ingredients = getIngredients(); + List> ingredients = getIngredients(); int width = getWidth(); int height = getHeight(); for (int i = 0; i < input.width(); ++i) { for (int j = 0; j < input.height(); ++j) { int k = i - p_77573_2_; int l = j - p_77573_3_; - Ingredient ingredient = Ingredient.EMPTY; + Optional ingredient = Optional.empty(); if (k >= 0 && l >= 0 && k < width && l < height) ingredient = ingredients.get(k + l * width); - if (!ingredient.test(input.getItem(i + j * input.width()))) + ItemStack stack = input.getItem(i + j * input.width()); + if (ingredient.isPresent() ? !ingredient.get().test(stack) : !stack.isEmpty()) return false; } } @@ -70,8 +95,31 @@ private boolean matchesSpecific(CraftingInput input, int p_77573_2_, int p_77573 } @Override - public RecipeType getType() { - return AllRecipeTypes.MECHANICAL_CRAFTING.getType(); + public ItemStack assemble(CraftingInput input) { + return result.create(); + } + + public List> getIngredients() { + return pattern.ingredients(); + } + + @Override + protected PlacementInfo createPlacementInfo() { + return PlacementInfo.createFromOptionals(pattern.ingredients()); + } + + public int getWidth() { + return pattern.width(); + } + + public int getHeight() { + return pattern.height(); + } + + @Override + @SuppressWarnings("unchecked") + public RecipeType getType() { + return (RecipeType) (RecipeType) AllRecipeTypes.MECHANICAL_CRAFTING.getType(); } @Override @@ -80,7 +128,7 @@ public boolean isSpecial() { } @Override - public @NotNull RecipeSerializer getSerializer() { + public @NotNull RecipeSerializer getSerializer() { return AllRecipeTypes.MECHANICAL_CRAFTING.getSerializer(); } @@ -88,26 +136,22 @@ public boolean acceptsMirrored() { return acceptMirrored; } - public static class Serializer implements RecipeSerializer { + public static class Serializer { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - RecipeSerializer.SHAPED_RECIPE.codec().forGetter(t -> t), + ShapedRecipe.SERIALIZER.codec().forGetter(MechanicalCraftingRecipe::asShapedRecipe), Codec.BOOL.fieldOf("accept_mirrored").forGetter(MechanicalCraftingRecipe::acceptsMirrored) ).apply(instance, MechanicalCraftingRecipe::fromShaped)); public static final StreamCodec STREAM_CODEC = StreamCodec.composite( - ShapedRecipe.Serializer.STREAM_CODEC, i -> i, + ShapedRecipe.STREAM_CODEC, MechanicalCraftingRecipe::asShapedRecipe, ByteBufCodecs.BOOL, i -> i.acceptMirrored, MechanicalCraftingRecipe::fromShaped ); - @Override - public @NotNull MapCodec codec() { - return CODEC; - } + private static final RecipeSerializer SERIALIZER = new RecipeSerializer<>(CODEC, STREAM_CODEC); - @Override - public @NotNull StreamCodec streamCodec() { - return STREAM_CODEC; + public static RecipeSerializer create() { + return SERIALIZER; } } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/crafter/RecipeGridHandler.java b/src/main/java/com/simibubi/create/content/kinetics/crafter/RecipeGridHandler.java index 3378498039..e93de5ebf7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crafter/RecipeGridHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crafter/RecipeGridHandler.java @@ -15,22 +15,22 @@ import com.google.common.base.Predicates; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllRecipeTypes; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; -import net.minecraft.core.RegistryAccess; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.FireworkRocketRecipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -143,16 +143,17 @@ public static ItemStack tryToApplyRecipe(Level world, GroupedItems items) { items.calcStats(); CraftingInput craftingInput = MechanicalCraftingInput.of(items); ItemStack result = null; - RegistryAccess registryAccess = world.registryAccess(); + RecipeManager recipeManager = world.getServer() == null ? null : world.getServer() + .getRecipeManager(); if (AllConfigs.server().recipes.allowRegularCraftingInCrafter.get()) - result = world.getRecipeManager() + result = recipeManager == null ? null : recipeManager .getRecipeFor(RecipeType.CRAFTING, craftingInput, world) .filter(r -> isRecipeAllowed(r, craftingInput)) - .map(r -> r.value().assemble(craftingInput, registryAccess)) + .map(r -> r.value().assemble(craftingInput)) .orElse(null); if (result == null) result = AllRecipeTypes.MECHANICAL_CRAFTING.find(craftingInput, world) - .map(r -> r.value().assemble(craftingInput, registryAccess)) + .map(r -> r.value().assemble(craftingInput)) .orElse(null); return result; } @@ -199,7 +200,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries) { CompoundTag entry = new CompoundTag(); entry.putInt("x", pair.getKey()); entry.putInt("y", pair.getValue()); - entry.put("item", stack.saveOptional(registries)); + entry.put("item", LegacyItemStackNbtBridge.saveOptional(stack, registries)); gridNBT.add(entry); }); nbt.put("Grid", gridNBT); @@ -207,12 +208,12 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries) { public static GroupedItems read(CompoundTag nbt, HolderLookup.Provider registries) { GroupedItems items = new GroupedItems(); - ListTag gridNBT = nbt.getList("Grid", Tag.TAG_COMPOUND); + ListTag gridNBT = nbt.getListOrEmpty("Grid"); gridNBT.forEach(inbt -> { CompoundTag entry = (CompoundTag) inbt; - int x = entry.getInt("x"); - int y = entry.getInt("y"); - ItemStack stack = ItemStack.parseOptional(registries, entry.getCompound("item")); + int x = entry.getIntOr("x", 0); + int y = entry.getIntOr("y", 0); + ItemStack stack = LegacyItemStackNbtBridge.parseOptional(registries, entry.getCompoundOrEmpty("item")); items.grid.put(Pair.of(x, y), stack); }); return items; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlock.java b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlock.java index 41c3c49464..40a75f32e4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlock.java @@ -11,10 +11,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -22,7 +24,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -57,13 +61,13 @@ public int getRotationSpeed() { @Override public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isSpectator()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; withBlockEntityDo(level, pos, be -> be.turn(player.isShiftKeyDown())); if (!stack.is(AllItems.EXTENDO_GRIP.get())) @@ -73,7 +77,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev .getFoodLevel() == 0) AllAdvancements.HAND_CRANK.awardTo(player); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -97,11 +101,11 @@ public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction blockFacing = state.getValue(FACING); if (fromPos.equals(pos.relative(blockFacing.getOpposite()))) { if (!canSurvive(state, worldIn, pos)) { @@ -111,9 +115,8 @@ public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlockEntity.java index ed567506c2..5e9af03043 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankBlockEntity.java @@ -8,9 +8,9 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -20,7 +20,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class HandCrankBlockEntity extends GeneratingKineticBlockEntity { @@ -44,7 +43,7 @@ public void turn(boolean back) { inUse = 10; this.backwards = back; - if (update && !level.isClientSide) + if (update && !level.isClientSide()) updateGeneratedRotation(); } @@ -77,8 +76,8 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - inUse = compound.getInt("InUse"); - backwards = compound.getBoolean("Backwards"); + inUse = compound.getIntOr("InUse", 0); + backwards = compound.getBooleanOr("Backwards", false); super.read(compound, registries, clientPacket); } @@ -93,22 +92,18 @@ public void tick() { if (inUse > 0) { inUse--; - if (inUse == 0 && !level.isClientSide) { + if (inUse == 0 && !level.isClientSide()) { sequenceContext = null; updateGeneratedRotation(); } } } - @OnlyIn(Dist.CLIENT) public SuperByteBuffer getRenderedHandle() { - BlockState blockState = getBlockState(); - Direction facing = blockState.getOptionalValue(HandCrankBlock.FACING) - .orElse(Direction.UP); - return CachedBuffers.partialFacing(AllPartialModels.HAND_CRANK_HANDLE, blockState, facing.getOpposite()); + // TODO 26.2: port hand crank handle rendering to the new baked model pipeline. + return null; } - @OnlyIn(Dist.CLIENT) public boolean shouldRenderShaft() { return true; } @@ -120,7 +115,6 @@ protected Block getStressConfigKey() { } @Override - @OnlyIn(Dist.CLIENT) public void tickAudio() { super.tickAudio(); if (inUse > 0 && AnimationTickHolder.getTicks() % 10 == 0) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankRenderer.java index d30d6462ed..6985c39b08 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankRenderer.java @@ -6,9 +6,9 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; @@ -30,7 +30,7 @@ protected void renderSafe(HandCrankBlockEntity be, float partialTicks, PoseStack Direction facing = be.getBlockState() .getValue(FACING); kineticRotationTransform(be.getRenderedHandle(), be, facing.getAxis(), AngleHelper.rad(be.getIndependentAngle(partialTicks)), light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java index 914c6bf98a..1240b6d4a3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/HandCrankVisual.java @@ -2,7 +2,7 @@ import java.util.function.Consumer; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import org.joml.Quaternionf; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlock.java b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlock.java index 212d227b3c..ef696790b3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlock.java @@ -9,9 +9,10 @@ import com.simibubi.create.foundation.utility.BlockHelper; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -73,9 +74,7 @@ public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (!(pNewState.getBlock() instanceof ValveHandleBlock)) - super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { } public boolean clicked(Level level, BlockPos pos, BlockState blockState, Player player, InteractionHand hand) { @@ -83,7 +82,7 @@ public boolean clicked(Level level, BlockPos pos, BlockState blockState, Player DyeColor color = DyeColor.getColor(heldItem); if (color != null && color != this.color) { - if (!level.isClientSide) + if (!level.isClientSide()) level.setBlockAndUpdate(pos, BlockHelper.copyProperties(blockState, AllBlocks.DYED_VALVE_HANDLES.get(color) .getDefaultState())); @@ -98,8 +97,8 @@ public boolean clicked(Level level, BlockPos pos, BlockState blockState, Player } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlockEntity.java index 5f14a1269c..7fb023c013 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleBlockEntity.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -37,7 +37,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ValveHandleBlockEntity extends HandCrankBlockEntity { @@ -76,9 +75,9 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - totalUseTicks = compound.getInt("TotalUseTicks"); - startAngle = compound.getInt("StartAngle"); - targetAngle = compound.getInt("TargetAngle"); + totalUseTicks = compound.getIntOr("TotalUseTicks", 0); + startAngle = compound.getIntOr("StartAngle", 0); + targetAngle = compound.getIntOr("TargetAngle", 0); } @Override @@ -115,7 +114,7 @@ public boolean activate(boolean sneak) { return false; if (inUse > 0 || cooldown > 0) return false; - if (level.isClientSide) + if (level.isClientSide()) return true; // Always overshoot, target will stop early @@ -143,13 +142,11 @@ protected void copySequenceContextFrom(KineticBlockEntity sourceBE) { } @Override - @OnlyIn(Dist.CLIENT) public SuperByteBuffer getRenderedHandle() { return CachedBuffers.block(getBlockState()); } @Override - @OnlyIn(Dist.CLIENT) public boolean shouldRenderShaft() { return false; } @@ -192,7 +189,7 @@ public MutableComponent formatValue(ValueSettings settings) { @Override public void onShortInteract(Player player, InteractionHand hand, Direction side, BlockHitResult hitResult) { - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; BlockState blockState = blockEntity.getBlockState(); if (blockState.getBlock() instanceof ValveHandleBlock vhb) diff --git a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleVisual.java b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleVisual.java index c414856204..6529e56dc8 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crank/ValveHandleVisual.java @@ -2,7 +2,7 @@ import java.util.function.Consumer; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import org.joml.Quaternionf; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlock.java index f1bb554e50..5a7f90c481 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlock.java @@ -7,12 +7,15 @@ import com.simibubi.create.AllShapes; import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; @@ -37,7 +40,7 @@ public Axis getRotationAxis(BlockState state) { @Override public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override @@ -46,15 +49,13 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, Block } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { for (Direction d : Iterate.directions) { if (d.getAxis() == state.getValue(AXIS)) continue; if (AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(worldIn.getBlockState(pos.relative(d)))) worldIn.removeBlock(pos.relative(d), isMoving); } - - super.onRemove(state, worldIn, pos, newState, isMoving); } public void updateControllers(BlockState state, Level world, BlockPos pos, Direction side) { @@ -93,8 +94,8 @@ public void updateControllers(BlockState state, Level world, BlockPos pos, Direc wheelAxis == Axis.Z ? 1 : 0).cross( new Vec3(sideAxis == Axis.X ? 1 : 0, sideAxis == Axis.Y ? 1 : 0, sideAxis == Axis.Z ? 1 : 0)); - controllerNewDirection = Direction.getNearest(controllerDirVec.x * controllerADO, - controllerDirVec.y * controllerADO, controllerDirVec.z * controllerADO); + controllerNewDirection = LegacyDirectionBridge.nearest(controllerDirVec.x * controllerADO, + controllerDirVec.y * controllerADO, controllerDirVec.z * controllerADO, Direction.NORTH); controllerShouldBeValid = true; } @@ -127,7 +128,8 @@ public void updateControllers(BlockState state, Level world, BlockPos pos, Direc } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (entityIn.getY() < pos.getY() + 1.25f || !entityIn.onGround()) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlockEntity.java index 64bbabdff3..b0acdc9fc7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelBlockEntity.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.damagesource.DamageSource; diff --git a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlock.java b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlock.java index ec7ecb49f6..8844dd13f1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlock.java @@ -11,21 +11,25 @@ import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.Difficulty; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; @@ -68,7 +72,9 @@ protected void createBlockStateDefinition(Builder builder) { super.createBlockStateDefinition(builder); } - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { + @Override + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (!state.getValue(VALID)) return; @@ -110,8 +116,8 @@ public void checkEntityForProcessing(Level worldIn, BlockPos pos, Entity entityI } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); // Moved to onEntityCollision to allow for omnidirectional input } @@ -128,9 +134,9 @@ public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomS } @Override - public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { - updateSpeed(stateIn, worldIn, currentPos); + public BlockState updateShape(BlockState stateIn, LevelReader worldIn, ScheduledTickAccess ticks, BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { + if (worldIn instanceof LevelAccessor accessor) + updateSpeed(stateIn, accessor, currentPos); return stateIn; } @@ -190,8 +196,8 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, Block } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasBlockEntity() || state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (!state.hasBlockEntity()) return; withBlockEntityDo(worldIn, pos, be -> ItemHelper.dropContents(worldIn, pos, be.inventory)); diff --git a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlockEntity.java index 61427c496e..19ab9aae13 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/crusher/CrushingWheelControllerBlockEntity.java @@ -14,13 +14,14 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.damageTypes.CreateDamageSources; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.sound.SoundScapes; import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -39,6 +40,7 @@ import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -46,7 +48,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.wrapper.RecipeWrapper; @@ -75,9 +76,9 @@ public boolean isItemValid(int slot, ItemStack stack) { public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.CRUSHING_WHEEL_CONTROLLER.get(), - (be, context) -> be.inventory + (be, context) -> new LegacyItemTransferAdapter(be.inventory) ); } @@ -112,7 +113,7 @@ public void tick() { if (crushingspeed == 0) return; - if (level.isClientSide) + if (level.isClientSide()) CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> this.tickAudio()); float speed = crushingspeed * 4; @@ -138,7 +139,7 @@ public void tick() { inventory.remainingTime -= processingSpeed; spawnParticles(inventory.getStackInSlot(0)); - if (level.isClientSide) + if (level.isClientSide()) return; if (inventory.remainingTime < 20 && !inventory.appliedRecipe) { @@ -190,7 +191,7 @@ public void tick() { ItemEntity entityIn = new ItemEntity(level, outPos.x, outPos.y, outPos.z, stack); entityIn.setDeltaMovement(outSpeed); entityIn.getPersistentData() - .put("BypassCrushingWheel", NbtUtils.writeBlockPos(worldPosition)); + .put("BypassCrushingWheel", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(worldPosition)); level.addFreshEntity(entityIn); } inventory.clear(); @@ -223,7 +224,7 @@ public void tick() { // crushers, , facing.getAxis() == Axis.Z ? movement : zMotion)); // Or they'll only get their feet crushed. - if (level.isClientSide) + if (level.isClientSide()) return; if (!(processingEntity instanceof ItemEntity itemEntity)) { @@ -264,7 +265,6 @@ public void tick() { } } - @OnlyIn(Dist.CLIENT) public void tickAudio() { float pitch = Mth.clamp((crushingspeed / 256f) + .45f, .85f, 1f); if (entityUUID == null && inventory.getStackInSlot(0) @@ -291,9 +291,9 @@ protected void spawnParticles(ItemStack stack) { particleData = new BlockParticleOption(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() .defaultBlockState()); else - particleData = new ItemParticleOption(ParticleTypes.ITEM, stack); + particleData = new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)); - RandomSource r = level.random; + RandomSource r = level.getRandom(); for (int i = 0; i < 4; i++) level.addParticle(particleData, worldPosition.getX() + r.nextFloat(), worldPosition.getY() + r.nextFloat(), worldPosition.getZ() + r.nextFloat(), 0, 0, 0); @@ -309,14 +309,14 @@ private void applyRecipe() { inventory.clear(); for (int roll = 0; roll < rolls; roll++) { List rolledResults = recipe.get().value() - .rollResults(level.random); + .rollResults(level.getRandom()); for (ItemStack stack : rolledResults) { ItemHelper.addToList(stack, list); } } - if (input.hasCraftingRemainingItem()) { - ItemHelper.addToList(input.getCraftingRemainingItem(), list); - } + ItemStackTemplate craftingRemainder = input.getCraftingRemainder(); + if (craftingRemainder != null) + ItemHelper.addToList(craftingRemainder.create(), list); for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) inventory.setStackInSlot(slot + 1, list.get(slot)); } else { @@ -335,7 +335,7 @@ public Optional>> findRecip @Override public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (hasEntity()) - compound.put("Entity", NbtUtils.createUUID(entityUUID)); + compound.put("Entity", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(entityUUID)); compound.put("Inventory", inventory.serializeNBT(registries)); compound.putFloat("Speed", crushingspeed); super.write(compound, registries, clientPacket); @@ -345,11 +345,11 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); if (compound.contains("Entity") && !isOccupied()) { - entityUUID = NbtUtils.loadUUID(NBTHelper.getINBT(compound, "Entity")); + entityUUID = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(NBTHelper.getINBT(compound, "Entity")); this.searchForEntity = true; } - crushingspeed = compound.getFloat("Speed"); - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); + crushingspeed = compound.getFloatOr("Speed", 0); + inventory.deserializeNBT(registries, compound.getCompoundOrEmpty("Inventory")); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java index 4433a56e99..9b56139695 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/BeltDeployerCallbacks.java @@ -140,7 +140,9 @@ public static void activate(TransportedItemStack transported, TransportedItemSta heldItem.hurtAndBreak(1, blockEntity.player, EquipmentSlot.MAINHAND); } else { Player player = blockEntity.player; - ItemStack leftover = heldItem.getCraftingRemainingItem(); + ItemStack leftover = heldItem.getItem() + .getCraftingRemainder() + .create(); heldItem.shrink(1); if (heldItem.isEmpty()) { player.setItemInHand(InteractionHand.MAIN_HAND, leftover); @@ -158,7 +160,7 @@ public static void activate(TransportedItemStack transported, TransportedItemSta BlockPos pos = blockEntity.getBlockPos(); Level world = blockEntity.getLevel(); if (heldItem.isEmpty()) - world.playSound(null, pos, SoundEvents.ITEM_BREAK, SoundSource.BLOCKS, .25f, 1); + world.playSound(null, pos, SoundEvents.ITEM_BREAK.value(), SoundSource.BLOCKS, .25f, 1.0f); world.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.BLOCKS, .25f, .75f); if (recipe instanceof SandPaperPolishingRecipe) AllSoundEvents.SANDING_SHORT.playOnServer(world, pos, .35f, 1f); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java index 2671bc025d..a9bcaef4c2 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerActorVisual.java @@ -19,10 +19,10 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerApplicationRecipe.java index 51874af8ad..68b6974dec 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerApplicationRecipe.java @@ -11,16 +11,17 @@ import com.simibubi.create.content.processing.sequenced.IAssemblyRecipe; import com.simibubi.create.foundation.utility.CreateLang; -import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import net.minecraft.util.context.ContextMap; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.ItemLike; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class DeployerApplicationRecipe extends ItemApplicationRecipe implements IAssemblyRecipe { @@ -34,18 +35,22 @@ protected int getMaxOutputCount() { } public static RecipeHolder convert(RecipeHolder sandpaperRecipe) { - ResourceLocation id = ResourceLocation.fromNamespaceAndPath( - sandpaperRecipe.id().getNamespace(), - sandpaperRecipe.id().getPath() + "_using_deployer" - ); + Identifier id = sandpaperRecipe.id() + .identifier() + .withSuffix("_using_deployer"); DeployerApplicationRecipe recipe = new ItemApplicationRecipe.Builder<>(DeployerApplicationRecipe::new, id) - .require(sandpaperRecipe.value().getIngredients() + .require(sandpaperRecipe.value().placementInfo().ingredients() .get(0)) .require(AllItemTags.SANDPAPER.tag) - .output(sandpaperRecipe.value().getResultItem(Minecraft.getInstance().level.registryAccess())) + .output(sandpaperRecipe.value().display() + .stream() + .findFirst() + .map(display -> display.result() + .resolveForFirstStack(ContextMap.EMPTY)) + .orElse(ItemStack.EMPTY)) .build(); - return new RecipeHolder<>(id, recipe); + return new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, id), recipe); } @Override @@ -54,15 +59,17 @@ public void addAssemblyIngredients(List list) { } @Override - @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { - ItemStack[] matchingStacks = ingredients.get(1) - .getItems(); - if (matchingStacks.length == 0) { + ItemStack matchingStack = ingredients.get(1) + .items() + .findFirst() + .map(ItemStack::new) + .orElse(ItemStack.EMPTY); + if (matchingStack.isEmpty()) { return Component.literal("Invalid"); } return CreateLang.translateDirect("recipe.assembly.deploying_item", - Component.translatable(matchingStacks[0].getDescriptionId()).getString()); + matchingStack.getHoverName().getString()); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlock.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlock.java index d20f911283..e754c950aa 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlock.java @@ -13,16 +13,16 @@ import com.simibubi.create.content.processing.AssemblyOperatorUseContext; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -32,6 +32,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.PushReaction; @@ -42,10 +43,9 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class DeployerBlock extends DirectionalAxisKineticBlock implements IBE { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public DeployerBlock(Properties properties) { super(properties); @@ -69,13 +69,13 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter worldIn, Block @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { Vec3 normal = Vec3.atLowerCornerOf(state.getValue(FACING) - .getNormal()); + .getUnitVec3i()); Vec3 location = context.getClickLocation() .subtract(Vec3.atCenterOf(context.getClickedPos()) .subtract(normal.scale(.5))) .multiply(normal); if (location.length() > .75f) { - if (!context.getLevel().isClientSide) + if (!context.getLevel().isClientSide()) withBlockEntityDo(context.getLevel(), context.getClickedPos(), DeployerBlockEntity::changeMode); return InteractionResult.SUCCESS; } @@ -90,37 +90,37 @@ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEnt } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!isMoving && !state.is(newState.getBlock())) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (!isMoving) withBlockEntityDo(worldIn, pos, DeployerBlockEntity::discardPlayer); - super.onRemove(state, worldIn, pos, newState, isMoving); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { ItemStack heldByPlayer = stack.copy(); - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!player.isShiftKeyDown() && player.mayBuild()) { if (placementHelper.matchesItem(heldByPlayer) && placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) heldByPlayer.getItem(), player, hand, hitResult) .consumesAction()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (AllItems.WRENCH.isIn(heldByPlayer)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; Vec3 normal = Vec3.atLowerCornerOf(state.getValue(FACING) - .getNormal()); + .getUnitVec3i()); Vec3 location = hitResult.getLocation() .subtract(Vec3.atCenterOf(pos) .subtract(normal.scale(.5))) .multiply(normal); if (location.length() < .75f) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, be -> { ItemStack heldByDeployer = be.player.getMainHandItem() @@ -133,7 +133,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev be.notifyUpdate(); }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -153,8 +153,7 @@ public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldS } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, - boolean p_220069_6_) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { withBlockEntityDo(world, pos, DeployerBlockEntity::redstoneUpdate); } @@ -171,8 +170,7 @@ protected Direction getFacingForPlacement(BlockPlaceContext context) { return super.getFacingForPlacement(context); } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java index abc810acd2..9163a48588 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerBlockEntity.java @@ -23,28 +23,31 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; +import net.minecraft.util.ProblemReporter; import net.minecraft.world.Clearable; import net.minecraft.world.InteractionHand; +import net.minecraft.world.ItemStackWithSlot; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; @@ -58,12 +61,13 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.TagValueOutput; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.common.NeoForge; @@ -84,7 +88,7 @@ public class DeployerBlockEntity extends KineticBlockEntity implements Clearable protected boolean redstoneLocked; protected UUID owner; private IItemHandlerModifiable invHandler; - private ListTag deferredInventoryList; + private CompoundTag deferredInventoryTag; private LerpedFloat animatedOffset; @@ -110,12 +114,12 @@ public DeployerBlockEntity(BlockEntityType type, BlockPos pos, BlockState sta public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.DEPLOYER.get(), (be, context) -> { if (be.invHandler == null) be.initHandler(); - return be.invHandler; + return new LegacyItemTransferAdapter(be.invHandler); } ); } @@ -146,10 +150,11 @@ private void initHandler() { return; if (level instanceof ServerLevel sLevel) { player = new DeployerFakePlayer(sLevel, owner); - if (deferredInventoryList != null) { + if (deferredInventoryTag != null) { player.getInventory() - .load(deferredInventoryList); - deferredInventoryList = null; + .load(TagValueInput.create(ProblemReporter.DISCARDING, sLevel.registryAccess(), deferredInventoryTag) + .listOrEmpty("Inventory", ItemStackWithSlot.CODEC)); + deferredInventoryTag = null; heldItem = player.getMainHandItem(); sendData(); } @@ -175,7 +180,7 @@ public void tick() { if (getSpeed() == 0) return; - if (!level.isClientSide && player != null && player.blockBreakingProgress != null) { + if (!level.isClientSide() && player != null && player.blockBreakingProgress != null) { if (level.isEmptyBlock(player.blockBreakingProgress.getKey())) { level.destroyBlockProgress(player.getId(), player.blockBreakingProgress.getKey(), -1); player.blockBreakingProgress = null; @@ -185,7 +190,7 @@ public void tick() { timer -= getTimerSpeed(); return; } - if (level.isClientSide) + if (level.isClientSide()) return; if (player == null) return; @@ -367,31 +372,32 @@ protected Vec3 getMovementVector() { if (!AllBlocks.DEPLOYER.has(getBlockState())) return Vec3.ZERO; return Vec3.atLowerCornerOf(getBlockState().getValue(FACING) - .getNormal()); + .getUnitVec3i()); } @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { state = NBTHelper.readEnum(compound, "State", State.class); mode = NBTHelper.readEnum(compound, "Mode", Mode.class); - timer = compound.getInt("Timer"); - redstoneLocked = compound.getBoolean("Powered"); + timer = compound.getIntOr("Timer", 0); + redstoneLocked = compound.getBooleanOr("Powered", false); if (compound.contains("Owner")) - owner = compound.getUUID("Owner"); + owner = LegacyNbtUtilsBridge.loadUUID(compound.get("Owner")); - deferredInventoryList = compound.getList("Inventory", Tag.TAG_COMPOUND); - overflowItems = NBTHelper.readItemList(compound.getList("Overflow", Tag.TAG_COMPOUND), registries); - if (compound.contains("HeldItem")) { - heldItem = ItemStack.parseOptional(registries, compound.getCompound("HeldItem")); - } + deferredInventoryTag = new CompoundTag(); + deferredInventoryTag.put("Inventory", compound.getListOrEmpty("Inventory")); + overflowItems = NBTHelper.readItemList(compound.getListOrEmpty("Overflow"), registries); + if (compound.contains("HeldItem")) + heldItem = LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompoundOrEmpty("HeldItem")); super.read(compound, registries, clientPacket); if (!clientPacket) return; - fistBump = compound.getBoolean("Fistbump"); - reach = compound.getFloat("Reach"); + fistBump = compound.getBooleanOr("Fistbump", false); + reach = compound.getFloatOr("Reach", 0); if (compound.contains("Particle")) { - ItemStack particleStack = ItemStack.parseOptional(registries, compound.getCompound("Particle")); + ItemStack particleStack = + LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompoundOrEmpty("Particle")); SandPaperItem.spawnParticles(VecHelper.getCenterOf(worldPosition) .add(getMovementVector().scale(reach + 1)), particleStack, this.level); } @@ -404,17 +410,14 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putInt("Timer", timer); compound.putBoolean("Powered", redstoneLocked); if (owner != null) - compound.putUUID("Owner", owner); + compound.put("Owner", LegacyNbtUtilsBridge.createUUID(owner)); if (player != null) { - ListTag invNBT = new ListTag(); - player.getInventory() - .save(invNBT); - compound.put("Inventory", invNBT); - compound.put("HeldItem", player.getMainHandItem().saveOptional(registries)); + compound.put("Inventory", savePlayerInventory(registries).getListOrEmpty("Inventory")); + compound.put("HeldItem", LegacyItemStackNbtBridge.saveOptional(player.getMainHandItem(), registries)); compound.put("Overflow", NBTHelper.writeItemList(overflowItems, registries)); - } else if (deferredInventoryList != null) { - compound.put("Inventory", deferredInventoryList); + } else if (deferredInventoryTag != null) { + compound.put("Inventory", deferredInventoryTag.getListOrEmpty("Inventory")); } super.write(compound, registries, clientPacket); @@ -425,13 +428,20 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putFloat("Reach", reach); if (player == null) return; - compound.put("HeldItem", player.getMainHandItem().saveOptional(registries)); + compound.put("HeldItem", LegacyItemStackNbtBridge.saveOptional(player.getMainHandItem(), registries)); if (player.spawnedItemEffects != null) { - compound.put("Particle", player.spawnedItemEffects.saveOptional(registries)); + compound.put("Particle", LegacyItemStackNbtBridge.saveOptional(player.spawnedItemEffects, registries)); player.spawnedItemEffects = null; } } + private CompoundTag savePlayerInventory(HolderLookup.Provider registries) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + player.getInventory() + .save(output.list("Inventory", ItemStackWithSlot.CODEC)); + return output.buildResult(); + } + @Override public void writeSafe(CompoundTag tag, HolderLookup.Provider registries) { NBTHelper.writeEnum(tag, "Mode", mode); @@ -443,7 +453,7 @@ private IItemHandlerModifiable createHandler() { } public void redstoneUpdate() { - if (level.isClientSide) + if (level.isClientSide()) return; boolean blockPowered = level.hasNeighborSignal(worldPosition); if (blockPowered == redstoneLocked) @@ -452,7 +462,6 @@ public void redstoneUpdate() { sendData(); } - @OnlyIn(Dist.CLIENT) public PartialModel getHandPose() { return mode == Mode.PUNCH ? AllPartialModels.DEPLOYER_HAND_PUNCHING : heldItem.isEmpty() ? AllPartialModels.DEPLOYER_HAND_POINTING : AllPartialModels.DEPLOYER_HAND_HOLDING; @@ -513,7 +522,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak .forGoggles(tooltip); if (!heldItem.isEmpty()) - CreateLang.translate("tooltip.deployer.contains", Component.translatable(heldItem.getDescriptionId()) + CreateLang.translate("tooltip.deployer.contains", heldItem.getHoverName() .getString(), heldItem.getCount()) .style(ChatFormatting.GREEN) .forGoggles(tooltip); @@ -527,7 +536,6 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak return true; } - @OnlyIn(Dist.CLIENT) public float getHandOffset(float partialTicks) { if (isVirtual()) return animatedOffset.getValue(partialTicks); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java index 7445666ce0..afed3a7251 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFakePlayer.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.kinetics.deployer; -import java.util.Objects; import java.util.OptionalInt; import java.util.UUID; @@ -32,7 +31,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -54,7 +52,7 @@ public class DeployerFakePlayer extends FakePlayer { private UUID owner; public DeployerFakePlayer(ServerLevel world, @Nullable UUID owner) { - super(world, new DeployerGameProfile(fallbackID, "Deployer", owner)); + super(world, createProfile(owner)); this.owner = owner; } @@ -69,7 +67,6 @@ public Component getDisplayName() { } @Override - @OnlyIn(Dist.CLIENT) public EntityDimensions getDefaultDimensions(Pose pose) { return super.getDefaultDimensions(pose).withEyeHeight(0); } @@ -89,7 +86,6 @@ public boolean canEat(boolean ignoreHunger) { return false; } - @Override public ItemStack eat(Level level, ItemStack food, FoodProperties foodProperties) { food.shrink(1); return food; @@ -130,7 +126,7 @@ protected boolean doesEmitEquipEvent(EquipmentSlot p_217035_) { @Override public void remove(RemovalReason p_150097_) { - if (blockBreakingProgress != null && !level().isClientSide) + if (blockBreakingProgress != null && !level().isClientSide()) level().destroyBlockProgress(getId(), blockBreakingProgress.getKey(), -1); super.remove(p_150097_); } @@ -160,46 +156,10 @@ public static void entitiesDontRetaliate(LivingChangeTargetEvent event) { } } - // Credit to Mekanism for this approach. Helps fake players get past claims and - // protection by other mods - private static class DeployerGameProfile extends GameProfile { - - private UUID owner; - - public DeployerGameProfile(UUID id, String name, UUID owner) { - super(id, name); - this.owner = owner; - } - - @Override - public UUID getId() { - return owner == null ? super.getId() : owner; - } - - @Override - public String getName() { - if (owner == null) - return super.getName(); - String lastKnownUsername = UsernameCache.getLastKnownUsername(owner); - return lastKnownUsername == null ? super.getName() : lastKnownUsername; - } - - @Override - public boolean equals(final Object o) { - if (this == o) - return true; - if (!(o instanceof GameProfile otherProfile)) - return false; - return Objects.equals(getId(), otherProfile.getId()) && Objects.equals(getName(), otherProfile.getName()); - } - - @Override - public int hashCode() { - UUID id = getId(); - String name = getName(); - int result = id == null ? 0 : id.hashCode(); - result = 31 * result + (name == null ? 0 : name.hashCode()); - return result; - } + private static GameProfile createProfile(@Nullable UUID owner) { + if (owner == null) + return new GameProfile(fallbackID, "Deployer"); + String lastKnownUsername = UsernameCache.getLastKnownUsername(owner); + return new GameProfile(owner, lastKnownUsername == null ? "Deployer" : lastKnownUsername); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFilterSlot.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFilterSlot.java index dabaf1251c..1e4427ba0e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerFilterSlot.java @@ -4,8 +4,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -22,7 +22,7 @@ public Vec3 getLocalOffset(LevelAccessor level, BlockPos pos, BlockState state) vec = VecHelper.rotateCentered(vec, AngleHelper.horizontalAngle(getSide()), Axis.Y); vec = VecHelper.rotateCentered(vec, AngleHelper.verticalAngle(getSide()), Axis.X); - vec = vec.subtract(Vec3.atLowerCornerOf(facing.getNormal()) + vec = vec.subtract(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(2 / 16f)); return vec; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java index 8e0bc3c6ee..a9c256786f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerHandler.java @@ -21,8 +21,9 @@ import com.simibubi.create.content.trains.track.ITrackBlock; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; @@ -34,14 +35,14 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.npc.villager.AbstractVillager; import net.minecraft.world.entity.player.Player; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; @@ -72,7 +73,7 @@ import net.neoforged.neoforge.common.CommonHooks; import net.neoforged.neoforge.common.extensions.IBaseRailBlockExtension; -import net.neoforged.neoforge.common.util.TriState; +import net.minecraft.util.TriState; import net.neoforged.neoforge.event.EventHooks; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.LeftClickBlock; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.RightClickBlock; @@ -115,6 +116,11 @@ public BlockState getBlockState(BlockPos position) { return Blocks.BEDROCK.defaultBlockState(); return level.getBlockState(position); } + + @Override + public DifficultyInstance getCurrentDifficultyAt(BlockPos pos) { + return getLevel().getCurrentDifficultyAt(pos); + } } static boolean shouldActivate(ItemStack held, Level world, BlockPos targetPos, @Nullable Direction facing) { @@ -163,14 +169,14 @@ private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos Item item = stack.getItem(); // Check for entities - final ServerLevel level = player.serverLevel(); + final ServerLevel level = (ServerLevel) player.level(); List entities = level.getEntitiesOfClass(Entity.class, new AABB(clickedPos)) .stream() .filter(e -> !(e instanceof AbstractContraptionEntity)) .toList(); InteractionHand hand = InteractionHand.MAIN_HAND; if (!entities.isEmpty()) { - Entity entity = entities.get(level.random.nextInt(entities.size())); + Entity entity = entities.get(level.getRandom().nextInt(entities.size())); List capturedDrops = new ArrayList<>(); boolean success = false; entity.captureDrops(capturedDrops); @@ -183,7 +189,7 @@ private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos return; } if (cancelResult == null) { - if (entity.interact(player, hand) + if (entity.interact(player, hand, Vec3.ZERO) .consumesAction()) { if (entity instanceof AbstractVillager villager) { if (villager.getTradingPlayer() instanceof DeployerFakePlayer) @@ -196,7 +202,7 @@ private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos } if (!success && entity instanceof Player playerEntity) { if (stack.has(DataComponents.FOOD)) { - FoodProperties foodProperties = item.getFoodProperties(stack, player); + FoodProperties foodProperties = stack.get(DataComponents.FOOD); if (foodProperties != null && playerEntity.canEat(foodProperties.canAlwaysEat())) { ItemStack copy = stack.copy(); player.setItemInHand(hand, stack.finishUsingItem(level, playerEntity)); @@ -235,7 +241,7 @@ private static void activateInner(DeployerFakePlayer player, Vec3 vec, BlockPos BlockState clickedState = level.getBlockState(clickedPos); Direction face = result.getDirection(); if (face == null) - face = Direction.getNearest(extensionVector.x, extensionVector.y, extensionVector.z) + face = LegacyDirectionBridge.nearest(extensionVector.x, extensionVector.y, extensionVector.z, Direction.NORTH) .getOpposite(); // Left click @@ -349,15 +355,15 @@ && safeOnUse(clickedState, level, clickedPos, player, hand, result).consumesActi if (item instanceof BucketItem || item instanceof SandPaperItem) itemUseWorld = new ItemUseWorld(level, face, pos); - InteractionResultHolder onItemRightClick = item.use(itemUseWorld, player, hand); + InteractionResult onItemRightClick = stack.use(itemUseWorld, player, hand); - if (onItemRightClick.getResult().consumesAction() && item instanceof MobBucketItem bucketItem) + if (onItemRightClick.consumesAction() && item instanceof MobBucketItem bucketItem) bucketItem.checkExtraContent(player, level, stack, clickedPos); - ItemStack resultStack = onItemRightClick.getObject(); - if (resultStack != stack || resultStack.getCount() != stack.getCount() || resultStack.getUseDuration(player) > 0 - || resultStack.getDamageValue() != stack.getDamageValue()) { - player.setItemInHand(hand, onItemRightClick.getObject()); + if (onItemRightClick instanceof InteractionResult.Success success && success.wasItemInteraction()) { + ItemStack transformed = success.heldItemTransformedTo(); + if (transformed != null) + player.setItemInHand(hand, transformed); } if (stack.getItem() instanceof SandPaperItem && stack.has(AllDataComponents.SAND_PAPER_POLISHING)) { @@ -375,7 +381,7 @@ && safeOnUse(clickedState, level, clickedPos, player, hand, result).consumesActi public static boolean tryHarvestBlock(ServerPlayer player, ServerPlayerGameMode interactionManager, BlockPos pos) { // <> PlayerInteractionManager#tryHarvestBlock - ServerLevel world = player.serverLevel(); + ServerLevel world = (ServerLevel) player.level(); BlockState blockstate = world.getBlockState(pos); GameType gameType = interactionManager.getGameModeForPlayer(); @@ -404,7 +410,7 @@ public static boolean tryHarvestBlock(ServerPlayer player, ServerPlayerGameMode world.setBlock(pos, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL | Block.UPDATE_SUPPRESS_DROPS); world.setBlock(posUp, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL | Block.UPDATE_SUPPRESS_DROPS); } else { - if (!blockstate.onDestroyedByPlayer(world, pos, player, canHarvest, world.getFluidState(pos))) + if (!blockstate.onDestroyedByPlayer(world, pos, player, prevHeldItem, canHarvest, world.getFluidState(pos))) return true; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerItemHandler.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerItemHandler.java index 39963ae679..02685a561e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerItemHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerItemHandler.java @@ -38,7 +38,7 @@ public ItemStack getHeld() { public void set(ItemStack stack) { if (player == null) return; - if (be.getLevel().isClientSide) + if (be.getLevel().isClientSide()) return; player.setItemInHand(InteractionHand.MAIN_HAND, stack); be.setChanged(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java index fc1fab7ab3..7ad0bb0452 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovementBehaviour.java @@ -1,6 +1,5 @@ package com.simibubi.create.content.kinetics.deployer; -import java.util.Arrays; import java.util.List; import java.util.UUID; @@ -29,20 +28,20 @@ import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.levelWrappers.SchematicLevel; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Inventory; @@ -62,13 +61,13 @@ public class DeployerMovementBehaviour implements MovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(DeployerBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(2); } @Override public void visitNewPosition(MovementContext context, BlockPos pos) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; tryGrabbingItem(context); @@ -95,7 +94,7 @@ public void activate(MovementContext context, BlockPos pos, DeployerFakePlayer p } Vec3 facingVec = Vec3.atLowerCornerOf(context.state.getValue(DeployerBlock.FACING) - .getNormal()); + .getUnitVec3i()); facingVec = context.rotation.apply(facingVec); Vec3 vec = context.position.subtract(facingVec.scale(2)); @@ -118,7 +117,7 @@ public void activate(MovementContext context, BlockPos pos, DeployerFakePlayer p protected void checkForTrackPlacementAdvancement(MovementContext context, DeployerFakePlayer player) { if ((context.contraption instanceof MountedContraption || context.contraption instanceof CarriageContraption) && player.placedTracks && context.blockEntityData != null && context.blockEntityData.contains("Owner")) - AllAdvancements.SELF_DEPLOYING.awardTo(context.world.getPlayerByUUID(context.blockEntityData.getUUID("Owner"))); + AllAdvancements.SELF_DEPLOYING.awardTo(context.world.getPlayerByUUID(LegacyNbtUtilsBridge.getUUID(context.blockEntityData, "Owner"))); } protected void activateAsSchematicPrinter(MovementContext context, BlockPos pos, DeployerFakePlayer player, @@ -173,7 +172,7 @@ else if (blockState.getBlock() instanceof IBaseRailBlockExtension || blockState. @Override public void tick(MovementContext context) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; if (!context.stall) return; @@ -183,7 +182,7 @@ public void tick(MovementContext context) { Pair blockBreakingProgress = player.blockBreakingProgress; if (blockBreakingProgress != null) { - int timer = context.data.getInt("Timer"); + int timer = context.data.getIntOr("Timer", 0); if (timer < 20) { timer++; context.data.putInt("Timer", timer); @@ -200,7 +199,7 @@ public void tick(MovementContext context) { @Override public void cancelStall(MovementContext context) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; MovementBehaviour.super.cancelStall(context); @@ -215,7 +214,7 @@ public void cancelStall(MovementContext context) { @Override public void stopMoving(MovementContext context) { - if (context.world.isClientSide) + if (context.world.isClientSide()) return; DeployerFakePlayer player = getPlayer(context); @@ -223,8 +222,8 @@ public void stopMoving(MovementContext context) { return; cancelStall(context); - context.blockEntityData.put("Inventory", player.getInventory() - .save(new ListTag())); + context.blockEntityData.put("Inventory", + LegacyNbtUtilsBridge.saveInventory(player.getInventory(), context.world.registryAccess(), "Inventory")); player.discard(); } @@ -250,18 +249,17 @@ private void tryDisposeOfExcess(MovementContext context) { Inventory inv = player.getInventory(); FilterItemStack filter = context.getFilterFromBE(); - for (List list : Arrays.asList(inv.armor, inv.offhand, inv.items)) { - for (int i = 0; i < list.size(); ++i) { - ItemStack itemstack = list.get(i); - if (itemstack.isEmpty()) - continue; + int selectedSlot = inv.getSelectedSlot(); + for (int i = 0; i < inv.getContainerSize(); ++i) { + ItemStack itemstack = inv.getItem(i); + if (itemstack.isEmpty()) + continue; - if (list == inv.items && i == inv.selected && filter.test(context.world, itemstack)) - continue; + if (i == selectedSlot && filter.test(context.world, itemstack)) + continue; - collectOrDropItem(context, itemstack); - list.set(i, ItemStack.EMPTY); - } + collectOrDropItem(context, itemstack); + inv.setItem(i, ItemStack.EMPTY); } } @@ -270,19 +268,19 @@ public void writeExtraData(MovementContext context) { DeployerFakePlayer player = getPlayer(context); if (player == null) return; - context.data.put("HeldItem", player.getMainHandItem().saveOptional(context.world.registryAccess())); + context.data.put("HeldItem", LegacyItemStackNbtBridge.saveOptional(player.getMainHandItem(), context.world.registryAccess())); } private DeployerFakePlayer getPlayer(MovementContext context) { if (!(context.temporaryData instanceof DeployerFakePlayer) && context.world instanceof ServerLevel) { - UUID owner = context.blockEntityData.contains("Owner") ? context.blockEntityData.getUUID("Owner") : null; + UUID owner = context.blockEntityData.contains("Owner") ? LegacyNbtUtilsBridge.getUUID(context.blockEntityData, "Owner") : null; DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) context.world, owner); deployerFakePlayer.onMinecartContraption = context.contraption instanceof MountedContraption; - deployerFakePlayer.getInventory() - .load(context.blockEntityData.getList("Inventory", Tag.TAG_COMPOUND)); + LegacyNbtUtilsBridge.loadInventory(deployerFakePlayer.getInventory(), context.world.registryAccess(), + context.blockEntityData, "Inventory"); if (context.data.contains("HeldItem")) deployerFakePlayer.setItemInHand(InteractionHand.MAIN_HAND, - ItemStack.parseOptional(context.world.registryAccess(), context.data.getCompound("HeldItem"))); + LegacyItemStackNbtBridge.parseOptional(context.world.registryAccess(), context.data.getCompoundOrEmpty("HeldItem"))); context.blockEntityData.remove("Inventory"); context.temporaryData = deployerFakePlayer; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java index d87678215d..bc3fe7ccd4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerMovingInteraction.java @@ -11,10 +11,11 @@ import com.simibubi.create.content.contraptions.AbstractContraptionEntity; import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.contraptions.mounted.MountedContraption; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; -import net.minecraft.nbt.Tag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; @@ -40,16 +41,16 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand mode == DeployerBlockEntity.Mode.PUNCH ? DeployerBlockEntity.Mode.USE : DeployerBlockEntity.Mode.PUNCH); } else { - if (ctx.world.isClientSide) + if (ctx.world.isClientSide()) return true; // we'll try again on the server side DeployerFakePlayer fake = null; if (!(ctx.temporaryData instanceof DeployerFakePlayer) && ctx.world instanceof ServerLevel) { - UUID owner = ctx.blockEntityData.contains("Owner") ? ctx.blockEntityData.getUUID("Owner") : null; + UUID owner = ctx.blockEntityData.contains("Owner") ? LegacyNbtUtilsBridge.getUUID(ctx.blockEntityData, "Owner") : null; DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerLevel) ctx.world, owner); deployerFakePlayer.onMinecartContraption = ctx.contraption instanceof MountedContraption; - deployerFakePlayer.getInventory() - .load(ctx.blockEntityData.getList("Inventory", Tag.TAG_COMPOUND)); + LegacyNbtUtilsBridge.loadInventory(deployerFakePlayer.getInventory(), player.registryAccess(), + ctx.blockEntityData, "Inventory"); ctx.temporaryData = fake = deployerFakePlayer; ctx.blockEntityData.remove("Inventory"); } else @@ -61,8 +62,8 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand ItemStack deployerItem = fake.getMainHandItem(); player.setItemInHand(activeHand, deployerItem.copy()); fake.setItemInHand(InteractionHand.MAIN_HAND, heldStack.copy()); - ctx.blockEntityData.put("HeldItem", heldStack.saveOptional(player.registryAccess())); - ctx.data.put("HeldItem", heldStack.saveOptional(player.registryAccess())); + ctx.blockEntityData.put("HeldItem", LegacyItemStackNbtBridge.saveOptional(heldStack, player.registryAccess())); + ctx.data.put("HeldItem", LegacyItemStackNbtBridge.saveOptional(heldStack, player.registryAccess())); } // if (index >= 0) // setContraptionActorData(contraptionEntity, index, info, ctx); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java index a2d8cf25a7..0bb93bc4a9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerRenderer.java @@ -21,19 +21,19 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; @@ -85,8 +85,7 @@ protected void renderItem(DeployerBlockEntity be, float partialTicks, PoseStack if (punching) ms.translate(0, 1 / 8f, -1 / 16f); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); ItemDisplayContext transform = ItemDisplayContext.NONE; BakedModel bakedModel = itemRenderer.getModel(be.heldItem, be.getLevel(), null, 0); @@ -97,7 +96,7 @@ protected void renderItem(DeployerBlockEntity be, float partialTicks, PoseStack ms.translate(0, isBlockItem ? 9 / 16f : 11 / 16f, 0); ms.scale(scale, scale, scale); transform = ItemDisplayContext.GROUND; - ms.mulPose(Axis.YP.rotationDegrees(AnimationTickHolder.getRenderTime(be.getLevel()))); + ms.mulPose(Axis.YP.rotationDegrees(AnimationTickHolder.getRenderTime())); } else { float scale = punching ? .75f : isBlockItem ? .75f - 1 / 64f : .5f; @@ -111,7 +110,7 @@ protected void renderItem(DeployerBlockEntity be, float partialTicks, PoseStack protected void renderComponents(DeployerBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); if (!VisualizationManager.supportsVisualization(be.getLevel())) { KineticBlockEntityRenderer.renderRotatingKineticBlock(be, getRenderedBlockState(be), ms, vb, light); } @@ -132,7 +131,7 @@ protected void renderComponents(DeployerBlockEntity be, float partialTicks, Pose protected Vec3 getHandOffset(DeployerBlockEntity be, float partialTicks, BlockState blockState) { float distance = be.getHandOffset(partialTicks); - return Vec3.atLowerCornerOf(blockState.getValue(FACING).getNormal()).scale(distance); + return Vec3.atLowerCornerOf(blockState.getValue(FACING).getUnitVec3i()).scale(distance); } protected BlockState getRenderedBlockState(KineticBlockEntity be) { @@ -156,7 +155,7 @@ private static SuperByteBuffer transform(SuperByteBuffer buffer, BlockState depl public static void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { - VertexConsumer builder = buffer.getBuffer(RenderType.solid()); + VertexConsumer builder = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); BlockState blockState = context.state; Mode mode = NBTHelper.readEnum(context.blockEntityData, "Mode", Mode.class); PartialModel handPose = getHandPose(mode); @@ -181,7 +180,7 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor } Vec3 offset = Vec3.atLowerCornerOf(blockState.getValue(FACING) - .getNormal()).scale(factor); + .getUnitVec3i()).scale(factor); PoseStack m = matrices.getModel(); m.pushPose(); @@ -192,7 +191,7 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor axis = def.getRotationAxis(context.state); } - float time = AnimationTickHolder.getRenderTime(context.world) / 20; + float time = AnimationTickHolder.getRenderTime() / 20; float angle = (time * speed) % 360; TransformStack.of(m) @@ -212,13 +211,13 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor transform(pole, blockState, true); transform(hand, blockState, false); - shaft.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + shaft.light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(renderWorld, context.localPos)) .useLevelLight(context.world, matrices.getWorld()) .renderInto(matrices.getViewProjection(), builder); - pole.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + pole.light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(renderWorld, context.localPos)) .useLevelLight(context.world, matrices.getWorld()) .renderInto(matrices.getViewProjection(), builder); - hand.light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + hand.light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(renderWorld, context.localPos)) .useLevelLight(context.world, matrices.getWorld()) .renderInto(matrices.getViewProjection(), builder); diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java index 60a6076d8c..b6201a4c4a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/DeployerVisual.java @@ -21,7 +21,7 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; import dev.engine_room.flywheel.lib.visual.SimpleTickableVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; @@ -114,7 +114,7 @@ private void updatePosition() { float handLength = currentHand == AllPartialModels.DEPLOYER_HAND_POINTING ? 0 : currentHand == AllPartialModels.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f; float distance = Math.min(Mth.clamp(progress, 0, 1) * (blockEntity.reach + handLength), 21 / 16f); - Vec3i facingVec = facing.getNormal(); + Vec3i facingVec = facing.getUnitVec3i(); BlockPos blockPos = getVisualPosition(); float x = blockPos.getX() + ((float) facingVec.getX()) * distance; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java index 7b149a40f8..f58e7aab35 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipe.java @@ -9,7 +9,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; @@ -62,7 +62,7 @@ public interface Factory extends ProcessingReci } public static class Builder extends ProcessingRecipeBuilder> { - public Builder(Factory factory, ResourceLocation recipeId) { + public Builder(Factory factory, Identifier recipeId) { super(factory, recipeId); } @@ -82,23 +82,14 @@ public Builder toolNotConsumed() { } } - public static class Serializer implements RecipeSerializer { - private final MapCodec codec; - private final StreamCodec streamCodec; - - public Serializer(ProcessingRecipe.Factory factory) { - this.codec = ProcessingRecipe.codec(factory, ItemApplicationRecipeParams.CODEC); - this.streamCodec = ProcessingRecipe.streamCodec(factory, ItemApplicationRecipeParams.STREAM_CODEC); - } - - @Override - public MapCodec codec() { - return codec; - } - - @Override - public StreamCodec streamCodec() { - return streamCodec; + public static class Serializer { + public static RecipeSerializer create( + ProcessingRecipe.Factory factory + ) { + return new RecipeSerializer<>( + ProcessingRecipe.codec(factory, ItemApplicationRecipeParams.CODEC), + ProcessingRecipe.streamCodec(factory, ItemApplicationRecipeParams.STREAM_CODEC) + ); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipeParams.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipeParams.java index c27b7d7d32..88a90343b3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipeParams.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/ItemApplicationRecipeParams.java @@ -10,7 +10,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.content.processing.recipe.ProcessingRecipeParams; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/kinetics/deployer/ManualApplicationRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/deployer/ManualApplicationRecipe.java index a1c30d69e5..0495c7eb3a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/deployer/ManualApplicationRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/deployer/ManualApplicationRecipe.java @@ -12,7 +12,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; @@ -52,9 +55,13 @@ public static void manualApplicationRecipesApplyInWorld(PlayerInteractEvent.Righ if (event.isCanceled()) return; + if (!(level instanceof ServerLevel serverLevel)) + return; + RecipeType> type = AllRecipeTypes.ITEM_APPLICATION.getType(); - Optional>> foundRecipe = level.getRecipeManager() - .getAllRecipesFor(type) + Optional>> foundRecipe = serverLevel.recipeAccess() + .recipeMap() + .byType(type) .stream() .filter(r -> { ManualApplicationRecipe mar = (ManualApplicationRecipe) r.value(); @@ -69,16 +76,13 @@ public static void manualApplicationRecipesApplyInWorld(PlayerInteractEvent.Righ event.setCancellationResult(InteractionResult.SUCCESS); event.setCanceled(true); - if (level.isClientSide()) - return; - level.playSound(null, pos, SoundEvents.COPPER_BREAK, SoundSource.PLAYERS, 1, 1.45f); ManualApplicationRecipe recipe = (ManualApplicationRecipe) foundRecipe.get().value(); level.destroyBlock(pos, false); - BlockState transformedBlock = recipe.transformBlock(blockState, level.random); + BlockState transformedBlock = recipe.transformBlock(blockState, level.getRandom()); level.setBlock(pos, transformedBlock, Block.UPDATE_ALL); - recipe.rollResults(level.random) + recipe.rollResults(level.getRandom()) .forEach(stack -> Block.popResource(level, pos, stack)); boolean creative = event.getEntity() != null && event.getEntity() @@ -92,7 +96,9 @@ public static void manualApplicationRecipesApplyInWorld(PlayerInteractEvent.Righ } else { Player player = event.getEntity(); InteractionHand hand = event.getHand(); - ItemStack leftover = heldItem.getCraftingRemainingItem(); + ItemStack leftover = heldItem.getItem() + .getCraftingRemainder() + .create(); heldItem.shrink(1); if (heldItem.isEmpty()) { player.setItemInHand(hand, leftover); @@ -130,8 +136,8 @@ public ManualApplicationRecipe(ItemApplicationRecipeParams params) { public static RecipeHolder asDeploying(RecipeHolder recipe) { ManualApplicationRecipe mar = (ManualApplicationRecipe) recipe.value(); - ResourceLocation id = AllRecipeTypes.CAN_BE_AUTOMATED.test(recipe) ? - recipe.id().withSuffix("_using_deployer") : recipe.id(); + Identifier id = AllRecipeTypes.CAN_BE_AUTOMATED.test(recipe) ? + recipe.id().identifier().withSuffix("_using_deployer") : recipe.id().identifier(); ItemApplicationRecipe.Builder builder = new ItemApplicationRecipe.Builder<>(DeployerApplicationRecipe::new, id) .require(mar.ingredients.get(0)) @@ -140,7 +146,7 @@ public static RecipeHolder asDeploying(RecipeHolder(id, builder.build()); + return new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, id), builder.build()); } public boolean testBlock(BlockState in) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenLevel.java b/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenLevel.java index c4f9101cdd..33cede57b8 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenLevel.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenLevel.java @@ -2,8 +2,9 @@ import java.util.HashMap; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -50,7 +51,7 @@ public void scheduleTick(BlockPos pos, Fluid fluid, int delay, TickPriority prio public void levelEvent(int type, BlockPos pos, int data) {} @Override - public void levelEvent(Player player, int type, BlockPos pos, int data) {} + public void levelEvent(Entity player, int type, BlockPos pos, int data) {} @Override public void blockEvent(BlockPos pos, Block block, int eventID, int eventParam) {} diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenOptimisation.java b/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenOptimisation.java index 052797e3d3..15a5714042 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenOptimisation.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/CobbleGenOptimisation.java @@ -11,8 +11,8 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.mixin.accessor.FluidInteractionRegistryAccessor; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillActorVisual.java b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillActorVisual.java index dab62f632b..db83018fe0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillActorVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillActorVisual.java @@ -9,9 +9,9 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlock.java b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlock.java index 0ecc4ed48c..03340e8659 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlock.java @@ -12,18 +12,20 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.damageTypes.CreateDamageSources; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -33,7 +35,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -49,9 +53,8 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class DrillBlock extends DirectionalKineticBlock implements IBE, SimpleWaterloggedBlock { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public DrillBlock(Properties properties) { super(properties); @@ -59,7 +62,8 @@ public DrillBlock(Properties properties) { } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (entityIn instanceof ItemEntity) return; if (!new AABB(pos).deflate(.1f) @@ -78,8 +82,7 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { withBlockEntityDo(worldIn, pos, DrillBlockEntity::destroyNextTick); } @@ -117,10 +120,9 @@ protected void createBlockStateDefinition(StateDefinition.Builder getBlockEntityType() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!player.isShiftKeyDown() && player.mayBuild()) { if (placementHelper.matchesItem(stack)) { placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlockEntity.java index df5258d043..a8cc71fac9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillBlockEntity.java @@ -5,6 +5,7 @@ import com.simibubi.create.content.kinetics.drill.CobbleGenOptimisation.CobbleGenBlockConfiguration; import com.simibubi.create.content.logistics.chute.ChuteBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -18,7 +19,7 @@ import net.minecraft.world.level.block.entity.HopperBlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; @@ -73,7 +74,7 @@ public boolean optimiseCobbleGen(BlockState stateToBreak) { for (ItemStack stack : Block.getDrops(stateToBreak, sl, breakingPos, null)) inv.handleInsertion(stack, Direction.UP, false); else if (blockEntityBelow instanceof HopperBlockEntity hbe) { - IItemHandler handler = level.getCapability(ItemHandler.BLOCK, hbe.getBlockPos(), null); + IItemHandler handler = LegacyItemHandlerAdapter.of(level.getCapability(Item.BLOCK, hbe.getBlockPos(), null)); if (handler != null) for (ItemStack stack : Block.getDrops(stateToBreak, sl, breakingPos, null)) ItemHandlerHelper.insertItemStacked(handler, stack, false); diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillMovementBehaviour.java index 2f9ebb8e39..96d0759af6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillMovementBehaviour.java @@ -12,15 +12,14 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { @@ -34,7 +33,7 @@ public boolean isActive(MovementContext context) { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(DrillBlock.FACING) - .getNormal()).scale(.65f); + .getUnitVec3i()).scale(.65f); } @Override @@ -43,7 +42,6 @@ public boolean disableBlockEntityRendering() { } @Override - @OnlyIn(value = Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (!VisualizationManager.supportsVisualization(context.world)) diff --git a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillRenderer.java index baf199fea6..cc919befdb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/drill/DrillRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/drill/DrillRenderer.java @@ -6,14 +6,14 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -48,9 +48,9 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor .rotateXDegrees(AngleHelper.verticalAngle(facing)) .rotateZDegrees(angle) .uncenter() - .light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + .light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(renderWorld, context.localPos)) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.solid())); + .renderInto(matrices.getViewProjection(), buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java index 9daab21982..92a7666c2e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java @@ -5,7 +5,7 @@ import java.util.List; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; @@ -20,8 +20,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -60,12 +60,12 @@ public void tick() { if (direction == null) rebuild(); Level world = source.getAirCurrentWorld(); - if (world != null && world.isClientSide) { + if (world != null && world.isClientSide()) { float offset = pushing ? 0.5f : maxDistance + .5f; Vec3 pos = VecHelper.getCenterOf(source.getAirCurrentPos()) - .add(Vec3.atLowerCornerOf(direction.getNormal()) + .add(Vec3.atLowerCornerOf(direction.getUnitVec3i()) .scale(offset)); - if (world.random.nextFloat() < AllConfigs.client().fanParticleDensity.get()) + if (world.getRandom().nextFloat() < AllConfigs.client().fanParticleDensity.get()) world.addParticle(new AirFlowParticleData(source.getAirCurrentPos()), pos.x, pos.y, pos.z, 0, 0, 0); } @@ -82,7 +82,7 @@ protected void tickAffectedEntities(Level world) { continue; } - Vec3i flow = (pushing ? direction : direction.getOpposite()).getNormal(); + Vec3i flow = (pushing ? direction : direction.getOpposite()).getUnitVec3i(); float speed = Math.abs(source.getSpeed()); float sneakModifier = entity.isShiftKeyDown() ? 4096f : 512f; double entityDistance = VecHelper.alignedDistanceToFace(entity.position(), source.getAirCurrentPos(), direction); @@ -112,7 +112,7 @@ protected void tickAffectedEntities(Level world) { continue; if (entity instanceof ItemEntity itemEntity) { - if (world != null && world.isClientSide) { + if (world != null && world.isClientSide()) { processingType.spawnProcessingParticles(world, entity.position()); continue; } @@ -144,7 +144,7 @@ public void tickAffectedHandlers() { continue; handler.handleProcessingOnAllItems(transported -> { - if (world.isClientSide) { + if (world.isClientSide()) { processingType.spawnProcessingParticles(world, handler.getWorldPositionOf(transported)); return TransportedResult.doNothing(); } @@ -172,7 +172,7 @@ public void rebuild() { BlockPos start = source.getAirCurrentPos(); float max = this.maxDistance; Direction facing = direction; - Vec3 directionVec = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(facing.getUnitVec3i()); maxDistance = getFlowLimit(world, start, max, facing); // Determine segments with transported fluids/gases diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticle.java b/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticle.java index b6ef18ee9f..9ef890fbf0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticle.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticle.java @@ -1,21 +1,20 @@ package com.simibubi.create.content.kinetics.fan; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.simibubi.create.content.kinetics.fan.processing.FanProcessingType; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; -import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.SimpleAnimatedParticle; import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.Vec3; @@ -26,7 +25,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle { protected AirFlowParticle(ClientLevel world, IAirCurrentSource source, double x, double y, double z, SpriteSet sprite) { - super(world, x, y, z, sprite, world.random.nextFloat() * .5f); + super(world, x, y, z, sprite, world.getRandom().nextFloat() * .5f); this.source = source; this.quadSize *= 0.75F; this.lifetime = 40; @@ -41,11 +40,6 @@ protected AirFlowParticle(ClientLevel world, IAirCurrentSource source, double x, setAlpha(.25f); } - @NotNull - public ParticleRenderType getRenderType() { - return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; - } - @Override public void tick() { if (source == null || source.isSourceRemoved()) { @@ -64,7 +58,7 @@ public void tick() { return; } - Vec3 directionVec = Vec3.atLowerCornerOf(airCurrent.direction.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(airCurrent.direction.getUnitVec3i()); Vec3 motion = directionVec.scale(1 / 8f); if (!source.getAirCurrent().pushing) motion = motion.scale(-1); @@ -107,9 +101,10 @@ private FanProcessingType getType(double distance) { return source.getAirCurrent().getTypeAt((float) distance); } - public int getLightColor(float partialTick) { + @Override + public int getLightCoords(float partialTick) { BlockPos blockpos = BlockPos.containing(this.x, this.y, this.z); - return this.level.isLoaded(blockpos) ? LevelRenderer.getLightColor(level, blockpos) : 0; + return this.level.isLoaded(blockpos) ? com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, blockpos) : 0; } private void selectSprite(int index) { @@ -125,7 +120,7 @@ public Factory(SpriteSet animatedSprite) { @Override public Particle createParticle(AirFlowParticleData data, ClientLevel worldIn, double x, double y, double z, - double xSpeed, double ySpeed, double zSpeed) { + double xSpeed, double ySpeed, double zSpeed, RandomSource random) { BlockEntity be = worldIn.getBlockEntity(new BlockPos(data.posX, data.posY, data.posZ)); if (!(be instanceof IAirCurrentSource)) be = null; diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticleData.java b/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticleData.java index ee94717050..a34b45faef 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticleData.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/AirFlowParticleData.java @@ -6,7 +6,6 @@ import com.simibubi.create.AllParticleTypes; import com.simibubi.create.foundation.particle.ICustomParticleDataWithSprite; -import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; import net.minecraft.core.Vec3i; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; @@ -15,7 +14,6 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; @@ -67,11 +65,4 @@ public MapCodec getCodec(ParticleType public StreamCodec getStreamCodec() { return STREAM_CODEC; } - - @Override - @OnlyIn(Dist.CLIENT) - public SpriteParticleRegistration getMetaFactory() { - return AirFlowParticle.Factory::new; - } - } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlock.java b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlock.java index ed72e3b263..962b312589 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlock.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.logistics.chute.AbstractChuteBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -15,6 +15,7 @@ import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -37,8 +38,7 @@ public void updateIndirectNeighbourShapes(BlockState stateIn, LevelAccessor worl } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { blockUpdate(state, worldIn, pos); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlockEntity.java index 39fdc003fb..6318fe7a9d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanBlockEntity.java @@ -10,7 +10,6 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -21,7 +20,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -@MethodsReturnNonnullByDefault public class EncasedFanBlockEntity extends KineticBlockEntity implements IAirCurrentSource { public AirCurrent airCurrent; @@ -125,7 +123,7 @@ public void blockInFrontChanged() { public void tick() { super.tick(); - boolean server = !level.isClientSide || isVirtual(); + boolean server = !level.isClientSide() || isVirtual(); if (server && airCurrentUpdateCooldown-- <= 0) { airCurrentUpdateCooldown = AllConfigs.server().kinetics.fanBlockCheckRate.get(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanRenderer.java index 0efb5c1aaa..08dac697bb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/EncasedFanRenderer.java @@ -8,12 +8,12 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -31,17 +31,17 @@ protected void renderSafe(EncasedFanBlockEntity be, float partialTicks, PoseStac Direction direction = be.getBlockState() .getValue(FACING); - VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); - int lightBehind = LevelRenderer.getLightColor(be.getLevel(), be.getBlockPos().relative(direction.getOpposite())); - int lightInFront = LevelRenderer.getLightColor(be.getLevel(), be.getBlockPos().relative(direction)); + int lightBehind = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(be.getLevel(), be.getBlockPos().relative(direction.getOpposite())); + int lightInFront = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(be.getLevel(), be.getBlockPos().relative(direction)); SuperByteBuffer shaftHalf = CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction.getOpposite()); SuperByteBuffer fanInner = CachedBuffers.partialFacing(AllPartialModels.ENCASED_FAN_INNER, be.getBlockState(), direction.getOpposite()); - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); float speed = be.getSpeed() * 5; if (speed > 0) speed = Mth.clamp(speed, 80, 64 * 20); diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/IAirCurrentSource.java b/src/main/java/com/simibubi/create/content/kinetics/fan/IAirCurrentSource.java index 6df4f6c566..d40a67b126 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/IAirCurrentSource.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/IAirCurrentSource.java @@ -5,13 +5,11 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.CKinetics; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; -@MethodsReturnNonnullByDefault public interface IAirCurrentSource { @Nullable AirCurrent getAirCurrent(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlock.java b/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlock.java index 945e63a980..f9ba0666fb 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlock.java @@ -7,7 +7,6 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; @@ -17,6 +16,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -24,7 +24,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class NozzleBlock extends WrenchableDirectionalBlock implements IBE { @@ -48,11 +47,11 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (fromPos.equals(pos.relative(state.getValue(FACING).getOpposite()))) if (!canSurvive(state, worldIn, pos)) { worldIn.destroyBlock(pos, true); diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlockEntity.java index d07fafc413..65c0510113 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/NozzleBlockEntity.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; @@ -57,8 +57,8 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool super.read(compound, registries, clientPacket); if (!clientPacket) return; - range = compound.getFloat("Range"); - pushing = compound.getBoolean("Pushing"); + range = compound.getFloatOr("Range", 0); + pushing = compound.getBooleanOr("Pushing", false); } @Override @@ -77,10 +77,10 @@ public void tick() { setRange(range); Vec3 center = VecHelper.getCenterOf(worldPosition); - if (level.isClientSide && range != 0) { - if (level.random.nextInt( + if (level.isClientSide() && range != 0) { + if (level.getRandom().nextInt( Mth.clamp((AllConfigs.server().kinetics.fanPushDistance.get() - (int) range), 1, 10)) == 0) { - Vec3 start = VecHelper.offsetRandomly(center, level.random, pushing ? 1 : range / 2); + Vec3 start = VecHelper.offsetRandomly(center, level.getRandom(), pushing ? 1 : range / 2); Vec3 motion = center.subtract(start) .normalize() .scale(Mth.clamp(range * (pushing ? .025f : 1f), 0, .5f) * (pushing ? -1 : 1)); @@ -93,7 +93,7 @@ public void tick() { Vec3 diff = entity.position() .subtract(center); - if (!(entity instanceof Player) && level.isClientSide) + if (!(entity instanceof Player) && level.isClientSide()) continue; double distance = diff.length(); @@ -171,7 +171,7 @@ public void lazyTick() { iterator.remove(); } - if (!pushing && pushingEntities.size() > 256 && !level.isClientSide) { + if (!pushing && pushingEntities.size() > 256 && !level.isClientSide()) { level.explode(null, center.x, center.y, center.z, 2, ExplosionInteraction.NONE); for (Iterator iterator = pushingEntities.iterator(); iterator.hasNext(); ) { Entity entity = iterator.next(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java index 14b56c8289..76d991ef8a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/AllFanProcessingTypes.java @@ -7,7 +7,6 @@ import org.jetbrains.annotations.ApiStatus.Internal; import org.jetbrains.annotations.Nullable; -import org.joml.Vector3f; import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllTags.AllBlockTags; @@ -20,8 +19,8 @@ import com.simibubi.create.foundation.recipe.RecipeApplier; import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -30,6 +29,9 @@ import net.minecraft.core.particles.DustParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.tags.BlockTags; @@ -37,16 +39,18 @@ import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.horse.Horse; -import net.minecraft.world.entity.animal.horse.SkeletonHorse; +import net.minecraft.world.entity.animal.equine.Horse; +import net.minecraft.world.entity.animal.equine.SkeletonHorse; import net.minecraft.world.entity.monster.EnderMan; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.AbstractCookingRecipe; import net.minecraft.world.item.crafting.BlastingRecipe; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.item.crafting.SmeltingRecipe; @@ -98,6 +102,26 @@ public static FanProcessingType parseLegacy(String str) { return FanProcessingType.parse(str); } + private static > Optional> findRecipe(Level level, + RecipeType type, ItemStack stack) { + if (level.recipeAccess() instanceof RecipeManager recipeManager) + return recipeManager.getRecipeFor(type, new SingleRecipeInput(stack), level); + return Optional.empty(); + } + + @Nullable + @SuppressWarnings("unchecked") + private static EntityType entityType(String path) { + return (EntityType) BuiltInRegistries.ENTITY_TYPE.get(Identifier.withDefaultNamespace(path)) + .map(ref -> ref.value()) + .orElse(null); + } + + private static boolean isEntityType(Entity entity, String path) { + EntityType type = entityType(path); + return type != null && entity.getType() == type; + } + public static class BlastingType implements FanProcessingType { @Override public boolean isValidAt(Level level, BlockPos pos) { @@ -119,46 +143,41 @@ public int getPriority() { @Override public boolean canProcess(ItemStack stack, Level level) { - Optional> smeltingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMELTING, new SingleRecipeInput(stack), level) + Optional> smeltingRecipe = findRecipe(level, RecipeType.SMELTING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (smeltingRecipe.isPresent()) return true; - Optional> blastingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.BLASTING, new SingleRecipeInput(stack), level) + Optional> blastingRecipe = findRecipe(level, RecipeType.BLASTING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (blastingRecipe.isPresent()) return true; - return !stack.has(DataComponents.FIRE_RESISTANT); + return !stack.has(DataComponents.DAMAGE_RESISTANT); } @Override @Nullable public List process(ItemStack stack, Level level) { - Optional> smokingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, new SingleRecipeInput(stack), level) + Optional> smokingRecipe = findRecipe(level, RecipeType.SMOKING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED); - Optional> smeltingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.SMELTING, new SingleRecipeInput(stack), level) + Optional> smeltingRecipe = findRecipe(level, RecipeType.SMELTING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED); if (smeltingRecipe.isEmpty()) { - smeltingRecipe = level.getRecipeManager() - .getRecipeFor(RecipeType.BLASTING, new SingleRecipeInput(stack), level) + smeltingRecipe = findRecipe(level, RecipeType.BLASTING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED); } if (smeltingRecipe.isPresent()) { - RegistryAccess registryAccess = level.registryAccess(); + SingleRecipeInput input = new SingleRecipeInput(stack); if (smokingRecipe.isEmpty() || !ItemStack.isSameItem(smokingRecipe.get().value() - .getResultItem(registryAccess), + .assemble(input), smeltingRecipe.get().value() - .getResultItem(registryAccess))) { + .assemble(input))) { return RecipeApplier.applyRecipeOn(level, stack, smeltingRecipe.get().value(), false); } } @@ -168,7 +187,7 @@ public List process(ItemStack stack, Level level) { @Override public void spawnProcessingParticles(Level level, Vec3 pos) { - if (level.random.nextInt(8) != 0) + if (level.getRandom().nextInt(8) != 0) return; level.addParticle(ParticleTypes.LARGE_SMOKE, pos.x, pos.y + .25f, pos.z, 0, 1 / 16f, 0); } @@ -185,7 +204,7 @@ public void morphAirFlow(AirFlowParticleAccess particleAccess, RandomSource rand @Override public void affectEntity(Entity entity, Level level) { - if (level.isClientSide) + if (level.isClientSide()) return; if (!entity.fireImmune()) { @@ -234,14 +253,14 @@ public List process(ItemStack stack, Level level) { @Override public void spawnProcessingParticles(Level level, Vec3 pos) { - if (level.random.nextInt(8) != 0) + if (level.getRandom().nextInt(8) != 0) return; - pos = pos.add(VecHelper.offsetRandomly(Vec3.ZERO, level.random, 1) + pos = pos.add(VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), 1) .multiply(1, 0.05f, 1) .normalize() .scale(0.15f)); level.addParticle(ParticleTypes.SOUL_FIRE_FLAME, pos.x, pos.y + .45f, pos.z, 0, 0, 0); - if (level.random.nextInt(2) == 0) + if (level.getRandom().nextInt(2) == 0) level.addParticle(ParticleTypes.SMOKE, pos.x, pos.y + .25f, pos.z, 0, 0, 0); } @@ -257,29 +276,29 @@ public void morphAirFlow(AirFlowParticleAccess particleAccess, RandomSource rand @Override public void affectEntity(Entity entity, Level level) { - if (level.isClientSide) { + if (level.isClientSide()) { if (entity instanceof Horse) { Vec3 p = entity.getPosition(0); Vec3 v = p.add(0, 0.5f, 0) - .add(VecHelper.offsetRandomly(Vec3.ZERO, level.random, 1) + .add(VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), 1) .multiply(1, 0.2f, 1) .normalize() .scale(1f)); level.addParticle(ParticleTypes.SOUL_FIRE_FLAME, v.x, v.y, v.z, 0, 0.1f, 0); - if (level.random.nextInt(3) == 0) + if (level.getRandom().nextInt(3) == 0) level.addParticle(ParticleTypes.LARGE_SMOKE, p.x, p.y + .5f, p.z, - (level.random.nextFloat() - .5f) * .5f, 0.1f, (level.random.nextFloat() - .5f) * .5f); + (level.getRandom().nextFloat() - .5f) * .5f, 0.1f, (level.getRandom().nextFloat() - .5f) * .5f); } return; } if (entity instanceof LivingEntity livingEntity) { livingEntity.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 30, 0, false, false)); - livingEntity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, 20, 1, false, false)); + livingEntity.addEffect(new MobEffectInstance(MobEffects.SLOWNESS, 20, 1, false, false)); } if (entity instanceof Horse horse) { int progress = horse.getPersistentData() - .getInt("CreateHaunting"); + .getIntOr("CreateHaunting", 0); if (progress < 100) { if (progress % 10 == 0) { level.playSound(null, entity.blockPosition(), SoundEvents.SOUL_ESCAPE.value(), SoundSource.NEUTRAL, @@ -293,14 +312,22 @@ public void affectEntity(Entity entity, Level level) { level.playSound(null, entity.blockPosition(), SoundEvents.GENERIC_EXTINGUISH_FIRE, SoundSource.NEUTRAL, 1.25f, 0.65f); - SkeletonHorse skeletonHorse = EntityType.SKELETON_HORSE.create(level); - CompoundTag serializeNBT = horse.saveWithoutId(new CompoundTag()); + EntityType skeletonHorseType = entityType("skeleton_horse"); + SkeletonHorse skeletonHorse = + skeletonHorseType == null ? null : skeletonHorseType.create(level, EntitySpawnReason.CONVERSION); + if (skeletonHorse == null) + return; + CompoundTag serializeNBT = + com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge.output(entity.registryAccess(), + horse::saveWithoutId); serializeNBT.remove("UUID"); if (!horse.getBodyArmorItem() .isEmpty()) - horse.spawnAtLocation(horse.getBodyArmorItem()); + if (level instanceof ServerLevel serverLevel) + horse.spawnAtLocation(serverLevel, horse.getBodyArmorItem()); - skeletonHorse.deserializeNBT(entity.registryAccess(), serializeNBT); + skeletonHorse.load(com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge.input(serializeNBT, + entity.registryAccess())); skeletonHorse.setPos(horse.getPosition(0)); level.addFreshEntity(skeletonHorse); horse.discard(); @@ -335,8 +362,7 @@ public int getPriority() { @Override public boolean canProcess(ItemStack stack, Level level) { - return level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, new SingleRecipeInput(stack), level) + return findRecipe(level, RecipeType.SMOKING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED) .isPresent(); } @@ -344,8 +370,7 @@ public boolean canProcess(ItemStack stack, Level level) { @Override @Nullable public List process(ItemStack stack, Level level) { - return level.getRecipeManager() - .getRecipeFor(RecipeType.SMOKING, new SingleRecipeInput(stack), level) + return findRecipe(level, RecipeType.SMOKING, stack) .filter(AllRecipeTypes.CAN_BE_AUTOMATED) .map(RecipeHolder::value) .map(r -> RecipeApplier.applyRecipeOn(level, stack, r, false)) @@ -354,7 +379,7 @@ public List process(ItemStack stack, Level level) { @Override public void spawnProcessingParticles(Level level, Vec3 pos) { - if (level.random.nextInt(8) != 0) + if (level.getRandom().nextInt(8) != 0) return; level.addParticle(ParticleTypes.POOF, pos.x, pos.y + .25f, pos.z, 0, 1 / 16f, 0); } @@ -371,7 +396,7 @@ public void morphAirFlow(AirFlowParticleAccess particleAccess, RandomSource rand @Override public void affectEntity(Entity entity, Level level) { - if (level.isClientSide) + if (level.isClientSide()) return; if (!entity.fireImmune()) { @@ -415,13 +440,12 @@ public List process(ItemStack stack, Level level) { @Override public void spawnProcessingParticles(Level level, Vec3 pos) { - if (level.random.nextInt(8) != 0) + if (level.getRandom().nextInt(8) != 0) return; - Vector3f color = new Color(0x0055FF).asVectorF(); - level.addParticle(new DustParticleOptions(color, 1), pos.x + (level.random.nextFloat() - .5f) * .5f, - pos.y + .5f, pos.z + (level.random.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); - level.addParticle(ParticleTypes.SPIT, pos.x + (level.random.nextFloat() - .5f) * .5f, pos.y + .5f, - pos.z + (level.random.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); + level.addParticle(new DustParticleOptions(0x0055FF, 1), pos.x + (level.getRandom().nextFloat() - .5f) * .5f, + pos.y + .5f, pos.z + (level.getRandom().nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); + level.addParticle(ParticleTypes.SPIT, pos.x + (level.getRandom().nextFloat() - .5f) * .5f, pos.y + .5f, + pos.z + (level.getRandom().nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); } @Override @@ -436,17 +460,17 @@ public void morphAirFlow(AirFlowParticleAccess particleAccess, RandomSource rand @Override public void affectEntity(Entity entity, Level level) { - if (level.isClientSide) + if (level.isClientSide()) return; - if (entity instanceof EnderMan || entity.getType() == EntityType.SNOW_GOLEM - || entity.getType() == EntityType.BLAZE) { + if (entity instanceof EnderMan || isEntityType(entity, "snow_golem") + || isEntityType(entity, "blaze")) { entity.hurt(entity.damageSources().drown(), 2); } if (entity.isOnFire()) { entity.clearFire(); level.playSound(null, entity.blockPosition(), SoundEvents.GENERIC_EXTINGUISH_FIRE, - SoundSource.NEUTRAL, 0.7F, 1.6F + (level.random.nextFloat() - level.random.nextFloat()) * 0.4F); + SoundSource.NEUTRAL, 0.7F, 1.6F + (level.getRandom().nextFloat() - level.getRandom().nextFloat()) * 0.4F); } } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessing.java b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessing.java index 6836ba9157..973bcaa241 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessing.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessing.java @@ -9,7 +9,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -19,15 +19,15 @@ public static boolean canProcess(ItemEntity entity, FanProcessingType type) { if (entity.getPersistentData() .contains("CreateData")) { CompoundTag compound = entity.getPersistentData() - .getCompound("CreateData"); + .getCompoundOrEmpty("CreateData"); if (compound.contains("Processing")) { - CompoundTag processing = compound.getCompound("Processing"); + CompoundTag processing = compound.getCompoundOrEmpty("Processing"); - if (AllFanProcessingTypes.parseLegacy(processing.getString("Type")) != type) + if (AllFanProcessingTypes.parseLegacy(processing.getStringOr("Type", "")) != type) return type.canProcess(entity.getItem(), entity.level()); - else if (processing.getInt("Time") >= 0) + else if (processing.getIntOr("Time", 0) >= 0) return true; - else if (processing.getInt("Time") == -1) + else if (processing.getIntOr("Time", 0) == -1) return false; } } @@ -88,14 +88,14 @@ private static int decrementProcessingTime(ItemEntity entity, FanProcessingType if (!nbt.contains("CreateData")) nbt.put("CreateData", new CompoundTag()); - CompoundTag createData = nbt.getCompound("CreateData"); + CompoundTag createData = nbt.getCompoundOrEmpty("CreateData"); if (!createData.contains("Processing")) createData.put("Processing", new CompoundTag()); - CompoundTag processing = createData.getCompound("Processing"); + CompoundTag processing = createData.getCompoundOrEmpty("Processing"); - if (!processing.contains("Type") || AllFanProcessingTypes.parseLegacy(processing.getString("Type")) != type) { - ResourceLocation key = CreateBuiltInRegistries.FAN_PROCESSING_TYPE.getKey(type); + if (!processing.contains("Type") || AllFanProcessingTypes.parseLegacy(processing.getStringOr("Type", "")) != type) { + Identifier key = CreateBuiltInRegistries.FAN_PROCESSING_TYPE.getKey(type); if (key == null) throw new IllegalArgumentException("Could not get id for FanProcessingType " + type + "!"); @@ -107,7 +107,7 @@ private static int decrementProcessingTime(ItemEntity entity, FanProcessingType processing.putInt("Time", processingTime); } - int value = processing.getInt("Time") - 1; + int value = processing.getIntOr("Time", 0) - 1; processing.putInt("Time", value); return value; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessingType.java b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessingType.java index e49203ec65..db663ad7e6 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessingType.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/processing/FanProcessingType.java @@ -6,9 +6,10 @@ import com.simibubi.create.api.registry.CreateBuiltInRegistries; +import net.minecraft.core.Holder; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; @@ -33,7 +34,10 @@ public interface FanProcessingType { @Nullable static FanProcessingType parse(String str) { - return CreateBuiltInRegistries.FAN_PROCESSING_TYPE.get(ResourceLocation.tryParse(str)); + Identifier id = Identifier.tryParse(str); + return id == null ? null : CreateBuiltInRegistries.FAN_PROCESSING_TYPE.get(id) + .map(Holder::value) + .orElse(null); } @Nullable diff --git a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlock.java index 6cff991ce0..6e4316470f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlock.java @@ -34,7 +34,7 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, @Override public RenderShape getRenderShape(BlockState pState) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlockEntity.java index 14df46f35d..bd52324756 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelBlockEntity.java @@ -2,8 +2,8 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -41,7 +41,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool public void tick() { super.tick(); - if (!level.isClientSide) + if (!level.isClientSide()) return; float targetSpeed = getSpeed(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelRenderer.java index ba9bfbf2f8..0673944b05 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelRenderer.java @@ -5,11 +5,11 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; @@ -32,7 +32,7 @@ protected void renderSafe(FlywheelBlockEntity be, float partialTicks, PoseStack float speed = be.visualSpeed.getValue(partialTicks) * 3 / 10f; float angle = be.angle + speed * partialTicks; - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); renderFlywheel(be, ms, light, blockState, angle, vb); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java index 0b62a807a1..d13fe5e2e1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/flywheel/FlywheelVisual.java @@ -17,7 +17,7 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; public class FlywheelVisual extends KineticBlockEntityVisual implements SimpleDynamicVisual { diff --git a/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlock.java index b9afc1dddc..07b482aa72 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlock.java @@ -12,18 +12,20 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.placement.PoleHelper; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -33,7 +35,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -53,7 +57,7 @@ public class GantryShaftBlock extends DirectionalKineticBlock implements IBE PART = EnumProperty.create("part", Part.class); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public enum Part implements StringRepresentable { START, MIDDLE, END, SINGLE; @@ -70,10 +74,10 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!placementHelper.matchesItem(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; return placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, ((BlockItem) stack.getItem()), player, hand, hitResult); @@ -88,12 +92,11 @@ public VoxelShape getShape(BlockState state, BlockGetter p_220053_2_, BlockPos p @Override public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbour, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbour, RandomSource random) { Direction facing = state.getValue(FACING); Axis axis = facing.getAxis(); if (direction.getAxis() != axis) @@ -166,7 +169,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { if (onWrenched.consumesAction()) { BlockPos pos = context.getClickedPos(); Level world = context.getLevel(); - neighborChanged(world.getBlockState(pos), world, pos, state.getBlock(), pos, false); + neighborChanged(world.getBlockState(pos), world, pos, state.getBlock(), null, false); } return onWrenched; } @@ -186,9 +189,8 @@ public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState ol } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, - boolean p_220069_6_) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); boolean shouldPower = worldIn.hasNeighborSignal(pos); // shouldBePowered(state, worldIn, pos); diff --git a/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlockEntity.java index 25e7619336..150ec45ebf 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gantry/GantryShaftBlockEntity.java @@ -4,8 +4,9 @@ import com.simibubi.create.content.contraptions.gantry.GantryCarriageBlock; import com.simibubi.create.content.contraptions.gantry.GantryCarriageBlockEntity; import com.simibubi.create.content.kinetics.base.KineticBlockEntity; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -62,7 +63,7 @@ public float propagateRotationTo(KineticBlockEntity target, BlockState stateFrom if (!AllBlocks.GANTRY_CARRIAGE.has(stateTo)) return defaultModifier; - Direction direction = Direction.getNearest(diff.getX(), diff.getY(), diff.getZ()); + Direction direction = LegacyDirectionBridge.nearest(diff.getX(), diff.getY(), diff.getZ(), Direction.NORTH); if (stateTo.getValue(GantryCarriageBlock.FACING) != direction) return defaultModifier; return GantryCarriageBlockEntity.getGantryPinionModifier(stateFrom.getValue(GantryShaftBlock.FACING), @@ -75,7 +76,7 @@ public boolean isCustomConnection(KineticBlockEntity other, BlockState state, Bl return false; final BlockPos diff = other.getBlockPos() .subtract(worldPosition); - Direction direction = Direction.getNearest(diff.getX(), diff.getY(), diff.getZ()); + Direction direction = LegacyDirectionBridge.nearest(diff.getX(), diff.getY(), diff.getZ(), Direction.NORTH); return otherState.getValue(GantryCarriageBlock.FACING) == direction; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlock.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlock.java index e842154dc4..3ac8cf2d8e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlock.java @@ -1,17 +1,15 @@ package com.simibubi.create.content.kinetics.gauge; -import org.joml.Vector3f; - import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.levelWrappers.WrappedLevel; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -113,7 +111,8 @@ public boolean shouldRenderHeadOnFace(Level world, BlockPos pos, BlockState stat return false; if (getRotationAxis(state) == Axis.Y && face != state.getValue(FACING)) return false; - if (!Block.shouldRenderFace(state, world, pos, face, pos.relative(face)) && !(world instanceof WrappedLevel)) + BlockState neighborState = world.getBlockState(pos.relative(face)); + if (!Block.shouldRenderFace(world, pos, state, neighborState, face) && !(world instanceof WrappedLevel)) return false; return true; } @@ -131,10 +130,9 @@ public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomS if (!shouldRenderHeadOnFace(worldIn, pos, stateIn, face)) continue; - Vector3f rgb = new Color(color).asVectorF(); - Vec3 faceVec = Vec3.atLowerCornerOf(face.getNormal()); + Vec3 faceVec = Vec3.atLowerCornerOf(face.getUnitVec3i()); Direction positiveFacing = Direction.get(AxisDirection.POSITIVE, face.getAxis()); - Vec3 positiveFaceVec = Vec3.atLowerCornerOf(positiveFacing.getNormal()); + Vec3 positiveFaceVec = Vec3.atLowerCornerOf(positiveFacing.getUnitVec3i()); int particleCount = gaugeBE.dialTarget > 1 ? 4 : 1; if (particleCount == 1 && rand.nextFloat() > 1 / 4f) @@ -148,7 +146,7 @@ public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomS Vec3 offset = VecHelper.getCenterOf(pos) .add(faceVec.scale(.55)) .add(mul); - worldIn.addParticle(new DustParticleOptions(rgb, 1), offset.x, offset.y, offset.z, mul.x, mul.y, mul.z); + worldIn.addParticle(new DustParticleOptions(color, 1), offset.x, offset.y, offset.z, mul.x, mul.y, mul.z); } } @@ -166,7 +164,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { BlockEntity be = worldIn.getBlockEntity(pos); if (be instanceof GaugeBlockEntity gaugeBlockEntity) { return Mth.ceil(Mth.clamp(gaugeBlockEntity.dialTarget * 14, 0, 15)); diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java index e5db2b9b99..a7de3556e0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeBlockEntity.java @@ -33,8 +33,8 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - dialTarget = compound.getFloat("Value"); - color = compound.getInt("Color"); + dialTarget = compound.getFloatOr("Value", 0); + color = compound.getIntOr("Color", 0); super.read(compound, registries, clientPacket); } @@ -43,8 +43,8 @@ public void tick() { super.tick(); prevDialState = dialState; dialState += (dialTarget - dialState) * .125f; - if (dialState > 1 && level.random.nextFloat() < 1 / 2f) - dialState -= (dialState - 1) * level.random.nextFloat(); + if (dialState > 1 && level.getRandom().nextFloat() < 1 / 2f) + dialState -= (dialState - 1) * level.getRandom().nextFloat(); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeGenerator.java index 079e033a46..aa31e8bf43 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeGenerator.java @@ -2,7 +2,7 @@ import com.simibubi.create.foundation.data.DirectionalAxisBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -10,7 +10,7 @@ public class GaugeGenerator extends DirectionalAxisBlockStateGen { @Override - public String getModelPrefix(DataGenContext ctx, RegistrateBlockstateProvider prov, + public String getModelPrefix(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return "block/gauge/base"; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeRenderer.java index 9d23c235af..63b02f4470 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeRenderer.java @@ -8,11 +8,11 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -57,7 +57,7 @@ protected void renderSafe(GaugeBlockEntity be, float partialTicks, PoseStack ms, facing)) continue; - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); rotateBufferTowards(dialBuffer, facing).translate(0, dialPivot, dialPivot) .rotate((float) (Math.PI / 2 * -progress), Direction.EAST) .translate(0, -dialPivot, -dialPivot) diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeShaper.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeShaper.java index 6f9f59520c..19c46120e2 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeShaper.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeShaper.java @@ -4,7 +4,7 @@ import com.simibubi.create.AllShapes; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeVisual.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeVisual.java index ede4ceeb6d..394fa7172c 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/GaugeVisual.java @@ -17,9 +17,9 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/SpeedGaugeBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/SpeedGaugeBlockEntity.java index 5a777dc0fc..29117280fa 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/SpeedGaugeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/SpeedGaugeBlockEntity.java @@ -12,7 +12,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/simibubi/create/content/kinetics/gauge/StressGaugeBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/gauge/StressGaugeBlockEntity.java index 0d286d420e..adfcf636b7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gauge/StressGaugeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gauge/StressGaugeBlockEntity.java @@ -10,12 +10,12 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.item.TooltipHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.lang.LangBuilder; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.lang.LangBuilder; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -138,7 +138,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak } if (!worldPosition.equals(lastSent)) - CatnipServices.NETWORK.sendToServer(new GaugeObservedPacket(lastSent = worldPosition)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GaugeObservedPacket(lastSent = worldPosition)); return true; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxBlock.java b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxBlock.java index db4a0f2681..36f81028af 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxBlock.java @@ -42,10 +42,9 @@ public List getDrops(BlockState state, LootParams.Builder builder) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { if (state.getValue(AXIS).isVertical()) - return super.getCloneItemStack(state, target, level, pos, player); + return super.getCloneItemStack(level, pos, state, includeData); return new ItemStack(AllItems.VERTICAL_GEARBOX.get()); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxRenderer.java index efb3917ddd..2d351c44f1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxRenderer.java @@ -3,14 +3,15 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -30,7 +31,7 @@ protected void renderSafe(GearboxBlockEntity be, float partialTicks, PoseStack m final Axis boxAxis = be.getBlockState().getValue(BlockStateProperties.AXIS); final BlockPos pos = be.getBlockPos(); - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); for (Direction direction : Iterate.directions) { final Axis axis = direction.getAxis(); @@ -43,7 +44,7 @@ protected void renderSafe(GearboxBlockEntity be, float partialTicks, PoseStack m if (be.getSpeed() != 0 && be.hasSource()) { BlockPos source = be.source.subtract(be.getBlockPos()); - Direction sourceFacing = Direction.getNearest(source.getX(), source.getY(), source.getZ()); + Direction sourceFacing = LegacyDirectionBridge.nearest(source.getX(), source.getY(), source.getZ(), Direction.NORTH); if (sourceFacing.getAxis() == direction.getAxis()) angle *= sourceFacing == direction ? 1 : -1; else if (sourceFacing.getAxisDirection() == direction.getAxisDirection()) @@ -54,7 +55,7 @@ else if (sourceFacing.getAxisDirection() == direction.getAxisDirection()) angle = angle / 180f * (float) Math.PI; kineticRotationTransform(shaft, be, axis, angle, light); - shaft.renderInto(ms, buffer.getBuffer(RenderType.solid())); + shaft.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java index 9adba87df8..6b48e9458b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gearbox/GearboxVisual.java @@ -8,13 +8,14 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual; import com.simibubi.create.content.kinetics.base.RotatingInstance; import com.simibubi.create.foundation.render.AllInstanceTypes; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import dev.engine_room.flywheel.api.instance.Instance; import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.lib.instance.AbstractInstance; import dev.engine_room.flywheel.lib.instance.FlatLit; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -65,7 +66,7 @@ else if (sourceFacing.getAxisDirection() == direction.getAxisDirection()) protected void updateSourceFacing() { if (blockEntity.hasSource()) { BlockPos source = blockEntity.source.subtract(pos); - sourceFacing = Direction.getNearest(source.getX(), source.getY(), source.getZ()); + sourceFacing = LegacyDirectionBridge.nearest(source.getX(), source.getY(), source.getZ(), Direction.NORTH); } else { sourceFacing = null; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/gearbox/VerticalGearboxItem.java b/src/main/java/com/simibubi/create/content/kinetics/gearbox/VerticalGearboxItem.java index faa684ecb2..c1ad8ff77a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/gearbox/VerticalGearboxItem.java +++ b/src/main/java/com/simibubi/create/content/kinetics/gearbox/VerticalGearboxItem.java @@ -5,7 +5,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.kinetics.base.IRotate; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -24,11 +24,6 @@ public VerticalGearboxItem(Properties builder) { super(AllBlocks.GEARBOX.get(), builder); } - @Override - public String getDescriptionId() { - return "item.create.vertical_gearbox"; - } - @Override public void registerBlocks(Map p_195946_1_, Item p_195946_2_) { } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java index b895b58fff..ce4ea62cfe 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/AllArmInteractionPointTypes.java @@ -33,19 +33,19 @@ import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; import com.simibubi.create.foundation.item.SmartInventory; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; import net.minecraft.core.Vec3i; import net.minecraft.core.component.DataComponents; +import net.minecraft.world.InteractionResult; import net.minecraft.world.Containers; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.WorldlyContainer; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.CampfireCookingRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.CampfireBlock; @@ -57,6 +57,7 @@ import net.minecraft.world.level.block.entity.JukeboxBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.items.IItemHandler; @@ -361,9 +362,11 @@ public BlazeBurnerPoint(ArmInteractionPointType type, Level level, BlockPos pos, @Override public ItemStack insert(ArmBlockEntity armBlockEntity, ItemStack stack, boolean simulate) { ItemStack input = stack.copy(); - InteractionResultHolder res = + InteractionResult res = BlazeBurnerBlock.tryInsert(cachedState, level, pos, input, false, false, simulate); - ItemStack remainder = res.getObject(); + ItemStack remainder = res instanceof InteractionResult.Success success && success.heldItemTransformedTo() != null + ? success.heldItemTransformedTo() + : ItemStack.EMPTY; if (input.isEmpty()) { return remainder; } else { @@ -388,7 +391,7 @@ protected Direction getInteractionDirection() { @Override protected Vec3 getInteractionPositionVector() { - return super.getInteractionPositionVector().add(Vec3.atLowerCornerOf(getInteractionDirection().getNormal()) + return super.getInteractionPositionVector().add(Vec3.atLowerCornerOf(getInteractionDirection().getUnitVec3i()) .scale(.5f)); } @@ -427,7 +430,7 @@ protected Direction getInteractionDirection() { @Override protected Vec3 getInteractionPositionVector() { - return super.getInteractionPositionVector().add(Vec3.atLowerCornerOf(getInteractionDirection().getNormal()) + return super.getInteractionPositionVector().add(Vec3.atLowerCornerOf(getInteractionDirection().getUnitVec3i()) .scale(.65f)); } @@ -460,7 +463,7 @@ public FunnelPoint(ArmInteractionPointType type, Level level, BlockPos pos, Bloc @Override protected Vec3 getInteractionPositionVector() { Direction funnelFacing = FunnelBlock.getFunnelFacing(cachedState); - Vec3i normal = funnelFacing != null ? funnelFacing.getNormal() : Vec3i.ZERO; + Vec3i normal = funnelFacing != null ? funnelFacing.getUnitVec3i() : Vec3i.ZERO; return VecHelper.getCenterOf(pos) .add(Vec3.atLowerCornerOf(normal) .scale(-.15f)); @@ -516,8 +519,11 @@ public ItemStack insert(ArmBlockEntity armBlockEntity, ItemStack stack, boolean BlockEntity blockEntity = level.getBlockEntity(pos); if (!(blockEntity instanceof CampfireBlockEntity campfireBE)) return stack; - Optional> recipe = campfireBE.getCookableRecipe(stack); - if (recipe.isEmpty()) + if (!(level instanceof ServerLevel serverLevel)) + return stack; + if (serverLevel.recipeAccess() + .getRecipeFor(RecipeType.CAMPFIRE_COOKING, new SingleRecipeInput(stack), serverLevel) + .isEmpty()) return stack; if (simulate) { boolean hasSpace = false; @@ -534,9 +540,7 @@ public ItemStack insert(ArmBlockEntity armBlockEntity, ItemStack stack, boolean return remainder; } ItemStack remainder = stack.copy(); - campfireBE.placeFood(null, remainder, recipe.get().value() - .getCookingTime()); - return remainder; + return campfireBE.placeFood(serverLevel, null, remainder) ? remainder : stack; } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmAngleTarget.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmAngleTarget.java index ac2922f0f1..5484ae946d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmAngleTarget.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmAngleTarget.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.kinetics.mechanicalArm; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -29,7 +29,7 @@ public ArmAngleTarget(BlockPos armPos, Vec3 pointTarget, Direction clawFacing, b .add(0, ceiling ? -6 / 16f : 6 / 16f, 0); Vec3 clawTarget = target; target = target.add(Vec3.atLowerCornerOf(clawFacing.getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(.5f)); Vec3 diff = target.subtract(origin); diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlock.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlock.java index dc5cc73397..1c5e869e66 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.mechanicalArm; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import org.apache.commons.lang3.mutable.MutableBoolean; @@ -23,6 +23,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -63,8 +64,7 @@ public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldS } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, - BlockPos p_220069_5_, boolean p_220069_6_) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { withBlockEntityDo(world, pos, ArmBlockEntity::redstoneUpdate); } @@ -84,14 +84,14 @@ public BlockEntityType getBlockEntityType() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (AllItems.GOGGLES.isIn(stack)) { - ItemInteractionResult gogglesResult = onBlockEntityUseItemOn(level, pos, ate -> { + InteractionResult gogglesResult = onBlockEntityUseItemOn(level, pos, ate -> { if (ate.goggles) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ate.goggles = true; ate.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); if (gogglesResult.consumesAction()) return gogglesResult; @@ -102,7 +102,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (be.heldItem.isEmpty()) return; success.setTrue(); - if (level.isClientSide) + if (level.isClientSide()) return; player.getInventory().placeItemBackInInventory(be.heldItem); be.heldItem = ItemStack.EMPTY; @@ -111,7 +111,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev be.sendData(); }); - return success.booleanValue() ? ItemInteractionResult.SUCCESS : ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return success.booleanValue() ? InteractionResult.SUCCESS : InteractionResult.TRY_WITH_EMPTY_HAND; } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java index 5bd28184e2..6881df4c26 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmBlockEntity.java @@ -24,12 +24,12 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -140,7 +140,7 @@ public void tick() { } return; } - if (level.isClientSide) + if (level.isClientSide()) return; if (phase == Phase.MOVE_TO_INPUT) @@ -158,7 +158,7 @@ else if (phase == Phase.SEARCH_INPUTS || phase == Phase.DANCING) public void lazyTick() { super.lazyTick(); - if (level.isClientSide) + if (level.isClientSide()) return; if (chasedPointProgress < .5f) return; @@ -199,7 +199,7 @@ private boolean tickMovementProgress() { chasedPointProgress += Math.min(256, Math.abs(getSpeed())) / 1024f; if (chasedPointProgress > 1) chasedPointProgress = 1; - if (!level.isClientSide) + if (!level.isClientSide()) return !targetReachedPreviously && chasedPointProgress >= 1; ArmInteractionPoint targetedInteractionPoint = getTargetedInteractionPoint(); @@ -377,7 +377,7 @@ protected void depositItem() { sendData(); setChanged(); - if (!level.isClientSide) + if (!level.isClientSide()) award(AllAdvancements.MECHANICAL_ARM); } @@ -411,7 +411,7 @@ protected void collectItem() { } public void redstoneUpdate() { - if (level.isClientSide) + if (level.isClientSide()) return; boolean blockPowered = level.hasNeighborSignal(worldPosition); if (blockPowered == redstoneLocked) @@ -440,10 +440,10 @@ protected boolean isAreaActuallyLoaded(BlockPos center, int range) { if (!level.isAreaLoaded(center, range)) { return false; } - if (level.isClientSide) { + if (level.isClientSide()) { int minY = center.getY() - range; int maxY = center.getY() + range; - if (maxY < level.getMinBuildHeight() || minY >= level.getMaxBuildHeight()) { + if (maxY < level.getMinY() || minY > level.getMaxY()) { return false; } @@ -489,7 +489,7 @@ else if (point.getMode() == Mode.TAKE) hasBlazeBurner |= point instanceof AllArmInteractionPointTypes.BlazeBurnerPoint; } - if (!level.isClientSide) { + if (!level.isClientSide()) { if (outputs.size() >= 10) award(AllAdvancements.ARM_MANY_TARGETS); if (hasBlazeBurner) @@ -525,7 +525,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea NBTHelper.writeEnum(compound, "Phase", phase); compound.putBoolean("Powered", redstoneLocked); compound.putBoolean("Goggles", goggles); - compound.put("HeldItem", heldItem.saveOptional(registries)); + compound.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(heldItem, registries)); compound.putInt("TargetPointIndex", chasedPointIndex); compound.putFloat("MovementProgress", chasedPointProgress); } @@ -544,15 +544,15 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c ListTag interactionPointTagBefore = interactionPointTag; super.read(tag, registries, clientPacket); - heldItem = ItemStack.parseOptional(registries, tag.getCompound("HeldItem")); + heldItem = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, tag.getCompoundOrEmpty("HeldItem")); phase = NBTHelper.readEnum(tag, "Phase", Phase.class); - chasedPointIndex = tag.getInt("TargetPointIndex"); - chasedPointProgress = tag.getFloat("MovementProgress"); - interactionPointTag = tag.getList("InteractionPoints", Tag.TAG_COMPOUND); - redstoneLocked = tag.getBoolean("Powered"); + chasedPointIndex = tag.getIntOr("TargetPointIndex", 0); + chasedPointProgress = tag.getFloatOr("MovementProgress", 0); + interactionPointTag = tag.getListOrEmpty("InteractionPoints"); + redstoneLocked = tag.getBooleanOr("Powered", false); boolean hadGoggles = goggles; - goggles = tag.getBoolean("Goggles"); + goggles = tag.getBooleanOr("Goggles", false); if (!clientPacket) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPoint.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPoint.java index d7a52c9ca4..d1b1307001 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPoint.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPoint.java @@ -5,13 +5,13 @@ import com.simibubi.create.api.registry.CreateBuiltInRegistries; import com.simibubi.create.content.contraptions.StructureTransform; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -23,6 +23,8 @@ import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.item.ItemResource; public class ArmInteractionPoint { @@ -32,7 +34,7 @@ public class ArmInteractionPoint { protected Mode mode = Mode.DEPOSIT; protected BlockState cachedState; - protected BlockCapabilityCache cachedHandler; + protected BlockCapabilityCache, Direction> cachedHandler; protected ArmAngleTarget cachedAngles; public ArmInteractionPoint(ArmInteractionPointType type, Level level, BlockPos pos, BlockState state) { @@ -101,7 +103,7 @@ protected IItemHandler getHandler(ArmBlockEntity armBlockEntity) { if (be == null) return null; cachedHandler = BlockCapabilityCache.create( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, serverLevel, pos, Direction.UP, @@ -109,7 +111,7 @@ protected IItemHandler getHandler(ArmBlockEntity armBlockEntity) { () -> cachedHandler = null ); } - return cachedHandler.getCapability(); + return com.simibubi.create.foundation.item.LegacyItemHandlerAdapter.of(cachedHandler.getCapability()); } public ItemStack insert(ArmBlockEntity armBlockEntity, ItemStack stack, boolean simulate) { @@ -146,23 +148,25 @@ protected void deserialize(CompoundTag nbt, BlockPos anchor) { } public final CompoundTag serialize(BlockPos anchor) { - ResourceLocation key = CreateBuiltInRegistries.ARM_INTERACTION_POINT_TYPE.getKey(type); + Identifier key = CreateBuiltInRegistries.ARM_INTERACTION_POINT_TYPE.getKey(type); if (key == null) throw new IllegalArgumentException("Could not get id for ArmInteractionPointType " + type + "!"); CompoundTag nbt = new CompoundTag(); nbt.putString("Type", key.toString()); - nbt.put("Pos", NbtUtils.writeBlockPos(pos.subtract(anchor))); + nbt.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos.subtract(anchor))); serialize(nbt, anchor); return nbt; } @Nullable public static ArmInteractionPoint deserialize(CompoundTag nbt, Level level, BlockPos anchor) { - ResourceLocation id = ResourceLocation.tryParse(nbt.getString("Type")); + Identifier id = Identifier.tryParse(nbt.getStringOr("Type", "")); if (id == null) return null; - ArmInteractionPointType type = CreateBuiltInRegistries.ARM_INTERACTION_POINT_TYPE.get(id); + ArmInteractionPointType type = CreateBuiltInRegistries.ARM_INTERACTION_POINT_TYPE.get(id) + .map(reference -> reference.value()) + .orElse(null); if (type == null) return null; BlockPos pos = NBTHelper.readBlockPos(nbt, "Pos").offset(anchor); @@ -179,7 +183,7 @@ public static ArmInteractionPoint deserialize(CompoundTag nbt, Level level, Bloc public static void transformPos(CompoundTag nbt, StructureTransform transform) { BlockPos pos = NBTHelper.readBlockPos(nbt, "Pos"); pos = transform.applyWithoutOffset(pos); - nbt.put("Pos", NbtUtils.writeBlockPos(pos)); + nbt.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); } public static boolean isInteractable(Level level, BlockPos pos, BlockState state) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPointHandler.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPointHandler.java index 1dc546c57b..987faed6ed 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPointHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmInteractionPointHandler.java @@ -9,10 +9,10 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllPackets; import com.simibubi.create.content.kinetics.mechanicalArm.ArmInteractionPoint.Mode; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -46,7 +46,7 @@ public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClick return; BlockPos pos = event.getPos(); Level world = event.getLevel(); - if (!world.isClientSide) + if (!world.isClientSide()) return; Player player = event.getEntity(); if (player != null && player.isSpectator()) @@ -81,7 +81,7 @@ public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClick public static void leftClickingBlocksDeselectsThem(PlayerInteractEvent.LeftClickBlock event) { if (currentItem == null) return; - if (!event.getLevel().isClientSide) + if (!event.getLevel().isClientSide()) return; BlockPos pos = event.getPos(); if (remove(pos) != null) { @@ -124,7 +124,7 @@ public static void flushSettings(BlockPos pos) { .sendStatus(player); } - CatnipServices.NETWORK.sendToServer(new ArmPlacementPacket(currentSelection, pos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ArmPlacementPacket(currentSelection, pos)); currentSelection.clear(); currentItem = null; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmItem.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmItem.java index 09e358833e..dbcace5731 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmItem.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmItem.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.kinetics.mechanicalArm; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -31,12 +31,11 @@ public InteractionResult useOn(UseOnContext ctx) { @Override protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, Player player, ItemStack p_195943_4_, BlockState p_195943_5_) { - if (!world.isClientSide && player instanceof ServerPlayer sp) + if (!world.isClientSide() && player instanceof ServerPlayer sp) CatnipServices.NETWORK.sendToClient(sp, new ArmPlacementPacket.ClientBoundRequest(pos)); return super.updateCustomBlockEntityTag(pos, world, player, p_195943_4_, p_195943_5_); } - @Override public boolean canAttackBlock(BlockState state, Level world, BlockPos pos, Player p_195938_4_) { return !ArmInteractionPoint.isInteractable(world, pos, state); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmPlacementPacket.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmPlacementPacket.java index cb30f3717e..bc7826d314 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmPlacementPacket.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmPlacementPacket.java @@ -6,9 +6,9 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.nbt.ListTag; import net.minecraft.network.FriendlyByteBuf; @@ -18,7 +18,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ArmPlacementPacket(ListTag tag, BlockPos pos) implements ServerboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -63,8 +62,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { ArmInteractionPointHandler.flushSettings(pos); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java index 5cfdde06f4..438837a406 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmRenderer.java @@ -8,17 +8,17 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemDisplayContext; @@ -43,13 +43,12 @@ protected void renderSafe(ArmBlockEntity be, float pt, PoseStack ms, MultiBuffer if (usingFlywheel && !hasItem) return; - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); BakedModel bakedModel = itemRenderer.getModel(item, be.getLevel(), null, 0); boolean isBlockItem = hasItem && (item.getItem() instanceof BlockItem) && bakedModel.isGui3d(); - VertexConsumer builder = buffer.getBuffer(be.goggles ? RenderType.cutout() : RenderType.solid()); + VertexConsumer builder = buffer.getBuffer(be.goggles ? com.simibubi.create.foundation.render.LegacyRenderTypes.cutout() : com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); BlockState blockState = be.getBlockState(); PoseStack msLocal = new PoseStack(); @@ -64,7 +63,7 @@ protected void renderSafe(ArmBlockEntity be, float pt, PoseStack ms, MultiBuffer boolean rave = be.phase == Phase.DANCING && be.getSpeed() != 0; if (rave) { - float renderTick = AnimationTickHolder.getRenderTime(be.getLevel()) + (be.hashCode() % 64); + float renderTick = AnimationTickHolder.getRenderTime() + (be.hashCode() % 64); baseAngle = (renderTick * 10) % 360; lowerArmAngle = Mth.lerp((Mth.sin(renderTick / 4) + 1) / 2, -45, 15); upperArmAngle = Mth.lerp((Mth.sin(renderTick / 8) + 1) / 4, -45, 95); @@ -192,7 +191,6 @@ public static void transformBase(TransformStack msr, float baseAngle) { msr.rotateYDegrees(baseAngle); } - @Override public boolean shouldRenderOffScreen(ArmBlockEntity be) { return true; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java index bc0852a06c..074df86d2b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mechanicalArm/ArmVisual.java @@ -18,11 +18,11 @@ import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.util.RecyclingPoseStack; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.entity.ItemRenderer; +import com.simibubi.create.foundation.render.ItemRenderer; import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -110,7 +110,7 @@ private void animate(float pt) { } private void animateRave(float partialTick) { - var ticks = AnimationTickHolder.getTicks(blockEntity.getLevel()); + var ticks = AnimationTickHolder.getTicks(); float renderTick = ticks + partialTick + (blockEntity.hashCode() % 64); float baseAngle = (renderTick * 10) % 360; @@ -157,8 +157,7 @@ private void updateAngles(float baseAngle, float lowerArmAngle, float upperArmAn msr.rotateZDegrees(180); ItemStack item = blockEntity.heldItem; - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); boolean hasItem = !item.isEmpty(); boolean isBlockItem = hasItem && (item.getItem() instanceof BlockItem) && itemRenderer.getModel(item, Minecraft.getInstance().level, null, 0) diff --git a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlock.java b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlock.java index 81e4b61bea..f4f40625c1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlock.java @@ -5,14 +5,15 @@ import com.simibubi.create.content.kinetics.base.KineticBlock; import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -49,11 +50,11 @@ public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!stack.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, millstone -> { boolean emptyOutput = true; @@ -80,14 +81,14 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev millstone.sendData(); }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); - if (entityIn.level().isClientSide) + if (entityIn.level().isClientSide()) return; if (!(entityIn instanceof ItemEntity itemEntity)) return; @@ -95,14 +96,14 @@ public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { return; MillstoneBlockEntity millstone = null; - for (BlockPos pos : Iterate.hereAndBelow(entityIn.blockPosition())) + for (BlockPos targetPos : Iterate.hereAndBelow(entityIn.blockPosition())) if (millstone == null) - millstone = getBlockEntity(worldIn, pos); + millstone = getBlockEntity(worldIn, targetPos); if (millstone == null) return; - IItemHandler capability = millstone.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, millstone.getBlockPos(), null); + IItemHandler capability = LegacyItemHandlerAdapter.of(millstone.getLevel().getCapability(Capabilities.Item.BLOCK, millstone.getBlockPos(), null)); if (capability == null) return; diff --git a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlockEntity.java index cc8a5aae75..702ec170c0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneBlockEntity.java @@ -9,12 +9,14 @@ import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.mixin.accessor.ItemStackHandlerAccessor; import com.simibubi.create.foundation.sound.SoundScapes; import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; @@ -24,13 +26,13 @@ import net.minecraft.util.Mth; import net.minecraft.world.Clearable; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.IItemHandler; @@ -55,9 +57,9 @@ public MillstoneBlockEntity(BlockEntityType type, BlockPos pos, BlockState st public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.MILLSTONE.get(), - (be, context) -> be.capability + (be, context) -> new LegacyItemTransferAdapter(be.capability) ); } @@ -69,7 +71,6 @@ public void addBehaviours(List behaviours) { } @Override - @OnlyIn(Dist.CLIENT) public void tickAudio() { super.tickAudio(); @@ -97,7 +98,7 @@ public void tick() { if (timer > 0) { timer -= getProcessingSpeed(); - if (level.isClientSide) { + if (level.isClientSide()) { spawnParticles(); return; } @@ -157,13 +158,13 @@ private void process() { } ItemStack stackInSlot = inputInv.getStackInSlot(0); - ItemStack craftingRemainingItem = stackInSlot.getCraftingRemainingItem(); + ItemStackTemplate craftingRemainingItem = stackInSlot.getCraftingRemainder(); stackInSlot.shrink(1); inputInv.setStackInSlot(0, stackInSlot); - lastRecipe.rollResults(level.random) + lastRecipe.rollResults(level.getRandom()) .forEach(stack -> ItemHandlerHelper.insertItemStacked(outputInv, stack, false)); - if (!craftingRemainingItem.isEmpty()) { - ItemHandlerHelper.insertItemStacked(outputInv, craftingRemainingItem, false); + if (craftingRemainingItem != null) { + ItemHandlerHelper.insertItemStacked(outputInv, craftingRemainingItem.create(), false); } award(AllAdvancements.MILLSTONE); @@ -176,30 +177,30 @@ public void spawnParticles() { if (stackInSlot.isEmpty()) return; - ItemParticleOption data = new ItemParticleOption(ParticleTypes.ITEM, stackInSlot); - float angle = level.random.nextFloat() * 360; + ItemParticleOption data = new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stackInSlot)); + float angle = level.getRandom().nextFloat() * 360; Vec3 offset = new Vec3(0, 0, 0.5f); offset = VecHelper.rotate(offset, angle, Axis.Y); Vec3 target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y); Vec3 center = offset.add(VecHelper.getCenterOf(worldPosition)); - target = VecHelper.offsetRandomly(target.subtract(offset), level.random, 1 / 128f); + target = VecHelper.offsetRandomly(target.subtract(offset), level.getRandom(), 1 / 128f); level.addParticle(data, center.x, center.y, center.z, target.x, target.y, target.z); } @Override public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { compound.putInt("Timer", timer); - compound.put("InputInventory", inputInv.serializeNBT(registries)); - compound.put("OutputInventory", outputInv.serializeNBT(registries)); + compound.put("InputInventory", LegacyItemStackNbtBridge.serializeHandler(inputInv, registries)); + compound.put("OutputInventory", LegacyItemStackNbtBridge.serializeHandler(outputInv, registries)); super.write(compound, registries, clientPacket); } @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - timer = compound.getInt("Timer"); - inputInv.deserializeNBT(registries, compound.getCompound("InputInventory")); - outputInv.deserializeNBT(registries, compound.getCompound("OutputInventory")); + timer = compound.getIntOr("Timer", 0); + LegacyItemStackNbtBridge.deserializeHandler(inputInv, registries, compound.getCompoundOrEmpty("InputInventory")); + LegacyItemStackNbtBridge.deserializeHandler(outputInv, registries, compound.getCompoundOrEmpty("OutputInventory")); super.read(compound, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneRenderer.java index 57bedbd36a..2e71baa242 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/millstone/MillstoneRenderer.java @@ -3,8 +3,8 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlockEntity.java index 56828e4642..e38cde9fb9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerBlockEntity.java @@ -16,12 +16,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; @@ -33,6 +34,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; @@ -43,7 +45,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.items.IItemHandler; @@ -107,8 +108,8 @@ protected AABB createRenderBoundingBox() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - running = compound.getBoolean("Running"); - runningTicks = compound.getInt("Ticks"); + running = compound.getBooleanOr("Running", false); + runningTicks = compound.getIntOr("Ticks", 0); super.read(compound, registries, clientPacket); if (clientPacket && hasLevel()) @@ -135,7 +136,7 @@ public void tick() { float speed = Math.abs(getSpeed()); if (running && level != null) { - if (level.isClientSide && runningTicks == 20) + if (level.isClientSide() && runningTicks == 20) renderParticles(); if (getSpeed() == 0 || !isSpeedRequirementFulfilled()) { @@ -145,7 +146,7 @@ else if (runningTicks == 20) runningTicks++; } - if ((!level.isClientSide || isVirtual()) && runningTicks == 20) { + if ((!level.isClientSide() || isVirtual()) && runningTicks == 20) { if (processingTicks < 0) { float recipeSpeed = 1; if (currentRecipe instanceof StandardProcessingRecipe) { @@ -195,7 +196,8 @@ public void renderParticles() { ItemStack stackInSlot = inv.getItem(slot); if (stackInSlot.isEmpty()) continue; - ItemParticleOption data = new ItemParticleOption(ParticleTypes.ITEM, stackInSlot); + ItemParticleOption data = + new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stackInSlot)); spillParticle(data); } } @@ -213,13 +215,13 @@ public void renderParticles() { } protected void spillParticle(ParticleOptions data) { - float angle = level.random.nextFloat() * 360; + float angle = level.getRandom().nextFloat() * 360; Vec3 offset = new Vec3(0, 0, 0.25f); offset = VecHelper.rotate(offset, angle, Axis.Y); Vec3 target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y) .add(0, .25f, 0); Vec3 center = offset.add(VecHelper.getCenterOf(worldPosition)); - target = VecHelper.offsetRandomly(target.subtract(offset), level.random, 1 / 128f); + target = VecHelper.offsetRandomly(target.subtract(offset), level.getRandom(), 1 / 128f); level.addParticle(data, center.x, center.y - 1.75f, center.z, target.x, target.y, target.z); } @@ -238,7 +240,8 @@ protected List> getMatchingRecipes() { if (basin.isEmpty()) return matchingRecipes; - IItemHandler availableItems = level.getCapability(Capabilities.ItemHandler.BLOCK, basinBlockEntity.getBlockPos(), null); + IItemHandler availableItems = + LegacyItemHandlerAdapter.of(level.getCapability(Capabilities.Item.BLOCK, basinBlockEntity.getBlockPos(), null)); if (availableItems == null) return matchingRecipes; @@ -262,7 +265,7 @@ protected List> getMatchingRecipes() { protected boolean matchStaticFilters(RecipeHolder> recipe) { Recipe r = recipe.value(); return ((r instanceof CraftingRecipe && !(r instanceof ShapedRecipe) - && AllConfigs.server().recipes.allowShapelessInMixer.get() && r.getIngredients() + && AllConfigs.server().recipes.allowShapelessInMixer.get() && r.placementInfo().ingredients() .size() > 1 && !MechanicalPressBlockEntity.canCompress(r)) && !AllRecipeTypes.shouldIgnoreInAutomation(recipe) || r.getType() == AllRecipeTypes.MIXING.getType()); @@ -307,7 +310,6 @@ protected Optional getProcessedRecipeTrigger() { } @Override - @OnlyIn(Dist.CLIENT) public void tickAudio() { super.tickAudio(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerRenderer.java index 3234ab5554..ec0d68507d 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/mixer/MechanicalMixerRenderer.java @@ -6,11 +6,11 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -21,7 +21,6 @@ public MechanicalMixerRenderer(BlockEntityRendererProvider.Context context) { super(context); } - @Override public boolean shouldRenderOffScreen(MechanicalMixerBlockEntity be) { return true; } @@ -34,14 +33,14 @@ protected void renderSafe(MechanicalMixerBlockEntity be, float partialTicks, Pos BlockState blockState = be.getBlockState(); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); SuperByteBuffer superBuffer = CachedBuffers.partial(AllPartialModels.SHAFTLESS_COGWHEEL, blockState); standardKineticRotationTransform(superBuffer, be, light).renderInto(ms, vb); float renderedHeadOffset = be.getRenderedHeadOffset(partialTicks); float speed = be.getRenderedHeadRotationSpeed(partialTicks); - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI; SuperByteBuffer poleRender = CachedBuffers.partial(AllPartialModels.MECHANICAL_MIXER_POLE, blockState); @@ -49,7 +48,7 @@ protected void renderSafe(MechanicalMixerBlockEntity be, float partialTicks, Pos .light(light) .renderInto(ms, vb); - VertexConsumer vbCutout = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vbCutout = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); SuperByteBuffer headRender = CachedBuffers.partial(AllPartialModels.MECHANICAL_MIXER_HEAD, blockState); headRender.rotateCentered(angle, Direction.UP) .translate(0, -renderedHeadOffset, 0) diff --git a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorBlockEntity.java index 6fd174bca4..d623d59127 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorBlockEntity.java @@ -16,8 +16,8 @@ import dan200.computercraft.api.peripheral.PeripheralCapability; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -86,7 +86,7 @@ protected Vec3 getSouthLocation() { @Override public Vec3 getLocalOffset(LevelAccessor level, BlockPos pos, BlockState state) { Direction facing = state.getValue(CreativeMotorBlock.FACING); - return super.getLocalOffset(level, pos, state).add(Vec3.atLowerCornerOf(facing.getNormal()) + return super.getLocalOffset(level, pos, state).add(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(-1 / 16f)); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorGenerator.java index 16bb7c0597..afeb200d21 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorGenerator.java @@ -3,12 +3,12 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class CreativeMotorGenerator extends SpecialBlockStateGen { @@ -25,7 +25,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return state.getValue(CreativeMotorBlock.FACING) .getAxis() diff --git a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorRenderer.java index f05371940f..73c96a00cd 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/motor/CreativeMotorRenderer.java @@ -3,8 +3,8 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlockEntity.java index e7e9ebb98a..adc1fdff35 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressBlockEntity.java @@ -21,10 +21,9 @@ import com.simibubi.create.foundation.recipe.RecipeApplier; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; @@ -108,7 +107,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - tracksCreated = compound.getInt("TracksCreated"); + tracksCreated = compound.getIntOr("TracksCreated", 0); } @Override @@ -134,7 +133,7 @@ public boolean tryProcessInWorld(ItemEntity itemEntity, boolean simulate) { ItemEntity created = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), result); created.setDefaultPickUpDelay(); - created.setDeltaMovement(VecHelper.offsetRandomly(Vec3.ZERO, level.random, .05f)); + created.setDeltaMovement(VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .05f)); level.addFreshEntity(created); } item.shrink(1); @@ -189,7 +188,7 @@ public Optional> getRecipe(ItemStack item) { public static boolean canCompress(Recipe recipe) { if (!(recipe instanceof CraftingRecipe) || !AllConfigs.server().recipes.allowShapedSquareInPress.get()) return false; - NonNullList ingredients = recipe.getIngredients(); + List ingredients = recipe.placementInfo().ingredients(); return (ingredients.size() == 4 || ingredients.size() == 9) && ItemHelper.matchAllIngredients(ingredients); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressRenderer.java index b41111f380..f375ffa089 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/MechanicalPressRenderer.java @@ -7,10 +7,10 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; @@ -20,7 +20,6 @@ public MechanicalPressRenderer(BlockEntityRendererProvider.Context context) { super(context); } - @Override public boolean shouldRenderOffScreen(MechanicalPressBlockEntity be) { return true; } @@ -42,7 +41,7 @@ protected void renderSafe(MechanicalPressBlockEntity be, float partialTicks, Pos blockState.getValue(HORIZONTAL_FACING)); headRender.translate(0, -renderedHeadOffset, 0) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java b/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java index 5b7b9bdc15..b15ddf0b95 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/PressVisual.java @@ -15,7 +15,7 @@ import dev.engine_room.flywheel.lib.instance.OrientedInstance; import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; public class PressVisual extends ShaftVisual implements SimpleDynamicVisual { diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java index 9f18f23d3e..cd5c5b10f2 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/PressingBehaviour.java @@ -10,19 +10,20 @@ import com.simibubi.create.content.processing.basin.BasinBlock; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.phys.AABB; @@ -71,15 +72,15 @@ public PressingBehavio @Override public void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - running = compound.getBoolean("Running"); - mode = Mode.values()[compound.getInt("Mode")]; - finished = compound.getBoolean("Finished"); - prevRunningTicks = runningTicks = compound.getInt("Ticks"); + running = compound.getBooleanOr("Running", false); + mode = Mode.values()[compound.getIntOr("Mode", 0)]; + finished = compound.getBooleanOr("Finished", false); + prevRunningTicks = runningTicks = compound.getIntOr("Ticks", 0); super.read(compound, registries, clientPacket); if (clientPacket) { - NBTHelper.iterateCompoundList(compound.getList("ParticleItems", Tag.TAG_COMPOUND), - c -> particleItems.add(ItemStack.parseOptional(registries, c))); + NBTHelper.iterateCompoundList(compound.getListOrEmpty("ParticleItems"), + c -> particleItems.add(LegacyItemStackNbtBridge.parseOptional(registries, c))); spawnParticles(); } } @@ -93,7 +94,8 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea super.write(compound, registries, clientPacket); if (clientPacket) { - compound.put("ParticleItems", NBTHelper.writeCompoundList(particleItems, s -> (CompoundTag) s.saveOptional(registries))); + compound.put("ParticleItems", NBTHelper.writeCompoundList(particleItems, + s -> LegacyItemStackNbtBridge.saveOptionalCompound(s, registries))); particleItems.clear(); } } @@ -133,7 +135,7 @@ public void tick() { BlockPos worldPosition = getPos(); if (!running || level == null) { - if (level != null && !level.isClientSide) { + if (level != null && !level.isClientSide()) { if (specifics.getKineticSpeed() == 0) return; @@ -163,7 +165,7 @@ public void tick() { return; } - if (level.isClientSide && runningTicks == -CYCLE / 2) { + if (level.isClientSide() && runningTicks == -CYCLE / 2) { prevRunningTicks = CYCLE / 2; return; } @@ -181,11 +183,11 @@ public void tick() { AllSoundEvents.MECHANICAL_PRESS_ACTIVATION.playOnServer(level, worldPosition, .5f, .75f + (Math.abs(specifics.getKineticSpeed()) / 1024f)); - if (!level.isClientSide) + if (!level.isClientSide()) blockEntity.sendData(); } - if (!level.isClientSide && runningTicks > CYCLE) { + if (!level.isClientSide() && runningTicks > CYCLE) { finished = true; running = false; particleItems.clear(); @@ -199,14 +201,14 @@ public void tick() { if (prevRunningTicks < CYCLE / 2 && runningTicks >= CYCLE / 2) { runningTicks = CYCLE / 2; // Pause the ticks until a packet is received - if (level.isClientSide && !blockEntity.isVirtual()) + if (level.isClientSide() && !blockEntity.isVirtual()) runningTicks = -(CYCLE / 2); } } protected void applyOnBasin() { Level level = getWorld(); - if (level.isClientSide) + if (level.isClientSide()) return; particleItems.clear(); if (specifics.tryProcessInBasin(false)) @@ -221,7 +223,7 @@ protected void applyInWorld() { particleItems.clear(); - if (level.isClientSide) + if (level.isClientSide()) return; for (Entity entity : level.getEntities(null, bb)) { @@ -270,26 +272,26 @@ public void makePressingParticleEffect(Vec3 pos, ItemStack stack) { public void makePressingParticleEffect(Vec3 pos, ItemStack stack, int amount) { Level level = getWorld(); - if (level == null || !level.isClientSide) + if (level == null || !level.isClientSide() || stack.isEmpty()) return; for (int i = 0; i < amount; i++) { - Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, level.random, .125f) + Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .125f) .multiply(1, 0, 1); motion = motion.add(0, amount != 1 ? 0.125f : 1 / 16f, 0); - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), pos.x, pos.y - .25f, pos.z, motion.x, - motion.y, motion.z); + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)), + pos.x, pos.y - .25f, pos.z, motion.x, motion.y, motion.z); } } public void makeCompactingParticleEffect(Vec3 pos, ItemStack stack) { Level level = getWorld(); - if (level == null || !level.isClientSide) + if (level == null || !level.isClientSide() || stack.isEmpty()) return; for (int i = 0; i < 20; i++) { - Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, level.random, .175f) + Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .175f) .multiply(1, 0, 1); - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, stack), pos.x, pos.y, pos.z, motion.x, - motion.y + .25f, motion.z); + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)), + pos.x, pos.y, pos.z, motion.x, motion.y + .25f, motion.z); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/press/PressingRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/press/PressingRecipe.java index e163d96355..a4f46c7101 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/press/PressingRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/press/PressingRecipe.java @@ -21,7 +21,6 @@ import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; @ParametersAreNonnullByDefault public class PressingRecipe extends StandardProcessingRecipe implements IAssemblyRecipe { @@ -52,7 +51,6 @@ protected int getMaxOutputCount() { public void addAssemblyIngredients(List list) {} @Override - @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { return CreateLang.translateDirect("recipe.assembly.pressing"); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/CuttingRecipe.java b/src/main/java/com/simibubi/create/content/kinetics/saw/CuttingRecipe.java index 29b64d1fb5..46d3ed4353 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/CuttingRecipe.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/CuttingRecipe.java @@ -20,7 +20,6 @@ import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.wrapper.RecipeWrapper; @ParametersAreNonnullByDefault @@ -57,7 +56,6 @@ protected boolean canSpecifyDuration() { public void addAssemblyIngredients(List list) {} @Override - @OnlyIn(Dist.CLIENT) public Component getDescriptionForAssembly() { return CreateLang.translateDirect("recipe.assembly.cutting"); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlock.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlock.java index 90ca33a2fd..8c0856cf13 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlock.java @@ -13,18 +13,18 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.damageTypes.CreateDamageSources; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -48,11 +48,10 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SawBlock extends DirectionalAxisKineticBlock implements IBE { public static final BooleanProperty FLIPPED = BooleanProperty.create("flipped"); - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public SawBlock(Properties properties) { super(properties); @@ -121,36 +120,37 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (!player.isShiftKeyDown() && player.mayBuild()) { if (placementHelper.matchesItem(stack) && placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult) .consumesAction()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (player.isSpectator() || !stack.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (state.getOptionalValue(FACING) .orElse(Direction.WEST) != Direction.UP) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; return onBlockEntityUseItemOn(level, pos, be -> { for (int i = 0; i < be.inventory.getSlots(); i++) { ItemStack heldItemStack = be.inventory.getStackInSlot(i); - if (!level.isClientSide && !heldItemStack.isEmpty()) + if (!level.isClientSide() && !heldItemStack.isEmpty()) player.getInventory() .placeItemBackInInventory(heldItemStack); } be.inventory.clear(); be.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (entityIn instanceof ItemEntity) return; if (!new AABB(pos).deflate(.1f) @@ -164,15 +164,15 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); if (!(entityIn instanceof ItemEntity)) return; - if (entityIn.level().isClientSide) + if (entityIn.level().isClientSide()) return; - BlockPos pos = entityIn.blockPosition(); - withBlockEntityDo(entityIn.level(), pos, be -> { + BlockPos sawPos = entityIn.blockPosition(); + withBlockEntityDo(entityIn.level(), sawPos, be -> { if (be.getSpeed() == 0) return; be.insertItem((ItemEntity) entityIn); @@ -217,8 +217,7 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu return false; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java index 3b8bbd185f..7ab88166d3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawBlockEntity.java @@ -23,14 +23,15 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.recipe.RecipeConditions; import com.simibubi.create.foundation.recipe.RecipeFinder; import com.simibubi.create.foundation.utility.AbstractBlockBreakQueue; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -40,7 +41,7 @@ import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; @@ -49,9 +50,11 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.item.crafting.StonecutterRecipe; import net.minecraft.world.level.block.BambooStalkBlock; import net.minecraft.world.level.block.Block; @@ -60,6 +63,7 @@ import net.minecraft.world.level.block.ChorusPlantBlock; import net.minecraft.world.level.block.KelpBlock; import net.minecraft.world.level.block.KelpPlantBlock; +import net.minecraft.world.level.block.SaplingBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.SugarCaneBlock; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -68,17 +72,17 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.ItemStackHandler; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SawBlockEntity extends BlockBreakingKineticBlockEntity implements Clearable { private static final Object cuttingRecipesKey = new Object(); public static final Supplier> woodcuttingRecipeType = - Suppliers.memoize(() -> BuiltInRegistries.RECIPE_TYPE.get(ResourceLocation.fromNamespaceAndPath("druidcraft", "woodcutting"))); + Suppliers.memoize(() -> BuiltInRegistries.RECIPE_TYPE.get(Identifier.fromNamespaceAndPath("druidcraft", "woodcutting")) + .map(holder -> holder.value()) + .orElse(null)); public ProcessingInventory inventory; private int recipeIndex; @@ -96,11 +100,11 @@ public SawBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.SAW.get(), (be, context) -> { if (context != Direction.DOWN) - return be.inventory; + return new LegacyItemTransferAdapter(be.inventory); return null; } ); @@ -123,17 +127,17 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea if (!clientPacket || playEvent.isEmpty()) return; - compound.put("PlayEvent", playEvent.saveOptional(registries)); + compound.put("PlayEvent", LegacyItemStackNbtBridge.saveOptional(playEvent, registries)); playEvent = ItemStack.EMPTY; } @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); - recipeIndex = compound.getInt("RecipeIndex"); + inventory.deserializeNBT(registries, compound.getCompoundOrEmpty("Inventory")); + recipeIndex = compound.getIntOr("RecipeIndex", 0); if (compound.contains("PlayEvent")) - playEvent = ItemStack.parseOptional(registries, compound.getCompound("PlayEvent")); + playEvent = LegacyItemStackNbtBridge.parseOptional(registries, compound.get("PlayEvent")); } @Override @@ -142,7 +146,6 @@ protected AABB createRenderBoundingBox() { } @Override - @OnlyIn(Dist.CLIENT) public void tickAudio() { super.tickAudio(); if (getSpeed() == 0) @@ -188,7 +191,7 @@ public void tick() { spawnParticles(inventory.getStackInSlot(0)); if (inventory.remainingTime < 5 && !inventory.appliedRecipe) { - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; playEvent = inventory.getStackInSlot(0); applyRecipe(); @@ -200,7 +203,7 @@ public void tick() { } Vec3 itemMovement = getItemMovementVec(); - Direction itemMovementFacing = Direction.getNearest(itemMovement.x, itemMovement.y, itemMovement.z); + Direction itemMovementFacing = Direction.getApproximateNearest(itemMovement.x, itemMovement.y, itemMovement.z); if (inventory.remainingTime > 0) return; inventory.remainingTime = 0; @@ -228,7 +231,7 @@ public void tick() { boolean changed = false; if (!behaviour.canInsertFromSide(itemMovementFacing)) return; - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; for (int slot = 0; slot < inventory.getSlots(); slot++) { ItemStack stack = inventory.getStackInSlot(slot); @@ -294,9 +297,9 @@ protected void spawnEventParticles(ItemStack stack) { particleData = new BlockParticleOption(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() .defaultBlockState()); else - particleData = new ItemParticleOption(ParticleTypes.ITEM, stack); + particleData = new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)); - RandomSource r = level.random; + RandomSource r = level.getRandom(); Vec3 v = VecHelper.getCenterOf(this.worldPosition) .add(0, 5 / 16f, 0); for (int i = 0; i < 10; i++) { @@ -315,11 +318,11 @@ protected void spawnParticles(ItemStack stack) { particleData = new BlockParticleOption(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() .defaultBlockState()); else { - particleData = new ItemParticleOption(ParticleTypes.ITEM, stack); + particleData = new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(stack)); speed = .125f; } - RandomSource r = level.random; + RandomSource r = level.getRandom(); Vec3 vec = getItemMovementVec(); Vec3 pos = VecHelper.getCenterOf(this.worldPosition); float offset = inventory.recipeDuration != 0 ? (float) (inventory.remainingTime) / inventory.recipeDuration : 0; @@ -367,16 +370,21 @@ private void applyRecipe() { for (int roll = 0; roll < rolls; roll++) { List results = new LinkedList<>(); if (recipe instanceof CuttingRecipe) - results = ((CuttingRecipe) recipe).rollResults(level.random); - else if (recipe instanceof StonecutterRecipe || recipe.getType() == woodcuttingRecipeType.get()) - results.add(recipe.getResultItem(level.registryAccess()) - .copy()); + results = ((CuttingRecipe) recipe).rollResults(level.getRandom()); + else if (recipe instanceof StonecutterRecipe stonecutter) + results.add(stonecutter.assemble(new SingleRecipeInput(input))); + else if (recipe.getType() == woodcuttingRecipeType.get()) { + @SuppressWarnings("unchecked") + Recipe singleRecipe = (Recipe) recipe; + results.add(singleRecipe.assemble(new SingleRecipeInput(input))); + } for (ItemStack stack : results) { ItemHelper.addToList(stack, list); } - if (input.hasCraftingRemainingItem()) - ItemHelper.addToList(input.getCraftingRemainingItem(), list); + ItemStackTemplate craftingRemainder = input.getCraftingRemainder(); + if (craftingRemainder != null) + ItemHelper.addToList(craftingRemainder.create(), list); } for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) @@ -410,7 +418,7 @@ public void insertItem(ItemEntity entity) { return; if (!entity.isAlive()) return; - if (level.isClientSide) + if (level.isClientSide()) return; inventory.clear(); @@ -427,7 +435,7 @@ public void start(ItemStack inserted) { return; if (inventory.isEmpty()) return; - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; List>> recipes = getRecipes(); @@ -507,7 +515,7 @@ public boolean canBreak(BlockState stateToBreak, float blockHardness) { } public static boolean isSawable(BlockState stateToBreak) { - if (stateToBreak.is(BlockTags.SAPLINGS)) + if (stateToBreak.getBlock() instanceof SaplingBlock) return false; if (TreeCutter.isLog(stateToBreak) || (stateToBreak.is(BlockTags.LEAVES))) return true; diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawFilterSlot.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawFilterSlot.java index 8afeb3f0ff..89a0bce154 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawFilterSlot.java @@ -4,7 +4,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.LevelAccessor; diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawGenerator.java index 96ab8f727b..44c5933cba 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawGenerator.java @@ -2,12 +2,12 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class SawGenerator extends SpecialBlockStateGen { @@ -27,7 +27,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String path = "block/" + ctx.getName() + "/"; String orientation = state.getValue(SawBlock.FACING) diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java index 1b2023d264..f932b0bb81 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawMovementBehaviour.java @@ -11,10 +11,11 @@ import com.simibubi.create.foundation.damageTypes.CreateDamageSources; import com.simibubi.create.foundation.utility.AbstractBlockBreakQueue; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.tags.BlockTags; @@ -26,7 +27,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.ItemHandlerHelper; public class SawMovementBehaviour extends BlockBreakingMovementBehaviour { @@ -41,7 +41,7 @@ public boolean isActive(MovementContext context) { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(SawBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(.65f); } @@ -49,10 +49,10 @@ public Vec3 getActiveAreaOffset(MovementContext context) { public void visitNewPosition(MovementContext context, BlockPos pos) { super.visitNewPosition(context, pos); Vec3 facingVec = Vec3.atLowerCornerOf(context.state.getValue(SawBlock.FACING) - .getNormal()); + .getUnitVec3i()); facingVec = context.rotation.apply(facingVec); - Direction closestToFacing = Direction.getNearest(facingVec.x, facingVec.y, facingVec.z); + Direction closestToFacing = LegacyDirectionBridge.nearest(facingVec.x, facingVec.y, facingVec.z, Direction.NORTH); if (closestToFacing.getAxis() .isVertical() && context.data.contains("BreakingPos")) { context.data.remove("BreakingPos"); @@ -105,7 +105,6 @@ public boolean disableBlockEntityRendering() { } @Override - @OnlyIn(value = Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { SawRenderer.renderInContraption(context, renderWorld, matrices, buffer); diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java index 64bba8a974..51ea679026 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/SawRenderer.java @@ -13,21 +13,22 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; @@ -87,12 +88,12 @@ protected void renderBlade(SawBlockEntity be, PoseStack ms, MultiBufferSource bu } superBuffer.color(0xFFFFFF) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } protected void renderShaft(SawBlockEntity be, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { KineticBlockEntityRenderer.renderRotatingBuffer(be, getRotatedModel(be), ms, - buffer.getBuffer(RenderType.solid()), light); + buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()), light); } protected void renderItems(SawBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, @@ -140,8 +141,7 @@ protected void renderItems(SawBlockEntity be, float partialTicks, PoseStack ms, if (stack.isEmpty()) continue; - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); BakedModel modelWithOverrides = itemRenderer.getModel(stack, be.getLevel(), null, 0); boolean blockItem = modelWithOverrides.isGui3d(); @@ -193,10 +193,10 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor Direction facing = state.getValue(SawBlock.FACING); Vec3 facingVec = Vec3.atLowerCornerOf(context.state.getValue(SawBlock.FACING) - .getNormal()); + .getUnitVec3i()); facingVec = context.rotation.apply(facingVec); - Direction closestToFacing = Direction.getNearest(facingVec.x, facingVec.y, facingVec.z); + Direction closestToFacing = LegacyDirectionBridge.nearest(facingVec.x, facingVec.y, facingVec.z, Direction.NORTH); boolean horizontal = closestToFacing.getAxis() .isHorizontal(); @@ -228,9 +228,9 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor } superBuffer.uncenter() - .light(LevelRenderer.getLightColor(renderWorld, context.localPos)) + .light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(renderWorld, context.localPos)) .useLevelLight(context.world, matrices.getWorld()) - .renderInto(matrices.getViewProjection(), buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(matrices.getViewProjection(), buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/saw/TreeCutter.java b/src/main/java/com/simibubi/create/content/kinetics/saw/TreeCutter.java index 1239370d99..de303d34f1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/saw/TreeCutter.java +++ b/src/main/java/com/simibubi/create/content/kinetics/saw/TreeCutter.java @@ -20,7 +20,7 @@ import com.simibubi.create.compat.dynamictrees.DynamicTree; import com.simibubi.create.foundation.utility.AbstractBlockBreakQueue; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.tags.BlockTags; @@ -206,8 +206,7 @@ else if (!isLog(currentState)) private static int getLeafDistance(BlockState state) { IntegerProperty distanceProperty = LeavesBlock.DISTANCE; - for (Property property : state.getValues() - .keySet()) + for (Property property : state.getProperties()) if (property instanceof IntegerProperty ip && property.getName() .equals("distance")) distanceProperty = ip; @@ -316,7 +315,7 @@ private static int nonDecayingLeafDistance(BlockState state) { } private static boolean isLeaf(BlockState state) { - for (Property property : state.getValues().keySet()) + for (Property property : state.getProperties()) if (property instanceof IntegerProperty && property.getName().equals("distance") && property != BlockStateProperties.STABILITY_DISTANCE) return true; return false; diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractShaftBlock.java index c58b609d44..a6b3b20199 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractShaftBlock.java @@ -8,10 +8,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -58,9 +60,9 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { - updateWater(world, state, pos); + protected BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, + Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { + updateWater(ticks, world, state, pos); return state; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractSimpleShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractSimpleShaftBlock.java index c6eaeb67ed..1c1cff096b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractSimpleShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/AbstractSimpleShaftBlock.java @@ -9,6 +9,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; @@ -36,13 +37,10 @@ public PushReaction getPistonPushReaction(BlockState state) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean wasWaterLogged = state.hasProperty(WATERLOGGED) && - newState.hasProperty(WATERLOGGED) && - (state.getValue(WATERLOGGED) != newState.getValue(WATERLOGGED)); - if (state != newState && !isMoving && !wasWaterLogged) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + if (!isMoving) removeBracket(world, pos, true).ifPresent(stack -> Block.popResource(world, pos, stack)); - super.onRemove(state, world, pos, newState, isMoving); + super.affectNeighborsAfterRemoval(state, world, pos, isMoving); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntityRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntityRenderer.java index 9b1cd661e2..a6bb654b7b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockEntityRenderer.java @@ -8,11 +8,11 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityVisual; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -40,7 +40,7 @@ protected void renderSafe(BracketedKineticBlockEntity be, float partialTicks, Po // Large cogs sometimes have to offset their teeth by 11.25 degrees in order to // mesh properly - VertexConsumer vc = buffer.getBuffer(RenderType.solid()); + VertexConsumer vc = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); Axis axis = getRotationAxisOf(be); Direction facing = Direction.fromAxisAndDirection(axis, AxisDirection.POSITIVE); renderRotatingBuffer(be, @@ -58,7 +58,7 @@ protected void renderSafe(BracketedKineticBlockEntity be, float partialTicks, Po public static float getAngleForLargeCogShaft(SimpleKineticBlockEntity be, Axis axis) { BlockPos pos = be.getBlockPos(); float offset = getShaftAngleOffset(axis, pos); - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); float angle = ((time * be.getSpeed() * 3f / 10 + offset) % 360) / 180 * (float) Math.PI; return angle; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockModel.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockModel.java index 3c2a2eb155..93a67c9bc7 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockModel.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/BracketedKineticBlockModel.java @@ -5,21 +5,21 @@ import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.model.BakedModelWrapper; import net.createmod.ponder.render.VirtualRenderHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.BakedModelWrapper; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelProperty; public class BracketedKineticBlockModel extends BakedModelWrapper { @@ -61,8 +61,7 @@ private static class BracketedModelData { public void putBracket(BlockState state) { if (state != null) { - this.bracket = Minecraft.getInstance() - .getBlockRenderer() + this.bracket = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(state); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogWheelBlock.java index c3bb8b219f..04ea5c69cc 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogWheelBlock.java @@ -9,15 +9,14 @@ import com.simibubi.create.content.kinetics.speedController.SpeedControllerBlock; import com.simibubi.create.foundation.advancement.AllAdvancements; -import net.createmod.catnip.data.Iterate; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -34,7 +33,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class CogWheelBlock extends AbstractSimpleShaftBlock implements ICogWheel, EncasableBlock { boolean isLarge; @@ -80,7 +78,7 @@ public void setPlacedBy(Level worldIn, BlockPos pos, BlockState state, LivingEnt } protected void triggerShiftingGearsAdvancement(Level world, BlockPos pos, BlockState state, Player player) { - if (world.isClientSide || player == null) + if (world.isClientSide() || player == null) return; Axis axis = state.getValue(CogWheelBlock.AXIS); @@ -116,15 +114,15 @@ protected void triggerShiftingGearsAdvancement(Level world, BlockPos pos, BlockS } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || !player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - ItemInteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); + InteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); if (result.consumesAction()) return result; - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } public static boolean isValidCogwheelPosition(boolean large, LevelReader worldIn, BlockPos pos, Axis cogAxis) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogwheelBlockItem.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogwheelBlockItem.java index 09abca1a46..af6c5ccca4 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogwheelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/CogwheelBlockItem.java @@ -11,11 +11,10 @@ import com.simibubi.create.content.kinetics.base.IRotate; import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -32,15 +31,15 @@ public class CogwheelBlockItem extends BlockItem { boolean large; - private final int placementHelperId; - private final int integratedCogHelperId; + private final IPlacementHelper placementHelper; + private final IPlacementHelper integratedCogHelper; public CogwheelBlockItem(CogWheelBlock block, Properties builder) { super(block, builder); large = block.isLarge; - placementHelperId = PlacementHelpers.register(large ? new LargeCogHelper() : new SmallCogHelper()); - integratedCogHelperId = + placementHelper = PlacementHelpers.register(large ? new LargeCogHelper() : new SmallCogHelper()); + integratedCogHelper = PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper()); } @@ -50,28 +49,27 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { BlockPos pos = context.getClickedPos(); BlockState state = world.getBlockState(pos); - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + IPlacementHelper helper = placementHelper; Player player = context.getPlayer(); BlockHitResult ray = new BlockHitResult(context.getClickLocation(), context.getClickedFace(), pos, true); if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) { return helper.getOffset(player, world, state, pos, ray) - .placeInWorld(world, this, player, context.getHand(), ray).result(); + .placeInWorld(world, this, player, context.getHand(), ray); } - if (integratedCogHelperId != -1) { - helper = PlacementHelpers.get(integratedCogHelperId); + if (integratedCogHelper != null) { + helper = integratedCogHelper; if (helper.matchesState(state) && player != null && !player.isShiftKeyDown()) { return helper.getOffset(player, world, state, pos, ray) - .placeInWorld(world, this, player, context.getHand(), ray).result(); + .placeInWorld(world, this, player, context.getHand(), ray); } } return super.onItemUseFirst(stack, context); } - @MethodsReturnNonnullByDefault - private static class SmallCogHelper extends DiagonalCogHelper { + private static class SmallCogHelper extends DiagonalCogHelper { @Override public Predicate getItemPredicate() { @@ -109,8 +107,7 @@ public PlacementOffset getOffset(Player player, Level world, BlockState state, B } } - @MethodsReturnNonnullByDefault - private static class LargeCogHelper extends DiagonalCogHelper { + private static class LargeCogHelper extends DiagonalCogHelper { @Override public Predicate getItemPredicate() { @@ -149,8 +146,7 @@ public PlacementOffset getOffset(Player player, Level world, BlockState state, B } } - @MethodsReturnNonnullByDefault - public abstract static class DiagonalCogHelper implements IPlacementHelper { + public abstract static class DiagonalCogHelper implements IPlacementHelper { @Override public Predicate getStatePredicate() { @@ -193,8 +189,7 @@ protected boolean hitOnShaft(BlockState state, BlockHitResult ray) { } } - @MethodsReturnNonnullByDefault - public static class IntegratedLargeCogHelper implements IPlacementHelper { + public static class IntegratedLargeCogHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { @@ -248,8 +243,7 @@ else if (state.hasProperty(RotatedPillarKineticBlock.AXIS)) } - @MethodsReturnNonnullByDefault - public static class IntegratedSmallCogHelper implements IPlacementHelper { + public static class IntegratedSmallCogHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/ShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/ShaftBlock.java index f686cf0c06..568cc12a23 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/ShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/ShaftBlock.java @@ -11,16 +11,15 @@ import com.simibubi.create.content.kinetics.steamEngine.PoweredShaftBlock; import com.simibubi.create.foundation.placement.PoleHelper; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -34,7 +33,7 @@ public class ShaftBlock extends AbstractSimpleShaftBlock implements EncasableBlock { - public static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + public static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public ShaftBlock(Properties properties) { super(properties); @@ -72,11 +71,11 @@ public float getParticleInitialRadius() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || !player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - ItemInteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); + InteractionResult result = tryEncase(state, level, pos, stack, player, hand, hitResult); if (result.consumesAction()) return result; @@ -84,24 +83,23 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev KineticBlockEntity.switchToBlockState(level, pos, AllBlocks.METAL_GIRDER_ENCASED_SHAFT.getDefaultState() .setValue(WATERLOGGED, state.getValue(WATERLOGGED)) .setValue(GirderEncasedShaftBlock.HORIZONTAL_AXIS, state.getValue(AXIS) == Axis.Z ? Axis.Z : Axis.X)); - if (!level.isClientSide && !player.isCreative()) { + if (!level.isClientSide() && !player.isCreative()) { stack.shrink(1); if (stack.isEmpty()) player.setItemInHand(hand, ItemStack.EMPTY); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + IPlacementHelper helper = PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper extends PoleHelper { + private static class PlacementHelper extends PoleHelper { // used for extending a shaft in its axis, like the piston poles. works with // shafts and cogs diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogCTBehaviour.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogCTBehaviour.java index 057f3a9276..ac2adc47e5 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogCTBehaviour.java @@ -9,13 +9,13 @@ import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class EncasedCogCTBehaviour extends EncasedCTBehaviour { diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogRenderer.java index a8549c2c37..e8becc7501 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogRenderer.java @@ -8,11 +8,11 @@ import com.simibubi.create.content.kinetics.simpleRelays.SimpleKineticBlockEntity; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -60,7 +60,7 @@ protected void renderSafe(SimpleKineticBlockEntity be, float partialTicks, PoseS continue; SuperByteBuffer shaft = CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), d); kineticRotationTransform(shaft, be, axis, angle, light); - shaft.renderInto(ms, buffer.getBuffer(RenderType.solid())); + shaft.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogVisual.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogVisual.java index 381485f77c..4c413841a1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogVisual.java @@ -16,7 +16,7 @@ import dev.engine_room.flywheel.api.model.Model; import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java index f3d697a07d..8c4e76b303 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedCogwheelBlock.java @@ -18,8 +18,8 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -67,13 +67,8 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { - if (target instanceof BlockHitResult) - return ((BlockHitResult) target).getDirection() - .getAxis() != getRotationAxis(state) - ? isLarge ? AllBlocks.LARGE_COGWHEEL.asStack() : AllBlocks.COGWHEEL.asStack() - : getCasing().asItem().getDefaultInstance(); - return super.getCloneItemStack(state, target, level, pos, player); + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { + return isLarge ? AllBlocks.LARGE_COGWHEEL.asStack() : AllBlocks.COGWHEEL.asStack(); } @Override @@ -102,7 +97,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { return super.onWrenched(state, context); Level level = context.getLevel(); - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; BlockPos pos = context.getClickedPos(); @@ -124,7 +119,7 @@ public BlockState getRotatedBlockState(BlockState originalState, Direction targe @Override public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { - if (context.getLevel().isClientSide) + if (context.getLevel().isClientSide()) return InteractionResult.SUCCESS; context.getLevel() .levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, context.getClickedPos(), Block.getId(state)); diff --git a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java index 1d214e550a..bf1a3190d3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/simpleRelays/encased/EncasedShaftBlock.java @@ -40,7 +40,7 @@ public EncasedShaftBlock(Properties properties, Supplier casing) { @Override public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { - if (context.getLevel().isClientSide) + if (context.getLevel().isClientSide()) return InteractionResult.SUCCESS; context.getLevel() .levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, context.getClickedPos(), Block.getId(state)); @@ -51,11 +51,8 @@ public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { - if (target instanceof BlockHitResult) - return ((BlockHitResult) target).getDirection() - .getAxis() == getRotationAxis(state) ? AllBlocks.SHAFT.asStack() : getCasing().asItem().getDefaultInstance(); - return super.getCloneItemStack(state, target, level, pos, player); + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { + return AllBlocks.SHAFT.asStack(); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlock.java b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlock.java index 2c8366df11..e6109a1bac 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlock.java @@ -12,15 +12,14 @@ import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -28,6 +27,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -35,10 +35,9 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class SpeedControllerBlock extends HorizontalAxisKineticBlock implements IBE { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public SpeedControllerBlock(Properties properties) { super(properties); @@ -56,19 +55,19 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, BlockPos neighbourPos, - boolean p_220069_6_) { + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { + BlockPos neighbourPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (neighbourPos.equals(pos.above())) withBlockEntityDo(world, pos, SpeedControllerBlockEntity::updateBracket); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper helper = PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult).placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -76,8 +75,7 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, return AllShapes.SPEED_CONTROLLER; } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { return ((Predicate) ICogWheel::isLargeCogItem).and(ICogWheel::isDedicatedCogItem); diff --git a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlockEntity.java index 77ea46be16..410f97d970 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerBlockEntity.java @@ -19,7 +19,7 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -132,7 +132,7 @@ public static float getDesiredOutputSpeed(KineticBlockEntity cogWheel, KineticBl } public void updateBracket() { - if (level != null && level.isClientSide) + if (level != null && level.isClientSide()) hasBracket = isCogwheelPresent(); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerRenderer.java index 89288ff734..69624bd073 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/speedController/SpeedControllerRenderer.java @@ -7,10 +7,10 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; @@ -30,7 +30,7 @@ protected void renderSafe(SpeedControllerBlockEntity blockEntity, float partialT MultiBufferSource buffer, int light, int overlay) { super.renderSafe(blockEntity, partialTicks, ms, buffer, light, overlay); - VertexConsumer builder = buffer.getBuffer(Sheets.solidBlockSheet()); + VertexConsumer builder = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); if (!VisualizationManager.supportsVisualization(blockEntity.getLevel())) { KineticBlockEntityRenderer.renderRotatingBuffer(blockEntity, getRotatedModel(blockEntity), ms, builder, light); } @@ -47,7 +47,7 @@ protected void renderSafe(SpeedControllerBlockEntity blockEntity, float partialT bracket.translate(0, 1, 0); bracket.rotateCentered( (float) (alongX ? Math.PI : Math.PI / 2), Direction.UP); - bracket.light(LevelRenderer.getLightColor(world, pos.above())); + bracket.light(com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(world, pos.above())); bracket.renderInto(ms, builder); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlock.java index 9f443924fe..04c24c14da 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlock.java @@ -7,15 +7,15 @@ import com.simibubi.create.content.kinetics.simpleRelays.AbstractShaftBlock; import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -48,21 +48,21 @@ public BlockEntityType getBlockEntityType() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown() || !player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - IPlacementHelper helper = PlacementHelpers.get(ShaftBlock.placementHelperId); + IPlacementHelper helper = ShaftBlock.PLACEMENT_HELPER; if (helper.matchesItem(stack)) return helper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override public RenderShape getRenderShape(BlockState pState) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override @@ -74,7 +74,7 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.SHAFT.asStack(); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlockEntity.java index 545b219c44..8c94ea3312 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/PoweredShaftBlockEntity.java @@ -5,8 +5,8 @@ import com.simibubi.create.api.stress.BlockStressValues; import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; @@ -14,7 +14,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -82,7 +82,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo if (initialTicks > 0) compound.putInt("Warmup", initialTicks); if (enginePos != null && capacityKey != null) { - compound.put("EnginePos", NbtUtils.writeBlockPos(enginePos)); + compound.put("EnginePos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(enginePos)); compound.putFloat("EnginePower", engineEfficiency); compound.putString("EngineType", RegisteredObjectsHelper.getKeyOrThrow(capacityKey) .toString()); @@ -93,15 +93,17 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - movementDirection = compound.getInt("Direction"); - initialTicks = compound.getInt("Warmup"); + movementDirection = compound.getIntOr("Direction", 0); + initialTicks = compound.getIntOr("Warmup", 0); enginePos = null; engineEfficiency = 0; if (compound.contains("EnginePos")) { enginePos = NBTHelper.readBlockPos(compound, "EnginePos"); - engineEfficiency = compound.getFloat("EnginePower"); - capacityKey = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(compound.getString("EngineType"))); + engineEfficiency = compound.getFloatOr("EnginePower", 0); + capacityKey = BuiltInRegistries.BLOCK.get(Identifier.parse(compound.getStringOr("EngineType", "minecraft:air"))) + .map(holder -> holder.value()) + .orElse(null); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlock.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlock.java index 9000cc7938..c537f513a2 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlock.java @@ -17,16 +17,17 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -36,6 +37,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.SimpleWaterloggedBlock; @@ -53,7 +55,7 @@ public class SteamEngineBlock extends FaceAttachedHorizontalDirectionalBlock implements SimpleWaterloggedBlock, IWrenchable, IBE { - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); public static final MapCodec CODEC = simpleCodec(SteamEngineBlock::new); @@ -90,19 +92,18 @@ public FluidState getFluidState(BlockState state) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (placementHelper.matchesItem(stack)) return placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -116,14 +117,15 @@ public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState p } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (pState.hasBlockEntity() && (!pState.is(pNewState.getBlock()) || !pNewState.hasBlockEntity())) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + if (pState.hasBlockEntity()) pLevel.removeBlockEntity(pPos); FluidTankBlock.updateBoilerState(pState, pLevel, pPos.relative(getFacing(pState).getOpposite())); BlockPos shaftPos = getShaftPos(pState, pPos); BlockState shaftState = pLevel.getBlockState(shaftPos); if (AllBlocks.POWERED_SHAFT.has(shaftState)) pLevel.scheduleTick(shaftPos, shaftState.getBlock(), 1); + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); } @Override @@ -174,8 +176,7 @@ public BlockEntityType getBlockEntityType() { return AllBlockEntityTypes.STEAM_ENGINE.get(); } - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { return AllBlocks.SHAFT::isIn; @@ -205,7 +206,7 @@ public PlacementOffset getOffset(Player player, Level world, BlockState state, B return PlacementOffset.success(shaftPos, s -> BlockHelper .copyProperties(s, - (world.isClientSide ? AllBlocks.SHAFT : AllBlocks.POWERED_SHAFT).getDefaultState()) + (world.isClientSide() ? AllBlocks.SHAFT : AllBlocks.POWERED_SHAFT).getDefaultState()) .setValue(PoweredShaftBlock.AXIS, axis)); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlockEntity.java index 73c72a4584..944e03c097 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineBlockEntity.java @@ -18,9 +18,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollOptionBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -35,7 +35,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class SteamEngineBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation { @@ -128,7 +127,7 @@ public void tick() { shaft.update(worldPosition, conveyedSpeedLevel, efficiency); - if (!level.isClientSide) + if (!level.isClientSide()) return; CatnipServices.PLATFORM.executeOnClientOnly(() -> this::spawnParticles); @@ -143,7 +142,6 @@ public void remove() { } @Override - @OnlyIn(Dist.CLIENT) protected AABB createRenderBoundingBox() { return super.createRenderBoundingBox().inflate(2); } @@ -186,7 +184,6 @@ public boolean isValid() { return level.getBlockState(getBlockPos().relative(dir)).is(AllBlocks.FLUID_TANK.get()); } - @OnlyIn(Dist.CLIENT) private void spawnParticles() { Float targetAngle = getTargetAngle(); PoweredShaftBlockEntity ste = target.get(); @@ -224,14 +221,14 @@ private void spawnParticles() { Direction facing = SteamEngineBlock.getFacing(getBlockState()); - Vec3 offset = VecHelper.rotate(new Vec3(0, 0, 1).add(VecHelper.offsetRandomly(Vec3.ZERO, level.random, 1) + Vec3 offset = VecHelper.rotate(new Vec3(0, 0, 1).add(VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), 1) .multiply(1, 1, 0) .normalize() .scale(.5f)), AngleHelper.verticalAngle(facing), Axis.X); offset = VecHelper.rotate(offset, AngleHelper.horizontalAngle(facing), Axis.Y); Vec3 v = offset.scale(.5f) .add(Vec3.atCenterOf(worldPosition)); - Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getNormal()) + Vec3 m = offset.subtract(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(.75f)); level.addParticle(new SteamJetParticleData(1), v.x, v.y, v.z, m.x, m.y, m.z); @@ -239,7 +236,6 @@ private void spawnParticles() { } @Nullable - @OnlyIn(Dist.CLIENT) public Float getTargetAngle() { float angle = 0; BlockState blockState = getBlockState(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineRenderer.java index cd215d1c0d..ee5488f323 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineRenderer.java @@ -8,11 +8,11 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -47,7 +47,7 @@ protected void renderSafe(SteamEngineBlockEntity be, float partialTicks, PoseSta float distance = Mth.sqrt(Mth.square(piston - 6 / 16f * Mth.sin(angle))); float angle2 = (float) Math.acos(distance / (14 / 16f)) * (Mth.cos(angle) >= 0 ? 1f : -1f); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); transformed(AllPartialModels.ENGINE_PISTON, blockState, facing, roll90) .translate(0, piston + 20 / 16f, 0) @@ -60,7 +60,7 @@ protected void renderSafe(SteamEngineBlockEntity be, float partialTicks, PoseSta .uncenter() .translate(0, piston + 20 / 16f, 0) .translate(0, 4 / 16f, 8 / 16f) - .rotateX(angle2) + .rotateXDegrees(angle2 * Mth.RAD_TO_DEG) .translate(0, -4 / 16f, -8 / 16f) .light(light) .renderInto(ms, vb); @@ -68,7 +68,7 @@ protected void renderSafe(SteamEngineBlockEntity be, float partialTicks, PoseSta transformed(AllPartialModels.ENGINE_CONNECTOR, blockState, facing, roll90) .translate(0, 2, 0) .center() - .rotateX(-(angle + Mth.HALF_PI)) + .rotateXDegrees(-(angle + Mth.HALF_PI) * Mth.RAD_TO_DEG) .uncenter() .light(light) .renderInto(ms, vb); @@ -83,7 +83,6 @@ private SuperByteBuffer transformed(PartialModel model, BlockState blockState, D .uncenter(); } - @Override public int getViewDistance() { return 128; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineValueBox.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineValueBox.java index 8d6e6f8082..58ef0b1432 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineValueBox.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineValueBox.java @@ -4,9 +4,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java index 00686cc823..8ba0356088 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamEngineVisual.java @@ -14,7 +14,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticle.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticle.java index 04a6c6af2f..f54e5be0a1 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticle.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticle.java @@ -1,22 +1,14 @@ package com.simibubi.create.content.kinetics.steamEngine; -import org.joml.Quaternionf; -import org.joml.Vector3f; - -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; - -import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; -import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.SimpleAnimatedParticle; import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; -import net.minecraft.world.phys.Vec3; +import net.minecraft.util.RandomSource; public class SteamJetParticle extends SimpleAnimatedParticle { @@ -24,7 +16,7 @@ public class SteamJetParticle extends SimpleAnimatedParticle { protected SteamJetParticle(ClientLevel world, SteamJetParticleData data, double x, double y, double z, double dx, double dy, double dz, SpriteSet sprite) { - super(world, x, y, z, sprite, world.random.nextFloat() * .5f); + super(world, x, y, z, sprite, world.getRandom().nextFloat() * .5f); xd = 0; yd = 0; zd = 0; @@ -32,71 +24,16 @@ protected SteamJetParticle(ClientLevel world, SteamJetParticleData data, double quadSize = .375f; setLifetime(21); setPos(x, y, z); - roll = oRoll = world.random.nextFloat() * Mth.PI; + roll = oRoll = world.getRandom().nextFloat() * Mth.PI; yaw = (float) Mth.atan2(dx, dz) - Mth.PI; pitch = (float) Mth.atan2(dy, Math.sqrt(dx * dx + dz * dz)) - Mth.PI / 2; this.setSpriteFromAge(sprite); } - public ParticleRenderType getRenderType() { - return ParticleRenderType.PARTICLE_SHEET_OPAQUE; - } - - public void render(VertexConsumer pBuffer, Camera pRenderInfo, float pPartialTicks) { - Vec3 vec3 = pRenderInfo.getPosition(); - float f = (float) (x - vec3.x); - float f1 = (float) (y - vec3.y); - float f2 = (float) (z - vec3.z); - float f3 = Mth.lerp(pPartialTicks, this.oRoll, this.roll); - float f7 = this.getU0(); - float f8 = this.getU1(); - float f5 = this.getV0(); - float f6 = this.getV1(); - float f4 = this.getQuadSize(pPartialTicks); - - for (int i = 0; i < 4; i++) { - Quaternionf quaternion = Axis.YP.rotation(yaw); - quaternion.mul(Axis.XP.rotation(pitch)); - quaternion.mul(Axis.YP.rotation(f3 + Mth.PI / 2 * i + roll)); - Vector3f vector3f1 = new Vector3f(-1.0F, -1.0F, 0.0F); - vector3f1.rotate(quaternion); - - Vector3f[] avector3f = new Vector3f[] { new Vector3f(-1.0F, -1.0F, 0.0F), new Vector3f(-1.0F, 1.0F, 0.0F), - new Vector3f(1.0F, 1.0F, 0.0F), new Vector3f(1.0F, -1.0F, 0.0F) }; - - for (int j = 0; j < 4; ++j) { - Vector3f vector3f = avector3f[j]; - vector3f.add(0, 1, 0); - vector3f.rotate(quaternion); - vector3f.mul(f4); - vector3f.add(f, f1, f2); - } - - int j = this.getLightColor(pPartialTicks); - pBuffer.addVertex(avector3f[0].x(), avector3f[0].y(), avector3f[0].z()) - .setUv(f8, f6) - .setColor(this.rCol, this.gCol, this.bCol, this.alpha) - .setLight(j); - pBuffer.addVertex(avector3f[1].x(), avector3f[1].y(), avector3f[1].z()) - .setUv(f8, f5) - .setColor(this.rCol, this.gCol, this.bCol, this.alpha) - .setLight(j); - pBuffer.addVertex(avector3f[2].x(), avector3f[2].y(), avector3f[2].z()) - .setUv(f7, f5) - .setColor(this.rCol, this.gCol, this.bCol, this.alpha) - .setLight(j); - pBuffer.addVertex(avector3f[3].x(), avector3f[3].y(), avector3f[3].z()) - .setUv(f7, f6) - .setColor(this.rCol, this.gCol, this.bCol, this.alpha) - .setLight(j); - - } - } - @Override - public int getLightColor(float partialTick) { + public int getLightCoords(float partialTick) { BlockPos blockpos = BlockPos.containing(this.x, this.y, this.z); - return this.level.isLoaded(blockpos) ? LevelRenderer.getLightColor(level, blockpos) : 0; + return this.level.isLoaded(blockpos) ? com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, blockpos) : 0; } public static class Factory implements ParticleProvider { @@ -107,7 +44,7 @@ public Factory(SpriteSet animatedSprite) { } public Particle createParticle(SteamJetParticleData data, ClientLevel worldIn, double x, double y, double z, - double xSpeed, double ySpeed, double zSpeed) { + double xSpeed, double ySpeed, double zSpeed, RandomSource random) { return new SteamJetParticle(worldIn, data, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticleData.java b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticleData.java index e05012f562..dc00a31e7f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticleData.java +++ b/src/main/java/com/simibubi/create/content/kinetics/steamEngine/SteamJetParticleData.java @@ -7,7 +7,6 @@ import com.simibubi.create.foundation.particle.ICustomParticleDataWithSprite; import io.netty.buffer.ByteBuf; -import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -15,7 +14,6 @@ import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class SteamJetParticleData implements ParticleOptions, ICustomParticleDataWithSprite { @@ -46,13 +44,6 @@ public ParticleType getType() { public MapCodec getCodec(ParticleType type) { return CODEC; } - - @Override - @OnlyIn(Dist.CLIENT) - public SpriteParticleRegistration getMetaFactory() { - return SteamJetParticle.Factory::new; - } - @Override public StreamCodec getStreamCodec() { return STREAM_CODEC; diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/ClutchBlock.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/ClutchBlock.java index 8f356d778b..916351690e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/ClutchBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/ClutchBlock.java @@ -5,6 +5,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -15,9 +16,8 @@ public ClutchBlock(Properties properties) { } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/GearshiftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/GearshiftBlock.java index 5619e1d447..02a3a58d31 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/GearshiftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/GearshiftBlock.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -42,9 +43,9 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; boolean previouslyPowered = state.getValue(POWERED); diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftRenderer.java index ede2893f16..f268817755 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftRenderer.java @@ -6,12 +6,12 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -32,7 +32,7 @@ protected void renderSafe(SplitShaftBlockEntity be, float partialTicks, PoseStac Block block = be.getBlockState().getBlock(); final Axis boxAxis = ((IRotate) block).getRotationAxis(be.getBlockState()); final BlockPos pos = be.getBlockPos(); - float time = AnimationTickHolder.getRenderTime(be.getLevel()); + float time = AnimationTickHolder.getRenderTime(); for (Direction direction : Iterate.directions) { Axis axis = direction.getAxis(); @@ -50,7 +50,7 @@ protected void renderSafe(SplitShaftBlockEntity be, float partialTicks, PoseStac SuperByteBuffer superByteBuffer = CachedBuffers.partialFacing(AllPartialModels.SHAFT_HALF, be.getBlockState(), direction); kineticRotationTransform(superByteBuffer, be, axis, angle, light); - superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.solid())); + superByteBuffer.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftVisual.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftVisual.java index f97bd95d05..05f6ee4c6c 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/SplitShaftVisual.java @@ -14,7 +14,7 @@ import dev.engine_room.flywheel.lib.instance.AbstractInstance; import dev.engine_room.flywheel.lib.instance.FlatLit; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/Instruction.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/Instruction.java index 27532a61e3..5f96b774ac 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/Instruction.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/Instruction.java @@ -6,7 +6,7 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.network.codec.ByteBufCodecs; @@ -140,7 +140,7 @@ CompoundTag serialize() { static Instruction deserialize(CompoundTag tag) { Instruction instruction = new Instruction(NBTHelper.readEnum(tag, "Type", SequencerInstructions.class)); instruction.speedModifier = NBTHelper.readEnum(tag, "Modifier", InstructionSpeedModifiers.class); - instruction.value = tag.getInt("Value"); + instruction.value = tag.getIntOr("Value", 0); return instruction; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/InstructionSpeedModifiers.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/InstructionSpeedModifiers.java index 31e082e093..be4ed63d08 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/InstructionSpeedModifiers.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/InstructionSpeedModifiers.java @@ -6,10 +6,10 @@ import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java index ae0292c4d9..bf7ea43c53 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlock.java @@ -9,9 +9,7 @@ import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -19,7 +17,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -29,6 +27,7 @@ import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -36,9 +35,6 @@ import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.BlockHitResult; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements IBE, TransformableBlock { public static final BooleanProperty VERTICAL = BooleanProperty.create("vertical"); @@ -59,9 +55,8 @@ public boolean shouldCheckWeakPower(BlockState state, SignalGetter level, BlockP } @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, - boolean isMoving) { - if (level.isClientSide) + public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { + if (level.isClientSide()) return; if (!level.getBlockTicks() .willTickThisTick(pos, this)) @@ -89,22 +84,16 @@ public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (stack.getItem() instanceof BlockItem blockItem) { if (blockItem.getBlock() instanceof KineticBlock && hasShaftTowards(level, pos, state, hitResult.getDirection())) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> this.displayScreen(be, player))); - return ItemInteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(SequencedGearshiftBlockEntity be, Player player) { - if (player instanceof LocalPlayer) - ScreenOpener.open(new SequencedGearshiftScreen(be)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> SequencedGearshiftClient.displayScreen(be, player))); + return InteractionResult.SUCCESS; } @Override @@ -161,7 +150,7 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { } @Override - public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { + public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos, Direction direction) { return state.getValue(STATE) .intValue(); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlockEntity.java index 3499b67e67..8beb797048 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftBlockEntity.java @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -59,7 +59,7 @@ public static SequenceContext fromNBT(CompoundTag nbt) { if (nbt.isEmpty()) return null; return new SequenceContext(NBTHelper.readEnum(nbt, "Mode", SequencerInstructions.class), - nbt.getDouble("Value")); + nbt.getDoubleOr("Value", 0)); } } @@ -96,7 +96,7 @@ public void tick() { if (isIdle()) return; - if (level.isClientSide) + if (level.isClientSide()) return; if (currentInstructionDuration < 0) return; @@ -215,12 +215,12 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - currentInstruction = compound.getInt("InstructionIndex"); - currentInstructionDuration = compound.getInt("InstructionDuration"); - currentInstructionProgress = compound.getFloat("InstructionProgress"); - poweredPreviously = compound.getBoolean("PrevPowered"); - timer = compound.getInt("Timer"); - instructions = Instruction.deserializeAll(compound.getList("Instructions", Tag.TAG_COMPOUND)); + currentInstruction = compound.getIntOr("InstructionIndex", 0); + currentInstructionDuration = compound.getIntOr("InstructionDuration", 0); + currentInstructionProgress = compound.getFloatOr("InstructionProgress", 0); + poweredPreviously = compound.getBooleanOr("PrevPowered", false); + timer = compound.getIntOr("Timer", 0); + instructions = Instruction.deserializeAll(compound.getListOrEmpty("Instructions")); super.read(compound, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftClient.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftClient.java new file mode 100644 index 0000000000..25cfe332bb --- /dev/null +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftClient.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.kinetics.transmission.sequencer; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; + +public class SequencedGearshiftClient { + + public static void displayScreen(SequencedGearshiftBlockEntity be, Player player) { + if (player instanceof LocalPlayer) + ScreenOpener.open(new SequencedGearshiftScreen(be)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftGenerator.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftGenerator.java index 6a17af03c9..ae0d6d8276 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftGenerator.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftGenerator.java @@ -2,12 +2,12 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class SequencedGearshiftGenerator extends SpecialBlockStateGen { @@ -22,7 +22,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String variant = "idle"; int seq = state.getValue(SequencedGearshiftBlock.STATE); diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftScreen.java index bace54901e..08f6b28557 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencedGearshiftScreen.java @@ -9,12 +9,12 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; @@ -38,7 +38,7 @@ public SequencedGearshiftScreen(SequencedGearshiftBlockEntity be) { @Override protected void init() { if (be.computerBehaviour.hasAttachedComputer()) - minecraft.setScreen( + minecraft.gui.setScreen( new ComputerScreen(title, this::renderAdditional, this, be.computerBehaviour::hasAttachedComputer)); setWindowSize(background.getWidth(), background.getHeight()); @@ -131,12 +131,12 @@ public void tick() { super.tick(); if (be.computerBehaviour.hasAttachedComputer()) - minecraft.setScreen( + minecraft.gui.setScreen( new ComputerScreen(title, this::renderAdditional, this, be.computerBehaviour::hasAttachedComputer)); } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; @@ -171,11 +171,11 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float label(graphics, 127, yOffset - 1, instruction.speedModifier.label); } - graphics.drawString(font, title, x + (background.getWidth() - 8) / 2 - font.width(title) / 2, y + 4, 0x592424, false); + graphics.text(font, title, x + (background.getWidth() - 8) / 2 - font.width(title) / 2, y + 4, 0x592424, false); renderAdditional(graphics, mouseX, mouseY, partialTicks, x, y, background); } - private void renderAdditional(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, + private void renderAdditional(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, AllGuiTextures background) { GuiGameElement.of(renderedItem).at(guiLeft + background.getWidth() + 6, guiTop + background.getHeight() - 56, 100) @@ -183,12 +183,12 @@ private void renderAdditional(GuiGraphics graphics, int mouseX, int mouseY, floa .render(graphics); } - private void label(GuiGraphics graphics, int x, int y, Component text) { - graphics.drawString(font, text, guiLeft + x, guiTop + 26 + y, 0xFFFFEE); + private void label(GuiGraphicsExtractor graphics, int x, int y, Component text) { + graphics.text(font, text, guiLeft + x, guiTop + 26 + y, 0xFFFFEE); } public void sendPacket() { - CatnipServices.NETWORK.sendToServer(new ConfigureSequencedGearshiftPacket(be.getBlockPos(), instructions)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ConfigureSequencedGearshiftPacket(be.getBlockPos(), instructions)); } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencerInstructions.java b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencerInstructions.java index 65c792386b..4f33f2036b 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencerInstructions.java +++ b/src/main/java/com/simibubi/create/content/kinetics/transmission/sequencer/SequencerInstructions.java @@ -6,9 +6,9 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableBlock.java b/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableBlock.java index 31d5db7514..8d431cde0a 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableBlock.java @@ -6,12 +6,13 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntity; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.BlockGetter; @@ -33,7 +34,7 @@ public TurntableBlock(Properties properties) { @Override public RenderShape getRenderShape(BlockState state) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override @@ -42,7 +43,8 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e) { + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { if (!e.onGround()) return; if (e.getDeltaMovement().y > 0) @@ -55,8 +57,8 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e if (speed == 0) return; - Level world = e.getCommandSenderWorld(); - if (world.isClientSide && (e instanceof Player)) { + Level world = e.level(); + if (world.isClientSide() && (e instanceof Player)) { if (worldIn.getBlockState(e.blockPosition()) != state) { Vec3 origin = VecHelper.getCenterOf(pos); Vec3 offset = e.position() @@ -72,7 +74,7 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e if ((e instanceof Player)) return; - if (world.isClientSide) + if (world.isClientSide()) return; if (e instanceof LivingEntity livingEntity) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableHandler.java b/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableHandler.java index 63780862e8..a7fcc9698c 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableHandler.java +++ b/src/main/java/com/simibubi/create/content/kinetics/turntable/TurntableHandler.java @@ -2,7 +2,7 @@ import com.simibubi.create.AllBlocks; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java index 559b2375cc..4490dca9e8 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlock.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.kinetics.base.RotatedPillarKineticBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -14,7 +14,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -23,6 +23,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -80,7 +81,7 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return onBlockEntityUseItemOn(level, pos, wwt -> wwt.applyMaterialIfValid(stack)); } @@ -90,8 +91,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { if (pDirection != Direction.fromAxisAndDirection(pState.getValue(AXIS), AxisDirection.NEGATIVE)) return pState; return pState.setValue(EXTENSION, pNeighborState.is(this)); @@ -131,7 +131,7 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou @Override public RenderShape getRenderShape(BlockState pState) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlockItem.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlockItem.java index 81ca1fb011..58389d89c3 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelBlockItem.java @@ -1,24 +1,11 @@ package com.simibubi.create.content.kinetics.waterwheel; -import com.simibubi.create.foundation.utility.CreateLang; - -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.outliner.Outliner; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.BlockPos; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; -import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.Vec3; - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class LargeWaterWheelBlockItem extends BlockItem { @@ -37,24 +24,8 @@ public InteractionResult place(BlockPlaceContext ctx) { .relative(clickedFace), clickedFace)); if (result == InteractionResult.FAIL && ctx.getLevel() .isClientSide()) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> showBounds(ctx)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> LargeWaterWheelClient.showBounds(this, ctx)); return result; } - @OnlyIn(Dist.CLIENT) - public void showBounds(BlockPlaceContext context) { - BlockPos pos = context.getClickedPos(); - Axis axis = ((LargeWaterWheelBlock) getBlock()).getAxisForPlacement(context); - Vec3 contract = Vec3.atLowerCornerOf(Direction.get(AxisDirection.POSITIVE, axis) - .getNormal()); - if (!(context.getPlayer()instanceof LocalPlayer localPlayer)) - return; - Outliner.getInstance().showAABB(Pair.of("waterwheel", pos), new AABB(pos).inflate(1) - .deflate(contract.x, contract.y, contract.z)) - .colored(0xFF_ff5d6c); - CreateLang.translate("large_water_wheel.not_enough_space") - .color(0xFF_ff5d6c) - .sendStatus(localPlayer); - } - } diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelClient.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelClient.java new file mode 100644 index 0000000000..ddac811503 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/LargeWaterWheelClient.java @@ -0,0 +1,34 @@ +package com.simibubi.create.content.kinetics.waterwheel; + +import com.simibubi.create.foundation.utility.CreateLang; + +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.data.Pair; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.world.item.context.BlockPlaceContext; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class LargeWaterWheelClient { + + public static void showBounds(LargeWaterWheelBlockItem item, BlockPlaceContext context) { + BlockPos pos = context.getClickedPos(); + Axis axis = ((LargeWaterWheelBlock) item.getBlock()).getAxisForPlacement(context); + Vec3 contract = Vec3.atLowerCornerOf(Direction.get(AxisDirection.POSITIVE, axis) + .getUnitVec3i()); + if (!(context.getPlayer() instanceof LocalPlayer localPlayer)) + return; + Outliner.getInstance() + .showAABB(Pair.of("waterwheel", pos), new AABB(pos).inflate(1) + .deflate(contract.x, contract.y, contract.z)) + .colored(0xFF_ff5d6c); + CreateLang.translate("large_water_wheel.not_enough_space") + .color(0xFF_ff5d6c) + .sendStatus(localPlayer); + } + +} diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java index 33ebe4e866..ee8b9bc519 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlock.java @@ -5,8 +5,8 @@ import com.simibubi.create.content.kinetics.base.DirectionalKineticBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -15,7 +15,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -23,6 +23,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; @@ -50,20 +51,19 @@ public boolean canSurvive(BlockState state, LevelReader worldIn, BlockPos pos) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return onBlockEntityUseItemOn(level, pos, wwt -> wwt.applyMaterialIfValid(stack)); } @Override - public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { + public BlockState updateShape(BlockState stateIn, LevelReader worldIn, ScheduledTickAccess ticks, BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { if (worldIn instanceof WrappedLevel) return stateIn; if (worldIn.isClientSide()) return stateIn; - if (!worldIn.getBlockTicks() + if (!ticks.getBlockTicks() .hasScheduledTick(currentPos, this)) - worldIn.scheduleTick(currentPos, this, 1); + ticks.scheduleTick(currentPos, this, 1); return stateIn; } diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java index 8c484f064d..17a00a18fe 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelBlockEntity.java @@ -12,8 +12,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -25,7 +25,7 @@ import net.minecraft.nbt.NbtUtils; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; @@ -86,21 +86,21 @@ protected Set getOffsetsToCheck() { return (getSize() == 1 ? SMALL_OFFSETS : LARGE_OFFSETS).get(getAxis()); } - public ItemInteractionResult applyMaterialIfValid(ItemStack stack) { + public InteractionResult applyMaterialIfValid(ItemStack stack) { if (!(stack.getItem()instanceof BlockItem blockItem)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; BlockState material = blockItem.getBlock() .defaultBlockState(); if (material == this.material) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!material.is(BlockTags.PLANKS)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (level.isClientSide() && !isVirtual()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; this.material = material; notifyUpdate(); level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, worldPosition, Block.getId(material)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } protected Axis getAxis() { @@ -122,7 +122,7 @@ public void lazyTick() { public void determineAndApplyFlowScore() { Vec3 wheelPlane = Vec3.atLowerCornerOf(new Vec3i(1, 1, 1).subtract(Direction.get(AxisDirection.POSITIVE, getAxis()) - .getNormal())); + .getUnitVec3i())); int flowScore = 0; boolean lava = false; @@ -188,13 +188,13 @@ public void addBehaviours(List behaviours) { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - flowScore = compound.getInt("FlowScore"); + flowScore = compound.getIntOr("FlowScore", 0); BlockState prevMaterial = material; if (!compound.contains("Material")) return; - material = NbtUtils.readBlockState(blockHolderGetter(), compound.getCompound("Material")); + material = NbtUtils.readBlockState(blockHolderGetter(), compound.getCompoundOrEmpty("Material")); if (material.isAir()) material = Blocks.SPRUCE_PLANKS.defaultBlockState(); diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java index 1079ebcc04..bec2e647d8 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelRenderer.java @@ -9,41 +9,40 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllPartialModels; import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; -import com.simibubi.create.foundation.model.BakedModelHelper; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.StitchedSprite; -import net.createmod.catnip.render.SuperBufferFactory; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.render.SuperByteBufferCache; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.StitchedSprite; +import net.createmod.catnip.api.client.render.SuperBufferFactory; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.SuperByteBufferCache; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class WaterWheelRenderer extends KineticBlockEntityRenderer { public static final SuperByteBufferCache.Compartment WATER_WHEEL = new SuperByteBufferCache.Compartment<>(); - public static final StitchedSprite OAK_PLANKS_TEMPLATE = new StitchedSprite(ResourceLocation.withDefaultNamespace("block/oak_planks")); - public static final StitchedSprite OAK_LOG_TEMPLATE = new StitchedSprite(ResourceLocation.withDefaultNamespace("block/oak_log")); - public static final StitchedSprite OAK_LOG_TOP_TEMPLATE = new StitchedSprite(ResourceLocation.withDefaultNamespace("block/oak_log_top")); + public static final StitchedSprite OAK_PLANKS_TEMPLATE = new StitchedSprite(Identifier.withDefaultNamespace("block/oak_planks")); + public static final StitchedSprite OAK_LOG_TEMPLATE = new StitchedSprite(Identifier.withDefaultNamespace("block/oak_log")); + public static final StitchedSprite OAK_LOG_TOP_TEMPLATE = new StitchedSprite(Identifier.withDefaultNamespace("block/oak_log_top")); protected final boolean large; @@ -64,7 +63,6 @@ public static WaterWheelRenderer large(Cont protected SuperByteBuffer getRotatedModel(T be, BlockState state) { ModelKey key = new ModelKey(large, state, be.material); return SuperByteBufferCache.getInstance().get(WATER_WHEEL, key, () -> { - BakedModel model = generateModel(key); BlockState state1 = key.state(); Direction dir; if (key.large()) { @@ -73,41 +71,15 @@ protected SuperByteBuffer getRotatedModel(T be, BlockState state) { dir = state1.getValue(WaterWheelBlock.FACING); } PoseStack transform = CachedBuffers.rotateToFaceVertical(dir).get(); - return SuperBufferFactory.getInstance().createForBlock(model, Blocks.AIR.defaultBlockState(), transform); + return CachedBuffers.partial(Variant.of(key.large(), state1).partial(), state1) + .transform(transform); }); } - public static BakedModel generateModel(ModelKey key) { - return generateModel(Variant.of(key.large(), key.state()), key.material()); - } - - public static BakedModel generateModel(Variant variant, BlockState material) { - return generateModel(variant.model(), material); - } - - public static BakedModel generateModel(BakedModel template, BlockState planksBlockState) { - Block planksBlock = planksBlockState.getBlock(); - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(planksBlock); - String wood = plankStateToWoodName(planksBlockState); - - if (wood == null) - return BakedModelHelper.generateModel(template, sprite -> null); - - String namespace = id.getNamespace(); - BlockState logBlockState = getLogBlockState(namespace, wood); - - Map map = new Reference2ReferenceOpenHashMap<>(); - map.put(OAK_PLANKS_TEMPLATE.get(), getSpriteOnSide(planksBlockState, Direction.UP)); - map.put(OAK_LOG_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.SOUTH)); - map.put(OAK_LOG_TOP_TEMPLATE.get(), getSpriteOnSide(logBlockState, Direction.UP)); - - return BakedModelHelper.generateModel(template, map::get); - } - @Nullable private static String plankStateToWoodName(BlockState planksBlockState) { Block planksBlock = planksBlockState.getBlock(); - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(planksBlock); + Identifier id = RegisteredObjectsHelper.getKeyOrThrow(planksBlock); String path = id.getPath(); if (path.endsWith("_planks")) // Covers most wood types @@ -129,8 +101,7 @@ private static String plankStateToWoodName(BlockState planksBlockState) { private static BlockState getLogBlockState(String namespace, String wood) { for (String location : LOG_LOCATIONS) { Optional state = - BuiltInRegistries.BLOCK.getHolder(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(namespace, location.replace("x", wood)))) - .map(Holder::value) + BuiltInRegistries.BLOCK.getOptional(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(namespace, location.replace("x", wood)))) .map(Block::defaultBlockState); if (state.isPresent()) return state.get(); @@ -139,8 +110,7 @@ private static BlockState getLogBlockState(String namespace, String wood) { } private static TextureAtlasSprite getSpriteOnSide(BlockState state, Direction side) { - BakedModel model = Minecraft.getInstance() - .getBlockRenderer() + BakedModel model = com.simibubi.create.foundation.render.LegacyBlockRendererBridge.getBlockRenderer() .getBlockModel(state); if (model == null) return null; @@ -175,8 +145,8 @@ public enum Variant { this.partial = partial; } - public BakedModel model() { - return partial.get(); + public PartialModel partial() { + return partial; } public static Variant of(boolean large, BlockState blockState) { diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java index d8567eeb4a..fc7bea32f5 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelStructuralBlock.java @@ -20,7 +20,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -29,6 +29,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DirectionalBlock; @@ -71,7 +72,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.LARGE_WATER_WHEEL.asStack(); } @@ -92,16 +93,16 @@ public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!stillValid(level, pos, state, false)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (!(level.getBlockEntity(getMaster(level, pos, state)) instanceof WaterWheelBlockEntity wwt)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; return wwt.applyMaterialIfValid(stack); } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { if (stillValid(pLevel, pPos, pState, false)) pLevel.destroyBlock(getMaster(pLevel, pPos, pState), true); } @@ -117,13 +118,12 @@ public BlockState playerWillDestroy(Level pLevel, BlockPos pPos, BlockState pSta } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource random) { if (stillValid(pLevel, pCurrentPos, pState, false)) { BlockPos masterPos = getMaster(pLevel, pCurrentPos, pState); - if (!pLevel.getBlockTicks() + if (!ticks.getBlockTicks() .hasScheduledTick(masterPos, AllBlocks.LARGE_WATER_WHEEL.get())) - pLevel.scheduleTick(masterPos, AllBlocks.LARGE_WATER_WHEEL.get(), 1); + ticks.scheduleTick(masterPos, AllBlocks.LARGE_WATER_WHEEL.get(), 1); return pState; } if (!(pLevel instanceof Level level) || level.isClientSide()) @@ -182,7 +182,7 @@ public boolean addHitEffects(BlockState state, Level level, HitResult target, Pa BlockPos targetPos = bhr.getBlockPos(); WaterWheelStructuralBlock waterWheelStructuralBlock = AllBlocks.WATER_WHEEL_STRUCTURAL.get(); if (waterWheelStructuralBlock.stillValid(level, targetPos, state, false)) - manager.crack(WaterWheelStructuralBlock.getMaster(level, targetPos, state), bhr.getDirection()); + return true; return true; } return IClientBlockExtensions.super.addHitEffects(state, level, target, manager); diff --git a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelVisual.java b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelVisual.java index 2d4dc39262..d689a7fe6f 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelVisual.java +++ b/src/main/java/com/simibubi/create/content/kinetics/waterwheel/WaterWheelVisual.java @@ -12,7 +12,7 @@ import dev.engine_room.flywheel.api.visualization.VisualizationContext; import dev.engine_room.flywheel.lib.model.baked.BakedModelBuilder; import dev.engine_room.flywheel.lib.util.RendererReloadCache; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; import net.minecraft.world.level.block.state.BlockState; public class WaterWheelVisual extends KineticBlockEntityVisual { @@ -74,7 +74,7 @@ public void collectCrumblingInstances(Consumer consumer) { } private static Model createModel(ModelKey key) { - BakedModel model = WaterWheelRenderer.generateModel(key.variant(), key.material()); + BlockStateModel model = key.variant().partial().get(); return new BakedModelBuilder(model) .build(); } diff --git a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundColor.java b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundColor.java index 740bc35fe9..6d3e45dc88 100644 --- a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundColor.java +++ b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundColor.java @@ -1,10 +1,10 @@ package com.simibubi.create.content.legacy; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; -import net.minecraft.client.color.item.ItemColor; -import net.minecraft.util.FastColor.ARGB32; +import com.simibubi.create.foundation.item.ItemColor; +import net.minecraft.util.ARGB; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -17,20 +17,20 @@ public int getColor(ItemStack stack, int layer) { float progress = (float) ((mc.player.getViewYRot(pt)) / 180 * Math.PI) + (AnimationTickHolder.getRenderTime() / 10f); if (layer == 0) return Color.mixColors( - ARGB32.color(110, 87, 115), - ARGB32.color(107, 48, 116), + ARGB.color(110, 87, 115), + ARGB.color(107, 48, 116), (Mth.sin(progress) + 1) / 2 ); if (layer == 1) return Color.mixColors( - ARGB32.color(212, 93, 121), - ARGB32.color(110, 87, 115), + ARGB.color(212, 93, 121), + ARGB.color(110, 87, 115), (Mth.sin((float) (progress + Math.PI)) + 1) / 2 ); if (layer == 2) return Color.mixColors( - ARGB32.color(234, 144, 133), - ARGB32.color(212, 93, 121), + ARGB.color(234, 144, 133), + ARGB.color(212, 93, 121), (Mth.sin((float) (progress * 1.5f + Math.PI)) + 1) / 2 ); return 0; diff --git a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java index 876d2abd92..e3965cd54c 100644 --- a/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java +++ b/src/main/java/com/simibubi/create/content/legacy/ChromaticCompoundItem.java @@ -12,8 +12,8 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.CRecipes; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; @@ -73,10 +73,11 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { Vec3 positionVec = entity.position(); CRecipes config = AllConfigs.server().recipes; - if (world.isClientSide) { + if (world.isClientSide()) { + RandomSource random = world.getRandom(); int light = getLight(itemStack); - if (world.random.nextInt(config.lightSourceCountForRefinedRadiance.get() + 20) < light) { - Vec3 start = VecHelper.offsetRandomly(positionVec, world.random, 3); + if (random.nextInt(config.lightSourceCountForRefinedRadiance.get() + 20) < light) { + Vec3 start = VecHelper.offsetRandomly(positionVec, random, 3); Vec3 motion = positionVec.subtract(start) .normalize() .scale(.2f); @@ -87,7 +88,7 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { double y = entity.getY(); double yMotion = entity.getDeltaMovement().y; - int minHeight = world.getMinBuildHeight(); + int minHeight = world.getMinY(); CompoundTag data = entity.getPersistentData(); // Convert to Shadow steel if in void @@ -130,7 +131,7 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { while (testPos.getY() > minHeight) { testPos.move(Direction.DOWN); BlockState state = world.getBlockState(testPos); - if (state.getLightBlock(world, testPos) >= 15 && state.getBlock() != Blocks.BEDROCK) + if (state.getLightDampening() >= 15 && state.getBlock() != Blocks.BEDROCK) break; if (state.getBlock() == Blocks.BEACON) { BlockEntity be = world.getBlockEntity(testPos); @@ -154,7 +155,7 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { } // Find a light source and eat it. - RandomSource r = world.random; + RandomSource r = world.getRandom(); int range = 3; float rate = 1 / 2f; if (r.nextFloat() > rate) diff --git a/src/main/java/com/simibubi/create/content/legacy/NoGravMagicalDohickyItem.java b/src/main/java/com/simibubi/create/content/legacy/NoGravMagicalDohickyItem.java index 82c65b9c75..3e2a6d6d5e 100644 --- a/src/main/java/com/simibubi/create/content/legacy/NoGravMagicalDohickyItem.java +++ b/src/main/java/com/simibubi/create/content/legacy/NoGravMagicalDohickyItem.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.legacy; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.core.particles.ColorParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; @@ -22,17 +23,18 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { Vec3 pos = entity.position(); CompoundTag persistentData = entity.getPersistentData(); - if (world.isClientSide) { - if (world.random.nextFloat() < getIdleParticleChance(entity)) { - Vec3 ppos = VecHelper.offsetRandomly(pos, world.random, .5f); + if (world.isClientSide()) { + var random = world.getRandom(); + if (random.nextFloat() < getIdleParticleChance(entity)) { + Vec3 ppos = VecHelper.offsetRandomly(pos, random, .5f); world.addParticle(ParticleTypes.END_ROD, ppos.x, pos.y, ppos.z, 0, -.1f, 0); } - if (entity.isSilent() && !persistentData.getBoolean("PlayEffects")) { + if (entity.isSilent() && !persistentData.getBooleanOr("PlayEffects", false)) { Vec3 basemotion = new Vec3(0, 1, 0); - world.addParticle(ParticleTypes.FLASH, pos.x, pos.y, pos.z, 0, 0, 0); + world.addParticle(ColorParticleOption.create(ParticleTypes.FLASH, 0xFFFFFF), pos.x, pos.y, pos.z, 0, 0, 0); for (int i = 0; i < 20; i++) { - Vec3 motion = VecHelper.offsetRandomly(basemotion, world.random, 1); + Vec3 motion = VecHelper.offsetRandomly(basemotion, random, 1); world.addParticle(ParticleTypes.WITCH, pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); } diff --git a/src/main/java/com/simibubi/create/content/legacy/ShadowSteelItem.java b/src/main/java/com/simibubi/create/content/legacy/ShadowSteelItem.java index 9d85d2b1a4..a45324d94c 100644 --- a/src/main/java/com/simibubi/create/content/legacy/ShadowSteelItem.java +++ b/src/main/java/com/simibubi/create/content/legacy/ShadowSteelItem.java @@ -13,7 +13,7 @@ public ShadowSteelItem(Properties properties) { @Override protected void onCreated(ItemEntity entity, CompoundTag persistentData) { super.onCreated(entity, persistentData); - float yMotion = (entity.fallDistance + 3) / 50f; + float yMotion = (float) ((entity.fallDistance + 3) / 50f); entity.setDeltaMovement(0, yMotion, 0); } diff --git a/src/main/java/com/simibubi/create/content/logistics/AddressEditBox.java b/src/main/java/com/simibubi/create/content/logistics/AddressEditBox.java index ccab8f7550..7520a64184 100644 --- a/src/main/java/com/simibubi/create/content/logistics/AddressEditBox.java +++ b/src/main/java/com/simibubi/create/content/logistics/AddressEditBox.java @@ -3,9 +3,9 @@ import java.util.List; import java.util.function.Consumer; +import org.joml.Matrix3x2fStack; import org.lwjgl.glfw.GLFW; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.content.trains.schedule.DestinationSuggestions; import com.simibubi.create.foundation.gui.widget.ScrollInput; @@ -14,9 +14,11 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; @@ -43,21 +45,19 @@ public AddressEditBox(Screen screen, Font pFont, int pX, int pY, int pWidth, int setResponder(mainResponder); setBordered(false); setFocused(false); - mouseClicked(0, 0, 0); setMaxLength(25); } @Override - public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { - if (destinationSuggestions.keyPressed(pKeyCode, pScanCode, pModifiers)) + public boolean keyPressed(KeyEvent event) { + if (destinationSuggestions.keyPressed(event)) return true; - if (isFocused() && pKeyCode == GLFW.GLFW_KEY_ENTER) { + if (isFocused() && event.key() == GLFW.GLFW_KEY_ENTER) { setFocused(false); moveCursorToEnd(false); - mouseClicked(0, 0, 0); return true; } - return super.keyPressed(pKeyCode, pScanCode, pModifiers); + return super.keyPressed(event); } @Override @@ -68,23 +68,25 @@ public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, doubl } @Override - public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { - if (pButton == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { - if (isMouseOver(pMouseX, pMouseY)) { + public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) { + double mouseX = event.x(); + double mouseY = event.y(); + if (event.button() == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { + if (isMouseOver(mouseX, mouseY)) { setValue(""); return true; } } boolean wasFocused = isFocused(); - if (super.mouseClicked(pMouseX, pMouseY, pButton)) { + if (super.mouseClicked(event, doubleClick)) { if (!wasFocused) { setHighlightPos(0); setCursorPosition(getValue().length()); } return true; } - if (destinationSuggestions.mouseClicked((int) pMouseX, (int) pMouseY, pButton)) + if (destinationSuggestions.mouseClicked(event)) return true; return false; } @@ -101,20 +103,19 @@ public void setFocused(boolean focused) { } @Override - public void renderWidget(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { - super.renderWidget(pGuiGraphics, pMouseX, pMouseY, pPartialTick); - PoseStack matrixStack = pGuiGraphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(0, 0, 500); - destinationSuggestions.render(pGuiGraphics, pMouseX, pMouseY); - matrixStack.popPose(); + public void extractWidgetRenderState(GuiGraphicsExtractor pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { + super.extractWidgetRenderState(pGuiGraphics, pMouseX, pMouseY, pPartialTick); + Matrix3x2fStack matrixStack = pGuiGraphics.pose(); + matrixStack.pushMatrix(); + destinationSuggestions.extractRenderState(pGuiGraphics, pMouseX, pMouseY); + matrixStack.popMatrix(); if (!destinationSuggestions.isEmpty()) return; int itemX = getX() + width + 4; int itemY = getY() - 4; - pGuiGraphics.renderItem(AllBlocks.CLIPBOARD.asStack(), itemX, itemY); + pGuiGraphics.item(AllBlocks.CLIPBOARD.asStack(), itemX, itemY); if (pMouseX >= itemX && pMouseX < itemX + 16 && pMouseY >= itemY && pMouseY < itemY + 16) { List promiseTip = List.of(); promiseTip = List.of(CreateLang.translate("gui.address_box.clipboard_tip") @@ -132,7 +133,7 @@ public void renderWidget(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, flo CreateLang.translate("gui.address_box.clipboard_tip_4") .style(ChatFormatting.DARK_GRAY) .component()); - pGuiGraphics.renderComponentTooltip(Minecraft.getInstance().font, promiseTip, pMouseX, pMouseY); + pGuiGraphics.setComponentTooltipForNextFrame(Minecraft.getInstance().font, promiseTip, pMouseX, pMouseY); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/AddressEditBoxHelper.java b/src/main/java/com/simibubi/create/content/logistics/AddressEditBoxHelper.java index b9774904ee..7258c889f5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/AddressEditBoxHelper.java +++ b/src/main/java/com/simibubi/create/content/logistics/AddressEditBoxHelper.java @@ -13,7 +13,7 @@ import com.simibubi.create.content.trains.schedule.DestinationSuggestions; import com.simibubi.create.foundation.utility.TickBasedCache; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.screens.Screen; diff --git a/src/main/java/com/simibubi/create/content/logistics/FlapStuffs.java b/src/main/java/com/simibubi/create/content/logistics/FlapStuffs.java index dce0621803..04dd938305 100644 --- a/src/main/java/com/simibubi/create/content/logistics/FlapStuffs.java +++ b/src/main/java/com/simibubi/create/content/logistics/FlapStuffs.java @@ -15,9 +15,9 @@ import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.transform.Translate; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageClientInteractionHandler.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageClientInteractionHandler.java index 663b0834b8..4f7e3b20f0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageClientInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageClientInteractionHandler.java @@ -5,7 +5,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.entity.player.AttackEntityEvent; @@ -18,7 +17,6 @@ public class PackageClientInteractionHandler { // in creative mode @SubscribeEvent - @OnlyIn(Dist.CLIENT) public static void onPlayerPunchPackage(AttackEntityEvent event) { Player attacker = event.getEntity(); if (!attacker.level() diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageDestroyPacket.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageDestroyPacket.java index ad3685be2d..df39c377e2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageDestroyPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageDestroyPacket.java @@ -2,21 +2,21 @@ import com.simibubi.create.AllPackets; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record PackageDestroyPacket(Vec3 location, ItemStack box) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -31,12 +31,11 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { ClientLevel level = Minecraft.getInstance().level; Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, level.getRandom(), .125f); Vec3 pos = location.add(motion.scale(4)); - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, box), pos.x, pos.y, + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromStack(box)), pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java index 1a6e963217..f1868a0e98 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageEntity.java @@ -10,14 +10,14 @@ import com.simibubi.create.AllEntityTypes; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.content.logistics.chute.ChuteBlock; +import com.simibubi.create.foundation.mixin.accessor.ItemEntityAccessor; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.ponder.api.level.PonderLevel; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.ponder.api.client.level.PonderLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; -import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; @@ -33,19 +33,21 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; @@ -84,7 +86,7 @@ public PackageEntity(Level worldIn, double x, double y, double z) { public static PackageEntity fromDroppedItem(Level world, Entity originalEntity, ItemStack itemstack) { PackageEntity packageEntity = AllEntityTypes.PACKAGE.get() - .create(world); + .create(world, EntitySpawnReason.TRIGGERED); Vec3 position = originalEntity.position(); packageEntity.setPos(position); @@ -93,7 +95,7 @@ public static PackageEntity fromDroppedItem(Level world, Entity originalEntity, .scale(1.5f)); packageEntity.originalEntity = originalEntity; - if (world != null && !world.isClientSide) + if (world != null && !world.isClientSide()) if (ChuteBlock.isChute(world.getBlockState(BlockPos.containing(position.x, position.y + .5f, position.z)))) packageEntity.setYRot(((int) packageEntity.getYRot()) / 90 * 90); @@ -102,13 +104,12 @@ public static PackageEntity fromDroppedItem(Level world, Entity originalEntity, public static PackageEntity fromItemStack(Level world, Vec3 position, ItemStack itemstack) { PackageEntity packageEntity = AllEntityTypes.PACKAGE.get() - .create(world); + .create(world, EntitySpawnReason.TRIGGERED); packageEntity.setPos(position); packageEntity.setBox(itemstack); return packageEntity; } - @Override public ItemStack getPickedResult(HitResult target) { return box.copy(); } @@ -130,7 +131,7 @@ public static EntityType.Builder build(EntityType.Builder builder) { public void travel(Vec3 p_213352_1_) { super.travel(p_213352_1_); - if (!level().isClientSide) + if (!level().isClientSide()) return; if (getDeltaMovement().length() < 1 / 128f) return; @@ -143,17 +144,19 @@ public void travel(Vec3 p_213352_1_) { motion = collideBoundingBox(this, motion, bb, level(), entityStream); Vec3 clientPos = position().add(motion); - if (lerpSteps != 0) - clientPos = VecHelper.lerp(Math.min(1, tickCount / 20f), clientPos, new Vec3(lerpX, lerpY, lerpZ)); + if (getInterpolation().hasActiveInterpolation()) + clientPos = VecHelper.lerp(Math.min(1, tickCount / 20f), clientPos, getInterpolation().position()); if (tickCount < 5) setPos(clientPos.x, clientPos.y, clientPos.z); - if (tickCount < 20) - lerpTo(clientPos.x, clientPos.y, clientPos.z, getYRot(), getXRot(), lerpSteps == 0 ? 3 : lerpSteps); + if (tickCount < 20) { + getInterpolation().setInterpolationLength(getInterpolation().hasActiveInterpolation() ? 5 : 3); + getInterpolation().interpolateTo(clientPos, getYRot(), getXRot()); + } } @Override - public void lerpMotion(double x, double y, double z) { - setDeltaMovement(getDeltaMovement().add(x, y, z) + public void lerpMotion(Vec3 movement) { + setDeltaMovement(getDeltaMovement().add(movement) .scale(.5f)); } @@ -189,9 +192,7 @@ public void tick() { protected void verifyInitialEntity() { if (!(originalEntity instanceof ItemEntity itemEntity)) return; - CompoundTag nbt = new CompoundTag(); - itemEntity.addAdditionalSaveData(nbt); - if (nbt.getInt("PickupDelay") != 32767) // See: ItemEntity#makeFakeItem + if (((ItemEntityAccessor) itemEntity).create$getPickupDelay() != 32767) // See: ItemEntity#makeFakeItem return; discard(); } @@ -242,21 +243,20 @@ public boolean canCollideWith(Entity pEntity) { return pEntity instanceof PackageEntity && pEntity.getBoundingBox().maxY < getBoundingBox().minY + .125f; } - @Override public boolean canBeCollidedWith() { return false; } @Override - public InteractionResult interact(Player pPlayer, InteractionHand pHand) { + public InteractionResult interact(Player pPlayer, InteractionHand pHand, Vec3 location) { if (!pPlayer.getItemInHand(pHand) .isEmpty()) - return super.interact(pPlayer, pHand); - if (pPlayer.level().isClientSide) + return super.interact(pPlayer, pHand, location); + if (pPlayer.level().isClientSide()) return InteractionResult.SUCCESS; pPlayer.setItemInHand(pHand, box); level().playSound(null, blockPosition(), SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, - .75f + level().random.nextFloat()); + .75f + level().getRandom().nextFloat()); remove(RemovalReason.DISCARDED); return InteractionResult.SUCCESS; } @@ -299,11 +299,11 @@ protected void onInsideBlock(BlockState state) { } @Override - public boolean hurt(DamageSource source, float amount) { + public boolean hurtServer(ServerLevel level, DamageSource source, float amount) { if (source.getEntity() instanceof Player player && !CommonHooks.onPlayerAttackTarget(player, this)) return false; - if (level().isClientSide || !this.isAlive()) + if (!this.isAlive()) return false; if (source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { @@ -311,7 +311,7 @@ public boolean hurt(DamageSource source, float amount) { return false; } - if (!box.getItem().canBeHurtBy(box, source)) + if (!box.canBeHurtBy(source)) return false; if (source.equals(damageSources().inWall()) && (isPassenger() || insertionDelay < 20)) @@ -320,7 +320,7 @@ public boolean hurt(DamageSource source, float amount) { if (source.is(DamageTypeTags.IS_FALL)) return false; - if (this.isInvulnerableTo(source)) + if (this.isInvulnerableTo(level, source)) return false; if (source.is(DamageTypeTags.IS_EXPLOSION)) { @@ -377,7 +377,7 @@ protected void dropAllDeathLoot(ServerLevel level, DamageSource pDamageSource) { if (itemstack.getItem() instanceof SpawnEggItem sei) { EntityType entitytype = sei.getType(itemstack); Entity entity = - entitytype.spawn(level, itemstack, null, blockPosition(), MobSpawnType.SPAWN_EGG, false, false); + entitytype.spawn(level, itemstack, null, blockPosition(), EntitySpawnReason.SPAWN_ITEM_USE, false, false); if (entity != null) itemstack.shrink(1); } @@ -390,19 +390,19 @@ protected void dropAllDeathLoot(ServerLevel level, DamageSource pDamageSource) { } @Override - public void readAdditionalSaveData(CompoundTag compound) { - super.readAdditionalSaveData(compound); - box = ItemStack.parseOptional(level().registryAccess(), compound.getCompound("Box")); + public void readAdditionalSaveData(ValueInput input) { + super.readAdditionalSaveData(input); + box = input.read("Box", ItemStack.OPTIONAL_CODEC) + .orElse(ItemStack.EMPTY); refreshDimensions(); } @Override - public void addAdditionalSaveData(CompoundTag compound) { - super.addAdditionalSaveData(compound); - compound.put("Box", box.saveOptional(level().registryAccess())); + public void addAdditionalSaveData(ValueOutput output) { + super.addAdditionalSaveData(output); + output.store("Box", ItemStack.OPTIONAL_CODEC, box); } - @Override public Iterable getArmorSlots() { return Collections.emptyList(); } @@ -472,6 +472,7 @@ public boolean isAffectedByPotions() { @Override public boolean fireImmune() { - return box.has(DataComponents.FIRE_RESISTANT) || super.fireImmune(); + var resistance = box.get(DataComponents.DAMAGE_RESISTANT); + return super.fireImmune() || resistance != null && resistance.isResistantTo(damageSources().inFire()); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageItem.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageItem.java index d4b9ebbe24..4a624a9034 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageItem.java @@ -3,6 +3,7 @@ import java.lang.ref.WeakReference; import java.util.List; import java.util.Optional; +import java.util.function.Consumer; import org.jetbrains.annotations.Nullable; @@ -16,9 +17,9 @@ import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; import com.simibubi.create.foundation.item.ItemHelper; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.data.Glob; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.Glob; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -33,18 +34,19 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.ItemUseAnimation; import net.minecraft.world.item.component.ItemContainerContents; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; @@ -66,8 +68,8 @@ public PackageItem(Properties properties, PackageStyle style) { } @Override - public String getDescriptionId() { - return "item." + Create.ID + (style.rare() ? ".rare_package" : ".package"); + public Component getName(ItemStack stack) { + return Component.translatable("item." + Create.ID + (style.rare() ? ".rare_package" : ".package")); } public static boolean isPackage(ItemStack stack) { @@ -222,12 +224,12 @@ public static ItemStackHandler getContents(ItemStack box) { } @Override - public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, List tooltipComponents, - TooltipFlag tooltipFlag) { - super.appendHoverText(stack, tooltipContext, tooltipComponents, tooltipFlag); + public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, TooltipDisplay tooltipDisplay, + Consumer tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, tooltipContext, tooltipDisplay, tooltipComponents, tooltipFlag); if (stack.has(AllDataComponents.PACKAGE_ADDRESS)) - tooltipComponents.add(Component.literal("\u2192 " + stack.get(AllDataComponents.PACKAGE_ADDRESS)) + tooltipComponents.accept(Component.literal("\u2192 " + stack.get(AllDataComponents.PACKAGE_ADDRESS)) .withStyle(ChatFormatting.GOLD)); /* @@ -262,7 +264,7 @@ public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, List } visibleNames++; - tooltipComponents.add(itemstack.getHoverName() + tooltipComponents.accept(itemstack.getHoverName() .copy() .append(" x") .append(String.valueOf(itemstack.getCount())) @@ -270,7 +272,7 @@ public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, List } if (skippedNames > 0) - tooltipComponents.add(Component.translatable("container.shulkerBox.more", skippedNames) + tooltipComponents.accept(Component.translatable("container.shulkerBox.more", skippedNames) .withStyle(ChatFormatting.ITALIC)); } @@ -282,11 +284,11 @@ public int getUseDuration(ItemStack stack, LivingEntity entity) { } @Override - public UseAnim getUseAnimation(ItemStack pStack) { - return UseAnim.BOW; + public ItemUseAnimation getUseAnimation(ItemStack pStack) { + return ItemUseAnimation.BOW; } - public InteractionResultHolder open(Level worldIn, Player playerIn, InteractionHand handIn) { + public InteractionResult open(Level worldIn, Player playerIn, InteractionHand handIn) { ItemStack box = playerIn.getItemInHand(handIn); ItemStackHandler contents = getContents(box); ItemStack particle = box.copy(); @@ -305,7 +307,7 @@ public InteractionResultHolder open(Level worldIn, Player playerIn, I .add(playerIn.getLookAngle() .multiply(1, 0, 1) .normalize())), - MobSpawnType.SPAWN_EGG, false, false); + EntitySpawnReason.SPAWN_ITEM_USE, false, false); if (entity != null) itemstack.shrink(1); } @@ -325,18 +327,18 @@ public InteractionResultHolder open(Level worldIn, Player playerIn, I .add(playerIn.getLookAngle() .scale(.5)) .add(motion.scale(4)); - worldIn.addParticle(new ItemParticleOption(ParticleTypes.ITEM, particle), pos.x, pos.y, pos.z, motion.x, + worldIn.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(particle)), pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); } } - return new InteractionResultHolder<>(InteractionResult.SUCCESS, box); + return InteractionResult.SUCCESS.heldItemTransformedTo(box); } @Override public InteractionResult useOn(UseOnContext context) { if (context.getPlayer().isShiftKeyDown()) { - return open(context.getLevel(), context.getPlayer(), context.getHand()).getResult(); + return open(context.getLevel(), context.getPlayer(), context.getHand()); } Vec3 point = context.getClickLocation(); @@ -349,7 +351,7 @@ else if (context.getClickedFace() .getAxis() .isHorizontal()) point = point.add(Vec3.atLowerCornerOf(context.getClickedFace() - .getNormal()) + .getUnitVec3i()) .scale(r)); AABB scanBB = new AABB(point, point).inflate(r, 0, r) @@ -368,27 +370,27 @@ else if (context.getClickedFace() } @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { if (player.isShiftKeyDown()) return open(world, player, hand); ItemStack itemstack = player.getItemInHand(hand); player.startUsingItem(hand); - return InteractionResultHolder.success(itemstack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemstack); } @Override - public void releaseUsing(ItemStack stack, Level world, LivingEntity entity, int ticks) { + public boolean releaseUsing(ItemStack stack, Level world, LivingEntity entity, int ticks) { if (!(entity instanceof Player player)) - return; + return false; int i = this.getUseDuration(stack, entity) - ticks; if (i < 0) - return; + return false; float f = getPackageVelocity(i); if (f < 0.1D) - return; - if (world.isClientSide) - return; + return false; + if (world.isClientSide()) + return false; world.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.SNOWBALL_THROW, SoundSource.NEUTRAL, 0.5F, 0.5F); @@ -408,6 +410,7 @@ public void releaseUsing(ItemStack stack, Level world, LivingEntity entity, int packageEntity.setDeltaMovement(motion); packageEntity.tossedBy = new WeakReference<>(player); world.addFreshEntity(packageEntity); + return true; } public static float getPackageVelocity(int p_185059_0_) { diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageRenderer.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageRenderer.java index d6372cec8d..979e1600c6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageRenderer.java @@ -6,37 +6,30 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider.Context; +import net.minecraft.client.renderer.entity.state.EntityRenderState; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; -public class PackageRenderer extends EntityRenderer { +public class PackageRenderer extends EntityRenderer { public PackageRenderer(Context pContext) { super(pContext); shadowRadius = 0.5f; } - @Override public void render(PackageEntity entity, float yaw, float pt, PoseStack ms, MultiBufferSource buffer, int light) { - if (!VisualizationManager.supportsVisualization(entity.level())) { - ItemStack box = entity.box; - if (box.isEmpty() || !PackageItem.isPackage(box)) - box = AllBlocks.CARDBOARD_BLOCK.asStack(); - PartialModel model = AllPartialModels.PACKAGES.get(BuiltInRegistries.ITEM.getKey(box.getItem())); - renderBox(entity, yaw, ms, buffer, light, model); - } - super.render(entity, yaw, pt, ms, buffer, light); + // TODO 26.2: Port package rendering to EntityRenderer#submit. } public static void renderBox(Entity entity, float yaw, PoseStack ms, MultiBufferSource buffer, int light, @@ -48,12 +41,11 @@ public static void renderBox(Entity entity, float yaw, PoseStack ms, MultiBuffer .rotateCentered(-AngleHelper.rad(yaw + 90), Direction.UP) .light(light) .nudge(entity.getId()); - sbb.renderInto(ms, buffer.getBuffer(RenderType.solid())); + sbb.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @Override - public ResourceLocation getTextureLocation(PackageEntity pEntity) { - return null; + public EntityRenderState createRenderState() { + return new EntityRenderState(); } - } diff --git a/src/main/java/com/simibubi/create/content/logistics/box/PackageStyles.java b/src/main/java/com/simibubi/create/content/logistics/box/PackageStyles.java index 9493390d06..466d888273 100644 --- a/src/main/java/com/simibubi/create/content/logistics/box/PackageStyles.java +++ b/src/main/java/com/simibubi/create/content/logistics/box/PackageStyles.java @@ -10,18 +10,18 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.Create; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; public class PackageStyles { public record PackageStyle(String type, int width, int height, float riggingOffset, boolean rare) { - public ResourceLocation getItemId() { + public Identifier getItemId() { String size = "_" + width + "x" + height; String id = type + "_package" + (rare ? "" : size); return Create.asResource(id); } - public ResourceLocation getRiggingModel() { + public Identifier getRiggingModel() { String size = width + "x" + height; return Create.asResource("item/package/rigging_" + size); } diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/AbstractChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/chute/AbstractChuteBlock.java index e8a5d1946c..84898e9985 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/AbstractChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/AbstractChuteBlock.java @@ -11,13 +11,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.item.ItemHelper; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -26,7 +26,11 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; @@ -75,24 +79,24 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); ItemStack stack = ItemHelper.fromItemEntity(entityIn); if (stack.isEmpty()) return; - if (entityIn.level().isClientSide) + if (entityIn.level().isClientSide()) return; if (!entityIn.isAlive()) return; - BlockPos pos = BlockPos.containing(entityIn.position() + BlockPos chutePos = BlockPos.containing(entityIn.position() .add(0, 0.5f, 0)) .below(); - DirectBeltInputBehaviour input = BlockEntityBehaviour.get(entityIn.level(), pos, DirectBeltInputBehaviour.TYPE); + DirectBeltInputBehaviour input = BlockEntityBehaviour.get(entityIn.level(), chutePos, DirectBeltInputBehaviour.TYPE); if (input == null) return; if (!input.canInsertFromSide(Direction.UP)) return; - if (!PackageEntity.centerPackage(entityIn, Vec3.atBottomCenterOf(pos.above()))) + if (!PackageEntity.centerPackage(entityIn, Vec3.atBottomCenterOf(chutePos.above()))) return; ItemStack remainder = input.handleInsertion(stack, Direction.UP, false); if (remainder.isEmpty()) { @@ -129,11 +133,8 @@ protected void updateDiagonalNeighbour(BlockState state, Level world, BlockPos p } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, world, pos, newState); - - if (state.is(newState.getBlock())) - return; + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, world, pos, Blocks.AIR.defaultBlockState()); updateDiagonalNeighbour(state, world, pos); @@ -155,16 +156,15 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState above, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos p_196271_6_, BlockState above, RandomSource random) { if (direction != Direction.UP) return state; return updateChuteState(state, above, world, pos); } @Override - public void neighborChanged(BlockState p_220069_1_, Level world, BlockPos pos, Block p_220069_4_, - BlockPos neighbourPos, boolean p_220069_6_) { + public void neighborChanged(BlockState p_220069_1_, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { + BlockPos neighbourPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (pos.below() .equals(neighbourPos)) withBlockEntityDo(world, pos, ChuteBlockEntity::blockBelowChanged); @@ -190,20 +190,20 @@ public Class getBlockEntityClass() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!stack.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; return onBlockEntityUseItemOn(level, pos, be -> { if (be.item.isEmpty()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; player.getInventory() .placeItemBackInInventory(be.item); be.setItem(ItemStack.EMPTY); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlock.java index 525feada49..5e53639172 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlock.java @@ -8,16 +8,17 @@ import com.simibubi.create.content.logistics.funnel.FunnelBlock; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -26,6 +27,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.LevelEvent; import net.minecraft.world.level.block.Mirror; @@ -34,7 +36,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.material.FluidState; @@ -44,7 +46,7 @@ public class ChuteBlock extends AbstractChuteBlock implements ProperWaterloggedBlock { public static final Property SHAPE = EnumProperty.create("shape", Shape.class); - public static final DirectionProperty FACING = BlockStateProperties.FACING_HOPPER; + public static final EnumProperty FACING = BlockStateProperties.FACING_HOPPER; public ChuteBlock(Properties p_i48440_1_) { super(p_i48440_1_); @@ -89,7 +91,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { if (shape == Shape.INTERSECTION) return InteractionResult.PASS; Level level = context.getLevel(); - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; if (shape == Shape.ENCASED) { level.setBlockAndUpdate(context.getClickedPos(), state.setValue(SHAPE, Shape.NORMAL)); @@ -104,18 +106,18 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { Shape shape = state.getValue(SHAPE); if (!AllBlocks.INDUSTRIAL_IRON_BLOCK.isIn(stack)) return super.useItemOn(stack, state, level, pos, player, hand, hitResult); if (shape == Shape.INTERSECTION || shape == Shape.ENCASED) return super.useItemOn(stack,state, level, pos, player, hand, hitResult); - if (player == null || level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (player == null || level.isClientSide()) + return InteractionResult.SUCCESS; level.setBlockAndUpdate(pos, state.setValue(SHAPE, Shape.ENCASED)); level.playSound(null, pos, SoundEvents.NETHERITE_BLOCK_HIT, SoundSource.BLOCKS, 0.5f, 1.05f); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -132,10 +134,9 @@ public BlockState getStateForPlacement(BlockPlaceContext ctx) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState above, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { - updateWater(world, state, pos); - return super.updateShape(state, direction, above, world, pos, p_196271_6_); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos p_196271_6_, BlockState above, RandomSource random) { + updateWater(ticks, world, state, pos); + return super.updateShape(state, world, ticks, pos, direction, p_196271_6_, above, random); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java index ee9b297a19..b9cbd3cfcd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteBlockEntity.java @@ -30,13 +30,13 @@ import com.simibubi.create.foundation.particle.AirParticleData; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -50,6 +50,7 @@ import net.minecraft.world.Containers; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -64,7 +65,6 @@ import net.neoforged.neoforge.items.ItemHandlerHelper; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault /* * Commented Code: Chutes create air streams and act similarly to encased fans * (Unfinished) @@ -105,9 +105,9 @@ public ChuteBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.CHUTE.get(), - (be, context) -> be.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.itemHandler) ); } @@ -150,12 +150,12 @@ protected AABB createRenderBoundingBox() { public void tick() { super.tick(); - if (!level.isClientSide) + if (!level.isClientSide()) canPickUpItems = canDirectlyInsert(); - boolean clientSide = level != null && level.isClientSide && !isVirtual(); + boolean clientSide = level != null && level.isClientSide() && !isVirtual(); float itemMotion = getItemMotion(); - if (itemMotion != 0 && level != null && level.isClientSide) + if (itemMotion != 0 && level != null && level.isClientSide()) spawnParticles(itemMotion); tickAirStreams(itemMotion); @@ -195,7 +195,7 @@ else if (nextOffset > 1) { private void updateAirFlow(float itemSpeed) { updateAirFlow = false; // airCurrent.rebuild(); - if (itemSpeed > 0 && level != null && !level.isClientSide) { + if (itemSpeed > 0 && level != null && !level.isClientSide()) { float speed = pull - push; beltBelow = null; @@ -232,7 +232,7 @@ else if (speed >= 32) private void findEntities(float itemSpeed) { // if (getSpeed() != 0) // airCurrent.findEntities(); - if (bottomPullDistance <= 0 && !getItem().isEmpty() || itemSpeed <= 0 || level == null || level.isClientSide) + if (bottomPullDistance <= 0 && !getItem().isEmpty() || itemSpeed <= 0 || level == null || level.isClientSide()) return; if (!canActivate()) return; @@ -252,7 +252,7 @@ private void findEntities(float itemSpeed) { } private void extractFromBelt(float itemSpeed) { - if (itemSpeed <= 0 || level == null || level.isClientSide) + if (itemSpeed <= 0 || level == null || level.isClientSide()) return; if (getItem().isEmpty() && beltBelow != null) { beltBelow.handleCenteredProcessingOnAllItems(.5f, ts -> { @@ -266,7 +266,7 @@ private void extractFromBelt(float itemSpeed) { } private void tickAirStreams(float itemSpeed) { - if (!level.isClientSide && airCurrentUpdateCooldown-- <= 0) { + if (!level.isClientSide() && airCurrentUpdateCooldown-- <= 0) { airCurrentUpdateCooldown = AllConfigs.server().kinetics.fanBlockCheckRate.get(); updateAirFlow = true; } @@ -372,7 +372,7 @@ private boolean handleDownwardOutput(boolean simulate) { return false; IItemHandler capBelow = grabCapability(Direction.DOWN); if (capBelow != null) { - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return false; if (invVersionTracker.stillWaiting(capBelow)) return false; @@ -428,7 +428,7 @@ private boolean handleUpwardOutput(boolean simulate) { if (AbstractChuteBlock.isOpenChute(getBlockState())) { IItemHandler capAbove = grabCapability(Direction.UP); if (capAbove != null) { - if (level.isClientSide && !isVirtual() && !ChuteBlock.isChute(stateAbove)) + if (level.isClientSide() && !isVirtual() && !ChuteBlock.isChute(stateAbove)) return false; int countBefore = item.getCount(); if (invVersionTracker.stillWaiting(capAbove)) @@ -508,22 +508,8 @@ protected boolean canActivate() { if (side != Direction.DOWN || !(be instanceof SmartChuteBlockEntity) || getItemMotion() > 0) return null; } - if (capCaches.get(side) == null) { - if (level instanceof ServerLevel serverLevel) { - BlockCapabilityCache cache = BlockCapabilityCache.create( - Capabilities.ItemHandler.BLOCK, - serverLevel, - pos, - side.getOpposite() - ); - capCaches.put(side, cache); - return cache.getCapability(); - } else { - return level.getCapability(Capabilities.ItemHandler.BLOCK, pos, side.getOpposite()); - } - } else { - return capCaches.get(side).getCapability(); - } + // TODO 26.2: replace legacy IItemHandler lookup with ResourceHandler lookup/adaptation. + return null; } public void setItem(ItemStack stack) { @@ -534,7 +520,7 @@ public void setItem(ItemStack stack, float insertionPos) { item = stack; itemPosition.startWithValue(insertionPos); invVersionTracker.reset(); - if (!level.isClientSide) { + if (!level.isClientSide()) { notifyUpdate(); award(AllAdvancements.CHUTE); } @@ -550,7 +536,7 @@ public void invalidate() { @Override public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - compound.put("Item", item.saveOptional(registries)); + compound.put("Item", LegacyItemStackNbtBridge.saveOptional(item, registries)); compound.putFloat("ItemPosition", itemPosition.getValue()); compound.putFloat("Pull", pull); compound.putFloat("Push", push); @@ -561,22 +547,22 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { ItemStack previousItem = item; - item = ItemStack.parseOptional(registries, compound.getCompound("Item")); - itemPosition.startWithValue(compound.getFloat("ItemPosition")); - pull = compound.getFloat("Pull"); - push = compound.getFloat("Push"); - bottomPullDistance = compound.getFloat("BottomAirFlowDistance"); + item = LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompound("Item")); + itemPosition.startWithValue(compound.getFloatOr("ItemPosition", 0)); + pull = compound.getFloatOr("Pull", 0); + push = compound.getFloatOr("Push", 0); + bottomPullDistance = compound.getFloatOr("BottomAirFlowDistance", 0); super.read(compound, registries, clientPacket); // if (clientPacket) // airCurrent.rebuild(); - if (hasLevel() && level != null && level.isClientSide && !ItemStack.matches(previousItem, item) && !item.isEmpty()) { - if (level.random.nextInt(3) != 0) + if (hasLevel() && level != null && level.isClientSide() && !ItemStack.matches(previousItem, item) && !item.isEmpty()) { + if (level.getRandom().nextInt(3) != 0) return; Vec3 p = VecHelper.getCenterOf(worldPosition); - p = VecHelper.offsetRandomly(p, level.random, .5f); + p = VecHelper.offsetRandomly(p, level.getRandom(), .5f); Vec3 m = Vec3.ZERO; - level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, item), p.x, p.y, p.z, m.x, m.y, m.z); + level.addParticle(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromStack(item)), p.x, p.y, p.z, m.x, m.y, m.z); } } @@ -758,7 +744,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak .style(ChatFormatting.YELLOW) .forGoggles(tooltip); if (!item.isEmpty()) - CreateLang.translate("tooltip.chute.contains", Component.translatable(item.getDescriptionId()) + CreateLang.translate("tooltip.chute.contains", item.getHoverName() .getString(), item.getCount()) .style(ChatFormatting.GREEN) .forGoggles(tooltip); diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteGenerator.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteGenerator.java index 2db78e2b4b..7362ca3fea 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteGenerator.java @@ -4,12 +4,12 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class ChuteGenerator extends SpecialBlockStateGen { @@ -24,7 +24,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { boolean horizontal = state.getValue(ChuteBlock.FACING) != Direction.DOWN; ChuteBlock.Shape shape = state.getValue(ChuteBlock.SHAPE); diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteItem.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteItem.java index 5eb7ded5c4..5b9a5bba77 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteItem.java @@ -38,7 +38,7 @@ public InteractionResult place(BlockPlaceContext context) { if (blockState.canBeReplaced()) context = BlockPlaceContext.at(context, correctPos, face); else { - if (!(blockState.getBlock() instanceof ChuteBlock block) || world.isClientSide) + if (!(blockState.getBlock() instanceof ChuteBlock block) || world.isClientSide()) return InteractionResult.FAIL; if (block.getFacing(blockState) == Direction.DOWN) { world.setBlockAndUpdate(correctPos, diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteRenderer.java b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteRenderer.java index aa5c950899..590dadabb8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/ChuteRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/ChuteRenderer.java @@ -7,9 +7,9 @@ import dev.engine_room.flywheel.lib.transform.TransformStack; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; +import com.simibubi.create.foundation.render.ItemRenderer; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.level.block.state.BlockState; @@ -35,8 +35,7 @@ protected void renderSafe(ChuteBlockEntity be, float partialTicks, PoseStack ms, public static void renderItem(ChuteBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); var msr = TransformStack.of(ms); ms.pushPose(); msr.center(); diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlock.java b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlock.java index acd42988fd..6cb197ced4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlock.java @@ -10,6 +10,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -26,10 +27,9 @@ public SmartChuteBlock(Properties p_i48440_1_) { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, - boolean isMoving) { - super.neighborChanged(state, level, pos, block, fromPos, isMoving); - if (level.isClientSide) + public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { + super.neighborChanged(state, level, pos, block, orientation, isMoving); + if (level.isClientSide()) return; if (!level.getBlockTicks() .willTickThisTick(pos, this)) diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java index ba27ef7c5e..407aae65bf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteBlockEntity.java @@ -26,9 +26,9 @@ public SmartChuteBlockEntity(BlockEntityType type, BlockPos pos, BlockState s public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.SMART_CHUTE.get(), - (be, context) -> be.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.itemHandler) ); } diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteFilterSlotPositioning.java index d63776b695..bd48167fe1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteFilterSlotPositioning.java @@ -2,8 +2,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteRenderer.java b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteRenderer.java index f34bcecbd2..dfb8669d1e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/chute/SmartChuteRenderer.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; public class SmartChuteRenderer extends SmartBlockEntityRenderer { diff --git a/src/main/java/com/simibubi/create/content/logistics/crate/BottomlessItemHandler.java b/src/main/java/com/simibubi/create/content/logistics/crate/BottomlessItemHandler.java index b2cab192fe..1d730fa721 100644 --- a/src/main/java/com/simibubi/create/content/logistics/crate/BottomlessItemHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/crate/BottomlessItemHandler.java @@ -4,12 +4,10 @@ import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.items.ItemStackHandler; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class BottomlessItemHandler extends ItemStackHandler { diff --git a/src/main/java/com/simibubi/create/content/logistics/crate/CreativeCrateBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/crate/CreativeCrateBlockEntity.java index a5b02c2ae3..755078be7f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/crate/CreativeCrateBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/crate/CreativeCrateBlockEntity.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.transform.TransformStack; @@ -32,9 +33,9 @@ public CreativeCrateBlockEntity(BlockEntityType type, BlockPos pos, BlockStat public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.CREATIVE_CRATE.get(), - (be, context) -> be.inv + (be, context) -> new LegacyItemTransferAdapter(be.inv) ); } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBehaviour.java index 3afe353660..b7374d06a8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBehaviour.java @@ -21,10 +21,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.foundation.mixin.accessor.ItemStackHandlerAccessor; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -98,7 +99,7 @@ public void tick() { TransportedItemStack ts = iterator.next(); if (!tick(ts)) continue; - if (world.isClientSide && !blockEntity.isVirtual()) + if (world.isClientSide() && !blockEntity.isVirtual()) continue; if (heldItem == null) { heldItem = ts; @@ -121,7 +122,7 @@ public void tick() { BlockPos pos = blockEntity.getBlockPos(); - if (world.isClientSide) + if (world.isClientSide()) return; if (handleBeltFunnelOutput()) return; @@ -227,7 +228,7 @@ public void unload() { public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (heldItem != null) compound.put("HeldItem", heldItem.serializeNBT(registries)); - compound.put("OutputBuffer", processingOutputBuffer.serializeNBT(registries)); + compound.put("OutputBuffer", LegacyItemStackNbtBridge.serializeHandler(processingOutputBuffer, registries)); if (canMergeItems() && !incoming.isEmpty()) compound.put("Incoming", NBTHelper.writeCompoundList(incoming, stack -> stack.serializeNBT(registries))); } @@ -236,10 +237,10 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea public void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { heldItem = null; if (compound.contains("HeldItem")) - heldItem = TransportedItemStack.read(compound.getCompound("HeldItem"), registries); - processingOutputBuffer.deserializeNBT(registries, compound.getCompound("OutputBuffer")); + heldItem = TransportedItemStack.read(compound.getCompoundOrEmpty("HeldItem"), registries); + LegacyItemStackNbtBridge.deserializeHandler(processingOutputBuffer, registries, compound.getCompoundOrEmpty("OutputBuffer")); if (canMergeItems()) { - ListTag list = compound.getList("Incoming", Tag.TAG_COMPOUND); + ListTag list = compound.getListOrEmpty("Incoming"); incoming = NBTHelper.readCompoundList(list, c -> TransportedItemStack.read(c, registries)); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlock.java b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlock.java index 2802d9b5f0..305204f2cf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlock.java @@ -8,12 +8,13 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -21,7 +22,10 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -32,7 +36,6 @@ import net.minecraft.world.phys.shapes.VoxelShape; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class DepotBlock extends Block implements IBE, IWrenchable, ProperWaterloggedBlock { public DepotBlock(Properties p_i48440_1_) { @@ -51,9 +54,8 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } @@ -79,18 +81,18 @@ public BlockEntityType getBlockEntityType() { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return SharedDepotBlockMethods.onUse(stack, state, level, pos, player, hand, hitResult); } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); SharedDepotBlockMethods.onLanded(worldIn, entityIn); } @@ -100,7 +102,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return SharedDepotBlockMethods.getComparatorInputOverride(blockState, worldIn, pos); } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlockEntity.java index 02ae094c18..3f687fc9c4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/DepotBlockEntity.java @@ -25,9 +25,9 @@ public DepotBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.DEPOT.get(), - (be, context) -> be.depotBehaviour.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.depotBehaviour.itemHandler) ); } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java b/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java index 52bc964663..150c2c5dab 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/DepotRenderer.java @@ -11,12 +11,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemDisplayContext; @@ -56,7 +56,7 @@ public static void renderItemsOf(SmartBlockEntity be, float partialTicks, PoseSt if (tis.insertedFrom.getAxis() .isHorizontal()) { Vec3 offsetVec = Vec3.atLowerCornerOf(tis.insertedFrom.getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(.5f - offset); ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); boolean alongX = tis.insertedFrom.getClockWise() @@ -101,8 +101,7 @@ public static void renderItemsOf(SmartBlockEntity be, float partialTicks, PoseSt public static void renderItem(PoseStack ms, MultiBufferSource buffer, int light, int overlay, ItemStack itemStack, int angle, Random r, Vec3 itemPosition, boolean alwaysUpright) { - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); var msr = TransformStack.of(ms); int count = Mth.log2((itemStack.getCount())) / 2; BakedModel bakedModel = itemRenderer.getModel(itemStack, null, null, 0); @@ -113,7 +112,7 @@ public static void renderItem(PoseStack ms, MultiBufferSource buffer, int light, msr.rotateYDegrees(angle); if (renderUpright) { - Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + Vec3 cameraPosition = Minecraft.getInstance().gameRenderer.mainCamera().position(); Vec3 diff = itemPosition.subtract(cameraPosition); float yRot = (float) (Mth.atan2(diff.x, diff.z) + Math.PI); ms.mulPose(Axis.YP.rotation(yRot)); diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlock.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlock.java index 41f74ce7df..681173bd43 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlock.java @@ -10,25 +10,27 @@ import com.simibubi.create.content.logistics.depot.EjectorBlockEntity.State; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.item.ItemHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.material.FluidState; @@ -56,9 +58,10 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, + RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } @@ -81,38 +84,33 @@ public float getFriction(BlockState state, LevelReader world, BlockPos pos, Enti } @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, + public void neighborChanged(BlockState state, Level world, BlockPos pos, Block p_220069_4_, Orientation orientation, boolean p_220069_6_) { withBlockEntityDo(world, pos, EjectorBlockEntity::updateSignal); } @Override public void fallOn(Level p_180658_1_, BlockState p_152427_, BlockPos p_180658_2_, Entity p_180658_3_, - float p_180658_4_) { + double p_180658_4_) { Optional blockEntityOptional = getBlockEntityOptional(p_180658_1_, p_180658_2_); if (blockEntityOptional.isPresent() && !p_180658_3_.isSuppressingBounce()) { p_180658_3_.causeFallDamage(p_180658_4_, 1.0F, p_180658_1_.damageSources().fall()); - return; + } else { + super.fallOn(p_180658_1_, p_152427_, p_180658_2_, p_180658_3_, p_180658_4_); } - super.fallOn(p_180658_1_, p_152427_, p_180658_2_, p_180658_3_, p_180658_4_); - } - - @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); - BlockPos position = entityIn.getOnPosLegacy(); - if (!AllBlocks.WEIGHTED_EJECTOR.has(worldIn.getBlockState(position))) + BlockPos position = p_180658_3_.getOnPosLegacy(); + if (!AllBlocks.WEIGHTED_EJECTOR.has(p_180658_1_.getBlockState(position))) return; - if (!entityIn.isAlive()) + if (!p_180658_3_.isAlive()) return; - if (entityIn.isSuppressingBounce()) + if (p_180658_3_.isSuppressingBounce()) return; - if (!ItemHelper.fromItemEntity(entityIn).isEmpty()) { - SharedDepotBlockMethods.onLanded(worldIn, entityIn); + if (!ItemHelper.fromItemEntity(p_180658_3_).isEmpty()) { + SharedDepotBlockMethods.onLanded(p_180658_1_, p_180658_3_); return; } - Optional teProvider = getBlockEntityOptional(worldIn, position); + Optional teProvider = getBlockEntityOptional(p_180658_1_, position); if (!teProvider.isPresent()) return; @@ -124,31 +122,31 @@ public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { if (ejectorBlockEntity.launcher.getHorizontalDistance() == 0) return; - if (entityIn.onGround()) { - entityIn.setOnGround(false); + if (p_180658_3_.onGround()) { + p_180658_3_.setOnGround(false); Vec3 center = VecHelper.getCenterOf(position) .add(0, 7 / 16f, 0); - Vec3 positionVec = entityIn.position(); + Vec3 positionVec = p_180658_3_.position(); double diff = center.distanceTo(positionVec); - entityIn.setDeltaMovement(0, -0.125, 0); + p_180658_3_.setDeltaMovement(0, -0.125, 0); Vec3 vec = center.add(positionVec) .scale(.5f); if (diff > 4 / 16f) { - entityIn.setPos(vec.x, vec.y, vec.z); + p_180658_3_.setPos(vec.x, vec.y, vec.z); return; } } ejectorBlockEntity.activate(); ejectorBlockEntity.notifyUpdate(); - if (entityIn.level().isClientSide) - CatnipServices.NETWORK.sendToServer(new EjectorTriggerPacket(ejectorBlockEntity.getBlockPos())); + if (p_180658_3_.level().isClientSide()) + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new EjectorTriggerPacket(ejectorBlockEntity.getBlockPos())); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; return SharedDepotBlockMethods.onUse(stack, state, level, pos, player, hand, hitResult); } @@ -180,7 +178,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return SharedDepotBlockMethods.getComparatorInputOverride(blockState, worldIn, pos); } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlockEntity.java index b0291dcd12..66bb0de754 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorBlockEntity.java @@ -19,26 +19,27 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; -import net.minecraft.nbt.Tag; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.core.component.DataComponents; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; @@ -47,7 +48,6 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ElytraItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.ClipContext.Block; @@ -64,7 +64,6 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.CollisionContext; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.ItemStackHandler; @@ -104,9 +103,9 @@ public EjectorBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState st public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.WEIGHTED_EJECTOR.get(), - (be, context) -> be.depotBehaviour.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.depotBehaviour.itemHandler) ); } @@ -140,7 +139,7 @@ public void activate() { } protected boolean cannotLaunch() { - return state != State.CHARGED && !(level.isClientSide && state == State.LAUNCHING); + return state != State.CHARGED && !(level.isClientSide() && state == State.LAUNCHING); } public void activateDeferred() { @@ -151,7 +150,7 @@ public void activateDeferred() { level.getEntitiesOfClass(Entity.class, new AABB(worldPosition).inflate(-1 / 16f, 0, -1 / 16f)); // Launch Items - boolean doLogic = !level.isClientSide || isVirtual(); + boolean doLogic = !level.isClientSide() || isVirtual(); if (doLogic) launchItems(); @@ -169,7 +168,7 @@ public void activateDeferred() { entity.setOnGround(false); - if (isPlayerEntity != level.isClientSide) + if (isPlayerEntity != level.isClientSide()) continue; entity.setPos(worldPosition.getX() + 0.5, worldPosition.getY() + 1.0, worldPosition.getZ() + 0.5); @@ -182,10 +181,10 @@ public void activateDeferred() { if (launcher.getHorizontalDistance() * launcher.getHorizontalDistance() + launcher.getVerticalDistance() * launcher.getVerticalDistance() >= 25 * 25) - CatnipServices.NETWORK.sendToServer(new EjectorAwardPacket(worldPosition)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new EjectorAwardPacket(worldPosition)); - if (!(playerEntity.getItemBySlot(EquipmentSlot.CHEST) - .getItem() instanceof ElytraItem)) + if (!playerEntity.getItemBySlot(EquipmentSlot.CHEST) + .has(DataComponents.GLIDER)) continue; playerEntity.setXRot(-35); @@ -193,13 +192,13 @@ public void activateDeferred() { playerEntity.setDeltaMovement(playerEntity.getDeltaMovement() .scale(.75f)); deployElytra(playerEntity); - CatnipServices.NETWORK.sendToServer(new EjectorElytraPacket(worldPosition)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new EjectorElytraPacket(worldPosition)); } if (doLogic) { lidProgress.chase(1, .8f, Chaser.EXP); state = State.LAUNCHING; - if (!level.isClientSide) { + if (!level.isClientSide()) { level.playSound(null, worldPosition, SoundEvents.WOODEN_TRAPDOOR_CLOSE, SoundSource.BLOCKS, .35f, 1f); level.playSound(null, worldPosition, SoundEvents.CHEST_OPEN, SoundSource.BLOCKS, .1f, 1.4f); } @@ -249,14 +248,15 @@ else if (!ItemStack.isSameItem(remainder, stack)) return; } - if (!level.isClientSide) + if (!level.isClientSide()) for (Direction d : Iterate.directions) { BlockState blockState = level.getBlockState(worldPosition.relative(d)); if (!(blockState.getBlock() instanceof ObserverBlock)) continue; if (blockState.getValue(ObserverBlock.FACING) != d.getOpposite()) continue; - blockState.updateShape(d.getOpposite(), blockState, level, worldPosition.relative(d), worldPosition); + blockState.updateShape(level, level, worldPosition.relative(d), d.getOpposite(), worldPosition, + blockState, level.getRandom()); } if (depotBehaviour.heldItem != null) { @@ -277,7 +277,7 @@ else if (!ItemStack.isSameItem(remainder, stack)) } protected boolean addToLaunchedItems(ItemStack stack) { - if ((!level.isClientSide || isVirtual()) && trackedItem == null && scanCooldown == 0) { + if ((!level.isClientSide() || isVirtual()) && trackedItem == null && scanCooldown == 0) { scanCooldown = AllConfigs.server().kinetics.ejectorScanInterval.get(); trackedItem = stack; } @@ -296,7 +296,7 @@ protected Direction getFacing() { public void tick() { super.tick(); - boolean doLogic = !level.isClientSide || isVirtual(); + boolean doLogic = !level.isClientSide() || isVirtual(); State prevState = state; float totalTime = Math.max(3, (float) launcher.getTotalFlyingTicks()); @@ -392,7 +392,7 @@ private boolean scanTrajectoryForObstacles(int time) { Vec3 vec = rayTraceBlocks.getLocation(); earlyTarget = Pair.of(vec.add(Vec3.atLowerCornerOf(rayTraceBlocks.getDirection() - .getNormal()) + .getUnitVec3i()) .scale(.25f)), rayTraceBlocks.getBlockPos()); earlyTargetTime = (float) (time + (source.distanceTo(vec) / source.distanceTo(target))); sendData(); @@ -526,11 +526,12 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo NBTHelper.writeEnum(compound, "State", state); compound.put("Lid", lidProgress.writeNBT()); compound.put("LaunchedItems", - NBTHelper.writeCompoundList(launchedItems, ia -> ia.serializeNBT(s -> (CompoundTag) s.saveOptional(registries)))); + NBTHelper.writeCompoundList(launchedItems, ia -> ia + .serializeNBT(s -> LegacyItemStackNbtBridge.saveOptionalCompound(s, registries)))); if (earlyTarget != null) { compound.put("EarlyTarget", VecHelper.writeNBT(earlyTarget.getFirst())); - compound.put("EarlyTargetPos", NbtUtils.writeBlockPos(earlyTarget.getSecond())); + compound.put("EarlyTargetPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(earlyTarget.getSecond())); compound.putFloat("EarlyTargetTime", earlyTargetTime); } } @@ -545,8 +546,8 @@ public void writeSafe(CompoundTag compound, HolderLookup.Provider registries) { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - int horizontalDistance = compound.getInt("HorizontalDistance"); - int verticalDistance = compound.getInt("VerticalDistance"); + int horizontalDistance = compound.getIntOr("HorizontalDistance", 0); + int verticalDistance = compound.getIntOr("VerticalDistance", 0); if (launcher.getHorizontalDistance() != horizontalDistance || launcher.getVerticalDistance() != verticalDistance) { @@ -554,22 +555,22 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool launcher.clamp(AllConfigs.server().kinetics.maxEjectorDistance.get()); } - powered = compound.getBoolean("Powered"); + powered = compound.getBooleanOr("Powered", false); state = NBTHelper.readEnum(compound, "State", State.class); - lidProgress.readNBT(compound.getCompound("Lid"), false); - launchedItems = NBTHelper.readCompoundList(compound.getList("LaunchedItems", Tag.TAG_COMPOUND), - nbt -> IntAttached.read(nbt, t -> ItemStack.parseOptional(registries, t))); + lidProgress.readNBT(compound.getCompoundOrEmpty("Lid"), false); + launchedItems = NBTHelper.readCompoundList(compound.getListOrEmpty("LaunchedItems"), + nbt -> IntAttached.read(nbt, t -> LegacyItemStackNbtBridge.parseOptional(registries, t))); earlyTarget = null; earlyTargetTime = 0; if (compound.contains("EarlyTarget")) { - earlyTarget = Pair.of(VecHelper.readNBT(compound.getList("EarlyTarget", Tag.TAG_DOUBLE)), + earlyTarget = Pair.of(VecHelper.readNBT(compound.getListOrEmpty("EarlyTarget")), NBTHelper.readBlockPos(compound, "EarlyTargetPos")); - earlyTargetTime = compound.getFloat("EarlyTargetTime"); + earlyTargetTime = compound.getFloatOr("EarlyTargetTime", 0); } if (compound.contains("ForceAngle")) - lidProgress.startWithValue(compound.getFloat("ForceAngle")); + lidProgress.startWithValue(compound.getFloatOr("ForceAngle", 0)); } public void updateSignal() { @@ -603,7 +604,6 @@ public State getState() { } @Override - @OnlyIn(Dist.CLIENT) public AABB getRenderBoundingBox() { return AABB.INFINITE; } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorItem.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorItem.java index 132bfa1053..ea1ad65d7a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorItem.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.depot; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -37,12 +37,11 @@ protected BlockState getPlacementState(BlockPlaceContext p_195945_1_) { @Override protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, Player player, ItemStack p_195943_4_, BlockState p_195943_5_) { - if (!world.isClientSide && player instanceof ServerPlayer sp) + if (!world.isClientSide() && player instanceof ServerPlayer sp) CatnipServices.NETWORK.sendToClient(sp, new EjectorPlacementPacket.ClientBoundRequest(pos)); return super.updateCustomBlockEntityTag(pos, world, player, p_195943_4_, p_195943_5_); } - @Override public boolean canAttackBlock(BlockState state, Level world, BlockPos pos, Player p_195938_4_) { return !p_195938_4_.isShiftKeyDown(); diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorPlacementPacket.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorPlacementPacket.java index 863b8b23d5..22e9831896 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorPlacementPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorPlacementPacket.java @@ -6,7 +6,7 @@ import net.createmod.catnip.net.base.ServerboundPacketPayload; import io.netty.buffer.ByteBuf; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.codec.ByteBufCodecs; @@ -16,7 +16,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record EjectorPlacementPacket(int h, int v, BlockPos pos, Direction facing) implements ServerboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -56,8 +55,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { EjectorTargetHandler.flushSettings(pos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorRenderer.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorRenderer.java index 8935d016f1..3e67966136 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorRenderer.java @@ -10,14 +10,14 @@ import dev.engine_room.flywheel.lib.transform.Rotate; import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.transform.Translate; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; @@ -31,7 +31,6 @@ public EjectorRenderer(BlockEntityRendererProvider.Context context) { super(context); } - @Override public boolean shouldRenderOffScreen(EjectorBlockEntity p_188185_1_) { return true; } @@ -48,7 +47,7 @@ protected void renderSafe(EjectorBlockEntity be, float partialTicks, PoseStack m SuperByteBuffer model = CachedBuffers.partial(AllPartialModels.EJECTOR_TOP, be.getBlockState()); applyLidAngle(be, angle, model); model.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } var msr = TransformStack.of(ms); @@ -76,8 +75,7 @@ protected void renderSafe(EjectorBlockEntity be, float partialTicks, PoseStack m msr.rotateXDegrees(time * 40); } msr.translateBack(itemRotOffset); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(intAttached.getValue(), ItemDisplayContext.FIXED, light, overlay, ms, buffer, be.getLevel(), 0); ms.popPose(); } @@ -100,6 +98,10 @@ static & Rotate> void applyLidAngle(KineticBlockEntit applyLidAngle(be, pivot, angle, tr); } + static void applyLidAngle(KineticBlockEntity be, float angle, SuperByteBuffer tr) { + applyLidAngle(be, pivot, angle, tr); + } + static & Rotate> void applyLidAngle(KineticBlockEntity be, Vec3 rotationOffset, float angle, T tr) { tr.center() .rotateYDegrees(180 + AngleHelper.horizontalAngle(be.getBlockState() @@ -110,4 +112,14 @@ static & Rotate> void applyLidAngle(KineticBlockEntit .translateBack(rotationOffset); } + static void applyLidAngle(KineticBlockEntity be, Vec3 rotationOffset, float angle, SuperByteBuffer tr) { + tr.center() + .rotateYDegrees(180 + AngleHelper.horizontalAngle(be.getBlockState() + .getValue(EjectorBlock.HORIZONTAL_FACING))) + .uncenter() + .translate(rotationOffset) + .rotateXDegrees(-angle) + .translateBack(rotationOffset); + } + } diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorTargetHandler.java b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorTargetHandler.java index ec18879a8e..cf17037cff 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EjectorTargetHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EjectorTargetHandler.java @@ -1,18 +1,16 @@ package com.simibubi.create.content.logistics.depot; -import net.createmod.catnip.platform.CatnipServices; - -import org.joml.Vector3f; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -56,7 +54,7 @@ public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClick return; BlockPos pos = event.getPos(); Level world = event.getLevel(); - if (!world.isClientSide) + if (!world.isClientSide()) return; Player player = event.getEntity(); if (player == null || player.isSpectator() || !player.isShiftKeyDown()) @@ -64,8 +62,8 @@ public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClick String key = "weighted_ejector.target_set"; ChatFormatting colour = ChatFormatting.GOLD; - player.displayClientMessage(CreateLang.translateDirect(key) - .withStyle(colour), true); + player.sendSystemMessage(CreateLang.translateDirect(key) + .withStyle(colour)); currentSelection = pos; launcher = null; event.setCanceled(true); @@ -76,7 +74,7 @@ public static void rightClickingBlocksSelectsThem(PlayerInteractEvent.RightClick public static void leftClickingBlocksDeselectsThem(PlayerInteractEvent.LeftClickBlock event) { if (currentItem == null) return; - if (!event.getLevel().isClientSide) + if (!event.getLevel().isClientSide()) return; if (!event.getEntity() .isShiftKeyDown()) @@ -102,8 +100,8 @@ public static void flushSettings(BlockPos pos) { Direction validTargetDirection = getValidTargetDirection(pos); if (validTargetDirection == null) { - player.displayClientMessage(CreateLang.translateDirect(key) - .withStyle(colour), true); + player.sendSystemMessage(CreateLang.translateDirect(key) + .withStyle(colour)); currentItem = null; currentSelection = null; return; @@ -112,16 +110,15 @@ public static void flushSettings(BlockPos pos) { key = "weighted_ejector.targeting"; colour = ChatFormatting.GREEN; - player.displayClientMessage( + player.sendSystemMessage( CreateLang.translateDirect(key, currentSelection.getX(), currentSelection.getY(), currentSelection.getZ()) - .withStyle(colour), - true); + .withStyle(colour)); BlockPos diff = pos.subtract(currentSelection); h = Math.abs(diff.getX() + diff.getZ()); v = -diff.getY(); - CatnipServices.NETWORK.sendToServer(new EjectorPlacementPacket(h, v, pos, validTargetDirection)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new EjectorPlacementPacket(h, v, pos, validTargetDirection)); currentSelection = null; currentItem = null; @@ -208,8 +205,7 @@ protected static void drawArc() { double tickOffset = totalFlyingTicks / segments; boolean valid = xDiff == validX && zDiff == validZ; int intColor = valid ? 0x9ede73 : 0xff7171; - Vector3f color = new Color(intColor).asVectorF(); - DustParticleOptions data = new DustParticleOptions(color, 1); + DustParticleOptions data = new DustParticleOptions(intColor, 1); ClientLevel world = mc.level; AABB bb = new AABB(0, 0, 0, 1, 0, 1).move(currentSelection.offset(-validX, -yDiff, -validZ)); diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/EntityLauncher.java b/src/main/java/com/simibubi/create/content/logistics/depot/EntityLauncher.java index 572b89b357..ffdbfebe5e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/EntityLauncher.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/EntityLauncher.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.logistics.depot; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java index 1c97e239a0..bbc5352991 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/MountedDepotInteractionBehaviour.java @@ -21,7 +21,7 @@ public boolean handlePlayerInteraction(Player player, InteractionHand activeHand ItemStack itemInHand = player.getItemInHand(activeHand); if (activeHand == InteractionHand.OFF_HAND) return false; - if (player.level().isClientSide) + if (player.level().isClientSide()) return true; MountedStorageManager manager = contraptionEntity.getContraption().getStorage(); diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/SharedDepotBlockMethods.java b/src/main/java/com/simibubi/create/content/logistics/depot/SharedDepotBlockMethods.java index 57dd145163..0202a56929 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/SharedDepotBlockMethods.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/SharedDepotBlockMethods.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.item.ItemHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; @@ -17,7 +17,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -35,18 +35,18 @@ protected static DepotBehaviour get(BlockGetter worldIn, BlockPos pos) { return BlockEntityBehaviour.get(worldIn, pos, DepotBehaviour.TYPE); } - public static ItemInteractionResult onUse(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, + public static InteractionResult onUse(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult ray) { if (ray.getDirection() != Direction.UP) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; DepotBehaviour behaviour = get(level, pos); if (behaviour == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!behaviour.canAcceptItems.get()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; boolean wasEmptyHanded = stack.isEmpty(); boolean shouldntPlaceItem = AllBlocks.MECHANICAL_ARM.isIn(stack); @@ -75,14 +75,14 @@ public static ItemInteractionResult onUse(ItemStack stack, BlockState state, Lev } behaviour.blockEntity.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } public static void onLanded(BlockGetter worldIn, Entity entityIn) { ItemStack asItem = ItemHelper.fromItemEntity(entityIn); if (asItem.isEmpty()) return; - if (entityIn.level().isClientSide) + if (entityIn.level().isClientSide()) return; BlockPos pos = entityIn.blockPosition(); diff --git a/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java b/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java index 63f808e15a..dcdbf204e3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java +++ b/src/main/java/com/simibubi/create/content/logistics/depot/storage/DepotMountedStorage.java @@ -10,6 +10,7 @@ import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.content.logistics.depot.DepotBlockEntity; import com.simibubi.create.content.logistics.depot.storage.DepotMountedStorage.Handler; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -85,7 +86,7 @@ public static DepotMountedStorage fromDepot(DepotBlockEntity depot) { public static DepotMountedStorage fromLegacy(HolderLookup.Provider registries, CompoundTag nbt) { ItemStackHandler handler = new ItemStackHandler(); - handler.deserializeNBT(registries, nbt); + LegacyItemStackNbtBridge.deserializeHandler(handler, registries, nbt); if (handler.getSlots() == 1) { ItemStack stack = handler.getStackInSlot(0); return new DepotMountedStorage(stack); diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java index b4be349956..42949fbf2f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java @@ -46,16 +46,18 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsFormatter; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.infrastructure.config.AllConfigs; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.codecs.CatnipCodecs; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecs; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -76,14 +78,13 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStackLinkedSet; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.Tags.Items; public class FactoryPanelBehaviour extends FilteringBehaviour implements MenuProvider { @@ -151,7 +152,7 @@ public void setNetwork(UUID network) { } @Nullable - public static FactoryPanelBehaviour at(BlockAndTintGetter world, FactoryPanelConnection connection) { + public static FactoryPanelBehaviour at(BlockGetter world, FactoryPanelConnection connection) { Object cached = connection.cachedSource.get(); if (cached instanceof FactoryPanelBehaviour fbe && !fbe.blockEntity.isRemoved()) return fbe; @@ -161,7 +162,7 @@ public static FactoryPanelBehaviour at(BlockAndTintGetter world, FactoryPanelCon } @Nullable - public static FactoryPanelBehaviour at(BlockAndTintGetter world, FactoryPanelPosition pos) { + public static FactoryPanelBehaviour at(BlockGetter world, FactoryPanelPosition pos) { if (world instanceof Level l && !l.isLoaded(pos.pos())) return null; if (!(world.getBlockEntity(pos.pos()) instanceof FactoryPanelBlockEntity fpbe)) @@ -173,7 +174,7 @@ public static FactoryPanelBehaviour at(BlockAndTintGetter world, FactoryPanelPos } @Nullable - public static FactoryPanelSupportBehaviour linkAt(BlockAndTintGetter world, FactoryPanelConnection connection) { + public static FactoryPanelSupportBehaviour linkAt(BlockGetter world, FactoryPanelConnection connection) { Object cached = connection.cachedSource.get(); if (cached instanceof FactoryPanelSupportBehaviour fpsb && !fpsb.blockEntity.isRemoved()) return fpsb; @@ -183,7 +184,7 @@ public static FactoryPanelSupportBehaviour linkAt(BlockAndTintGetter world, Fact } @Nullable - public static FactoryPanelSupportBehaviour linkAt(BlockAndTintGetter world, FactoryPanelPosition pos) { + public static FactoryPanelSupportBehaviour linkAt(BlockGetter world, FactoryPanelPosition pos) { if (world instanceof Level l && !l.isLoaded(pos.pos())) return null; return BlockEntityBehaviour.get(world, pos.pos(), FactoryPanelSupportBehaviour.TYPE); @@ -271,9 +272,9 @@ public void moveTo(FactoryPanelPosition newPos, ServerPlayer player) { } // Tell player - player.displayClientMessage(CreateLang.translate("factory_panel.relocated") + player.sendOverlayMessage(CreateLang.translate("factory_panel.relocated") .style(ChatFormatting.GREEN) - .component(), true); + .component()); player.level() .playSound(null, newPos.pos(), SoundEvents.COPPER_BREAK, SoundSource.BLOCKS, 1.0f, 1.0f); } @@ -386,7 +387,7 @@ private void tickStorageMonitor() { promisedSatisfied = shouldPromiseSatisfy; lastReportedUnloadedLinks = unloadedLinkCount; waitingForNetwork = shouldWait; - if (!getWorld().isClientSide) + if (!getWorld().isClientSide()) blockEntity.sendData(); if (notifyOutputs) notifyRedstoneOutputs(); @@ -580,13 +581,13 @@ public FactoryPanelBlockEntity panelBE() { public void onShortInteract(Player player, InteractionHand hand, Direction side, BlockHitResult hitResult) { // Network is protected if (!Create.LOGISTICS.mayInteract(network, player)) { - player.displayClientMessage(CreateLang.translate("logistically_linked.protected") + player.sendOverlayMessage(CreateLang.translate("logistically_linked.protected") .style(ChatFormatting.RED) - .component(), true); + .component()); return; } - boolean isClientSide = player.level().isClientSide; + boolean isClientSide = player.level().isClientSide(); // Wrench cycles through arrow bending if (targeting.size() + targetedByLinks.size() > 0 && player.getItemInHand(hand).is(Items.TOOLS_WRENCH)) { @@ -620,8 +621,8 @@ public void onShortInteract(Player player, InteractionHand hand, Direction side, char[] boxes = "\u25a1\u25a1\u25a1\u25a1".toCharArray(); boxes[sharedMode] = '\u25a0'; - player.displayClientMessage(CreateLang.translate("factory_panel.cycled_arrow_path", new String(boxes)) - .component(), true); + player.sendOverlayMessage(CreateLang.translate("factory_panel.cycled_arrow_path", new String(boxes)) + .component()); if (notifySelf) blockEntity.notifyUpdate(); @@ -809,10 +810,10 @@ public void writeSafe(CompoundTag nbt, HolderLookup.Provider registries) { return; CompoundTag panelTag = new CompoundTag(); - panelTag.put("Filter", getFilter().saveOptional(registries)); + panelTag.put("Filter", LegacyItemStackNbtBridge.saveOptional(getFilter(), registries)); panelTag.putBoolean("UpTo", upTo); panelTag.putInt("FilterAmount", count); - panelTag.putUUID("Freq", network); + LegacyNbtUtilsBridge.putUUID(panelTag, "Freq", network); panelTag.putString("RecipeAddress", recipeAddress); panelTag.putInt("PromiseClearingInterval", -1); panelTag.putInt("RecipeOutput", 1); @@ -845,7 +846,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli panelTag.putString("RecipeAddress", recipeAddress); panelTag.putInt("RecipeOutput", recipeOutput); panelTag.putInt("PromiseClearingInterval", promiseClearingInterval); - panelTag.putUUID("Freq", network); + LegacyNbtUtilsBridge.putUUID(panelTag, "Freq", network); panelTag.put("Craft", NBTHelper.writeItemList(activeCraftingArrangement, registries)); if (panelBE().restocker && !clientPacket) @@ -856,27 +857,27 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - CompoundTag panelTag = nbt.getCompound(CreateLang.asId(slot.name())); + CompoundTag panelTag = nbt.getCompoundOrEmpty(CreateLang.asId(slot.name())); if (panelTag.isEmpty()) { active = false; return; } active = true; - filter = FilterItemStack.of(registries, panelTag.getCompound("Filter")); - count = panelTag.getInt("FilterAmount"); - upTo = panelTag.getBoolean("UpTo"); - timer = panelTag.getInt("Timer"); - lastReportedLevelInStorage = panelTag.getInt("LastLevel"); - lastReportedPromises = panelTag.getInt("LastPromised"); - lastReportedUnloadedLinks = panelTag.getInt("LastUnloadedLinks"); - satisfied = panelTag.getBoolean("Satisfied"); - promisedSatisfied = panelTag.getBoolean("PromisedSatisfied"); - waitingForNetwork = panelTag.getBoolean("Waiting"); - redstonePowered = panelTag.getBoolean("RedstonePowered"); - promiseClearingInterval = panelTag.getInt("PromiseClearingInterval"); - if (panelTag.hasUUID("Freq")) - network = panelTag.getUUID("Freq"); + filter = FilterItemStack.of(registries, panelTag.getCompoundOrEmpty("Filter")); + count = panelTag.getIntOr("FilterAmount", 0); + upTo = panelTag.getBooleanOr("UpTo", false); + timer = panelTag.getIntOr("Timer", 0); + lastReportedLevelInStorage = panelTag.getIntOr("LastLevel", 0); + lastReportedPromises = panelTag.getIntOr("LastPromised", 0); + lastReportedUnloadedLinks = panelTag.getIntOr("LastUnloadedLinks", 0); + satisfied = panelTag.getBooleanOr("Satisfied", false); + promisedSatisfied = panelTag.getBooleanOr("PromisedSatisfied", false); + waitingForNetwork = panelTag.getBooleanOr("Waiting", false); + redstonePowered = panelTag.getBooleanOr("RedstonePowered", false); + promiseClearingInterval = panelTag.getIntOr("PromiseClearingInterval", -1); + if (LegacyNbtUtilsBridge.hasUUID(panelTag, "Freq")) + network = LegacyNbtUtilsBridge.getUUID(panelTag, "Freq"); targeting.clear(); targeting.addAll(CatnipCodecUtils.decode(CatnipCodecs.set(FactoryPanelPosition.CODEC), registries, panelTag.get("Targeting")).orElse(Set.of())); @@ -889,12 +890,12 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clie CatnipCodecUtils.decode(Codec.list(FactoryPanelConnection.CODEC), registries, panelTag.get("TargetedByLinks")).orElse(List.of()) .forEach(c -> targetedByLinks.put(c.from.pos(), c)); - activeCraftingArrangement = NBTHelper.readItemList(panelTag.getList("Craft", Tag.TAG_COMPOUND), registries); - recipeAddress = panelTag.getString("RecipeAddress"); - recipeOutput = panelTag.getInt("RecipeOutput"); + activeCraftingArrangement = NBTHelper.readItemList(panelTag.getListOrEmpty("Craft"), registries); + recipeAddress = panelTag.getStringOr("RecipeAddress", ""); + recipeOutput = panelTag.getIntOr("RecipeOutput", 1); - if (nbt.getBoolean("Restocker") && !clientPacket) { - restockerPromises = RequestPromiseQueue.read(panelTag.getCompound("Promises"), registries, () -> { + if (nbt.getBooleanOr("Restocker", false) && !clientPacket) { + restockerPromises = RequestPromiseQueue.read(panelTag.getCompoundOrEmpty("Promises"), registries, () -> { }); promisePrimedForMarkDirty = false; } @@ -936,7 +937,7 @@ public void setValueSettings(Player player, ValueSettings settings, boolean ctrl blockEntity.sendData(); playFeedbackSound(this); resetTimerSlightly(); - if (!getWorld().isClientSide) + if (!getWorld().isClientSide()) notifyRedstoneOutputs(); } @@ -1059,7 +1060,6 @@ public static BehaviourType getTypeForSlot(PanelSlot slot) { }; } - @OnlyIn(value = Dist.CLIENT) public void displayScreen(Player player) { if (player instanceof LocalPlayer) ScreenOpener.open(new FactoryPanelScreen(this)); diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java index 3bd3461d2d..72653e94c6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlock.java @@ -20,10 +20,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -31,10 +31,11 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; @@ -45,7 +46,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -64,7 +67,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.event.level.block.BreakBlockEvent; public class FactoryPanelBlock extends FaceAttachedHorizontalDirectionalBlock implements ProperWaterloggedBlock, IBE, IWrenchable, SpecialBlockItemRequirement { @@ -149,7 +152,7 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { Player pPlayer = pContext.getPlayer(); if (fpbe.addPanel(targetedSlot, networkFromStack) && pPlayer != null) { - pPlayer.displayClientMessage(CreateLang.translateDirect("logistically_linked.connected"), true); + pPlayer.sendOverlayMessage(CreateLang.translateDirect("logistically_linked.connected")); if (!pPlayer.isCreative()) { panelItem.shrink(1); @@ -179,7 +182,7 @@ public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) if (behaviour == null || !behaviour.isActive()) return InteractionResult.SUCCESS; - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, world.getBlockState(pos), player); + BreakBlockEvent event = new BreakBlockEvent(world, pos, world.getBlockState(pos), player); NeoForge.EVENT_BUS.post(event); if (event.isCanceled()) return InteractionResult.SUCCESS; @@ -216,29 +219,29 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; if (!AllBlocks.FACTORY_GAUGE.isIn(stack)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; Vec3 location = hitResult.getLocation(); if (location == null) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (!FactoryPanelBlockItem.isTuned(stack)) { AllSoundEvents.DENY.playOnServer(level, pos); - player.displayClientMessage(CreateLang.translate("factory_panel.tune_before_placing") - .component(), true); - return ItemInteractionResult.FAIL; + player.sendOverlayMessage(CreateLang.translate("factory_panel.tune_before_placing") + .component()); + return InteractionResult.FAIL; } PanelSlot newSlot = getTargetedSlot(pos, state, location); withBlockEntityDo(level, pos, fpbe -> { if (!fpbe.addPanel(newSlot, LogisticallyLinkedBlockItem.networkFromStack(FactoryPanelBlockItem.fixCtrlCopiedStack(stack)))) return; - player.displayClientMessage(CreateLang.translateDirect("logistically_linked.connected"), true); + player.sendOverlayMessage(CreateLang.translateDirect("logistically_linked.connected")); level.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS); if (player.isCreative()) return; @@ -246,15 +249,15 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev if (stack.isEmpty()) player.setItemInHand(hand, ItemStack.EMPTY); }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override - public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, Player player, boolean willHarvest, - FluidState fluid) { + public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, Player player, ItemStack tool, + boolean willHarvest, FluidState fluid) { if (tryDestroySubPanelFirst(state, level, pos, player)) return false; - boolean result = super.onDestroyedByPlayer(state, level, pos, player, willHarvest, fluid); + boolean result = super.onDestroyedByPlayer(state, level, pos, player, tool, willHarvest, fluid); return result; } @@ -322,10 +325,12 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, } @Override - public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, - BlockPos pCurrentPos, BlockPos pFacingPos) { - updateWater(pLevel, pState, pCurrentPos); - return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess pScheduledTickAccess, + BlockPos pCurrentPos, Direction pFacing, BlockPos pFacingPos, BlockState pFacingState, RandomSource pRandom) { + if (pLevel instanceof LevelAccessor levelAccessor) + updateWater(levelAccessor, pState, pCurrentPos); + return super.updateShape(pState, pLevel, pScheduledTickAccess, pCurrentPos, pFacing, pFacingPos, pFacingState, + pRandom); } @Override @@ -338,8 +343,10 @@ public static Direction connectedDirection(BlockState state) { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, + boolean pIsMoving) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); } public static PanelSlot getTargetedSlot(BlockPos pos, BlockState blockState, Vec3 clickLocation) { diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockEntity.java index d09e2e95dc..49893fcb62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockEntity.java @@ -15,8 +15,8 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -198,7 +198,7 @@ public VoxelShape getShape() { @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - restocker = tag.getBoolean("Restocker"); + restocker = tag.getBooleanOr("Restocker", false); if (clientPacket && tag.contains("Redraw")) { lastShape = null; level.sendBlockUpdated(getBlockPos(), getBlockState(), getBlockState(), 16); diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockItem.java index 58f84edc43..fc3516b081 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBlockItem.java @@ -7,19 +7,18 @@ import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import net.minecraft.core.BlockPos; -import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; public class FactoryPanelBlockItem extends LogisticallyLinkedBlockItem { @@ -35,8 +34,8 @@ public InteractionResult place(BlockPlaceContext pContext) { if (!isTuned(stack)) { AllSoundEvents.DENY.playOnServer(pContext.getLevel(), pContext.getClickedPos()); pContext.getPlayer() - .displayClientMessage(CreateLang.translate("factory_panel.tune_before_placing") - .component(), true); + .sendSystemMessage(CreateLang.translate("factory_panel.tune_before_placing") + .component()); return InteractionResult.FAIL; } @@ -52,20 +51,19 @@ protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, Player p public static ItemStack fixCtrlCopiedStack(ItemStack stack) { // Salvage frequency data from one of the panel slots if (isTuned(stack) && networkFromStack(stack) == null) { - CompoundTag bet = stack.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); + CompoundTag bet = LegacyBlockEntityDataComponentBridge.get(stack); UUID frequency = UUID.randomUUID(); for (PanelSlot slot : PanelSlot.values()) { - CompoundTag panelTag = bet.getCompound(CreateLang.asId(slot.name())); - if (panelTag.hasUUID("Freq")) - frequency = panelTag.getUUID("Freq"); + CompoundTag panelTag = bet.getCompoundOrEmpty(CreateLang.asId(slot.name())); + if (panelTag.contains("Freq")) + frequency = LegacyNbtUtilsBridge.loadUUID(panelTag.get("Freq")); } bet = new CompoundTag(); - bet.putUUID("Freq", frequency); + bet.put("Freq", LegacyNbtUtilsBridge.createUUID(frequency)); - BlockEntity.addEntityType(bet, ((IBE) ((BlockItem) stack.getItem()).getBlock()).getBlockEntityType()); - stack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(bet)); + LegacyBlockEntityDataComponentBridge.set(stack, ((IBE) ((BlockItem) stack.getItem()).getBlock()).getBlockEntityType(), bet); } return stack; diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConfigurationPacket.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConfigurationPacket.java index 2a27072684..2744d134a7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConfigurationPacket.java @@ -10,8 +10,8 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; -import net.createmod.catnip.codecs.stream.CatnipLargerStreamCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipLargerStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnection.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnection.java index 8351fe4ac2..b582c90dd5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnection.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnection.java @@ -7,7 +7,7 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnectionHandler.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnectionHandler.java index afaa705d50..6a1db9b0bf 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnectionHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelConnectionHandler.java @@ -9,10 +9,10 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; @@ -45,7 +45,7 @@ public static boolean panelClicked(LevelAccessor level, Player player, FactoryPa FactoryPanelBehaviour at = FactoryPanelBehaviour.at(level, connectingFrom); if (panel.getPanelPosition() .equals(connectingFrom) || at == null) { - player.displayClientMessage(Component.empty(), true); + player.sendSystemMessage(Component.empty()); connectingFrom = null; connectingFromBox = null; return true; @@ -53,9 +53,9 @@ public static boolean panelClicked(LevelAccessor level, Player player, FactoryPa String checkForIssues = checkForIssues(at, panel); if (checkForIssues != null) { - player.displayClientMessage(CreateLang.translate(checkForIssues) + player.sendSystemMessage(CreateLang.translate(checkForIssues) .style(ChatFormatting.RED) - .component(), true); + .component()); connectingFrom = null; connectingFromBox = null; AllSoundEvents.DENY.playAt(player.level(), player.blockPosition(), 1, 1, false); @@ -65,14 +65,14 @@ public static boolean panelClicked(LevelAccessor level, Player player, FactoryPa ItemStack filterFrom = panel.getFilter(); ItemStack filterTo = at.getFilter(); - CatnipServices.NETWORK.sendToServer(new FactoryPanelConnectionPacket(panel.getPanelPosition(), connectingFrom, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new FactoryPanelConnectionPacket(panel.getPanelPosition(), connectingFrom, false)); - player.displayClientMessage(CreateLang.translate("factory_panel.panels_connected", filterFrom.getHoverName() + player.sendSystemMessage(CreateLang.translate("factory_panel.panels_connected", filterFrom.getHoverName() .getString(), filterTo.getHoverName() .getString()) .style(ChatFormatting.GREEN) - .component(), true); + .component()); connectingFrom = null; connectingFromBox = null; @@ -158,7 +158,7 @@ public static void clientTick() { .closerThan(mc.player.blockPosition(), 16) || at == null) { connectingFrom = null; connectingFromBox = null; - mc.player.displayClientMessage(Component.empty(), true); + mc.player.sendSystemMessage(Component.empty()); return; } @@ -167,10 +167,9 @@ public static void clientTick() { .colored(AnimationTickHolder.getTicks() % 16 > 8 ? 0x38b764 : 0xa7f070) .lineWidth(1 / 16f); - mc.player.displayClientMessage( + mc.player.sendSystemMessage( CreateLang.translate(relocating ? "factory_panel.click_to_relocate" : "factory_panel.click_second_panel") - .component(), - true); + .component()); if (!relocating) return; @@ -182,7 +181,7 @@ public static void clientTick() { Vec3 offsetPos = bhr.getLocation() .add(Vec3.atLowerCornerOf(bhr.getDirection() - .getNormal()) + .getUnitVec3i()) .scale(1 / 32f)); BlockPos pos = BlockPos.containing(offsetPos); BlockState blockState = at.blockEntity.getBlockState(); @@ -218,14 +217,14 @@ public static boolean onRightClick() { if (mc.player.isShiftKeyDown()) validRelocationTarget = null; if (validRelocationTarget != null) - CatnipServices.NETWORK.sendToServer(new FactoryPanelConnectionPacket(validRelocationTarget, connectingFrom, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new FactoryPanelConnectionPacket(validRelocationTarget, connectingFrom, true)); connectingFrom = null; connectingFromBox = null; if (validRelocationTarget == null) - mc.player.displayClientMessage(CreateLang.translate("factory_panel.relocation_aborted") - .component(), true); + mc.player.sendSystemMessage(CreateLang.translate("factory_panel.relocation_aborted") + .component()); relocating = false; validRelocationTarget = null; @@ -242,9 +241,9 @@ public static boolean onRightClick() { FactoryPanelBehaviour at = FactoryPanelBehaviour.at(mc.level, connectingFrom); String checkForIssues = checkForIssues(at, behaviour); if (checkForIssues != null) { - mc.player.displayClientMessage(CreateLang.translate(checkForIssues) + mc.player.sendSystemMessage(CreateLang.translate(checkForIssues) .style(ChatFormatting.RED) - .component(), true); + .component()); connectingFrom = null; connectingFromBox = null; AllSoundEvents.DENY.playAt(mc.level, mc.player.blockPosition(), 1, 1, false); @@ -265,14 +264,14 @@ public static boolean onRightClick() { bestPosition = panelPosition; } - CatnipServices.NETWORK.sendToServer(new FactoryPanelConnectionPacket(bestPosition, connectingFrom, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new FactoryPanelConnectionPacket(bestPosition, connectingFrom, false)); - mc.player.displayClientMessage(CreateLang + mc.player.sendSystemMessage(CreateLang .translate("factory_panel.link_connected", blockEntity.getBlockState() .getBlock() .getName()) .style(ChatFormatting.GREEN) - .component(), true); + .component()); connectingFrom = null; connectingFromBox = null; @@ -290,8 +289,8 @@ public static boolean onRightClick() { return false; connectingFrom = null; connectingFromBox = null; - mc.player.displayClientMessage(CreateLang.translate("factory_panel.connection_aborted") - .component(), true); + mc.player.sendSystemMessage(CreateLang.translate("factory_panel.connection_aborted") + .component()); return true; } diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelEffectPacket.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelEffectPacket.java index 56c3d44e06..cbaee00c9b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelEffectPacket.java @@ -8,13 +8,12 @@ import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record FactoryPanelEffectPacket(FactoryPanelPosition fromPos, FactoryPanelPosition toPos, boolean success) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -30,8 +29,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { ClientLevel level = Minecraft.getInstance().level; BlockState blockState = level.getBlockState(fromPos.pos()); if (!AllBlocks.FACTORY_GAUGE.has(blockState)) diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelModel.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelModel.java index 9ef72a7d1e..82ad20bcef 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelModel.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelModel.java @@ -14,21 +14,21 @@ import com.simibubi.create.foundation.model.BakedQuadHelper; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.math.VecHelper; -import net.createmod.ponder.api.level.PonderLevel; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelProperty; public class FactoryPanelModel extends BakedModelWrapperWithData { @@ -69,50 +69,6 @@ public List getQuads(BlockState state, Direction side, RandomSource r public void addPanel(List quads, BlockState state, PanelSlot slot, PanelType type, PanelState panelState, RandomSource rand, ModelData data, RenderType renderType, boolean ponder) { - PartialModel factoryPanel = panelState == PanelState.PASSIVE - ? type == PanelType.NETWORK ? AllPartialModels.FACTORY_PANEL : AllPartialModels.FACTORY_PANEL_RESTOCKER - : type == PanelType.NETWORK ? AllPartialModels.FACTORY_PANEL_WITH_BULB - : AllPartialModels.FACTORY_PANEL_RESTOCKER_WITH_BULB; - - List quadsToAdd = factoryPanel.get() - .getQuads(state, null, rand, data, RenderType.solid()); - - float xRot = Mth.RAD_TO_DEG * FactoryPanelBlock.getXRot(state); - float yRot = Mth.RAD_TO_DEG * FactoryPanelBlock.getYRot(state); - - for (BakedQuad bakedQuad : quadsToAdd) { - int[] vertices = bakedQuad.getVertices(); - int[] transformedVertices = Arrays.copyOf(vertices, vertices.length); - - Vec3 quadNormal = Vec3.atLowerCornerOf(bakedQuad.getDirection() - .getNormal()); - quadNormal = VecHelper.rotate(quadNormal, 180, Axis.Y); - quadNormal = VecHelper.rotate(quadNormal, xRot + 90, Axis.X); - quadNormal = VecHelper.rotate(quadNormal, yRot, Axis.Y); - - for (int i = 0; i < vertices.length / BakedQuadHelper.VERTEX_STRIDE; i++) { - Vec3 vertex = BakedQuadHelper.getXYZ(vertices, i); - Vec3 normal = BakedQuadHelper.getNormalXYZ(vertices, i); - - vertex = vertex.add(slot.xOffset * .5, 0, slot.yOffset * .5); - vertex = VecHelper.rotateCentered(vertex, 180, Axis.Y); - vertex = VecHelper.rotateCentered(vertex, xRot + 90, Axis.X); - vertex = VecHelper.rotateCentered(vertex, yRot, Axis.Y); - - normal = VecHelper.rotate(normal, 180, Axis.Y); - normal = VecHelper.rotate(normal, xRot + 90, Axis.X); - normal = VecHelper.rotate(normal, yRot, Axis.Y); - - BakedQuadHelper.setXYZ(transformedVertices, i, vertex); - BakedQuadHelper.setNormalXYZ(transformedVertices, i, new Vec3(0, 1, 0)); - } - - Direction newNormal = Direction.fromDelta((int) Math.round(quadNormal.x), (int) Math.round(quadNormal.y), - (int) Math.round(quadNormal.z)); - quads.add(new BakedQuad(transformedVertices, bakedQuad.getTintIndex(), newNormal, bakedQuad.getSprite(), - !ponder && bakedQuad.isShade())); - } - } private static class FactoryPanelModelData { diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelRenderer.java index 951481cb88..94f984cc60 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelRenderer.java @@ -11,12 +11,12 @@ import com.simibubi.create.foundation.render.RenderTypes; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.theme.Color; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.theme.Color; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -61,9 +61,9 @@ public static void renderBulb(FactoryPanelBehaviour behaviour, float partialTick .rotateCentered(xRot, Direction.EAST) .rotateCentered(Mth.PI, Direction.UP) .translate(behaviour.slot.xOffset * .5, 0, behaviour.slot.yOffset * .5) - .light(glow > 0.125f ? LightTexture.FULL_BRIGHT : light) + .light(glow > 0.125f ? LightCoordsUtil.FULL_BRIGHT : light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.translucent())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.translucent())); if (glow < .125f) return; @@ -77,7 +77,7 @@ public static void renderBulb(FactoryPanelBehaviour behaviour, float partialTick .rotateCentered(xRot, Direction.EAST) .rotateCentered(Mth.PI, Direction.UP) .translate(behaviour.slot.xOffset * .5, 0, behaviour.slot.yOffset * .5) - .light(LightTexture.FULL_BRIGHT) + .light(LightCoordsUtil.FULL_BRIGHT) .color(color, color, color, 255) .overlay(overlay) .renderInto(ms, buffer.getBuffer(RenderTypes.additive())); @@ -157,7 +157,7 @@ public static void renderPath(FactoryPanelBehaviour behaviour, FactoryPanelConne connectionSprite.color(color) .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); if (pathReversed) { currentX += direction.getStepX() * .5; diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelScreen.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelScreen.java index ab5a5a8a11..98971226f3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelScreen.java @@ -27,12 +27,12 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.core.NonNullList; @@ -42,9 +42,11 @@ import net.minecraft.util.Mth; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.ShapedRecipe; @@ -73,7 +75,6 @@ public class FactoryPanelScreen extends AbstractSimiScreen { public FactoryPanelScreen(FactoryPanelBehaviour behaviour) { this.behaviour = behaviour; - minecraft = Minecraft.getInstance(); restocker = behaviour.panelBE().restocker; availableCraftingRecipe = null; craftingActive = !behaviour.activeCraftingArrangement.isEmpty(); @@ -103,7 +104,7 @@ private void updateConfigs() { public static List convertRecipeToPackageOrderContext(CraftingRecipe availableCraftingRecipe, List inputs, boolean respectAmounts) { List craftingIngredients = new ArrayList<>(); BigItemStack emptyIngredient = new BigItemStack(ItemStack.EMPTY, 1); - NonNullList ingredients = availableCraftingRecipe.getIngredients(); + NonNullList ingredients = getIngredients(availableCraftingRecipe); List mutableInputs = BigItemStack.duplicateWrappers(inputs); int width = Math.min(3, ingredients.size()); @@ -147,6 +148,21 @@ public static List convertRecipeToPackageOrderContext(CraftingReci return craftingIngredients; } + private static NonNullList getIngredients(CraftingRecipe recipe) { + NonNullList ingredients = NonNullList.create(); + if (recipe instanceof ShapedRecipe shaped) { + Ingredient empty = Ingredient.of(java.util.stream.Stream.empty()); + shaped.getIngredients() + .stream() + .map(optional -> optional.orElse(empty)) + .forEach(ingredients::add); + return ingredients; + } + ingredients.addAll(recipe.placementInfo() + .ingredients()); + return ingredients; + } + @Override protected void init() { int sizeX = FACTORY_GAUGE_BOTTOM.getWidth(); @@ -162,7 +178,7 @@ protected void init() { if (addressBox == null) { String frogAddress = behaviour.getFrogAddress(); - addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 36, y + windowHeight - 51, 108, 10, false, frogAddress); + addressBox = new AddressEditBox(this, font, x + 36, y + windowHeight - 51, 108, 10, false, frogAddress); addressBox.setValue(behaviour.recipeAddress); addressBox.setTextColor(0x555555); } @@ -171,7 +187,7 @@ protected void init() { addRenderableWidget(addressBox); confirmButton = new IconButton(x + sizeX - 33, y + sizeY - 25, AllIcons.I_CONFIRM); - confirmButton.withCallback(() -> minecraft.setScreen(null)); + confirmButton.withCallback(() -> minecraft.gui.setScreen(null)); confirmButton.setToolTip(CreateLang.translate("gui.factory_panel.save_and_close") .component()); addRenderableWidget(confirmButton); @@ -179,7 +195,7 @@ protected void init() { deleteButton = new IconButton(x + sizeX - 55, y + sizeY - 25, AllIcons.I_TRASH); deleteButton.withCallback(() -> { sendReset = true; - minecraft.setScreen(null); + minecraft.gui.setScreen(null); }); deleteButton.setToolTip(CreateLang.translate("gui.factory_panel.reset") .component()); @@ -194,7 +210,7 @@ protected void init() { newInputButton = new IconButton(x + 31, y + 47, AllIcons.I_ADD); newInputButton.withCallback(() -> { FactoryPanelConnectionHandler.startConnection(behaviour); - minecraft.setScreen(null); + minecraft.gui.setScreen(null); }); newInputButton.setToolTip(CreateLang.translate("gui.factory_panel.connect_input") .component()); @@ -202,7 +218,7 @@ protected void init() { relocateButton = new IconButton(x + 31, y + 67, AllIcons.I_MOVE_GAUGE); relocateButton.withCallback(() -> { FactoryPanelConnectionHandler.startRelocating(behaviour); - minecraft.setScreen(null); + minecraft.gui.setScreen(null); }); relocateButton.setToolTip(CreateLang.translate("gui.factory_panel.relocate") .component()); @@ -219,7 +235,7 @@ protected void init() { craftingActive = !craftingActive; init(); if (craftingActive) { - outputConfig.count = availableCraftingRecipe.getResultItem(minecraft.level.registryAccess()) + outputConfig.count = availableCraftingRecipe.assemble(CraftingInput.EMPTY) .getCount(); } }); @@ -246,7 +262,7 @@ public void tick() { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; @@ -270,7 +286,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float int inputX = guiLeft + (restocker ? 88 : 68 + (slot % 3 * 20)); int inputY = guiTop + (restocker ? 12 : 28) + (slot / 3 * 20); if (!restocker && mouseY > inputY && mouseY < inputY + 60 && mouseX > inputX && mouseX < inputX + 60) - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.unconfigured_input") .color(ScrollInput.HEADER_RGB) .component(), @@ -290,8 +306,8 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (!restocker) { int outputX = x + 160; int outputY = y + 48; - graphics.renderItem(outputConfig.stack, outputX, outputY); - graphics.renderItemDecorations(font, behaviour.getFilter(), outputX, outputY, outputConfig.count + ""); + graphics.item(outputConfig.stack, outputX, outputY); + graphics.itemDecorations(font, behaviour.getFilter(), outputX, outputY, outputConfig.count + ""); if (mouseX >= outputX - 1 && mouseX < outputX - 1 + 18 && mouseY >= outputY - 1 && mouseY < outputY - 1 + 18) { @@ -311,12 +327,12 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .style(ChatFormatting.DARK_GRAY) .style(ChatFormatting.ITALIC) .component(); - graphics.renderComponentTooltip(font, craftingActive ? List.of(c1, c2, c3) : List.of(c1, c2, c3, c4), + graphics.setComponentTooltipForNextFrame(font, craftingActive ? List.of(c1, c2, c3) : List.of(c1, c2, c3, c4), mouseX, mouseY); } } - PoseStack ms = graphics.pose(); + PoseStack ms = new PoseStack(); ms.pushPose(); ms.translate(0, 0, 10); @@ -328,7 +344,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float Component title = CreateLang .translate(restocker ? "gui.factory_panel.title_as_restocker" : "gui.factory_panel.title_as_recipe") .component(); - graphics.drawString(font, title, x + 97 - font.width(title) / 2, y + (restocker ? -12 : 4), 0x3D3C48, false); + graphics.text(font, title, x + 97 - font.width(title) / 2, y + (restocker ? -12 : 4), 0x3D3C48, false); // ITEM PREVIEW int previewY = restocker ? 0 : 60; @@ -355,7 +371,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float int itemX = x + 9; int itemY = y + windowHeight - 24; AllGuiTextures.FROGPORT_SLOT.render(graphics, itemX - 1, itemY - 1); - graphics.renderItem(asStack, itemX, itemY); + graphics.item(asStack, itemX, itemY); if (mouseX >= itemX && mouseX < itemX + 16 && mouseY >= itemY && mouseY < itemY + 16) { List linkTip = List.of(CreateLang.translate("gui.factory_panel.has_link_connections") @@ -365,21 +381,21 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .style(ChatFormatting.DARK_GRAY) .style(ChatFormatting.ITALIC) .component()); - graphics.renderComponentTooltip(font, linkTip, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, linkTip, mouseX, mouseY); } } // PROMISES int state = promiseExpiration.getState(); - graphics.drawString(font, CreateLang.text(state == -1 ? " /" : state == 0 ? "30s" : state + "m") + graphics.text(font, CreateLang.text(state == -1 ? " /" : state == 0 ? "30s" : state + "m") .component(), promiseExpiration.getX() + 3, promiseExpiration.getY() + 4, 0xffeeeeee, true); ItemStack asStack = PackageStyles.getDefaultBox(); int itemX = x + 68; int itemY = y + windowHeight - 24; - graphics.renderItem(asStack, itemX, itemY); + graphics.item(asStack, itemX, itemY); int promised = behaviour.getPromised(); - graphics.renderItemDecorations(font, asStack, itemX, itemY, promised + ""); + graphics.itemDecorations(font, asStack, itemX, itemY, promised + ""); if (mouseX >= itemX && mouseX < itemX + 16 && mouseY >= itemY && mouseY < itemY + 16) { List promiseTip = List.of(); @@ -415,7 +431,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .component()); } - graphics.renderComponentTooltip(font, promiseTip, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, promiseTip, mouseX, mouseY); } ms.popPose(); @@ -423,19 +439,19 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float // - private void renderInputItem(GuiGraphics graphics, int slot, BigItemStack itemStack, int mouseX, int mouseY) { + private void renderInputItem(GuiGraphicsExtractor graphics, int slot, BigItemStack itemStack, int mouseX, int mouseY) { int inputX = guiLeft + (restocker ? 88 : 68 + (slot % 3 * 20)); int inputY = guiTop + (restocker ? 12 : 28) + (slot / 3 * 20); - graphics.renderItem(itemStack.stack, inputX, inputY); + graphics.item(itemStack.stack, inputX, inputY); if (!craftingActive && !restocker && !itemStack.stack.isEmpty()) - graphics.renderItemDecorations(font, itemStack.stack, inputX, inputY, itemStack.count + ""); + graphics.itemDecorations(font, itemStack.stack, inputX, inputY, itemStack.count + ""); if (mouseX < inputX - 2 || mouseX >= inputX - 2 + 20 || mouseY < inputY - 2 || mouseY >= inputY - 2 + 20) return; if (craftingActive) { - graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.crafting_input") + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.crafting_input") .color(ScrollInput.HEADER_RGB) .component(), CreateLang.translate("gui.factory_panel.crafting_input_tip") @@ -449,7 +465,7 @@ private void renderInputItem(GuiGraphics graphics, int slot, BigItemStack itemSt } if (itemStack.stack.isEmpty()) { - graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.empty_panel") + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.empty_panel") .color(ScrollInput.HEADER_RGB) .component(), CreateLang.translate("gui.factory_panel.left_click_disconnect") @@ -461,7 +477,7 @@ private void renderInputItem(GuiGraphics graphics, int slot, BigItemStack itemSt } if (restocker) { - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.sending_item", CreateLang.itemName(itemStack.stack) .string()) .color(ScrollInput.HEADER_RGB) @@ -476,7 +492,7 @@ private void renderInputItem(GuiGraphics graphics, int slot, BigItemStack itemSt return; } - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.sending_item", CreateLang.itemName(itemStack.stack) .add(CreateLang.text(" x" + itemStack.count)) .string()) @@ -493,11 +509,11 @@ private void renderInputItem(GuiGraphics graphics, int slot, BigItemStack itemSt mouseX, mouseY); } - private void showAddressBoxTooltip(GuiGraphics graphics, int mouseX, int mouseY) { + private void showAddressBoxTooltip(GuiGraphicsExtractor graphics, int mouseX, int mouseY) { if (addressBox.getValue() .isBlank()) { if (restocker) { - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.restocker_address") .color(ScrollInput.HEADER_RGB) .component(), @@ -514,7 +530,7 @@ private void showAddressBoxTooltip(GuiGraphics graphics, int mouseX, int mouseY) mouseX, mouseY); } else { - graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.recipe_address") + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.recipe_address") .color(ScrollInput.HEADER_RGB) .component(), CreateLang.translate("gui.factory_panel.recipe_address_tip") @@ -530,7 +546,7 @@ private void showAddressBoxTooltip(GuiGraphics graphics, int mouseX, int mouseY) mouseX, mouseY); } } else - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of( CreateLang .translate(restocker ? "gui.factory_panel.restocker_address_given" @@ -659,7 +675,7 @@ private void sendIt(@Nullable FactoryPanelPosition toRemove, boolean clearPromis FactoryPanelConfigurationPacket packet = new FactoryPanelConfigurationPacket(pos, address, inputs, craftingArrangement, outputConfig.count, promiseExp, toRemove, clearPromises, sendReset, sendRedstoneReset); - CatnipServices.NETWORK.sendToServer(packet); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(packet); } private void searchForCraftingRecipe() { @@ -677,17 +693,20 @@ private void searchForCraftingRecipe() { ClientLevel level = Minecraft.getInstance().level; - availableCraftingRecipe = level.getRecipeManager() - .getAllRecipesFor(RecipeType.CRAFTING) + if (!(level.recipeAccess() instanceof RecipeManager recipeManager)) + return; + + availableCraftingRecipe = recipeManager.getRecipes() .parallelStream() - .filter(r -> output.getItem() == r.value().getResultItem(level.registryAccess()) + .filter(r -> r.value().getType() == RecipeType.CRAFTING) + .filter(r -> output.getItem() == ((CraftingRecipe) r.value()).assemble(CraftingInput.EMPTY) .getItem()) .filter(r -> { if (AllRecipeTypes.shouldIgnoreInAutomation(r)) return false; Set itemsUsed = new HashSet<>(); - for (Ingredient ingredient : r.value().getIngredients()) { + for (Ingredient ingredient : getIngredients((CraftingRecipe) r.value())) { if (ingredient.isEmpty()) continue; boolean available = false; @@ -708,7 +727,7 @@ private void searchForCraftingRecipe() { return true; }) .findAny() - .map(RecipeHolder::value) + .map(r -> (CraftingRecipe) r.value()) .orElse(null); } diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemMenu.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemMenu.java index f4fe253452..24d8d697fd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemMenu.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemMenu.java @@ -13,7 +13,6 @@ import net.minecraft.world.inventory.MenuType; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.SlotItemHandler; @@ -42,7 +41,6 @@ protected boolean allowRepeats() { } @Override - @OnlyIn(Dist.CLIENT) protected FactoryPanelBehaviour createOnClient(RegistryFriendlyByteBuf extraData) { FactoryPanelPosition pos = FactoryPanelPosition.STREAM_CODEC.decode(extraData); return FactoryPanelBehaviour.at(Minecraft.getInstance().level, pos); @@ -62,7 +60,7 @@ protected void addSlots() { @Override protected void saveData(FactoryPanelBehaviour contentHolder) { if (!contentHolder.setFilter(ghostInventory.getStackInSlot(0))) { - player.displayClientMessage(CreateLang.translateDirect("logistics.filter.invalid_item"), true); + player.sendOverlayMessage(CreateLang.translateDirect("logistics.filter.invalid_item")); AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); return; } diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemScreen.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemScreen.java index 6becd82492..faaeb2068f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSetItemScreen.java @@ -10,8 +10,8 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -45,7 +45,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics pGuiGraphics, float pPartialTick, int pMouseX, int pMouseY) { + protected void renderBg(GuiGraphicsExtractor pGuiGraphics, float pPartialTick, int pMouseX, int pMouseY) { int x = getGuiLeft(); int y = getGuiTop(); AllGuiTextures.FACTORY_GAUGE_SET_ITEM.render(pGuiGraphics, x - 5, y); @@ -54,7 +54,7 @@ protected void renderBg(GuiGraphics pGuiGraphics, float pPartialTick, int pMouse ItemStack stack = AllBlocks.FACTORY_GAUGE.asStack(); Component title = CreateLang.translate("gui.factory_panel.place_item_to_monitor") .component(); - pGuiGraphics.drawString(font, title, x + imageWidth / 2 - font.width(title) / 2 - 5, y + 4, 0x3D3C48, false); + pGuiGraphics.text(font, title, x + imageWidth / 2 - font.width(title) / 2 - 5, y + 4, 0x3D3C48, false); GuiGameElement.of(stack) .scale(3) diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSlotPositioning.java index 2ab8ba5481..fa148495a9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSlotPositioning.java @@ -5,7 +5,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSupportBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSupportBehaviour.java index c7694d001b..091570d442 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSupportBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelSupportBehaviour.java @@ -12,7 +12,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.codecs.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/com/simibubi/create/content/logistics/filter/AbstractFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/filter/AbstractFilterScreen.java index dddc0c46be..1b598ce8f7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/filter/AbstractFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/filter/AbstractFilterScreen.java @@ -13,10 +13,10 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.item.TooltipHelper; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.lang.FontHelper.Palette; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -63,7 +63,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int invX = getLeftOfCentered(PLAYER_INVENTORY.getWidth()); int invY = topPos + background.getHeight() + 4; renderPlayerInventory(graphics, invX, invY); @@ -72,7 +72,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in int y = topPos; background.render(graphics, x, y); - graphics.drawString(font, title, x + (background.getWidth() - 8) / 2 - font.width(title) / 2, y + 4, + graphics.text(font, title, x + (background.getWidth() - 8) / 2 - font.width(title) / 2, y + 4, getTitleColor(), false); GuiGameElement.of(menu.contentHolder). tooltip, TooltipFlag flagIn) { + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay tooltipDisplay, + Consumer tooltip, TooltipFlag flagIn) { if (AllKeys.shiftDown()) return; List makeSummary = makeSummary(stack); if (makeSummary.isEmpty()) return; - tooltip.add(CommonComponents.SPACE); - tooltip.addAll(makeSummary); + tooltip.accept(CommonComponents.SPACE); + makeSummary.forEach(tooltip); } public abstract List makeSummary(ItemStack filter); @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { ItemStack heldItem = player.getItemInHand(hand); if (!player.isShiftKeyDown() && hand == InteractionHand.MAIN_HAND) { - if (!world.isClientSide && player instanceof ServerPlayer) + if (!world.isClientSide() && player instanceof ServerPlayer) player.openMenu(this, buf -> { ItemStack.STREAM_CODEC.encode(buf, heldItem); }); - return InteractionResultHolder.success(heldItem); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldItem); } - return InteractionResultHolder.pass(heldItem); + return InteractionResult.PASS; } @Override @@ -90,7 +90,7 @@ public InteractionResultHolder use(Level world, Player player, Intera @Override public Component getDisplayName() { - return getDescription(); + return getName(getDefaultInstance()); } public static boolean testDirect(ItemStack filter, ItemStack stack, boolean matchNBT) { diff --git a/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java b/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java index 5769987fc8..9df1d0e978 100644 --- a/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java +++ b/src/main/java/com/simibubi/create/content/logistics/filter/FilterItemStack.java @@ -7,8 +7,9 @@ import com.simibubi.create.content.fluids.transfer.GenericItemEmptying; import com.simibubi.create.content.logistics.box.PackageItem; import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; @@ -33,7 +34,7 @@ public static FilterItemStack of(ItemStack filter) { } public static FilterItemStack of(HolderLookup.Provider registries, CompoundTag tag) { - return of(ItemStack.parseOptional(registries, tag)); + return of(LegacyItemStackNbtBridge.parseOptional(registries, tag)); } public static FilterItemStack empty() { @@ -50,7 +51,7 @@ public boolean isEmpty() { } public CompoundTag serializeNBT(HolderLookup.Provider registries) { - return (CompoundTag) filterItemStack.saveOptional(registries); + return LegacyItemStackNbtBridge.saveOptionalCompound(filterItemStack, registries); } public ItemStack item() { diff --git a/src/main/java/com/simibubi/create/content/logistics/filter/FilterScreenPacket.java b/src/main/java/com/simibubi/create/content/logistics/filter/FilterScreenPacket.java index 14cb50b12b..50d3d59502 100644 --- a/src/main/java/com/simibubi/create/content/logistics/filter/FilterScreenPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/filter/FilterScreenPacket.java @@ -4,15 +4,15 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.item.ItemStack; public record FilterScreenPacket(Option option, @Nullable CompoundTag data) implements ServerboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -45,8 +45,8 @@ public void handle(ServerPlayer player) { c.respectNBT = false; if (this.option == Option.UPDATE_FILTER_ITEM) c.ghostInventory.setStackInSlot( - tag.getInt("Slot"), - ItemStack.parseOptional(player.registryAccess(), tag.getCompound("Item")) + tag.getIntOr("Slot", 0), + LegacyItemStackNbtBridge.parseOptional(player.registryAccess(), tag.getCompound("Item")) ); } @@ -65,7 +65,7 @@ public void handle(ServerPlayer player) { if (player.containerMenu instanceof PackageFilterMenu c) { if (option == Option.UPDATE_ADDRESS) - c.address = tag.getString("Address"); + c.address = tag.getStringOr("Address", ""); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/filter/PackageFilterScreen.java b/src/main/java/com/simibubi/create/content/logistics/filter/PackageFilterScreen.java index 52c1aadf48..a294429aeb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/filter/PackageFilterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/filter/PackageFilterScreen.java @@ -9,9 +9,9 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.widget.IconButton; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -53,10 +53,10 @@ protected void init() { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + public void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.render(graphics, mouseX, mouseY, partialTicks); - PoseStack ms = graphics.pose(); + PoseStack ms = new PoseStack(); ms.pushPose(); ms.translate(leftPos + 16, topPos + 23, 0); GuiGameElement.of(PackageStyles.getDefaultBox()) @@ -68,7 +68,7 @@ public void onAddressEdited(String s) { menu.address = s; CompoundTag tag = new CompoundTag(); tag.putString("Address", s); - CatnipServices.NETWORK.sendToServer(new FilterScreenPacket(Option.UPDATE_ADDRESS, tag)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new FilterScreenPacket(Option.UPDATE_ADDRESS, tag)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractDirectionalFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractDirectionalFunnelBlock.java index 2d7627ed89..e7cd7add5a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractDirectionalFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractDirectionalFunnelBlock.java @@ -7,11 +7,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; public class AbstractDirectionalFunnelBlock extends AbstractFunnelBlock { - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected AbstractDirectionalFunnelBlock(Properties p_i48377_1_) { super(p_i48377_1_); diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractFunnelBlock.java index e016af0bcd..8aae3b0f7e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractFunnelBlock.java @@ -19,7 +19,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -28,6 +30,7 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.level.redstone.Orientation; public abstract class AbstractFunnelBlock extends Block implements IBE, IWrenchable, ProperWaterloggedBlock { @@ -52,9 +55,11 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, + BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, + BlockState pNeighborState, RandomSource random) { + if (pLevel instanceof LevelAccessor levelAccessor) + updateWater(levelAccessor, pState, pCurrentPos); return pState; } @@ -69,13 +74,13 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, + protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { - if (level.isClientSide) + if (level.isClientSide()) return; InvManipulationBehaviour behaviour = BlockEntityBehaviour.get(level, pos, InvManipulationBehaviour.TYPE); if (behaviour != null) - behaviour.onNeighborChanged(fromPos); + behaviour.onNeighborChanged(pos); if (!level.getBlockTicks() .willTickThisTick(pos, this)) level.scheduleTick(pos, this, 1); @@ -132,9 +137,9 @@ public static Direction getFunnelFacing(BlockState state) { protected abstract Direction getFacing(BlockState state); @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock() && !isFunnel(newState) || !newState.hasBlockEntity()) - IBE.onRemove(state, world, pos, newState); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, world, pos, Blocks.AIR.defaultBlockState()); + super.affectNeighborsAfterRemoval(state, world, pos, isMoving); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractHorizontalFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractHorizontalFunnelBlock.java index 368d6dfd4d..6db35cd058 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractHorizontalFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/AbstractHorizontalFunnelBlock.java @@ -7,11 +7,11 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; public abstract class AbstractHorizontalFunnelBlock extends AbstractFunnelBlock { - public static final DirectionProperty HORIZONTAL_FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty HORIZONTAL_FACING = BlockStateProperties.HORIZONTAL_FACING; protected AbstractHorizontalFunnelBlock(Properties p_i48377_1_) { super(p_i48377_1_); diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java index a9c55106fc..8465c130b6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelBlock.java @@ -13,10 +13,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.tterrag.registrate.util.entry.BlockEntry; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.item.ItemEntity; @@ -28,6 +29,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -77,13 +79,6 @@ public boolean isOfSameType(FunnelBlock otherFunnel) { return parent.get() == otherFunnel; } - @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (newState.getBlock() instanceof FunnelBlock fb && isOfSameType(fb)) - return; - super.onRemove(state, world, pos, newState, isMoving); - } - @Override public VoxelShape getShape(BlockState state, BlockGetter p_220053_2_, BlockPos p_220053_3_, CollisionContext p_220053_4_) { @@ -126,16 +121,20 @@ public static Shape getShapeForPosition(BlockGetter world, BlockPos pos, Directi } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return parent.asStack(); } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbour, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { - updateWater(world, state, pos); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, + BlockPos pos, Direction direction, BlockPos p_196271_6_, BlockState neighbour, + RandomSource random) { + LevelAccessor levelAccessor = world instanceof LevelAccessor accessor ? accessor : null; + if (levelAccessor != null) + updateWater(levelAccessor, state, pos); if (!isOnValidBelt(state, world, pos)) { - BlockState parentState = ProperWaterloggedBlock.withWater(world, parent.getDefaultState(), pos); + BlockState parentState = levelAccessor == null ? parent.getDefaultState() + : ProperWaterloggedBlock.withWater(levelAccessor, parent.getDefaultState(), pos); if (state.getOptionalValue(POWERED) .orElse(false)) parentState = parentState.setValue(POWERED, true); @@ -172,7 +171,7 @@ public static boolean isOnValidBelt(BlockState state, LevelReader world, BlockPo @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { Level world = context.getLevel(); - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.SUCCESS; Shape shape = state.getValue(SHAPE); diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelGenerator.java index 1177a8cc79..c65902a182 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/BeltFunnelGenerator.java @@ -4,18 +4,22 @@ import com.simibubi.create.content.logistics.funnel.BeltFunnelBlock.Shape; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; + +import java.util.HashMap; +import java.util.Map; public class BeltFunnelGenerator extends SpecialBlockStateGen { private String type; - private ResourceLocation materialBlockTexture; + private Identifier materialBlockTexture; + private final Map models = new HashMap<>(); public BeltFunnelGenerator(String type) { this.type = type; @@ -33,7 +37,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String prefix = "block/funnel/"; Shape shape = state.getValue(BeltFunnelBlock.SHAPE); @@ -44,13 +48,13 @@ public ModelFile getModel(DataGenContext ctx, Regist String shapeSuffix = shape == Shape.PULLING ? "_pull" : shape == Shape.PUSHING ? "_push" : "_neutral"; String name = ctx.getName() + "_" + shapeName + poweredSuffix; - return prov.models() + return models.computeIfAbsent(name, $ -> prov.models() .withExistingParent(name, prov.modLoc("block/belt_funnel/block_" + shapeName)) .texture("particle", materialBlockTexture) .texture("block", materialBlockTexture) .texture("direction", prov.modLoc(prefix + type + "_funnel" + shapeSuffix)) .texture("redstone", prov.modLoc(prefix + type + "_funnel" + poweredSuffix)) - .texture("base", prov.modLoc(prefix + type + "_funnel")); + .texture("base", prov.modLoc(prefix + type + "_funnel"))); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlock.java index 085fceab70..3f53a56fe0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlock.java @@ -10,14 +10,16 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.item.ItemHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.InsideBlockEffectApplier; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -27,6 +29,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -70,13 +74,6 @@ protected void createBlockStateDefinition(Builder builder) { super.createBlockStateDefinition(builder.add(EXTRACTING)); } - @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (newState.getBlock() instanceof BeltFunnelBlock bfb && bfb.isOfSameType(this)) - return; - super.onRemove(state, world, pos, newState, isMoving); - } - @Override public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) { super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack); @@ -84,37 +81,38 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { boolean shouldntInsertItem = AllBlocks.MECHANICAL_ARM.isIn(stack) || !canInsertIntoFunnel(state); if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (hitResult.getDirection() == getFunnelFacing(state) && !shouldntInsertItem) { - if (!level.isClientSide) + if (!level.isClientSide()) withBlockEntityDo(level, pos, be -> { ItemStack toInsert = stack.copy(); ItemStack remainder = tryInsert(level, pos, toInsert, false); if (!ItemStack.matches(remainder, toInsert) || remainder.getCount() != stack.getCount()) player.setItemInHand(hand, remainder); }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { Level world = context.getLevel(); - if (!world.isClientSide) + if (!world.isClientSide()) world.setBlockAndUpdate(context.getClickedPos(), state.cycle(EXTRACTING)); return InteractionResult.SUCCESS; } @Override - public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn) { - if (worldIn.isClientSide) + public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity entityIn, + InsideBlockEffectApplier effectApplier, boolean isPrecise) { + if (worldIn.isClientSide()) return; ItemStack stack = ItemHelper.fromItemEntity(entityIn); if (stack.isEmpty()) @@ -124,7 +122,7 @@ public void entityInside(BlockState state, Level worldIn, BlockPos pos, Entity e Direction direction = getFunnelFacing(state); Vec3 openPos = VecHelper.getCenterOf(pos) - .add(Vec3.atLowerCornerOf(direction.getNormal()) + .add(Vec3.atLowerCornerOf(direction.getUnitVec3i()) .scale(entityIn instanceof ItemEntity ? -.25f : -.125f)); Vec3 diff = entityIn.position() .subtract(openPos); @@ -165,17 +163,21 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter world, BlockPo } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState p_196271_3_, LevelAccessor world, - BlockPos pos, BlockPos p_196271_6_) { - updateWater(world, state, pos); + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, + BlockPos pos, Direction direction, BlockPos p_196271_6_, BlockState p_196271_3_, RandomSource random) { + LevelAccessor levelAccessor = world instanceof LevelAccessor accessor ? accessor : null; + if (levelAccessor != null) + updateWater(levelAccessor, state, pos); if (getFacing(state).getAxis() .isVertical() || direction != Direction.DOWN) return state; + if (levelAccessor == null) + return state; BlockState equivalentFunnel = - ProperWaterloggedBlock.withWater(world, getEquivalentBeltFunnel(null, null, state), pos); - if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) + ProperWaterloggedBlock.withWater(levelAccessor, getEquivalentBeltFunnel(null, null, state), pos); + if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, levelAccessor, pos)) return equivalentFunnel.setValue(BeltFunnelBlock.SHAPE, - BeltFunnelBlock.getShapeForPosition(world, pos, getFacing(state), state.getValue(EXTRACTING))); + BeltFunnelBlock.getShapeForPosition(levelAccessor, pos, getFacing(state), state.getValue(EXTRACTING))); return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlockEntity.java index 0b33bc60a8..9385754b8a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelBlockEntity.java @@ -24,11 +24,11 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -97,7 +97,7 @@ public void tick() { super.tick(); flap.tickChaser(); Mode mode = determineCurrentMode(); - if (level.isClientSide) + if (level.isClientSide()) return; // Redstone resets the extraction cooldown @@ -167,7 +167,7 @@ private void activateExtractor() { .isVertical(); boolean up = facing == Direction.UP; - outputPos = outputPos.add(Vec3.atLowerCornerOf(facing.getNormal()) + outputPos = outputPos.add(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(vertical ? up ? .15f : .5f : .25f)); if (!vertical) outputPos = outputPos.subtract(0, .45f, 0); @@ -315,8 +315,8 @@ private ItemStack handleDirectBeltInput(TransportedItemStack stack, Direction si } public void flap(boolean inward) { - if (!level.isClientSide && level instanceof ServerLevel serverLevel) { - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new FunnelFlapPacket(this, inward)); + if (!level.isClientSide() && level instanceof ServerLevel serverLevel) { + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new FunnelFlapPacket(this, inward)); } else { flap.setValue(inward ? -1 : 1); AllSoundEvents.FUNNEL_FLAP.playAt(level, worldPosition, 1, 1, true); @@ -350,7 +350,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - extractionCooldown = compound.getInt("TransferCooldown"); + extractionCooldown = compound.getIntOr("TransferCooldown", 0); if (clientPacket) CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> VisualizationHelper.queueUpdate(this)); diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelFilterSlotPositioning.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelFilterSlotPositioning.java index 53782f5a8b..246b1f7ec3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelFilterSlotPositioning.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelFilterSlotPositioning.java @@ -5,8 +5,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelGenerator.java index 77060cb733..7c9928592c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelGenerator.java @@ -3,23 +3,27 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateItemModelGenerator; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelBuilder; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockModelBuilder; +import com.tterrag.registrate.providers.generators.ModelFile; + +import java.util.HashMap; +import java.util.Map; public class FunnelGenerator extends SpecialBlockStateGen { private String type; - private ResourceLocation blockTexture; + private Identifier blockTexture; private boolean hasFilter; + private final Map models = new HashMap<>(); public FunnelGenerator(String type, boolean hasFilter) { this.type = type; @@ -38,7 +42,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext c, RegistrateBlockstateProvider p, + public ModelFile getModel(DataGenContext c, RegistrateBlockModelGenerator p, BlockState s) { String prefix = "block/funnel/"; String powered = s.getValue(FunnelBlock.POWERED) ? "_powered" : "_unpowered"; @@ -48,26 +52,28 @@ public ModelFile getModel(DataGenContext c, Registra boolean horizontal = facing.getAxis() .isHorizontal(); String parent = horizontal ? "horizontal" : hasFilter ? "vertical" : "vertical_filterless"; + String modelName = "block/" + type + "_funnel_" + parent + extracting + powered; - BlockModelBuilder model = p.models() - .withExistingParent("block/" + type + "_funnel_" + parent + extracting + powered, - p.modLoc(prefix + "block_" + parent)) - .texture("particle", blockTexture) - .texture("base", p.modLoc(prefix + type + "_funnel")) - .texture("redstone", p.modLoc(prefix + type + "_funnel" + powered)) - .texture("direction", p.modLoc(prefix + type + "_funnel" + extracting)); + return models.computeIfAbsent(modelName, $ -> { + BlockModelBuilder model = p.models() + .withExistingParent(modelName, p.modLoc(prefix + "block_" + parent)) + .texture("particle", blockTexture) + .texture("base", p.modLoc(prefix + type + "_funnel")) + .texture("redstone", p.modLoc(prefix + type + "_funnel" + powered)) + .texture("direction", p.modLoc(prefix + type + "_funnel" + extracting)); - if (horizontal) - return model.texture("block", blockTexture); + if (horizontal) + return model.texture("block", blockTexture); - return model.texture("frame", p.modLoc(prefix + type + "_funnel_frame")) - .texture("open", p.modLoc(prefix + "funnel" + closed)); + return model.texture("frame", p.modLoc(prefix + type + "_funnel_frame")) + .texture("open", p.modLoc(prefix + "funnel" + closed)); + }); } - public static NonNullBiConsumer, RegistrateItemModelProvider> itemModel( + public static NonNullBiConsumer, RegistrateItemModelGenerator> itemModel( String type) { String prefix = "block/funnel/"; - ResourceLocation blockTexture = Create.asResource("block/" + type + "_block"); + Identifier blockTexture = Create.asResource("block/" + type + "_block"); return (c, p) -> { p.withExistingParent("item/" + type + "_funnel", p.modLoc("block/funnel/item")) .texture("particle", blockTexture) diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelItem.java index 9c4608d771..b607960351 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelItem.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.common.util.TriState; +import net.minecraft.util.TriState; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @EventBusSubscriber diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java index ab9df6023f..72ec8a72fb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelMovementBehaviour.java @@ -40,7 +40,7 @@ private FunnelMovementBehaviour(boolean hasFilter) { @Override public Vec3 getActiveAreaOffset(MovementContext context) { Direction facing = FunnelBlock.getFunnelFacing(context.state); - Vec3 vec = Vec3.atLowerCornerOf(facing.getNormal()); + Vec3 vec = Vec3.atLowerCornerOf(facing.getUnitVec3i()); if (facing != Direction.UP) return vec.scale(context.state.getValue(FunnelBlock.EXTRACTING) ? .15 : .65); @@ -75,8 +75,8 @@ private void extract(MovementContext context, BlockPos pos) { return; FilterItemStack filter = context.getFilterFromBE(); - int filterAmount = context.blockEntityData.getInt("FilterAmount"); - boolean upTo = context.blockEntityData.getBoolean("UpTo"); + int filterAmount = context.blockEntityData.getIntOr("FilterAmount", 0); + boolean upTo = context.blockEntityData.getBooleanOr("UpTo", false); filterAmount = hasFilter ? filterAmount : 1; ItemStack extract = ItemHelper.extract(context.contraption.getStorage().getAllItems(), @@ -86,7 +86,7 @@ private void extract(MovementContext context, BlockPos pos) { if (extract.isEmpty()) return; - if (world.isClientSide) + if (world.isClientSide()) return; ItemEntity entity = new ItemEntity(world, entityPos.x, entityPos.y, entityPos.z, extract); diff --git a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelRenderer.java index 298021e510..7772ad2e9b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/funnel/FunnelRenderer.java @@ -8,10 +8,10 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.state.BlockState; @@ -30,7 +30,7 @@ protected void renderSafe(FunnelBlockEntity be, float partialTicks, PoseStack ms return; BlockState blockState = be.getBlockState(); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); PartialModel partialModel = (blockState.getBlock() instanceof FunnelBlock ? AllPartialModels.FUNNEL_FLAP : AllPartialModels.BELT_FUNNEL_FLAP); SuperByteBuffer flapBuffer = CachedBuffers.partial(partialModel, blockState); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/AllItemAttributeTypes.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/AllItemAttributeTypes.java index c4db3f4992..3c0e1007c7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/AllItemAttributeTypes.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/AllItemAttributeTypes.java @@ -17,6 +17,7 @@ import com.simibubi.create.content.logistics.item.filter.attribute.attributes.InTagAttribute; import com.simibubi.create.content.logistics.item.filter.attribute.attributes.ItemNameAttribute; import com.simibubi.create.content.logistics.item.filter.attribute.attributes.ShulkerFillLevelAttribute; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; import it.unimi.dsi.fastutil.objects.Object2IntMap; import net.minecraft.core.Holder; @@ -24,24 +25,22 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.BlockItem; -import net.minecraft.world.item.Equipable; +import net.minecraft.world.item.equipment.Equippable; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.item.crafting.SingleRecipeInput; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.ComposterBlock; -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; - -import net.neoforged.neoforge.capabilities.Capabilities; // TODO - Documentation public class AllItemAttributeTypes { public static final ItemAttributeType PLACEABLE = singleton("placeable", s -> s.getItem() instanceof BlockItem), CONSUMABLE = singleton("consumable", s -> s.has(DataComponents.FOOD)), - FLUID_CONTAINER = singleton("fluid_container", s -> s.getCapability(Capabilities.FluidHandler.ITEM) != null), + FLUID_CONTAINER = singleton("fluid_container", s -> LegacyFluidHandlerItemAdapter.of(s) != null), ENCHANTED = singleton("enchanted", ItemStack::isEnchanted), MAX_ENCHANTED = singleton("max_enchanted", AllItemAttributeTypes::maxEnchanted), RENAMED = singleton("renamed", s -> s.has(DataComponents.CUSTOM_NAME)), @@ -49,11 +48,11 @@ public class AllItemAttributeTypes { BADLY_DAMAGED = singleton("badly_damaged", s -> s.isDamaged() && (float) s.getDamageValue() / s.getMaxDamage() > 3 / 4f), NOT_STACKABLE = singleton("not_stackable", ((Predicate) ItemStack::isStackable).negate()), EQUIPABLE = singleton("equipable", s -> { - Equipable equipable = Equipable.get(s); - EquipmentSlot.Type type = equipable != null ? equipable.getEquipmentSlot().getType() : EquipmentSlot.MAINHAND.getType(); + Equippable equipable = s.get(DataComponents.EQUIPPABLE); + EquipmentSlot.Type type = equipable != null ? equipable.slot().getType() : EquipmentSlot.MAINHAND.getType(); return type != EquipmentSlot.Type.HAND; }), - FURNACE_FUEL = singleton("furnace_fuel", AbstractFurnaceBlockEntity::isFuel), + FURNACE_FUEL = singleton("furnace_fuel", (s, w) -> w.fuelValues().isFuel(s)), WASHABLE = singleton("washable", AllFanProcessingTypes.SPLASHING::canProcess), HAUNTABLE = singleton("hauntable", AllFanProcessingTypes.HAUNTING::canProcess), CRUSHABLE = singleton("crushable", (s, w) -> testRecipe(s, w, AllRecipeTypes.CRUSHING.getType()) @@ -75,9 +74,10 @@ public class AllItemAttributeTypes { BOOK_COPY = register("book_copy", new BookCopyAttribute.Type()); private static > boolean testRecipe(ItemStack s, Level w, RecipeType type) { - return w.getRecipeManager() - .getRecipeFor(type, new SingleRecipeInput(s.copy()), w) + if (w.recipeAccess() instanceof RecipeManager recipeManager) + return recipeManager.getRecipeFor(type, new SingleRecipeInput(s.copy()), w) .isPresent(); + return false; } private static boolean maxEnchanted(ItemStack s) { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ItemAttribute.java index df80164c9a..05d5adae62 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/ItemAttribute.java @@ -11,7 +11,7 @@ import com.simibubi.create.api.registry.CreateRegistries; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.codecs.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -22,7 +22,6 @@ import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public interface ItemAttribute { Codec CODEC = CreateBuiltInRegistries.ITEM_ATTRIBUTE_TYPE.byNameCodec().dispatch(ItemAttribute::getType, ItemAttributeType::codec); @@ -51,7 +50,6 @@ static List getAllAttributes(ItemStack stack, Level level) { ItemAttributeType getType(); - @OnlyIn(value = Dist.CLIENT) default MutableComponent format(boolean inverted) { return CreateLang.translateDirect("item_attributes." + getTranslationKey() + (inverted ? ".inverted" : ""), getTranslationParameters()); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/SingletonItemAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/SingletonItemAttribute.java index 2c817a597b..2400490fbe 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/SingletonItemAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/SingletonItemAttribute.java @@ -64,7 +64,7 @@ public List getAllAttributes(ItemStack stack, Level level) { @Override public MapCodec codec() { - return Codec.unit(attribute).fieldOf("value"); + return MapCodec.unit(attribute); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/AddedByAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/AddedByAttribute.java index 10afcde4bd..38bc2d93d7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/AddedByAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/AddedByAttribute.java @@ -35,7 +35,7 @@ public record AddedByAttribute(String modId) implements ItemAttribute { @Override public boolean appliesTo(ItemStack stack, Level world) { return modId.equals(stack.getItem() - .getCreatorModId(stack)); + .getCreatorModId(world.registryAccess(), stack)); } @Override @@ -67,7 +67,7 @@ public static class Type implements ItemAttributeType { @Override public List getAllAttributes(ItemStack stack, Level level) { String id = stack.getItem() - .getCreatorModId(stack); + .getCreatorModId(level.registryAccess(), stack); return id == null ? Collections.emptyList() : List.of(new AddedByAttribute(id)); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ColorAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ColorAttribute.java index 4c00afc878..d7f74b1169 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ColorAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ColorAttribute.java @@ -16,14 +16,13 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.component.DataComponents; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.FireworkRocketItem; -import net.minecraft.world.item.FireworkStarItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.component.FireworkExplosion; import net.minecraft.world.level.Level; @@ -43,7 +42,7 @@ private static Collection findMatchingDyeColors(ItemStack stack) { Set colors = new HashSet<>(); if (stack.has(DataComponents.FIREWORKS)) { - if (stack.getItem() instanceof FireworkRocketItem || stack.getItem() instanceof FireworkStarItem) { + if (stack.getItem() instanceof FireworkRocketItem || stack.has(DataComponents.FIREWORK_EXPLOSION)) { List explosions = stack.get(DataComponents.FIREWORKS).explosions(); for (FireworkExplosion explosion : explosions) { colors.addAll(getFireworkStarColors(explosion)); diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/FluidContentsAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/FluidContentsAttribute.java index 747d3e6bc3..49543225ca 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/FluidContentsAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/FluidContentsAttribute.java @@ -11,9 +11,10 @@ import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttributeTypes; import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttribute; import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerItemAdapter; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -21,7 +22,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; -import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; public record FluidContentsAttribute(@Nullable Fluid fluid) implements ItemAttribute { @@ -35,7 +35,7 @@ public record FluidContentsAttribute(@Nullable Fluid fluid) implements ItemAttri private static List extractFluids(ItemStack stack) { List fluids = new ArrayList<>(); - IFluidHandlerItem capability = stack.getCapability(Capabilities.FluidHandler.ITEM); + IFluidHandlerItem capability = LegacyFluidHandlerItemAdapter.of(stack); if (capability != null) { for (int i = 0; i < capability.getTanks(); i++) { diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InItemGroupAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InItemGroupAttribute.java index f171e94317..a3b00867c0 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InItemGroupAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InItemGroupAttribute.java @@ -14,11 +14,11 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.ItemStack; @@ -29,8 +29,10 @@ public class InItemGroupAttribute implements ItemAttribute { .xmap(InItemGroupAttribute::new, i -> i.group) .fieldOf("value"); - public static final StreamCodec STREAM_CODEC = CatnipStreamCodecBuilders.nullable(ResourceLocation.STREAM_CODEC) - .map(i -> new InItemGroupAttribute(BuiltInRegistries.CREATIVE_MODE_TAB.get(i)), + public static final StreamCodec STREAM_CODEC = CatnipStreamCodecBuilders.nullable(Identifier.STREAM_CODEC) + .map(i -> new InItemGroupAttribute(i == null ? null : BuiltInRegistries.CREATIVE_MODE_TAB.get(i) + .map(ref -> ref.value()) + .orElse(null)), i -> i.group == null ? null : BuiltInRegistries.CREATIVE_MODE_TAB.getKey(i.group)); @Nullable diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InTagAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InTagAttribute.java index 867b0aeb19..09d89a0c5f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InTagAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/InTagAttribute.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.logistics.item.filter.attribute.ItemAttributeType; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -57,7 +57,8 @@ public static class Type implements ItemAttributeType { @Override public List getAllAttributes(ItemStack stack, Level level) { - return stack.getTags() + return stack.typeHolder() + .tags() .map(InTagAttribute::new) .collect(Collectors.toList()); } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ItemNameAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ItemNameAttribute.java index 8286e8f1b5..8fe2366441 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ItemNameAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ItemNameAttribute.java @@ -5,7 +5,6 @@ import org.jetbrains.annotations.NotNull; -import com.google.gson.JsonParseException; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import com.simibubi.create.content.logistics.item.filter.attribute.AllItemAttributeTypes; @@ -30,16 +29,9 @@ public record ItemNameAttribute(String itemName) implements ItemAttribute { .map(ItemNameAttribute::new, ItemNameAttribute::itemName); private static String extractCustomName(ItemStack stack, Level level) { - if (stack.has(DataComponents.CUSTOM_NAME)) { - try { - String customName = stack.getOrDefault(DataComponents.CUSTOM_NAME, Component.empty()).getString(); - Component component = Component.Serializer.fromJson(customName, level.registryAccess()); - if (component != null) { - return component.getString(); - } - } catch (JsonParseException ignored) { - } - } + if (stack.has(DataComponents.CUSTOM_NAME)) + return stack.getOrDefault(DataComponents.CUSTOM_NAME, Component.empty()) + .getString(); return ""; } diff --git a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ShulkerFillLevelAttribute.java b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ShulkerFillLevelAttribute.java index 3b2458e80b..3ce8067c7b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ShulkerFillLevelAttribute.java +++ b/src/main/java/com/simibubi/create/content/logistics/item/filter/attribute/attributes/ShulkerFillLevelAttribute.java @@ -16,8 +16,8 @@ import com.simibubi.create.foundation.utility.CreateLang; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.NonNullList; import net.minecraft.core.component.DataComponents; import net.minecraft.network.RegistryFriendlyByteBuf; diff --git a/src/main/java/com/simibubi/create/content/logistics/itemHatch/HatchFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/itemHatch/HatchFilterSlot.java index e8ea30f5b6..3b8b15e594 100644 --- a/src/main/java/com/simibubi/create/content/logistics/itemHatch/HatchFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/logistics/itemHatch/HatchFilterSlot.java @@ -4,8 +4,8 @@ import com.mojang.math.Axis; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.LevelAccessor; diff --git a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java index 48212c5aac..bbf125f708 100644 --- a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchBlock.java @@ -20,7 +20,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -28,7 +28,10 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -41,7 +44,7 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.common.Tags.Items; import net.neoforged.neoforge.common.util.FakePlayer; import net.neoforged.neoforge.items.IItemHandler; @@ -85,29 +88,28 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pPos); return pState; } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (level.isClientSide()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (player instanceof FakePlayer) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(pos.relative(state.getValue(FACING))); if (blockEntity == null) - return ItemInteractionResult.FAIL; - IItemHandler targetInv = level.getCapability(ItemHandler.BLOCK, blockEntity.getBlockPos(), null); + return InteractionResult.FAIL; + IItemHandler targetInv = com.simibubi.create.foundation.item.LegacyItemHandlerAdapter.of(level.getCapability(Item.BLOCK, blockEntity.getBlockPos(), null)); if (targetInv == null) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; FilteringBehaviour filter = BlockEntityBehaviour.get(level, pos, FilteringBehaviour.TYPE); if (filter == null) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; Inventory inventory = player.getInventory(); List failedInsertions = new ArrayList<>(); @@ -115,12 +117,12 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev boolean depositItemInHand = !player.isShiftKeyDown(); if (!depositItemInHand && stack.is(Items.TOOLS_WRENCH)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - for (int i = 0; i < inventory.items.size(); i++) { + for (int i = 0; i < inventory.getNonEquipmentItems().size(); i++) { if (Inventory.isHotbarSlot(i) != depositItemInHand) continue; - if (depositItemInHand && i != inventory.selected) + if (depositItemInHand && i != inventory.getSelectedSlot()) continue; ItemStack item = inventory.getItem(i); if (item.isEmpty()) @@ -148,7 +150,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev failedInsertions.forEach(inventory::placeItemBackInInventory); if (!anyInserted) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; AllSoundEvents.ITEM_HATCH.playOnServer(level, pos); level.setBlockAndUpdate(pos, state.setValue(OPEN, true)); @@ -156,7 +158,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev CreateLang.translate(depositItemInHand ? "item_hatch.deposit_item" : "item_hatch.deposit_inventory") .sendStatus(player); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -172,8 +174,8 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) { - IBE.onRemove(state, level, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean movedByPiston) { + IBE.onRemove(state, level, pos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchHandler.java b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchHandler.java index 97595e8d20..06fb4817b3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/itemHatch/ItemHatchHandler.java @@ -6,7 +6,7 @@ import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.common.util.TriState; +import net.minecraft.util.TriState; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent.RightClickBlock; diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortBlockEntity.java index 26df99e9ec..695e8a9868 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortBlockEntity.java @@ -15,13 +15,13 @@ import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.codecs.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.Clearable; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -86,17 +86,17 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean tag.put("Target", CatnipCodecUtils.encode(PackagePortTarget.CODEC, registries, target).orElseThrow()); tag.putString("AddressFilter", addressFilter); tag.putBoolean("AcceptsPackages", acceptsPackages); - tag.put("Inventory", inventory.serializeNBT(registries)); + tag.put("Inventory", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.serializeHandler(inventory, registries)); } @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - inventory.deserializeNBT(registries, tag.getCompound("Inventory")); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(inventory, registries, tag.getCompoundOrEmpty("Inventory")); PackagePortTarget prevTarget = target; - target = CatnipCodecUtils.decodeOrNull(PackagePortTarget.CODEC, registries, tag.getCompound("Target")); - addressFilter = tag.getString("AddressFilter"); - acceptsPackages = tag.getBoolean("AcceptsPackages"); + target = CatnipCodecUtils.decodeOrNull(PackagePortTarget.CODEC, registries, tag.getCompoundOrEmpty("Target")); + addressFilter = tag.getStringOr("AddressFilter", ""); + acceptsPackages = tag.getBooleanOr("AcceptsPackages", false); if (clientPacket && prevTarget != target) invalidateRenderBoundingBox(); } @@ -134,27 +134,27 @@ public void addBehaviours(List behaviours) { protected abstract void onOpenChange(boolean open); - public ItemInteractionResult use(Player player) { + public InteractionResult use(Player player) { if (player == null || player.isCrouching()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player instanceof FakePlayer) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ItemStack mainHandItem = player.getMainHandItem(); boolean clipboard = AllBlocks.CLIPBOARD.isIn(mainHandItem); - if (level.isClientSide) { + if (level.isClientSide()) { if (!clipboard) onOpenedManually(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (clipboard) { addAddressToClipboard(player, mainHandItem); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } player.openMenu(this, worldPosition); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } protected void onOpenedManually() { @@ -189,8 +189,8 @@ private void addAddressToClipboard(Player player, ItemStack mainHandItem) { } page.add(new ClipboardEntry(false, Component.literal("#" + addressFilter))); - player.displayClientMessage(CreateLang.translate("clipboard.address_added", addressFilter) - .component(), true); + player.sendSystemMessage(CreateLang.translate("clipboard.address_added", addressFilter) + .component()); clipboard = clipboard.setPages(list).setType(ClipboardType.WRITTEN); diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortItem.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortItem.java index 26e4399cde..3ee5984048 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortItem.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.packagePort; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -19,7 +19,7 @@ public PackagePortItem(Block pBlock, Properties pProperties) { @Override protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, Player player, ItemStack p_195943_4_, BlockState p_195943_5_) { - if (!world.isClientSide && player instanceof ServerPlayer sp) + if (!world.isClientSide() && player instanceof ServerPlayer sp) CatnipServices.NETWORK.sendToClient(sp, new PackagePortPlacementPacket.ClientBoundRequest(pos)); return super.updateCustomBlockEntityTag(pos, world, player, p_195943_4_, p_195943_5_); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortMenu.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortMenu.java index 177c2c3c60..81fb045b9a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortMenu.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortMenu.java @@ -106,7 +106,7 @@ protected void saveData(PackagePortBlockEntity contentHolder) {} @Override public void removed(Player playerIn) { super.removed(playerIn); - if (!playerIn.level().isClientSide) + if (!playerIn.level().isClientSide()) BlockEntityBehaviour.get(contentHolder, AnimatedContainerBehaviour.TYPE) .stopOpen(playerIn); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortPlacementPacket.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortPlacementPacket.java index e62c14f1fe..30a621b4bc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortPlacementPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortPlacementPacket.java @@ -6,7 +6,7 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -61,7 +61,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - public void handle(LocalPlayer player) { + public void handle(Player player) { PackagePortTargetSelectionHandler.flushSettings(pos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortScreen.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortScreen.java index eaa769c403..c3df51ed28 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortScreen.java @@ -14,11 +14,11 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; @@ -59,14 +59,13 @@ protected void init() { Consumer onTextChanged; onTextChanged = s -> addressBox.setX(nameBoxX(s, addressBox)); - addressBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y - 11, background.getWidth() - 20, 10, + addressBox = new EditBox(font, x + 23, y - 11, background.getWidth() - 20, 10, Component.empty()); addressBox.setBordered(false); addressBox.setMaxLength(25); addressBox.setTextColor(0x3D3C48); addressBox.setValue(menu.contentHolder.addressFilter); addressBox.setFocused(false); - addressBox.mouseClicked(0, 0, 0); addressBox.setResponder(onTextChanged); addressBox.setX(nameBoxX(addressBox.getValue(), addressBox)); addRenderableWidget(addressBox); @@ -111,7 +110,7 @@ protected void containerTick() { } @Override - protected void renderBg(GuiGraphics graphics, float pPartialTick, int pMouseX, int pMouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float pPartialTick, int pMouseX, int pMouseY) { int x = getGuiLeft(); int y = getGuiTop(); @@ -125,7 +124,7 @@ protected void renderBg(GuiGraphics graphics, float pPartialTick, int pMouseX, i .isEmpty()) { text = icon.getHoverName() .getString(); - graphics.drawString(font, text, nameBoxX(text, addressBox), y - 11, 0x3D3C48, false); + graphics.text(font, text, nameBoxX(text, addressBox), y - 11, 0x3D3C48, false); } AllGuiTextures.FROGPORT_EDIT_NAME.render(graphics, nameBoxX(text, addressBox) + font.width(text) + 5, y - 14); @@ -146,10 +145,10 @@ protected void renderBg(GuiGraphics graphics, float pPartialTick, int pMouseX, i x += 13; y += 58; AllGuiTextures.FROGPORT_SLOT.render(graphics, x, y); - graphics.renderItem(menu.contentHolder.target.getIcon(), x + 1, y + 1); + graphics.item(menu.contentHolder.target.getIcon(), x + 1, y + 1); if (addressBox.isHovered()) { - graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.package_port.catch_packages") + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.package_port.catch_packages") .color(AbstractSimiWidget.HEADER_RGB) .component(), CreateLang.translate("gui.package_port.catch_packages_empty") @@ -177,7 +176,7 @@ public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { @Override public void removed() { - CatnipServices.NETWORK.sendToServer(new PackagePortConfigurationPacket(menu.contentHolder.getBlockPos(), addressBox.getValue(), + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new PackagePortConfigurationPacket(menu.contentHolder.getBlockPos(), addressBox.getValue(), acceptPackages.green)); super.removed(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTarget.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTarget.java index 4ceee00a06..7967eafacc 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTarget.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTarget.java @@ -19,7 +19,7 @@ import com.simibubi.create.content.trains.station.StationBlockEntity; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTargetSelectionHandler.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTargetSelectionHandler.java index a2b99f438e..7a9e619165 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTargetSelectionHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/PackagePortTargetSelectionHandler.java @@ -6,10 +6,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.LocalPlayer; @@ -39,7 +39,7 @@ public static void flushSettings(BlockPos pos) { if (validateDiff(exactPositionOfTarget, pos) == null) { activePackageTarget.relativePos = activePackageTarget.relativePos.subtract(pos); - CatnipServices.NETWORK.sendToServer(new PackagePortPlacementPacket(activePackageTarget, pos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new PackagePortPlacementPacket(activePackageTarget, pos)); } activePackageTarget = null; @@ -152,7 +152,7 @@ public static void tick() { } public static void animateConnection(Minecraft mc, Vec3 source, Vec3 target, Color color) { - DustParticleOptions data = new DustParticleOptions(color.asVectorF(), 1); + DustParticleOptions data = new DustParticleOptions(color.getRGB(), 1); ClientLevel world = mc.level; double totalFlyingTicks = 10; int segments = (((int) totalFlyingTicks) / 3) + 1; diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlock.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlock.java index 4628d64248..836196df46 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.logistics.packagePort.frogport; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import org.jetbrains.annotations.Nullable; @@ -10,8 +10,10 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -21,6 +23,7 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.PushReaction; @@ -62,7 +65,7 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return onBlockEntityUseItemOn(level, pos, be -> be.use(player)); } @@ -77,8 +80,8 @@ public BlockEntityType getBlockEntityType() { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override @@ -92,7 +95,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return getBlockEntityOptional(pLevel, pPos).map(pbe -> pbe.getComparatorOutput()) .orElse(0); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlockEntity.java index 2ca96b76b7..d9e6a5350b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportBlockEntity.java @@ -21,10 +21,10 @@ import com.simibubi.create.foundation.item.TooltipHelper; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -35,7 +35,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; @@ -45,7 +45,7 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.neoforge.capabilities.Capabilities; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; @@ -86,9 +86,9 @@ public FrogportBlockEntity(BlockEntityType type, BlockPos pos, BlockState sta public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.PACKAGE_FROGPORT.get(), - (be, context) -> be.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.itemHandler) ); if (Mods.COMPUTERCRAFT.isLoaded()) { @@ -248,7 +248,7 @@ public void startAnimation(ItemStack box, boolean deposit) { for (int i = 0; i < 5; i++) level.addParticle( new BlockParticleOption(ParticleTypes.BLOCK, AllBlocks.ROPE.getDefaultState()), vec.x, - vec.y - level.random.nextFloat() * 0.25, vec.z, 0, 0, 0); + vec.y - level.getRandom().nextFloat() * 0.25, vec.z, 0, 0, 0); } } @@ -329,7 +329,7 @@ protected IItemHandler getAdjacentInventory(Direction side) { BlockEntity blockEntity = level.getBlockEntity(worldPosition.relative(side)); if (blockEntity == null || blockEntity instanceof FrogportBlockEntity) return null; - return level.getCapability(ItemHandler.BLOCK, blockEntity.getBlockPos(), side.getOpposite()); + return com.simibubi.create.foundation.item.LegacyItemHandlerAdapter.of(level.getCapability(Item.BLOCK, blockEntity.getBlockPos(), side.getOpposite())); } @Override @@ -337,7 +337,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean super.write(tag, registries, clientPacket); tag.putFloat("PlacedYaw", passiveYaw); if (animatedPackage != null && isAnimationInProgress()) { - tag.put("AnimatedPackage", animatedPackage.saveOptional(registries)); + tag.put("AnimatedPackage", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(animatedPackage, registries)); tag.putBoolean("Deposit", currentlyDepositing); } if (sendAnticipate) { @@ -353,14 +353,14 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - passiveYaw = tag.getFloat("PlacedYaw"); - failedLastExport = tag.getBoolean("FailedLastExport"); - goggles = tag.getBoolean("Goggles"); + passiveYaw = tag.getFloatOr("PlacedYaw", 0); + failedLastExport = tag.getBooleanOr("FailedLastExport", false); + goggles = tag.getBooleanOr("Goggles", false); if (!clientPacket) animatedPackage = null; if (tag.contains("AnimatedPackage")) { - deferAnimationInward = tag.getBoolean("Deposit"); - deferAnimationStart = ItemStack.parseOptional(registries, tag.getCompound("AnimatedPackage")); + deferAnimationInward = tag.getBooleanOr("Deposit", false); + deferAnimationStart = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, tag.getCompoundOrEmpty("AnimatedPackage")); } if (clientPacket && tag.contains("Anticipate")) anticipate(); @@ -390,9 +390,9 @@ protected void onOpenedManually() { } @Override - public ItemInteractionResult use(Player player) { + public InteractionResult use(Player player) { if (player == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; ItemStack mainHandItem = player.getMainHandItem(); if (!goggles && AllItems.GOGGLES.isIn(mainHandItem)) { @@ -401,7 +401,7 @@ public ItemInteractionResult use(Player player) { notifyUpdate(); level.playSound(null, worldPosition, SoundEvents.ARMOR_EQUIP_GOLD.value(), SoundSource.BLOCKS, 0.5f, 1.0f); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } return super.use(player); diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportRenderer.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportRenderer.java index 7a2c9ce68f..3dbda2fffd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportRenderer.java @@ -5,14 +5,14 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; @@ -99,7 +99,7 @@ protected void renderSafe(FrogportBlockEntity blockEntity, float partialTicks, P .uncenter() .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); SuperByteBuffer head = CachedBuffers.partial(blockEntity.goggles ? AllPartialModels.FROGPORT_HEAD_GOGGLES : AllPartialModels.FROGPORT_HEAD, blockEntity.getBlockState()); @@ -113,7 +113,7 @@ protected void renderSafe(FrogportBlockEntity blockEntity, float partialTicks, P head.light(light) // .color(color) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); SuperByteBuffer tongue = CachedBuffers.partial(AllPartialModels.FROGPORT_TONGUE, blockEntity.getBlockState()); @@ -127,7 +127,7 @@ protected void renderSafe(FrogportBlockEntity blockEntity, float partialTicks, P tongue.light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); // hat @@ -142,7 +142,7 @@ protected void renderSafe(FrogportBlockEntity blockEntity, float partialTicks, P // .light(light) // .color(color) // .overlay(overlay) -// .renderInto(ms, buffer.getBuffer(RenderType.solid())); +// .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } @@ -152,7 +152,7 @@ private void renderPackage(FrogportBlockEntity blockEntity, PoseStack ms, MultiB return; if (scale < 0.45) return; - ResourceLocation key = BuiltInRegistries.ITEM.getKey(blockEntity.animatedPackage.getItem()); + Identifier key = BuiltInRegistries.ITEM.getKey(blockEntity.animatedPackage.getItem()); if (key == BuiltInRegistries.ITEM.getDefaultKey()) return; SuperByteBuffer rigBuffer = @@ -173,7 +173,7 @@ private void renderPackage(FrogportBlockEntity blockEntity, PoseStack ms, MultiB .uncenter() .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutout())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutout())); if (!blockEntity.currentlyDepositing) break; } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportSounds.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportSounds.java index a509e840f5..6657ead413 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportSounds.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportSounds.java @@ -16,7 +16,7 @@ public void open(Level level, BlockPos pos) { public void close(Level level, BlockPos pos) { if (!isPlayerNear(pos)) return; - AllSoundEvents.FROGPORT_CLOSE.playAt(level, Vec3.atCenterOf(pos), 1.0f, 1.25f + level.random.nextFloat() * 0.25f, + AllSoundEvents.FROGPORT_CLOSE.playAt(level, Vec3.atCenterOf(pos), 1.0f, 1.25f + level.getRandom().nextFloat() * 0.25f, true); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportVisual.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportVisual.java index 59d9702fe6..678ce50528 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/frogport/FrogportVisual.java @@ -15,7 +15,7 @@ import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.Vec3; @@ -203,7 +203,7 @@ private void renderPackage(Vec3 diff, float scale, float itemDistance) { .setVisible(false); return; } - ResourceLocation key = BuiltInRegistries.ITEM.getKey(blockEntity.animatedPackage.getItem()); + Identifier key = BuiltInRegistries.ITEM.getKey(blockEntity.animatedPackage.getItem()); if (key == BuiltInRegistries.ITEM.getDefaultKey()) { rig.handle() .setVisible(false); diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlock.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlock.java index bdfa3e5cb9..91aec8d73c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlock.java @@ -11,7 +11,9 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; @@ -19,7 +21,10 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -68,9 +73,8 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pPos); return pState; } @@ -86,7 +90,7 @@ protected void createBlockStateDefinition(Builder pBuilder) { @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { - return onBlockEntityUse(level, pos, be -> be.use(player).result()); + return onBlockEntityUse(level, pos, be -> be.use(player)); } @Override @@ -110,14 +114,14 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return getBlockEntityOptional(pLevel, pPos).map(pbe -> pbe.getComparatorOutput()) .orElse(0); } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlockEntity.java index 4bff6116d1..9a75849abe 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxBlockEntity.java @@ -12,9 +12,9 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -47,9 +47,9 @@ public PostboxBlockEntity(BlockEntityType type, BlockPos pos, BlockState stat public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.PACKAGE_POSTBOX.get(), - (be, context) -> be.itemHandler + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.itemHandler) ); } @@ -62,7 +62,7 @@ public void addBehaviours(List behaviours) { @Override public void tick() { super.tick(); - if (!level.isClientSide && !isVirtual()) { + if (!level.isClientSide() && !isVirtual()) { if (sendParticles) sendData(); return; @@ -125,7 +125,7 @@ public void setChanged() { } private void saveOfflineBuffer() { - if (level == null || level.isClientSide) + if (level == null || level.isClientSide()) return; GlobalStation station = trackedGlobalStation.get(); diff --git a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxRenderer.java b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxRenderer.java index edeeb888f6..2586ccef69 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagePort/postbox/PostboxRenderer.java @@ -5,11 +5,10 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; -import dev.engine_room.flywheel.lib.transform.Transform; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; @@ -38,10 +37,10 @@ protected void renderSafe(PostboxBlockEntity blockEntity, float partialTicks, Po transformFlag(sbb, blockEntity, partialTicks); - sbb.renderInto(ms, buffer.getBuffer(RenderType.cutout())); + sbb.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutout())); } - public static void transformFlag(Transform flag, PostboxBlockEntity be, float partialTicks) { + public static void transformFlag(SuperByteBuffer flag, PostboxBlockEntity be, float partialTicks) { float value = be.flag.getValue(partialTicks); float progress = (float) (Math.pow(Math.min(value * 5, 1), 2)); if (be.flag.getChaseTarget() > 0 && !be.flag.settled() && progress == 1) { diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/AllInventoryIdentifiers.java b/src/main/java/com/simibubi/create/content/logistics/packager/AllInventoryIdentifiers.java index 214024542c..c7767a1f54 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/AllInventoryIdentifiers.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/AllInventoryIdentifiers.java @@ -11,8 +11,8 @@ import com.simibubi.create.api.registry.SimpleRegistry; import com.simibubi.create.content.logistics.vault.ItemVaultBlockEntity; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.WorldlyContainer; diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/InventorySummary.java b/src/main/java/com/simibubi/create/content/logistics/packager/InventorySummary.java index 25440e5b18..15096663ea 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/InventorySummary.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/InventorySummary.java @@ -15,7 +15,7 @@ import com.simibubi.create.content.logistics.BigItemStack; import com.simibubi.create.content.logistics.stockTicker.LogisticalStockResponsePacket; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlock.java b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlock.java index 02d318fd4c..2c67eebf70 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlock.java @@ -14,9 +14,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -25,6 +26,8 @@ import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -34,7 +37,7 @@ import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.common.util.FakePlayer; public class PackagerBlock extends WrenchableDirectionalBlock implements IBE, IWrenchable { @@ -65,7 +68,7 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { .relative(face)); if (be instanceof PackagerBlockEntity) continue; - if (be != null && be.hasLevel() &&be.getLevel().getCapability(ItemHandler.BLOCK, be.getBlockPos(), null) != null) { + if (be != null && be.hasLevel() &&be.getLevel().getCapability(Item.BLOCK, be.getBlockPos(), null) != null) { preferredFacing = face.getOpposite(); break; } @@ -94,37 +97,37 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.FACTORY_GAUGE.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.STOCK_LINK.isIn(stack) && !(state.hasProperty(LINKED) && state.getValue(LINKED))) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllBlocks.PACKAGE_FROGPORT.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (onBlockEntityUseItemOn(level, pos, be -> { if (be.heldBox.isEmpty()) { if (be.animationTicks > 0) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (PackageItem.isPackage(stack)) { if (level.isClientSide()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (!be.unwrapBox(stack.copy(), true)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; be.unwrapBox(stack.copy(), false); be.triggerStockCheck(); stack.shrink(1); AllSoundEvents.DEPOT_PLOP.playOnServer(level, pos); if (stack.isEmpty()) player.setItemInHand(hand, ItemStack.EMPTY); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (be.animationTicks > 0) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (!level.isClientSide()) { player.getInventory() .placeItemBackInInventory(be.heldBox.copy()); @@ -132,11 +135,11 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev be.heldBox = ItemStack.EMPTY; be.notifyUpdate(); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }).consumesAction()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -154,12 +157,12 @@ public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; InvManipulationBehaviour behaviour = BlockEntityBehaviour.get(worldIn, pos, InvManipulationBehaviour.TYPE); + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (behaviour != null) behaviour.onNeighborChanged(fromPos); @@ -172,8 +175,8 @@ public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override @@ -202,7 +205,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return getBlockEntityOptional(pLevel, pPos).map(pbe -> { boolean empty = pbe.inventory.getStackInSlot(0) .isEmpty(); diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlockEntity.java index fe44ffd9b3..13170ecda4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerBlockEntity.java @@ -42,10 +42,10 @@ import com.simibubi.create.foundation.item.ItemHelper; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -116,9 +116,9 @@ public PackagerBlockEntity(BlockEntityType typeIn, BlockPos pos, BlockState s public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.PACKAGER.get(), - (be, context) -> be.inventory + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.inventory) ); if (Mods.COMPUTERCRAFT.isLoaded()) { @@ -181,7 +181,7 @@ public void tick() { return; } - if (level.isClientSide) { + if (level.isClientSide()) { if (animationTicks == CYCLE - (animationInward ? 5 : 1)) AllSoundEvents.PACKAGER.playAt(level, worldPosition, 1, 1, true); if (animationTicks == (animationInward ? 1 : 5)) @@ -576,21 +576,21 @@ protected void wakeTheFrogs() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - redstonePowered = compound.getBoolean("Active"); - animationInward = compound.getBoolean("AnimationInward"); - animationTicks = compound.getInt("AnimationTicks"); - signBasedAddress = compound.getString("SignAddress"); - customComputerAddress = compound.getString("ComputerAddress"); - hasCustomComputerAddress = compound.getBoolean("HasComputerAddress"); - heldBox = ItemStack.parseOptional(registries, compound.getCompound("HeldBox")); - previouslyUnwrapped = ItemStack.parseOptional(registries, compound.getCompound("InsertedBox")); + redstonePowered = compound.getBooleanOr("Active", false); + animationInward = compound.getBooleanOr("AnimationInward", false); + animationTicks = compound.getIntOr("AnimationTicks", 0); + signBasedAddress = compound.getStringOr("SignAddress", ""); + customComputerAddress = compound.getStringOr("ComputerAddress", ""); + hasCustomComputerAddress = compound.getBooleanOr("HasComputerAddress", false); + heldBox = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompoundOrEmpty("HeldBox")); + previouslyUnwrapped = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompoundOrEmpty("InsertedBox")); if (clientPacket) return; - queuedExitingPackages = NBTHelper.readCompoundList(compound.getList("QueuedExitingPackages", Tag.TAG_COMPOUND), + queuedExitingPackages = NBTHelper.readCompoundList(compound.getListOrEmpty("QueuedExitingPackages"), c -> CatnipCodecUtils.decode(BigItemStack.CODEC, registries, c) .orElseThrow()); if (compound.contains("LastSummary")) - availableItems = CatnipCodecUtils.decodeOrNull(InventorySummary.CODEC, registries, compound.getCompound("LastSummary")); + availableItems = CatnipCodecUtils.decodeOrNull(InventorySummary.CODEC, registries, compound.getCompoundOrEmpty("LastSummary")); } @Override @@ -602,8 +602,8 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo compound.putString("SignAddress", signBasedAddress); compound.putString("ComputerAddress", customComputerAddress); compound.putBoolean("HasComputerAddress", hasCustomComputerAddress); - compound.put("HeldBox", heldBox.saveOptional(registries)); - compound.put("InsertedBox", previouslyUnwrapped.saveOptional(registries)); + compound.put("HeldBox", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(heldBox, registries)); + compound.put("InsertedBox", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(previouslyUnwrapped, registries)); if (clientPacket) return; compound.put("QueuedExitingPackages", NBTHelper.writeCompoundList(queuedExitingPackages, bis -> { diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerGenerator.java b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerGenerator.java index 4f85712896..bc3bd3e182 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerGenerator.java @@ -3,12 +3,12 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class PackagerGenerator extends SpecialBlockStateGen { @@ -23,7 +23,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String suffix = state.getOptionalValue(PackagerBlock.LINKED) .orElse(false) ? "linked" : state.getValue(PackagerBlock.POWERED) ? "powered" : ""; diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerRenderer.java b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerRenderer.java index 7d3e9dc935..304a778252 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerRenderer.java @@ -8,12 +8,12 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemDisplayContext; @@ -42,34 +42,32 @@ protected void renderSafe(PackagerBlockEntity be, float partialTicks, PoseStack var hatchModel = getHatchModel(be); SuperByteBuffer sbb = CachedBuffers.partial(hatchModel, blockState); - sbb.translate(Vec3.atLowerCornerOf(facing.getNormal()) + sbb.translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(.49999f)) .rotateYCenteredDegrees(AngleHelper.horizontalAngle(facing)) .rotateXCenteredDegrees(AngleHelper.verticalAngle(facing)) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); sbb = CachedBuffers.partial(getTrayModel(blockState), blockState); - sbb.translate(Vec3.atLowerCornerOf(facing.getNormal()) + sbb.translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(trayOffset)) .rotateYCenteredDegrees(facing.toYRot()) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } if (!renderedBox.isEmpty()) { ms.pushPose(); var msr = TransformStack.of(ms); - msr.translate(Vec3.atLowerCornerOf(facing.getNormal()) + msr.translate(Vec3.atLowerCornerOf(facing.getUnitVec3i()) .scale(trayOffset)) .translate(.5f, .5f, .5f) .rotateYDegrees(facing.toYRot()) .translate(0, 2 / 16f, 0) .scale(1.49f, 1.49f, 1.49f); - Minecraft.getInstance() - .getItemRenderer() - .renderStatic(null, renderedBox, ItemDisplayContext.FIXED, false, ms, buffer, be.getLevel(), light, - overlay, 0); + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() + .renderStatic(renderedBox, ItemDisplayContext.FIXED, light, overlay, ms, buffer, be.getLevel(), 0); ms.popPose(); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerVisual.java b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerVisual.java index e7e909d389..ab7271fc41 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/PackagerVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/PackagerVisual.java @@ -12,7 +12,7 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; @@ -37,7 +37,7 @@ public PackagerVisual(VisualizationContext ctx, T blockEntity, float partialTick Direction facing = blockState.getValue(PackagerBlock.FACING) .getOpposite(); - var lowerCorner = Vec3.atLowerCornerOf(facing.getNormal()); + var lowerCorner = Vec3.atLowerCornerOf(facing.getUnitVec3i()); hatch.setIdentityTransform() .translate(getVisualPosition()) .translate(lowerCorner @@ -72,7 +72,7 @@ public void animate(float partialTick) { Direction facing = blockState.getValue(PackagerBlock.FACING) .getOpposite(); - var lowerCorner = Vec3.atLowerCornerOf(facing.getNormal()); + var lowerCorner = Vec3.atLowerCornerOf(facing.getUnitVec3i()); tray.setIdentityTransform() .translate(getVisualPosition()) diff --git a/src/main/java/com/simibubi/create/content/logistics/packager/repackager/RepackagerBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packager/repackager/RepackagerBlockEntity.java index dcf0c2600c..8e047aa07d 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packager/repackager/RepackagerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packager/repackager/RepackagerBlockEntity.java @@ -143,9 +143,9 @@ protected void attemptToRepackage(IItemHandler targetInv) { public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.REPACKAGER.get(), - (be, context) -> be.inventory + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.inventory) ); if (Mods.COMPUTERCRAFT.isLoaded()) { diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBehaviour.java index f655c38108..4db77c15d6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBehaviour.java @@ -26,7 +26,7 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.TickBasedCache; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.core.GlobalPos; import net.minecraft.core.HolderLookup; @@ -88,7 +88,7 @@ public static Collection getAllPresent(UUID freq, b } public static void keepAlive(LogisticallyLinkedBehaviour behaviour) { - boolean onClient = behaviour.blockEntity.getLevel().isClientSide; + boolean onClient = behaviour.blockEntity.getLevel().isClientSide(); if (behaviour.redstonePower == 15) return; try { @@ -131,7 +131,7 @@ public void lazyTick() { @Override public void initialize() { super.initialize(); - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; if (!loadedGlobally && global) { @@ -212,9 +212,9 @@ public boolean mayInteract(Player player) { public boolean mayInteractMessage(Player player) { boolean mayInteract = Create.LOGISTICS.mayInteract(freqId, player); if (!mayInteract) - player.displayClientMessage(CreateLang.translate("logistically_linked.protected") + player.sendSystemMessage(CreateLang.translate("logistically_linked.protected") .style(ChatFormatting.RED) - .component(), true); + .component()); return mayInteract; } @@ -233,13 +233,13 @@ public boolean isSafeNBT() { @Override public void writeSafe(CompoundTag tag, HolderLookup.Provider registries) { - tag.putUUID("Freq", freqId); + tag.put("Freq", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(freqId)); } @Override public void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.write(tag, registries, clientPacket); - tag.putUUID("Freq", freqId); + tag.put("Freq", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(freqId)); tag.putInt("Power", redstonePower); tag.putBoolean("Added", addedGlobally); } @@ -247,10 +247,10 @@ public void write(CompoundTag tag, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - if (tag.hasUUID("Freq")) - freqId = tag.getUUID("Freq"); - redstonePower = tag.getInt("Power"); - addedGlobally = tag.getBoolean("Added"); + if (tag.contains("Freq")) + freqId = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(tag.get("Freq")); + redstonePower = tag.getIntOr("Power", 0); + addedGlobally = tag.getBooleanOr("Added", false); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBlockItem.java index f28df05fe6..1604ef7130 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedBlockItem.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.logistics.packagerLink; -import java.util.List; import java.util.UUID; +import java.util.function.Consumer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -9,6 +9,8 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; @@ -19,16 +21,14 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.component.CustomData; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; public class LogisticallyLinkedBlockItem extends BlockItem { @@ -47,41 +47,42 @@ public static boolean isTuned(ItemStack pStack) { @Nullable public static UUID networkFromStack(ItemStack pStack) { - CompoundTag tag = pStack.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); - if (!tag.hasUUID("Freq")) + CompoundTag tag = LegacyBlockEntityDataComponentBridge.get(pStack); + if (!tag.contains("Freq")) return null; - return tag.getUUID("Freq"); + return LegacyNbtUtilsBridge.loadUUID(tag.get("Freq")); } @Override public void appendHoverText(@NotNull ItemStack stack, @NotNull TooltipContext tooltipContext, - @NotNull List tooltipComponents, @NotNull TooltipFlag tooltipFlag) { - super.appendHoverText(stack, tooltipContext, tooltipComponents, tooltipFlag); + @NotNull TooltipDisplay tooltipDisplay, @NotNull Consumer tooltipComponents, + @NotNull TooltipFlag tooltipFlag) { + super.appendHoverText(stack, tooltipContext, tooltipDisplay, tooltipComponents, tooltipFlag); - CompoundTag tag = stack.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); - if (!tag.hasUUID("Freq")) + CompoundTag tag = LegacyBlockEntityDataComponentBridge.get(stack); + if (!tag.contains("Freq")) return; - CreateLang.translate("logistically_linked.tooltip") + tooltipComponents.accept(CreateLang.translate("logistically_linked.tooltip") .style(ChatFormatting.GOLD) - .addTo(tooltipComponents); + .component()); - CreateLang.translate("logistically_linked.tooltip_clear") + tooltipComponents.accept(CreateLang.translate("logistically_linked.tooltip_clear") .style(ChatFormatting.GRAY) - .addTo(tooltipComponents); + .component()); } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + public InteractionResult use(Level level, Player player, InteractionHand usedHand) { ItemStack stack = player.getItemInHand(usedHand); if (isTuned(stack)) { - if (level.isClientSide) { + if (level.isClientSide()) { level.playSound(player, player.blockPosition(), SoundEvents.ITEM_FRAME_REMOVE_ITEM, SoundSource.BLOCKS, 0.75f, 1.0f); } else { - player.displayClientMessage(CreateLang.translateDirect("logistically_linked.cleared"), true); + player.sendSystemMessage(CreateLang.translateDirect("logistically_linked.cleared")); stack.remove(DataComponents.BLOCK_ENTITY_DATA); } - return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + return InteractionResult.SUCCESS.heldItemTransformedTo(stack); } else { return super.use(level, player, usedHand); } @@ -104,7 +105,7 @@ public InteractionResultHolder use(Level level, Player player, Intera boolean tuned = isTuned(stack); if (link != null) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; if (!link.mayInteractMessage(player)) return InteractionResult.SUCCESS; @@ -114,22 +115,21 @@ public InteractionResultHolder use(Level level, Player player, Intera } InteractionResult useOn = super.useOn(pContext); - if (level.isClientSide || useOn == InteractionResult.FAIL) + if (level.isClientSide() || useOn == InteractionResult.FAIL) return useOn; - player.displayClientMessage(tuned ? CreateLang.translateDirect("logistically_linked.connected") - : CreateLang.translateDirect("logistically_linked.new_network_started"), true); + player.sendSystemMessage(tuned ? CreateLang.translateDirect("logistically_linked.connected") + : CreateLang.translateDirect("logistically_linked.new_network_started")); return useOn; } public static void assignFrequency(ItemStack stack, Player player, UUID frequency) { - CompoundTag tag = stack.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); - tag.putUUID("Freq", frequency); + CompoundTag tag = LegacyBlockEntityDataComponentBridge.get(stack); + tag.put("Freq", LegacyNbtUtilsBridge.createUUID(frequency)); - player.displayClientMessage(CreateLang.translateDirect("logistically_linked.tuned"), true); + player.sendSystemMessage(CreateLang.translateDirect("logistically_linked.tuned")); - BlockEntity.addEntityType(tag, ((IBE) ((BlockItem) stack.getItem()).getBlock()).getBlockEntityType()); - stack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(tag)); + LegacyBlockEntityDataComponentBridge.set(stack, ((IBE) ((BlockItem) stack.getItem()).getBlock()).getBlockEntityType(), tag); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedClientHandler.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedClientHandler.java index 7918c6b86d..2154c51e4b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedClientHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticallyLinkedClientHandler.java @@ -7,16 +7,17 @@ import com.simibubi.create.content.logistics.factoryBoard.FactoryPanelBehaviour; import com.simibubi.create.content.logistics.factoryBoard.FactoryPanelConnectionHandler; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; -import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; public class LogisticallyLinkedClientHandler { @@ -34,11 +35,11 @@ public static void tick() { || !LogisticallyLinkedBlockItem.isTuned(mainHandItem)) return; - CompoundTag tag = mainHandItem.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); - if (!tag.hasUUID("Freq")) + CompoundTag tag = LegacyBlockEntityDataComponentBridge.get(mainHandItem); + if (!tag.contains("Freq")) return; - UUID uuid = tag.getUUID("Freq"); + UUID uuid = LegacyNbtUtilsBridge.loadUUID(tag.get("Freq")); previouslyHeldFrequency = uuid; for (LogisticallyLinkedBehaviour behaviour : LogisticallyLinkedBehaviour.getAllPresent(uuid, false, true)) { @@ -47,7 +48,7 @@ public static void tick() { .getShape(player.level(), be.getBlockPos()); if (shape.isEmpty()) continue; - if (!player.canInteractWithBlock(be.getBlockPos(), 64)) + if (player.distanceToSqr(Vec3.atCenterOf(be.getBlockPos())) > 64 * 64) continue; for (int i = 0; i < shape.toAabbs() .size(); i++) { diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsManager.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsManager.java index c180da5281..4b4eaee32e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsManager.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsManager.java @@ -28,7 +28,7 @@ import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; import com.simibubi.create.foundation.utility.TickBasedCache; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.world.item.ItemStack; public class LogisticsManager { diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetwork.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetwork.java index d3ef4b4ab9..ee8faddfa6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetwork.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetwork.java @@ -6,7 +6,7 @@ import com.simibubi.create.Create; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.GlobalPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.Registries; @@ -38,36 +38,36 @@ public LogisticsNetwork(UUID networkId) { public CompoundTag write(HolderLookup.Provider registries) { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", id); + tag.put("Id", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(id)); tag.put("Promises", panelPromises.write(registries)); tag.put("Links", NBTHelper.writeCompoundList(totalLinks, p -> { CompoundTag nbt = new CompoundTag(); - nbt.put("Pos", NbtUtils.writeBlockPos(p.pos())); + nbt.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(p.pos())); if (p.dimension() != Level.OVERWORLD) - NBTHelper.writeResourceLocation(nbt, "Dim", p.dimension().location()); + NBTHelper.writeIdentifier(nbt, "Dim", p.dimension().identifier()); return nbt; })); if (owner != null) - tag.putUUID("Owner", owner); + tag.put("Owner", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(owner)); tag.putBoolean("Locked", locked); return tag; } public static LogisticsNetwork read(CompoundTag tag, HolderLookup.Provider registries) { - LogisticsNetwork network = new LogisticsNetwork(tag.getUUID("Id")); - network.panelPromises = RequestPromiseQueue.read(tag.getCompound("Promises"), registries, Create.LOGISTICS::markDirty); + LogisticsNetwork network = new LogisticsNetwork(com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(tag.get("Id"))); + network.panelPromises = RequestPromiseQueue.read(tag.getCompoundOrEmpty("Promises"), registries, Create.LOGISTICS::markDirty); - NBTHelper.iterateCompoundList(tag.getList("Links", Tag.TAG_COMPOUND), nbt -> { + NBTHelper.iterateCompoundList(tag.getListOrEmpty("Links"), nbt -> { network.totalLinks.add(GlobalPos.of(nbt.contains("Dim") - ? ResourceKey.create(Registries.DIMENSION, NBTHelper.readResourceLocation(nbt, "Dim")) + ? ResourceKey.create(Registries.DIMENSION, NBTHelper.readIdentifier(nbt, "Dim")) : Level.OVERWORLD, NBTHelper.readBlockPos(nbt, "Pos"))); }); - network.owner = tag.contains("Owner") ? tag.getUUID("Owner") : null; - network.locked = tag.getBoolean("Locked"); + network.owner = tag.contains("Owner") ? com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(tag.get("Owner")) : null; + network.locked = tag.getBooleanOr("Locked", false); return network; } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetworkSavedData.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetworkSavedData.java index db297a0497..e1dad5a78c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetworkSavedData.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/LogisticsNetworkSavedData.java @@ -4,24 +4,30 @@ import java.util.Map; import java.util.UUID; +import com.mojang.serialization.Codec; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.GlobalRegistryAccess; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.saveddata.SavedData; +import net.minecraft.world.level.saveddata.SavedDataType; public class LogisticsNetworkSavedData extends SavedData { + private static final SavedDataType TYPE = + new SavedDataType<>(Create.asResource("create_logistics"), level -> new LogisticsNetworkSavedData(), + level -> codec(level.registryAccess())); + private Map logisticsNetworks = new HashMap<>(); - public static SavedData.Factory factory() { - return new SavedData.Factory<>(LogisticsNetworkSavedData::new, LogisticsNetworkSavedData::load); + private static Codec codec(HolderLookup.Provider registries) { + return CompoundTag.CODEC.xmap(tag -> load(tag, registries), data -> data.save(new CompoundTag(), registries)); } - @Override public CompoundTag save(CompoundTag nbt, HolderLookup.Provider registries) { GlobalLogisticsManager logistics = Create.LOGISTICS; nbt.put("LogisticsNetworks", @@ -32,7 +38,7 @@ public CompoundTag save(CompoundTag nbt, HolderLookup.Provider registries) { private static LogisticsNetworkSavedData load(CompoundTag nbt, HolderLookup.Provider registries) { LogisticsNetworkSavedData sd = new LogisticsNetworkSavedData(); sd.logisticsNetworks = new HashMap<>(); - NBTHelper.iterateCompoundList(nbt.getList("LogisticsNetworks", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("LogisticsNetworks"), c -> { LogisticsNetwork network = LogisticsNetwork.read(c, registries); sd.logisticsNetworks.put(network.id, network); }); @@ -48,7 +54,7 @@ private LogisticsNetworkSavedData() {} public static LogisticsNetworkSavedData load(MinecraftServer server) { return server.overworld() .getDataStorage() - .computeIfAbsent(factory(), "create_logistics"); + .computeIfAbsent(TYPE); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlock.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlock.java index a5122608e1..20d5ae543f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlock.java @@ -7,9 +7,11 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,7 +20,10 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -70,16 +75,14 @@ public FluidState getFluidState(BlockState pState) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pPos); return pState; } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; int power = getPower(state, worldIn, pos); @@ -135,8 +138,8 @@ public BlockEntityType getBlockEntityType() { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlockEntity.java index abac1f741a..7b66e61bd9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkBlockEntity.java @@ -19,9 +19,9 @@ import com.simibubi.create.content.redstone.displayLink.LinkWithBulbBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -69,7 +69,7 @@ public void playEffect() { vec3 = vec3.add(Vec3.atLowerCornerOf(state.getOptionalValue(PackagerLinkBlock.FACING) .orElse(Direction.SOUTH) - .getNormal()) + .getUnitVec3i()) .scale(f * 0.125)); pulse(); @@ -98,13 +98,13 @@ public Pair processRequest(ItemStack stac protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.write(tag, registries, clientPacket); if (placedBy != null) - tag.putUUID("PlacedBy", placedBy); + tag.put("PlacedBy", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(placedBy)); } @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - placedBy = tag.contains("PlacedBy") ? tag.getUUID("PlacedBy") : null; + placedBy = tag.contains("PlacedBy") ? com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(tag.get("PlacedBy")) : null; } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkGenerator.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkGenerator.java index 357c79c98a..2822032a20 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkGenerator.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/PackagerLinkGenerator.java @@ -2,14 +2,14 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.AttachFace; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class PackagerLinkGenerator extends SpecialBlockStateGen { @@ -25,7 +25,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String variant = state.getValue(PackagerLinkBlock.FACE) == AttachFace.WALL ? "block_horizontal" : "block_vertical"; diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java index 747b64d095..9e199a426f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java @@ -9,7 +9,7 @@ import com.mojang.serialization.Codec; -import net.createmod.catnip.codecs.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiEffectPacket.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiEffectPacket.java index aa7243179f..f1663ceb9b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiEffectPacket.java @@ -5,9 +5,9 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.StreamCodec; import net.minecraft.server.level.ServerLevel; @@ -15,7 +15,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record WiFiEffectPacket(BlockPos pos) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = BlockPos.STREAM_CODEC @@ -27,8 +26,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { BlockEntity blockEntity = Minecraft.getInstance().level.getBlockEntity(pos); if (blockEntity instanceof PackagerLinkBlockEntity plbe) plbe.playEffect(); diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiParticle.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiParticle.java index a9f157bf93..981192f78f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiParticle.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/WiFiParticle.java @@ -40,17 +40,12 @@ public void tick() { @Override public Quaternionf getCustomRotation(Camera camera, float partialTicks) { - return new Quaternionf().rotateY(-camera.getYRot() * Mth.DEG_TO_RAD) + return new Quaternionf().rotateY(-camera.yRot() * Mth.DEG_TO_RAD) .mul(new Quaternionf().rotateZ(downward ? Mth.PI : 0)); } public static class Data extends BasicParticleData implements ParticleOptions { - @Override - public IBasicParticleFactory getBasicFactory() { - return WiFiParticle::new; - } - @Override public ParticleType getType() { return AllParticleTypes.WIFI.get(); diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/AutoRequestData.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/AutoRequestData.java index 3482fb74ce..a318ed2a4c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/AutoRequestData.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/AutoRequestData.java @@ -54,7 +54,7 @@ public static AutoRequestData readFromItem(Level level, Player player, BlockPos mutable.targetOffset = mutable.targetOffset.subtract(position); mutable.isValid = mutable.targetOffset.closerThan(BlockPos.ZERO, 128) && requestData.targetDim.equals(level.dimension() - .location() + .identifier() .toString()); if (player != null) diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlock.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlock.java index 836728254f..135a7af2f4 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlock.java @@ -12,13 +12,14 @@ import com.simibubi.create.content.logistics.stockTicker.StockTickerBlockEntity; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; @@ -27,13 +28,12 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.Rotation; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -80,7 +80,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pBlockState, Level pLevel, BlockPos pPos, Direction direction) { RedstoneRequesterBlockEntity req = getBlockEntity(pLevel, pPos); return req != null && req.lastRequestSucceeded ? 15 : 0; } @@ -99,17 +99,16 @@ public static void programRequester(ServerPlayer player, StockTickerBlockEntity String targetDim = player.level() .dimension() - .location() + .identifier() .toString(); AutoRequestData autoRequestData = new AutoRequestData(order, address, be.getBlockPos(), targetDim, false); autoRequestData.writeToItem(BlockPos.ZERO, stack); if (isRequester) { - CompoundTag beTag = stack.getOrDefault(DataComponents.BLOCK_ENTITY_DATA, CustomData.EMPTY).copyTag(); - beTag.putUUID("Freq", be.behaviour.freqId); - BlockEntity.addEntityType(beTag, AllBlockEntityTypes.REDSTONE_REQUESTER.get()); - stack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(beTag)); + CompoundTag beTag = LegacyBlockEntityDataComponentBridge.get(stack); + beTag.put("Freq", LegacyNbtUtilsBridge.createUUID(be.behaviour.freqId)); + LegacyBlockEntityDataComponentBridge.set(stack, AllBlockEntityTypes.REDSTONE_REQUESTER.get(), beTag); } player.setItemInHand(InteractionHand.MAIN_HAND, stack); @@ -148,8 +147,7 @@ public void setPlacedBy(Level pLevel, BlockPos requesterPos, BlockState pState, } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pNeighborBlock, - BlockPos pNeighborPos, boolean pMovedByPiston) { + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pNeighborBlock, Orientation orientation, boolean pMovedByPiston) { if (pLevel.isClientSide()) return; pLevel.setBlockAndUpdate(pPos, pState.setValue(POWERED, pLevel.hasNeighborSignal(pPos))); diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockEntity.java index 042e051ff6..4a68a60db9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockEntity.java @@ -16,8 +16,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.particles.ParticleTypes; @@ -119,11 +119,11 @@ public void triggerRequest() { @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - redstonePowered = tag.getBoolean("Powered"); - lastRequestSucceeded = tag.getBoolean("Success"); - allowPartialRequests = tag.getBoolean("AllowPartial"); - encodedRequest = CatnipCodecUtils.decode(PackageOrderWithCrafts.CODEC, registries, tag.getCompound("EncodedRequest")).orElse(PackageOrderWithCrafts.empty()); - encodedTargetAdress = tag.getString("EncodedAddress"); + redstonePowered = tag.getBooleanOr("Powered", false); + lastRequestSucceeded = tag.getBooleanOr("Success", false); + allowPartialRequests = tag.getBooleanOr("AllowPartial", false); + encodedRequest = CatnipCodecUtils.decode(PackageOrderWithCrafts.CODEC, registries, tag.getCompoundOrEmpty("EncodedRequest")).orElse(PackageOrderWithCrafts.empty()); + encodedTargetAdress = tag.getStringOr("EncodedAddress", ""); } @Override @@ -149,7 +149,7 @@ public InteractionResult use(Player player) { return InteractionResult.PASS; if (player instanceof FakePlayer) return InteractionResult.PASS; - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; if (!behaviour.mayInteractMessage(player)) return InteractionResult.SUCCESS; diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockItem.java index fe2dde2c15..1a575b2d46 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterBlockItem.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.logistics.redstoneRequester; import java.util.List; +import java.util.function.Consumer; import com.simibubi.create.AllDataComponents; import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedBlockItem; @@ -10,6 +11,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.level.block.Block; public class RedstoneRequesterBlockItem extends LogisticallyLinkedBlockItem { @@ -19,19 +21,22 @@ public RedstoneRequesterBlockItem(Block pBlock, Properties pProperties) { } @Override - public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, List tooltipComponents, TooltipFlag tooltipFlag) { + public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, TooltipDisplay tooltipDisplay, + Consumer tooltipComponents, TooltipFlag tooltipFlag) { if (!isTuned(stack)) return; if (!stack.has(AllDataComponents.AUTO_REQUEST_DATA)) { - super.appendHoverText(stack, tooltipContext, tooltipComponents, tooltipFlag); + super.appendHoverText(stack, tooltipContext, tooltipDisplay, tooltipComponents, tooltipFlag); return; } - CreateLang.translate("logistically_linked.tooltip") + tooltipComponents.accept(CreateLang.translate("logistically_linked.tooltip") .style(ChatFormatting.GOLD) - .addTo(tooltipComponents); - RedstoneRequesterBlock.appendRequesterTooltip(stack, tooltipComponents); + .component()); + List requesterTooltip = new java.util.ArrayList<>(); + RedstoneRequesterBlock.appendRequesterTooltip(stack, requesterTooltip); + requesterTooltip.forEach(tooltipComponents); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterConfigurationPacket.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterConfigurationPacket.java index b33c9b68b9..3c6524a2a1 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterConfigurationPacket.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterEffectPacket.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterEffectPacket.java index ef088a6453..ba9a7cd59c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterEffectPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterEffectPacket.java @@ -5,13 +5,12 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record RedstoneRequesterEffectPacket(BlockPos pos, boolean success) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -26,8 +25,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (Minecraft.getInstance().level.getBlockEntity(pos) instanceof RedstoneRequesterBlockEntity plbe) plbe.playEffect(success); } diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterMenu.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterMenu.java index 18ba3b5db7..5971dc53be 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterMenu.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterMenu.java @@ -17,7 +17,6 @@ import net.minecraft.world.inventory.MenuType; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.SlotItemHandler; @@ -51,7 +50,6 @@ protected boolean allowRepeats() { } @Override - @OnlyIn(Dist.CLIENT) protected RedstoneRequesterBlockEntity createOnClient(RegistryFriendlyByteBuf extraData) { BlockPos blockPos = extraData.readBlockPos(); return AllBlocks.REDSTONE_REQUESTER.get() diff --git a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterScreen.java b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterScreen.java index 3c7ef45f25..9834d969a2 100644 --- a/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/redstoneRequester/RedstoneRequesterScreen.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; @@ -70,7 +70,7 @@ protected void init() { int y = getGuiTop(); if (addressBox == null) { - addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 55, y + 68, 110, 10, false); + addressBox = new AddressEditBox(this, font, x + 55, y + 68, 110, 10, false); addressBox.setValue(menu.contentHolder.encodedTargetAdress); addressBox.setTextColor(0x555555); } @@ -104,7 +104,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics pGuiGraphics, float pPartialTick, int pMouseX, int pMouseY) { + protected void renderBg(GuiGraphicsExtractor pGuiGraphics, float pPartialTick, int pMouseX, int pMouseY) { int x = getGuiLeft(); int y = getGuiTop(); AllGuiTextures.REDSTONE_REQUESTER.render(pGuiGraphics, x + 3, y); @@ -114,7 +114,7 @@ protected void renderBg(GuiGraphics pGuiGraphics, float pPartialTick, int pMouse Component title = CreateLang.text(stack.getHoverName() .getString()) .component(); - pGuiGraphics.drawString(font, title, x + 117 - font.width(title) / 2, y + 4, 0x3D3C48, false); + pGuiGraphics.text(font, title, x + 117 - font.width(title) / 2, y + 4, 0x3D3C48, false); GuiGameElement.of(stack) .scale(3) @@ -122,7 +122,7 @@ protected void renderBg(GuiGraphics pGuiGraphics, float pPartialTick, int pMouse } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderForeground(graphics, mouseX, mouseY, partialTicks); int x = getGuiLeft(); int y = getGuiTop(); @@ -133,17 +133,17 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl ItemStack itemStack = menu.ghostInventory.getStackInSlot(i); if (itemStack.isEmpty()) continue; - PoseStack ms = graphics.pose(); + PoseStack ms = new PoseStack(); ms.pushPose(); ms.translate(0, 0, 100); - graphics.renderItemDecorations(font, itemStack, inputX, inputY, "" + amounts.get(i)); + graphics.itemDecorations(font, itemStack, inputX, inputY, "" + amounts.get(i)); ms.popPose(); } if (addressBox.isHovered() && !addressBox.isFocused()) { if (addressBox.getValue() .isBlank()) - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.redstone_requester.requester_address") .color(ScrollInput.HEADER_RGB) .component(), @@ -159,7 +159,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl .component()), mouseX, mouseY); else - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.redstone_requester.requester_address_given") .color(ScrollInput.HEADER_RGB) .component(), @@ -225,7 +225,7 @@ public List getExtraAreas() { @Override public void removed() { - CatnipServices.NETWORK.sendToServer(new RedstoneRequesterConfigurationPacket(menu.contentHolder.getBlockPos(), + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new RedstoneRequesterConfigurationPacket(menu.contentHolder.getBlockPos(), addressBox.getValue(), allowPartial.green, amounts)); super.removed(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/CraftableBigItemStack.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/CraftableBigItemStack.java index adf98ff580..bbc43d0794 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/CraftableBigItemStack.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/CraftableBigItemStack.java @@ -2,6 +2,7 @@ import java.util.List; +import com.simibubi.create.compat.jei.category.CreateRecipeCategory; import com.simibubi.create.content.logistics.BigItemStack; import net.minecraft.world.item.ItemStack; @@ -19,11 +20,11 @@ public CraftableBigItemStack(ItemStack stack, Recipe recipe) { } public List getIngredients() { - return recipe.getIngredients(); + return CreateRecipeCategory.getIngredients(recipe); } public int getOutputCount(Level level) { - return recipe.getResultItem(level.registryAccess()) + return CreateRecipeCategory.getResultItem(recipe) .getCount(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/LogisticalStockResponsePacket.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/LogisticalStockResponsePacket.java index 6834dae9b0..d39749c7c8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/LogisticalStockResponsePacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/LogisticalStockResponsePacket.java @@ -5,17 +5,16 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.content.logistics.BigItemStack; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record LogisticalStockResponsePacket(boolean lastPacket, BlockPos pos, List items) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -31,8 +30,7 @@ public PacketTypeProvider getTypeProvider() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (Minecraft.getInstance().level.getBlockEntity(pos) instanceof StockTickerBlockEntity stbe) stbe.receiveStockPacket(items, lastPacket); } diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrder.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrder.java index 93cda9eaf2..84f8139aec 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrder.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrder.java @@ -7,7 +7,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.content.logistics.BigItemStack; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrderWithCrafts.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrderWithCrafts.java index f70d3bae6b..ac08df79fa 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrderWithCrafts.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/PackageOrderWithCrafts.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.logistics.BigItemStack; import com.simibubi.create.content.logistics.packager.InventorySummary; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryHidingPacket.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryHidingPacket.java index 331036924a..53a0b439eb 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryHidingPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryHidingPacket.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryMenu.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryMenu.java index a2dfdd817a..da79a68f30 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryMenu.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryMenu.java @@ -68,7 +68,7 @@ protected void saveData(StockTickerBlockEntity contentHolder) {} @Override public boolean stillValid(Player player) { - return !contentHolder.isRemoved() && player.canInteractWithBlock(contentHolder.getBlockPos(), 4); + return !contentHolder.isRemoved() && player.isWithinBlockInteractionRange(contentHolder.getBlockPos(), 0); } class InactiveSlot extends Slot { diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryScreen.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryScreen.java index 0a4edc7ec9..abf260c2dd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryScreen.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockKeeperCategoryScreen.java @@ -10,7 +10,6 @@ import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.AllIcons; @@ -20,16 +19,17 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; +import net.minecraft.client.input.KeyEvent; import net.minecraft.client.renderer.Rect2i; import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; @@ -92,8 +92,8 @@ protected void startEditing(int index) { editorEditBox = new EditBox(font, leftPos + 47, topPos + 28, 124, 10, Component.empty()); editorEditBox.setTextColor(0xffeeeeee); editorEditBox.setBordered(false); - editorEditBox.setFocused(false); - editorEditBox.mouseClicked(0, 0, 0); + editorEditBox.setFocused(true); + setFocused(editorEditBox); editorEditBox.setMaxLength(28); editorEditBox.setValue(index == -1 || schedule.get(index) .isEmpty() ? CreateLang.translate("gui.stock_ticker.new_category") @@ -105,7 +105,7 @@ protected void startEditing(int index) { editingIndex = index; editingItem = index == -1 ? ItemStack.EMPTY : schedule.get(index); menu.proxyInventory.setStackInSlot(0, editingItem); - CatnipServices.NETWORK.sendToServer(new GhostItemSubmitPacket(editingItem, 0)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GhostItemSubmitPacket(editingItem, 0)); addRenderableWidget(editorConfirm); addRenderableWidget(editorEditBox); @@ -136,7 +136,7 @@ protected void stopEditing() { schedule.set(editingIndex, stackInSlot); } - CatnipServices.NETWORK.sendToServer(new GhostItemSubmitPacket(ItemStack.EMPTY, 0)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GhostItemSubmitPacket(ItemStack.EMPTY, 0)); editingItem = null; editorConfirm = null; @@ -162,26 +162,28 @@ protected void containerTick() { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - partialTicks = AnimationTickHolder.getPartialTicksUI(); + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + partialTicks = AnimationTickHolder.getGuiPartialTicks(); if (menu.slotsActive) - super.render(graphics, mouseX, mouseY, partialTicks); + super.extractRenderState(graphics, mouseX, mouseY, partialTicks); else { - renderBackground(graphics, mouseX, mouseY, partialTicks); renderBg(graphics, partialTicks, mouseX, mouseY); for (Renderable widget : this.renderables) - widget.render(graphics, mouseX, mouseY, partialTicks); + widget.extractRenderState(graphics, mouseX, mouseY, partialTicks); renderForeground(graphics, mouseX, mouseY, partialTicks); } } - protected void renderCategories(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - PoseStack matrixStack = graphics.pose(); + @Override + public void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + extractRenderState(graphics, mouseX, mouseY, partialTicks); + } + protected void renderCategories(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int yOffset = 25; List entries = schedule; - float scrollOffset = -scroll.getValue(partialTicks); + int scrollOffset = Mth.floor(-scroll.getValue(partialTicks)); graphics.enableScissor( leftPos + 3, topPos + 16, @@ -189,45 +191,40 @@ protected void renderCategories(GuiGraphics graphics, int mouseX, int mouseY, fl ); for (int i = 0; i <= entries.size(); i++) { - matrixStack.pushPose(); - matrixStack.translate(0, scrollOffset, 0); + int entryY = yOffset + scrollOffset; if (i == entries.size()) { - AllGuiTextures.STOCK_KEEPER_CATEGORY_NEW.render(graphics, leftPos + 7, topPos + yOffset); - matrixStack.popPose(); + AllGuiTextures.STOCK_KEEPER_CATEGORY_NEW.render(graphics, leftPos + 7, topPos + entryY); break; } ItemStack scheduleEntry = entries.get(i); - int cardY = yOffset; + int cardY = entryY; int cardHeight = renderScheduleEntry(graphics, i, scheduleEntry, cardY, mouseX, mouseY, partialTicks); yOffset += cardHeight; - - matrixStack.popPose(); } graphics.disableScissor(); } - public int renderScheduleEntry(GuiGraphics graphics, int i, ItemStack entry, int yOffset, int mouseX, int mouseY, + public int renderScheduleEntry(GuiGraphicsExtractor graphics, int i, ItemStack entry, int yOffset, int mouseX, int mouseY, float partialTicks) { int cardWidth = CARD_WIDTH; int cardHeader = CARD_HEADER; int cardHeight = cardHeader; - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(leftPos + 7, topPos + yOffset, 0); + int x = leftPos + 7; + int y = topPos + yOffset; - AllGuiTextures.STOCK_KEEPER_CATEGORY_ENTRY.render(graphics, 0, 0); + AllGuiTextures.STOCK_KEEPER_CATEGORY_ENTRY.render(graphics, x, y); if (i > 0) - AllGuiTextures.STOCK_KEEPER_CATEGORY_UP.render(graphics, cardWidth + 12, cardHeader - 18); + AllGuiTextures.STOCK_KEEPER_CATEGORY_UP.render(graphics, x + cardWidth + 12, y + cardHeader - 18); if (i < schedule.size() - 1) - AllGuiTextures.STOCK_KEEPER_CATEGORY_DOWN.render(graphics, cardWidth + 12, cardHeader - 9); + AllGuiTextures.STOCK_KEEPER_CATEGORY_DOWN.render(graphics, x + cardWidth + 12, y + cardHeader - 9); - graphics.renderItem(entry, 14, 1); - graphics.drawString(font, + graphics.item(entry, x + 14, y + 1); + graphics.text(font, entry.isEmpty() ? CreateLang.translate("gui.stock_ticker.empty_category_name_placeholder") .string() : entry.getHoverName() @@ -236,16 +233,15 @@ public int renderScheduleEntry(GuiGraphics graphics, int i, ItemStack entry, int + (entry.getHoverName() .getString() .length() > 20 ? "..." : ""), - 35, 5, 0x656565, false); + x + 35, y + 5, 0x656565, false); - matrixStack.popPose(); return cardHeight; } private final Component clickToEdit = CreateLang.translateDirect("gui.schedule.lmb_edit") .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC); - public boolean action(@Nullable GuiGraphics graphics, double mouseX, double mouseY, int click) { + public boolean action(@Nullable GuiGraphicsExtractor graphics, double mouseX, double mouseY, int click) { // Prevent actions outside the window for them if (mouseX < leftPos || mouseX >= leftPos + imageWidth || mouseY < topPos + 15 || mouseY >= topPos + 99) return false; @@ -293,7 +289,7 @@ public boolean action(@Nullable GuiGraphics graphics, double mouseX, double mous .component()), mx, my); if (click == 0) { if (!entry.isEmpty()) - CatnipServices.NETWORK.sendToServer(new StockKeeperCategoryRefundPacket(menu.contentHolder.getBlockPos(), entry)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new StockKeeperCategoryRefundPacket(menu.contentHolder.getBlockPos(), entry)); entries.remove(entry); init(); } @@ -352,9 +348,9 @@ public boolean action(@Nullable GuiGraphics graphics, double mouseX, double mous return false; } - private void renderActionTooltip(@Nullable GuiGraphics graphics, List tooltip, int mx, int my) { + private void renderActionTooltip(@Nullable GuiGraphicsExtractor graphics, List tooltip, int mx, int my) { if (graphics != null) - graphics.renderTooltip(font, tooltip, Optional.empty(), mx, my); + graphics.setTooltipForNextFrame(font, tooltip, Optional.empty(), mx, my); } @Override @@ -384,7 +380,7 @@ public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { if (editingItem == null) return super.keyPressed(pKeyCode, pScanCode, pModifiers); - InputConstants.Key mouseKey = InputConstants.getKey(pKeyCode, pScanCode); + InputConstants.Key mouseKey = InputConstants.getKey(new KeyEvent(pKeyCode, pScanCode, pModifiers)); boolean hitEscape = pKeyCode == GLFW.GLFW_KEY_ESCAPE; boolean hitEnter = getFocused() instanceof EditBox && (pKeyCode == 257 || pKeyCode == 335); boolean hitE = getFocused() == null && minecraft.options.keyInventory.isActiveAndMatches(mouseKey); @@ -415,7 +411,7 @@ public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, doubl } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderForeground(graphics, mouseX, mouseY, partialTicks); GuiGameElement.of(AllBlocks.STOCK_TICKER.asStack()). key.location() .toString() .contains(value))) @@ -460,20 +453,16 @@ protected void containerTick() { } @Override - public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { - PoseStack ms = guiGraphics.pose(); - ms.pushPose(); - ms.translate(0, 0, -300); - super.renderBackground(guiGraphics, mouseX, mouseY, partialTick); - ms.popPose(); + public void extractBackground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTick) { + super.extractBackground(graphics, mouseX, mouseY, partialTick); } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { - if (this != minecraft.screen) + public void extractContents(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + if (this != minecraft.gui.screen()) return; // stencil buffer does not cooperate with ponders gui fade out - PoseStack ms = graphics.pose(); + Matrix3x2fStack ms = graphics.pose(); float currentScroll = itemScroll.getValue(partialTicks); Couple hoveredSlot = getHoveredSlot(mouseX, mouseY); @@ -493,7 +482,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in // Render text input hints if (addressBox.getValue() .isBlank() && !addressBox.isFocused()) { - graphics.drawString(Minecraft.getInstance().font, CreateLang.translate("gui.stock_keeper.package_address") + graphics.text(Minecraft.getInstance().font, CreateLang.translate("gui.stock_keeper.package_address") .style(ChatFormatting.ITALIC) .component(), addressBox.getX(), addressBox.getY(), 0xff_CDBCA8, false); } @@ -502,58 +491,36 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in int entitySizeOffset = 0; LivingEntity keeper = stockKeeper.get(); if (keeper != null && keeper.isAlive()) { - ms.pushPose(); - ms.translate(0, 0, 50); + ms.pushMatrix(); entitySizeOffset = (int) (Math.max(0, keeper.getBoundingBox() .getXsize() - 1) * 50); int entitySizeOffsetY = (int) (Math.max(0, keeper.getBoundingBox() .getYsize() - 1) * 25); int entityX = x - 35 - entitySizeOffset; int entityY = y + windowHeight - 47 - entitySizeOffsetY; - InventoryScreen.renderEntityInInventoryFollowsMouse(graphics, entityX - 100, entityY - 100, entityX + 100, + InventoryScreen.extractEntityInInventoryFollowsMouse(graphics, entityX - 100, entityY - 100, entityX + 100, entityY + 100, 50, 0, mouseX, Mth.clamp(mouseY, entityY - 50, entityY + 10), keeper); - ms.popPose(); + ms.popMatrix(); } BlazeBurnerBlockEntity keeperBE = blaze.get(); if (keeperBE != null && !keeperBE.isRemoved()) { - ms.pushPose(); - int entityX = x - 35; - int entityY = y + windowHeight - 43; - ms.translate(entityX, entityY, -0); - ms.mulPose(Axis.XP.rotationDegrees(-22.5f)); - ms.mulPose(Axis.YP.rotationDegrees(-45)); - ms.scale(48, -48, 48); - float animation = keeperBE.headAnimation.getValue(AnimationTickHolder.getPartialTicks()) * .175f; - float horizontalAngle = AngleHelper.rad(270); - HeatLevel heatLevel = keeperBE.getHeatLevelForRender(); - boolean canDrawFlame = heatLevel.isAtLeast(HeatLevel.FADING); - boolean drawGoggles = keeperBE.goggles; - PartialModel drawHat = AllPartialModels.LOGISTICS_HAT; - int hashCode = keeperBE.hashCode(); - Lighting.setupForEntityInInventory(); - - VertexConsumer cutout = graphics.bufferSource().getBuffer(RenderType.cutoutMipped()); - CachedBuffers.partial(AllPartialModels.BLAZE_CAGE, keeperBE.getBlockState()) - .rotateCentered(horizontalAngle + Mth.PI, Direction.UP) - .light(LightTexture.FULL_BRIGHT) - .renderInto(ms, cutout); - - BlazeBurnerRenderer.renderShared(ms, null, graphics.bufferSource(), minecraft.level, - keeperBE.getBlockState(), heatLevel, animation, horizontalAngle, canDrawFlame, drawGoggles, drawHat, - hashCode); - Lighting.setupFor3DItems(); - ms.popPose(); + ms.pushMatrix(); + ms.translate(x - 65, y + windowHeight - 88); + ms.scale(3.25f, 3.25f); + GuiGameElement.of(keeperBE.getBlockState()) + .render(graphics, 0, 0, partialTicks); + ms.popMatrix(); } // Render static item icons if (encodeRequester) { - ms.pushPose(); - ms.translate(x + windowWidth + 5, y + windowHeight - 70, 0); - ms.scale(3.5f, 3.5f, 3.5f); + ms.pushMatrix(); + ms.translate(x + windowWidth + 5, y + windowHeight - 70); + ms.scale(3.5f, 3.5f); GuiGameElement.of(itemToProgram) - .render(graphics); - ms.popPose(); + .render(graphics, 0, 0, partialTicks); + ms.popMatrix(); } // Render ordered items @@ -564,14 +531,14 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in BigItemStack entry = itemsToOrder.get(index); boolean isStackHovered = index == hoveredSlot.getSecond() && hoveredSlot.getFirst() == -1; - ms.pushPose(); - ms.translate(itemsX + index * colWidth, orderY, 0); + ms.pushMatrix(); + ms.translate(itemsX + index * colWidth, orderY); renderItemEntry(graphics, 1, entry, isStackHovered, true); - ms.popPose(); + ms.popMatrix(); } if (itemsToOrder.size() > 9) { - graphics.drawString(font, Component.literal("[+" + (itemsToOrder.size() - 9) + "]"), x + windowWidth - 40, + graphics.text(font, Component.literal("[+" + (itemsToOrder.size() - 9) + "]"), x + windowWidth - 40, orderY + 21, 0xF8F8EC); } @@ -582,7 +549,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in MutableComponent headerTitle = CreateLang.translate("gui.stock_keeper.title") .component(); - graphics.drawString(font, headerTitle, x + windowWidth / 2 - font.width(headerTitle) / 2, y + 4, 0x714A40, + graphics.text(font, headerTitle, x + windowWidth / 2 - font.width(headerTitle) / 2, y + 4, 0x714A40, false); MutableComponent component = CreateLang.translate(encodeRequester ? "gui.stock_keeper.configure" : "gui.stock_keeper.send") @@ -590,17 +557,17 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in if (justSent) { float alpha = Mth.clamp((successTicks + partialTicks - 5f) / 5f, 0f, 1f); - ms.pushPose(); - ms.translate(alpha * alpha * 50, 0, 0); + ms.pushMatrix(); + ms.translate(alpha * alpha * 50, 0); if (successTicks < 10) - graphics.drawString(font, component, x + windowWidth - 42 - font.width(component) / 2, + graphics.text(font, component, x + windowWidth - 42 - font.width(component) / 2, y + windowHeight - 35, new Color(0x252525).setAlpha(1 - alpha * alpha) .getRGB(), false); - ms.popPose(); + ms.popMatrix(); } else { - graphics.drawString(font, component, x + windowWidth - 42 - font.width(component) / 2, + graphics.text(font, component, x + windowWidth - 42 - font.width(component) / 2, y + windowHeight - 35, 0x252525, false); } @@ -615,10 +582,10 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in .getRGB(); int w = font.width(msg) + 14; AllGuiTextures.STOCK_KEEPER_REQUEST_BANNER_L.render(graphics, msgX - 8, msgY - 4); - UIRenderHelper.drawStretched(graphics, msgX, msgY - 4, w, 16, 0, + UIRenderHelper.drawStretched(graphics, msgX, msgY - 4, w, 16, AllGuiTextures.STOCK_KEEPER_REQUEST_BANNER_M); AllGuiTextures.STOCK_KEEPER_REQUEST_BANNER_R.render(graphics, msgX + font.width(msg) + 10, msgY - 4); - graphics.drawString(font, msg, msgX + 5, msgY, c3, false); + graphics.text(font, msg, msgX + 5, msgY, c3, false); } } @@ -629,8 +596,8 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in graphics.enableScissor(itemWindowX - 5, itemWindowY, itemWindowX2 + 10, itemWindowY2); - ms.pushPose(); - ms.translate(0, -currentScroll * rowHeight, 0); + ms.pushMatrix(); + ms.translate(0, -currentScroll * rowHeight); // BG for (int sliceY = -2; sliceY < getMaxScroll() * rowHeight + windowHeight - 72; sliceY += @@ -644,10 +611,10 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in // Search bar AllGuiTextures.STOCK_KEEPER_REQUEST_SEARCH.render(graphics, x + 42, searchBox.getY() - 5); - searchBox.render(graphics, mouseX, mouseY, partialTicks); + searchBox.extractRenderState(graphics, mouseX, mouseY, partialTicks); if (searchBox.getValue() .isBlank() && !searchBox.isFocused()) - graphics.drawString(font, searchBox.getMessage(), + graphics.text(font, searchBox.getMessage(), x + windowWidth / 2 - font.width(searchBox.getMessage()) / 2, searchBox.getY(), 0xff4A2D31, false); // Something isnt right @@ -662,11 +629,11 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in for (int i = 0; i < split.size(); i++) { FormattedCharSequence sequence = split.get(i); int lineWidth = font.width(sequence); - graphics.drawString(font, sequence, x + windowWidth / 2 - lineWidth / 2 + 1, + graphics.text(font, sequence, x + windowWidth / 2 - lineWidth / 2 + 1, itemsY + 20 + 1 + i * (font.lineHeight + 1), new Color(0x4A2D31).setAlpha(alpha) .getRGB(), false); - graphics.drawString(font, sequence, x + windowWidth / 2 - lineWidth / 2, + graphics.text(font, sequence, x + windowWidth / 2 - lineWidth / 2, itemsY + 20 + i * (font.lineHeight + 1), new Color(0xF8F8EC).setAlpha(alpha) .getRGB(), false); @@ -685,8 +652,8 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in if (!categories.isEmpty()) { (categoryEntry.hidden ? AllGuiTextures.STOCK_KEEPER_CATEGORY_HIDDEN : AllGuiTextures.STOCK_KEEPER_CATEGORY_SHOWN).render(graphics, itemsX, itemsY + categoryY + 6); - graphics.drawString(font, categoryEntry.name, itemsX + 10, itemsY + categoryY + 8, 0x4A2D31, false); - graphics.drawString(font, categoryEntry.name, itemsX + 9, itemsY + categoryY + 7, 0xF8F8EC, false); + graphics.text(font, categoryEntry.name, itemsX + 10, itemsY + categoryY + 8, 0x4A2D31, false); + graphics.text(font, categoryEntry.name, itemsX + 9, itemsY + categoryY + 7, 0xF8F8EC, false); if (categoryEntry.hidden) continue; } @@ -703,10 +670,10 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in boolean isStackHovered = index == hoveredSlot.getSecond() && categoryIndex == hoveredSlot.getFirst(); BigItemStack entry = category.get(index); - ms.pushPose(); - ms.translate(itemsX + (index % cols) * colWidth, pY, 0); + ms.pushMatrix(); + ms.translate(itemsX + (index % cols) * colWidth, pY); renderItemEntry(graphics, 1, entry, isStackHovered, false); - ms.popPose(); + ms.popMatrix(); } } @@ -721,7 +688,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in (isLocked ? AllGuiTextures.STOCK_KEEPER_REQUEST_LOCKED : AllGuiTextures.STOCK_KEEPER_REQUEST_UNLOCKED) .render(graphics, lockX, besideSearchButtonY); - ms.popPose(); + ms.popMatrix(); graphics.disableScissor(); // Scroll bar @@ -731,24 +698,24 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in if (barSize < windowH - 2) { int barX = itemsX + cols * colWidth; int barY = y + 15; - ms.pushPose(); - ms.translate(0, (currentScroll * rowHeight) / totalH * (windowH - 2), 0); + ms.pushMatrix(); + ms.translate(0, (currentScroll * rowHeight) / totalH * (windowH - 2)); AllGuiTextures pad = AllGuiTextures.STOCK_KEEPER_REQUEST_SCROLL_PAD; - graphics.blit(pad.location, barX, barY, pad.getWidth(), barSize, pad.getStartX(), pad.getStartY(), + graphics.blit(RenderPipelines.GUI_TEXTURED, pad.location, barX, barY, pad.getStartX(), pad.getStartY(), pad.getWidth(), barSize, pad.getWidth(), pad.getHeight(), 256, 256); AllGuiTextures.STOCK_KEEPER_REQUEST_SCROLL_TOP.render(graphics, barX, barY); if (barSize > 16) AllGuiTextures.STOCK_KEEPER_REQUEST_SCROLL_MID.render(graphics, barX, barY + barSize / 2 - 4); AllGuiTextures.STOCK_KEEPER_REQUEST_SCROLL_BOT.render(graphics, barX, barY + barSize - 5); - ms.popPose(); + ms.popMatrix(); } // Render JEI imported if (recipesToOrder.size() > 0) { int jeiX = x + (windowWidth - colWidth * recipesToOrder.size()) / 2 + 1; int jeiY = orderY - 31; - ms.pushPose(); - ms.translate(jeiX, jeiY, 200); + ms.pushMatrix(); + ms.translate(jeiX, jeiY); int xoffset = -3; AllGuiTextures.STOCK_KEEPER_REQUEST_BLUEPRINT_LEFT.render(graphics, xoffset, -3); xoffset += 10; @@ -761,18 +728,18 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in for (int index = 0; index < recipesToOrder.size(); index++) { CraftableBigItemStack craftableBigItemStack = recipesToOrder.get(index); boolean isStackHovered = index == hoveredSlot.getSecond() && -2 == hoveredSlot.getFirst(); - ms.pushPose(); - ms.translate(index * colWidth, 0, 0); + ms.pushMatrix(); + ms.translate(index * colWidth, 0); renderItemEntry(graphics, 1, craftableBigItemStack, isStackHovered, true); - ms.popPose(); + ms.popMatrix(); } - ms.popPose(); + ms.popMatrix(); } } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderForeground(graphics, mouseX, mouseY, partialTicks); float currentScroll = itemScroll.getValue(partialTicks); Couple hoveredSlot = getHoveredSlot(mouseX, mouseY); @@ -793,9 +760,9 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl if (lines.size() > 0) lines.set(0, CreateLang.translateDirect("gui.stock_keeper.craft", lines.get(0) .copy())); - graphics.renderComponentTooltip(font, lines, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, lines, mouseX, mouseY); } else - graphics.renderTooltip(font, entry.stack, mouseX, mouseY); + graphics.setTooltipForNextFrame(font, entry.stack, mouseX, mouseY); } if (currentScroll < 1 && mouseY > besideSearchButtonY && mouseY <= besideSearchButtonY + 15) { @@ -803,7 +770,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl if (Mods.JEI.isLoaded() && mouseX > jeiSyncX && mouseX <= jeiSyncX + 15) { SearchSyncMode mode = AllConfigs.client().syncRecipeViewerSearch.get(); String langKey = "gui.stock_keeper.jei_sync." + mode.getSerializedName(); - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of( CreateLang.translate(langKey) .component(), @@ -819,7 +786,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl // Render tooltip of lock option if (isAdmin && mouseX > lockX && mouseX <= lockX + 15) { - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of( CreateLang.translate(isLocked ? "gui.stock_keeper.network_locked" : "gui.stock_keeper.network_open") .component(), @@ -840,7 +807,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl // Render tooltip of address input if (addressBox.getValue() .isBlank() && !addressBox.isFocused() && addressBox.isHovered()) { - graphics.renderComponentTooltip(font, List.of(CreateLang.translate("gui.factory_panel.restocker_address") + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang.translate("gui.factory_panel.restocker_address") .color(ScrollInput.HEADER_RGB) .component(), CreateLang.translate("gui.schedule.lmb_edit") @@ -851,7 +818,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl } } - private void renderItemEntry(GuiGraphics graphics, float scale, BigItemStack entry, boolean isStackHovered, + private void renderItemEntry(GuiGraphicsExtractor graphics, float scale, BigItemStack entry, boolean isStackHovered, boolean isRenderingOrders) { int customCount = entry.count; ItemStack stackWithCount = entry.stack.copyWithCount(customCount); @@ -870,34 +837,32 @@ private void renderItemEntry(GuiGraphics graphics, float scale, BigItemStack ent } boolean craftable = entry instanceof CraftableBigItemStack; - PoseStack ms = graphics.pose(); - ms.pushPose(); + Matrix3x2fStack ms = graphics.pose(); + ms.pushMatrix(); float scaleFromHover = 1; if (isStackHovered) scaleFromHover += .075f; - ms.translate((colWidth - 18) / 2.0, (rowHeight - 18) / 2.0, 0); - ms.translate(18 / 2.0, 18 / 2.0, 0); - ms.scale(scale, scale, scale); - ms.scale(scaleFromHover, scaleFromHover, scaleFromHover); - ms.translate(-18 / 2.0, -18 / 2.0, 0); + ms.translate((colWidth - 18) / 2f, (rowHeight - 18) / 2f); + ms.translate(18 / 2f, 18 / 2f); + ms.scale(scale, scale); + ms.scale(scaleFromHover, scaleFromHover); + ms.translate(-18 / 2f, -18 / 2f); if (customCount != 0 || craftable) GuiGameElement.of(stackWithCount) - .render(graphics); - ms.popPose(); + .render(graphics, 0, 0, 0); + ms.popMatrix(); - ms.pushPose(); - ms.translate(0, 0, 190); + ms.pushMatrix(); if (customCount != 0 || craftable) - graphics.renderItemDecorations(font, stackWithCount, 1, 1, ""); - ms.translate(0, 0, 10); + graphics.itemDecorations(font, stackWithCount, 1, 1, ""); if (customCount > 1 || craftable) drawItemCount(graphics, entry.count, customCount); - ms.popPose(); + ms.popMatrix(); } - private void drawItemCount(GuiGraphics graphics, int count, int customCount) { + private void drawItemCount(GuiGraphicsExtractor graphics, int count, int customCount) { count = customCount; String text = count >= 1000000 ? (count / 1000000) + "m" : count >= 10000 ? (count / 1000) + "k" @@ -936,8 +901,8 @@ private void drawItemCount(GuiGraphics graphics, int count, int customCount) { break; } - RenderSystem.enableBlend(); - graphics.blit(NUMBERS.location, 14 + x, 10, 0, NUMBERS.getStartX() + xOffset, NUMBERS.getStartY(), + LegacyRenderSystemBridge.enableBlend(); + graphics.blit(RenderPipelines.GUI_TEXTURED, NUMBERS.location, 14 + x, 10, NUMBERS.getStartX() + xOffset, NUMBERS.getStartY(), spriteWidth, NUMBERS.getHeight(), 256, 256); x += spriteWidth - 1; } @@ -1094,7 +1059,10 @@ private Component getTroubleshootingMessage() { } @Override - public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { + public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) { + double pMouseX = event.x(); + double pMouseY = event.y(); + int pButton = event.button(); boolean lmb = pButton == GLFW.GLFW_MOUSE_BUTTON_LEFT; boolean rmb = pButton == GLFW.GLFW_MOUSE_BUTTON_RIGHT; @@ -1109,14 +1077,14 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { } if (addressBox.isFocused()) { - boolean result = addressBox.mouseClicked(pMouseX, pMouseY, pButton); + boolean result = addressBox.mouseClicked(event, doubleClick); if (addressBox.isHovered() || result) return result; addressBox.setFocused(false); } if (searchBox.isFocused()) { if (searchBox.isHovered()) - return searchBox.mouseClicked(pMouseX, pMouseY, pButton); + return searchBox.mouseClicked(event, doubleClick); searchBox.setFocused(false); } @@ -1127,7 +1095,7 @@ && pMouseY < getGuiTop() + windowHeight - 82) { scrollHandleActive = true; if (minecraft.isWindowActive()) GLFW.glfwSetInputMode(minecraft.getWindow() - .getWindow(), 208897, GLFW.GLFW_CURSOR_HIDDEN); + .handle(), 208897, GLFW.GLFW_CURSOR_HIDDEN); return true; } @@ -1149,7 +1117,7 @@ && pMouseY < getGuiTop() + windowHeight - 82) { // Lock if (isAdmin && pMouseX > lockX && pMouseX <= lockX + 15) { isLocked = !isLocked; - CatnipServices.NETWORK.sendToServer(new StockKeeperLockPacket(blockEntity.getBlockPos(), isLocked)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new StockKeeperLockPacket(blockEntity.getBlockPos(), isLocked)); playUiSound(SoundEvents.UI_BUTTON_CLICK.value(), 1, 1); return true; } @@ -1193,7 +1161,7 @@ && pMouseY < getGuiTop() + windowHeight - 82) { } if (hoveredSlot == noneHovered || !lmb && !rmb) - return super.mouseClicked(pMouseX, pMouseY, pButton); + return super.mouseClicked(event, doubleClick); // Items boolean orderClicked = hoveredSlot.getFirst() == -1; @@ -1241,14 +1209,14 @@ && pMouseY < getGuiTop() + windowHeight - 82) { } @Override - public boolean mouseReleased(double pMouseX, double pMouseY, int pButton) { - if (pButton == GLFW.GLFW_MOUSE_BUTTON_LEFT && scrollHandleActive) { + public boolean mouseReleased(MouseButtonEvent event) { + if (event.button() == GLFW.GLFW_MOUSE_BUTTON_LEFT && scrollHandleActive) { scrollHandleActive = false; if (minecraft.isWindowActive()) GLFW.glfwSetInputMode(minecraft.getWindow() - .getWindow(), 208897, GLFW.GLFW_CURSOR_NORMAL); + .handle(), 208897, GLFW.GLFW_CURSOR_NORMAL); } - return super.mouseReleased(pMouseX, pMouseY, pButton); + return super.mouseReleased(event); } @Override @@ -1338,9 +1306,26 @@ private int getMaxScroll() { } @Override - public boolean mouseDragged(double pMouseX, double pMouseY, int pButton, double pDragX, double pDragY) { - if (pButton != GLFW.GLFW_MOUSE_BUTTON_LEFT || !scrollHandleActive) - return super.mouseDragged(pMouseX, pMouseY, pButton, pDragX, pDragY); + public boolean hasShiftDown() { + long handle = minecraft.getWindow() + .handle(); + return GLFW.glfwGetKey(handle, GLFW.GLFW_KEY_LEFT_SHIFT) == GLFW.GLFW_PRESS + || GLFW.glfwGetKey(handle, GLFW.GLFW_KEY_RIGHT_SHIFT) == GLFW.GLFW_PRESS; + } + + @Override + public boolean hasControlDown() { + long handle = minecraft.getWindow() + .handle(); + return GLFW.glfwGetKey(handle, GLFW.GLFW_KEY_LEFT_CONTROL) == GLFW.GLFW_PRESS + || GLFW.glfwGetKey(handle, GLFW.GLFW_KEY_RIGHT_CONTROL) == GLFW.GLFW_PRESS; + } + + @Override + public boolean mouseDragged(MouseButtonEvent event, double pDragX, double pDragY) { + double pMouseY = event.y(); + if (event.button() != GLFW.GLFW_MOUSE_BUTTON_LEFT || !scrollHandleActive) + return super.mouseDragged(event, pDragX, pDragY); Window window = minecraft.getWindow(); double scaleX = window.getGuiScaledWidth() / (double) window.getScreenWidth(); @@ -1363,20 +1348,20 @@ public boolean mouseDragged(double pMouseX, double pMouseY, int pButton, double if (minecraft.isWindowActive()) { double forceX = (barX + 2) / scaleX; double forceY = Mth.clamp(pMouseY, minY, maxY) / scaleY; - GLFW.glfwSetCursorPos(window.getWindow(), forceX, forceY); + GLFW.glfwSetCursorPos(window.handle(), forceX, forceY); } return true; } @Override - public boolean charTyped(char pCodePoint, int pModifiers) { + public boolean charTyped(CharacterEvent event) { if (ignoreTextInput) return false; - if (addressBox.isFocused() && addressBox.charTyped(pCodePoint, pModifiers)) + if (addressBox.isFocused() && addressBox.charTyped(event)) return true; String s = searchBox.getValue(); - if (!searchBox.charTyped(pCodePoint, pModifiers)) + if (!searchBox.charTyped(event)) return false; if (!Objects.equals(s, searchBox.getValue())) { refreshSearchNextTick = true; @@ -1387,9 +1372,10 @@ public boolean charTyped(char pCodePoint, int pModifiers) { } @Override - public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { + public boolean keyPressed(KeyEvent event) { + int pKeyCode = event.key(); ignoreTextInput = false; - if (!addressBox.isFocused() && !searchBox.isFocused() && minecraft.options.keyChat.matches(pKeyCode, pScanCode)) { + if (!addressBox.isFocused() && !searchBox.isFocused() && minecraft.options.keyChat.matches(event)) { ignoreTextInput = true; searchBox.setFocused(true); return true; @@ -1405,13 +1391,13 @@ public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { return true; } - if (addressBox.isFocused() && addressBox.keyPressed(pKeyCode, pScanCode, pModifiers)) + if (addressBox.isFocused() && addressBox.keyPressed(event)) return true; String s = searchBox.getValue(); - if (!searchBox.keyPressed(pKeyCode, pScanCode, pModifiers)) { + if (!searchBox.keyPressed(event)) { return searchBox.isFocused() && searchBox.isVisible() && pKeyCode != 256 - || super.keyPressed(pKeyCode, pScanCode, pModifiers); + || super.keyPressed(event); } if (!Objects.equals(s, searchBox.getValue())) { refreshSearchNextTick = true; @@ -1424,10 +1410,10 @@ public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { @Override public void removed() { BlockPos pos = blockEntity.getBlockPos(); - CatnipServices.NETWORK.sendToServer( + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( new PackageOrderRequestPacket(pos, PackageOrderWithCrafts.empty(), addressBox.getValue(), false)); - CatnipServices.NETWORK - .sendToServer(new StockKeeperCategoryHidingPacket(pos, new ArrayList<>(hiddenCategories))); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( + new StockKeeperCategoryHidingPacket(pos, new ArrayList<>(hiddenCategories))); super.removed(); } @@ -1498,7 +1484,7 @@ private void sendIt() { order = new PackageOrderWithCrafts(order.orderedStacks(), craftList); } - CatnipServices.NETWORK.sendToServer( + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( new PackageOrderRequestPacket(blockEntity.getBlockPos(), order, addressBox.getValue(), encodeRequester)); itemsToOrder = new ArrayList<>(); @@ -1511,9 +1497,9 @@ private void sendIt() { } @Override - public boolean keyReleased(int pKeyCode, int pScanCode, int pModifiers) { + public boolean keyReleased(KeyEvent event) { ignoreTextInput = false; - return super.keyReleased(pKeyCode, pScanCode, pModifiers); + return super.keyReleased(event); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlock.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlock.java index 3fa85d3867..6f4513c761 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlock.java @@ -12,10 +12,11 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -24,6 +25,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.HorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -33,7 +35,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class StockTickerBlock extends HorizontalDirectionalBlock implements IBE, IWrenchable { @@ -58,13 +59,13 @@ protected void createBlockStateDefinition(Builder pBuilder) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (stack.getItem() instanceof LogisticallyLinkedBlockItem) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; return onBlockEntityUseItemOn(level, pos, stbe -> { if (!stbe.behaviour.mayInteractMessage(player)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (!level.isClientSide() && !stbe.receivedPayments.isEmpty()) { for (int i = 0; i < stbe.receivedPayments.getSlots(); i++) @@ -73,7 +74,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev stbe.receivedPayments.extractItem(i, stbe.receivedPayments.getStackInSlot(i) .getCount(), false)); AllSoundEvents.playItemPickup(player); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (player instanceof ServerPlayer sp) { @@ -84,7 +85,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev .sendStatus(player); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @@ -93,14 +94,13 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, return AllShapes.STOCK_TICKER; } - @OnlyIn(Dist.CLIENT) public PartialModel getHat(LevelAccessor level, BlockPos pos, LivingEntity keeper) { return AllPartialModels.LOGISTICS_HAT; } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlockEntity.java index 1417121dd2..2291678445 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerBlockEntity.java @@ -28,11 +28,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -52,7 +51,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.items.IItemHandler; @@ -83,9 +81,9 @@ public StockTickerBlockEntity(BlockEntityType type, BlockPos pos, BlockState public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.STOCK_TICKER.get(), - (be, context) -> be.receivedPayments + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.receivedPayments) ); if (Mods.COMPUTERCRAFT.isLoaded()) { @@ -111,7 +109,7 @@ public void invalidate() { public void refreshClientStockSnapshot() { ticksSinceLastUpdate = 0; - CatnipServices.NETWORK.sendToServer(new LogisticalStockRequestPacket(worldPosition)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> StockTickerClient.refreshStockSnapshot(worldPosition)); } public IItemHandler getReceivedPaymentsHandler() { @@ -163,12 +161,14 @@ public void tick() { protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.write(tag, registries, clientPacket); tag.putString("PreviousAddress", previouslyUsedAddress); - tag.put("ReceivedPayments", receivedPayments.serializeNBT(registries)); + tag.put("ReceivedPayments", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.serializeHandler(receivedPayments, registries)); tag.put("Categories", NBTHelper.writeItemList(categories, registries)); tag.put("HiddenCategories", NBTHelper.writeCompoundList(hiddenCategoriesByPlayer.entrySet(), e -> { CompoundTag c = new CompoundTag(); - c.putUUID("Id", e.getKey()); - c.putIntArray("Indices", e.getValue()); + c.put("Id", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(e.getKey())); + c.putIntArray("Indices", e.getValue().stream() + .mapToInt(Integer::intValue) + .toArray()); return c; })); @@ -179,19 +179,20 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - previouslyUsedAddress = tag.getString("PreviousAddress"); - receivedPayments.deserializeNBT(registries, tag.getCompound("ReceivedPayments")); - categories = NBTHelper.readItemList(tag.getList("Categories", Tag.TAG_COMPOUND), registries); + previouslyUsedAddress = tag.getStringOr("PreviousAddress", ""); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(receivedPayments, registries, tag.getCompoundOrEmpty("ReceivedPayments")); + categories = NBTHelper.readItemList(tag.getListOrEmpty("Categories"), registries); categories.removeIf(stack -> !stack.isEmpty() && !(stack.getItem() instanceof FilterItem)); hiddenCategoriesByPlayer.clear(); - NBTHelper.iterateCompoundList(tag.getList("HiddenCategories", Tag.TAG_COMPOUND), - c -> hiddenCategoriesByPlayer.put(c.getUUID("Id"), IntStream.of(c.getIntArray("Indices")) + NBTHelper.iterateCompoundList(tag.getListOrEmpty("HiddenCategories"), + c -> hiddenCategoriesByPlayer.put(com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(c.get("Id")), + IntStream.of(c.getIntArray("Indices").orElse(new int[0])) .boxed() .toList())); if (clientPacket) - activeLinks = tag.getInt("ActiveLinks"); + activeLinks = tag.getIntOr("ActiveLinks", 0); } public void receiveStockPacket(List stacks, boolean endOfTransmission) { @@ -244,11 +245,12 @@ public boolean isKeeperPresent() { } @Override - @OnlyIn(Dist.CLIENT) public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { if (receivedPayments.isEmpty()) return false; - if (!behaviour.mayAdministrate(Minecraft.getInstance().player)) + if (level == null || !level.isClientSide()) + return false; + if (!StockTickerClient.mayAdministrate(this)) return false; CreateLang.translate("stock_ticker.contains_payments") @@ -260,7 +262,7 @@ public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { summary.add(receivedPayments.getStackInSlot(i)); for (BigItemStack entry : summary.getStacksByCount()) CreateLang.builder() - .text(Component.translatable(entry.stack.getDescriptionId()) + .text(entry.stack.getHoverName() .getString() + " x" + entry.count) .style(ChatFormatting.GREEN) .forGoggles(tooltip); diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerClient.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerClient.java new file mode 100644 index 0000000000..877fccd687 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerClient.java @@ -0,0 +1,19 @@ +package com.simibubi.create.content.logistics.stockTicker; + +import net.createmod.catnip.api.client.network.ClientNetworkHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; + +public class StockTickerClient { + + public static void refreshStockSnapshot(BlockPos pos) { + ClientNetworkHelper.INSTANCE.sendToServer(new LogisticalStockRequestPacket(pos)); + } + + public static boolean mayAdministrate(StockTickerBlockEntity blockEntity) { + Player player = Minecraft.getInstance().player; + return player != null && blockEntity.behaviour.mayAdministrate(player); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerInteractionHandler.java b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerInteractionHandler.java index 63c0ed252e..284a808fc6 100644 --- a/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerInteractionHandler.java +++ b/src/main/java/com/simibubi/create/content/logistics/stockTicker/StockTickerInteractionHandler.java @@ -15,8 +15,8 @@ import com.simibubi.create.content.logistics.tableCloth.ShoppingListItem.ShoppingList; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -71,9 +71,9 @@ public static boolean interactWithLogisticsManagerAt(Player player, Level level, return false; if (!stbe.behaviour.mayInteract(player)) { - player.displayClientMessage(CreateLang.translate("stock_keeper.locked") + player.sendSystemMessage(CreateLang.translate("stock_keeper.locked") .style(ChatFormatting.RED) - .component(), true); + .component()); return true; } @@ -155,7 +155,7 @@ private static void interactWithShop(Player player, Level level, BlockPos target InventorySummary tally = paymentEntries.copy(); List toTransfer = new ArrayList<>(); - for (int i = 0; i < player.getInventory().items.size(); i++) { + for (int i = 0; i < player.getInventory().getNonEquipmentItems().size(); i++) { ItemStack item = player.getInventory() .getItem(i); if (item.isEmpty()) diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/ShoppingListItem.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/ShoppingListItem.java index 6f78d8d4b7..a7969d6cf9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/ShoppingListItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/ShoppingListItem.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.function.Consumer; import org.jetbrains.annotations.Nullable; @@ -16,9 +17,9 @@ import com.simibubi.create.foundation.utility.CreateLang; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.UUIDUtil; @@ -27,11 +28,11 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; @@ -128,8 +129,9 @@ public static String getAddress(ItemStack stack) { } @Override - public void appendHoverText(ItemStack stack, TooltipContext context, List tooltipComponents, + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay display, Consumer tooltipConsumer, TooltipFlag tooltipFlag) { + List tooltipComponents = new ArrayList<>(); ShoppingList list = getList(stack); if (list != null) { @@ -179,17 +181,19 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { + public InteractionResult use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { if (pUsedHand == InteractionHand.OFF_HAND || pPlayer == null || !pPlayer.isShiftKeyDown()) - return new InteractionResultHolder<>(InteractionResult.PASS, pPlayer.getItemInHand(pUsedHand)); + return InteractionResult.PASS; CreateLang.translate("table_cloth.shopping_list_discarded") .sendStatus(pPlayer); pPlayer.playSound(SoundEvents.BOOK_PAGE_TURN); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, ItemStack.EMPTY); + return InteractionResult.SUCCESS.heldItemTransformedTo(ItemStack.EMPTY); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlock.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlock.java index 76b119f435..d78337547f 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlock.java @@ -14,14 +14,15 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.IHaveBigOutline; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -46,7 +47,7 @@ public class TableClothBlock extends Block implements IHaveBigOutline, IWrenchab public static final BooleanProperty HAS_BE = BooleanProperty.create("entity"); - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); private DyeColor colour; @@ -86,28 +87,28 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (hitResult.getDirection() == Direction.DOWN) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; ItemStack heldItem = player.getItemInHand(hand); boolean shiftKeyDown = player.isShiftKeyDown(); if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (placementHelper.matchesItem(heldItem)) { if (shiftKeyDown) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) heldItem.getItem(), player, hand, hitResult); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if ((shiftKeyDown || heldItem.isEmpty()) && !state.getValue(HAS_BE)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (!level.isClientSide() && !state.getValue(HAS_BE)) level.setBlockAndUpdate(pos, state.cycle(HAS_BE)); @@ -147,7 +148,7 @@ public VoxelShape getInteractionShape(BlockState pState, BlockGetter pLevel, Blo } @Override - public VoxelShape getOcclusionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) { + protected VoxelShape getOcclusionShape(BlockState pState) { return AllShapes.TABLE_CLOTH_OCCLUSION; } @@ -174,12 +175,8 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - if (!pNewState.getOptionalValue(HAS_BE) - .orElse(false)) - pNewState = Blocks.AIR.defaultBlockState(); - - IBE.onRemove(pState, pLevel, pPos, pNewState); + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java index 9b3ba5c59b..a1baf3017e 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockEntity.java @@ -27,10 +27,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -43,7 +43,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.Containers; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ChunkPos; @@ -115,7 +115,7 @@ public void invalidateItemsForRender() { public void notifyShopUpdate() { if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new ShopUpdatePacket(worldPosition)); + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new ShopUpdatePacket(worldPosition)); } @Override @@ -124,7 +124,7 @@ public void lazyTick() { BlockPos relativePos = worldPosition.relative(facing); sideOccluded = AllBlockTags.TABLE_CLOTHS.matches(level.getBlockState(relativePos)) || Block.isFaceFull(level.getBlockState(relativePos.below()) - .getOcclusionShape(level, relativePos.below()), facing.getOpposite()); + .getOcclusionShape(), facing.getOpposite()); } @Override @@ -136,7 +136,7 @@ public boolean isShop() { return !requestData.encodedRequest().isEmpty(); } - public ItemInteractionResult use(Player player, BlockHitResult ray) { + public InteractionResult use(Player player, BlockHitResult ray) { if (isShop()) return useShop(player); @@ -144,22 +144,22 @@ public ItemInteractionResult use(Player player, BlockHitResult ray) { if (heldItem.isEmpty()) { if (manuallyAddedItems.isEmpty()) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; player.setItemInHand(InteractionHand.MAIN_HAND, manuallyAddedItems.remove(manuallyAddedItems.size() - 1)); level.playSound(null, worldPosition, SoundEvents.ITEM_FRAME_REMOVE_ITEM, SoundSource.BLOCKS, 0.5f, 1f); if (manuallyAddedItems.isEmpty() && !computerBehaviour.hasAttachedComputer()) { level.setBlock(worldPosition, getBlockState().setValue(TableClothBlock.HAS_BE, false), Block.UPDATE_ALL); if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new RemoveBlockEntityPacket(worldPosition)); + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new RemoveBlockEntityPacket(worldPosition)); } else notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (manuallyAddedItems.size() >= 4) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; level.playSound(null, worldPosition, SoundEvents.ITEM_FRAME_ADD_ITEM, SoundSource.BLOCKS, 0.5f, 1f); manuallyAddedItems.add(heldItem.copyWithCount(1)); @@ -169,7 +169,7 @@ public ItemInteractionResult use(Player player, BlockHitResult ray) { if (heldItem.isEmpty()) player.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY); notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } public boolean targetsPriceTag(Player player, BlockHitResult ray) { @@ -178,7 +178,7 @@ public boolean targetsPriceTag(Player player, BlockHitResult ray) { .subtract(Vec3.atLowerCornerOf(worldPosition))); } - public ItemInteractionResult useShop(Player player) { + public InteractionResult useShop(Player player) { ItemStack itemInHand = player.getItemInHand(InteractionHand.MAIN_HAND); ItemStack prevListItem = ItemStack.EMPTY; boolean addOntoList = false; @@ -205,14 +205,14 @@ public ItemInteractionResult useShop(Player player) { CreateLang.translate("stock_keeper.shopping_list_empty_hand") .sendStatus(player); AllSoundEvents.DENY.playOnServer(level, worldPosition, 0.5f, 1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (getPaymentItem().isEmpty()) { CreateLang.translate("stock_keeper.no_price_set") .sendStatus(player); AllSoundEvents.DENY.playOnServer(level, worldPosition, 0.5f, 1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } UUID tickerID = null; @@ -227,7 +227,7 @@ public ItemInteractionResult useShop(Player player) { .style(ChatFormatting.RED) .sendStatus(player); AllSoundEvents.DENY.playOnServer(level, worldPosition, 0.5f, 1); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (stockLevel == 0) { @@ -244,7 +244,7 @@ public ItemInteractionResult useShop(Player player) { .placeItemBackInInventory(prevListItem); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } ShoppingList list = new ShoppingList(new ArrayList<>(), owner, tickerID); @@ -290,7 +290,7 @@ public ItemInteractionResult useShop(Player player) { player.getInventory() .placeItemBackInInventory(newListItem); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } public int getStockLevelForTrade(@Nullable ShoppingList otherPurchases) { @@ -331,17 +331,17 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean tag.putInt("Facing", facing.get2DDataValue()); tag.put("RequestData", CatnipCodecUtils.encode(AutoRequestData.CODEC, registries, requestData).orElseThrow()); if (owner != null) - tag.putUUID("OwnerUUID", owner); + tag.put("OwnerUUID", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.createUUID(owner)); } @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); - manuallyAddedItems = NBTHelper.readItemList(tag.getList("Items", Tag.TAG_COMPOUND), registries); + manuallyAddedItems = NBTHelper.readItemList(tag.getListOrEmpty("Items"), registries); requestData = CatnipCodecUtils.decode(AutoRequestData.CODEC, registries, tag.get("RequestData")) .orElse(new AutoRequestData()); - owner = tag.contains("OwnerUUID") ? tag.getUUID("OwnerUUID") : null; - facing = Direction.from2DDataValue(Mth.positiveModulo(tag.getInt("Facing"), 4)); + owner = tag.contains("OwnerUUID") ? com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.loadUUID(tag.get("OwnerUUID")) : null; + facing = Direction.from2DDataValue(Mth.positiveModulo(tag.getIntOr("Facing", 0), 4)); } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockItem.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockItem.java index 6298f12968..6971449645 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothBlockItem.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.logistics.tableCloth; import java.util.List; +import java.util.function.Consumer; import com.simibubi.create.AllDataComponents; import com.simibubi.create.content.logistics.redstoneRequester.RedstoneRequesterBlock; @@ -11,6 +12,7 @@ import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.level.block.Block; public class TableClothBlockItem extends BlockItem { @@ -25,16 +27,19 @@ public boolean isFoil(ItemStack pStack) { } @Override - public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, List tooltipComponents, TooltipFlag tooltipFlag) { - super.appendHoverText(stack, tooltipContext, tooltipComponents, tooltipFlag); + public void appendHoverText(ItemStack stack, TooltipContext tooltipContext, TooltipDisplay tooltipDisplay, + Consumer tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, tooltipContext, tooltipDisplay, tooltipComponents, tooltipFlag); if (!isFoil(stack)) return; - CreateLang.translate("table_cloth.shop_configured") + tooltipComponents.accept(CreateLang.translate("table_cloth.shop_configured") .style(ChatFormatting.GOLD) - .addTo(tooltipComponents); + .component()); - RedstoneRequesterBlock.appendRequesterTooltip(stack, tooltipComponents); + List requesterTooltip = new java.util.ArrayList<>(); + RedstoneRequesterBlock.appendRequesterTooltip(stack, requesterTooltip); + requesterTooltip.forEach(tooltipComponents); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothFilterSlot.java index ffb76be2b2..2bc46aa408 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothFilterSlot.java @@ -4,7 +4,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.LevelAccessor; diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothModel.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothModel.java index 68449c84ce..a6a0cd4ff8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothModel.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothModel.java @@ -14,22 +14,22 @@ import com.simibubi.create.foundation.model.BakedQuadHelper; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; public class TableClothModel extends BakedModelWrapperWithData { @@ -69,35 +69,13 @@ private List getCorner(TableClothBlock block, int corner, @NotNull Ra private List getCornerQuads(RandomSource rand, RenderType renderType, TextureAtlasSprite targetSprite, PartialModel pm) { - List quads = new ArrayList<>(); - - for (BakedQuad quad : pm.get() - .getQuads(null, null, rand, ModelData.EMPTY, renderType)) { - TextureAtlasSprite original = quad.getSprite(); - BakedQuad newQuad = BakedQuadHelper.clone(quad); - int[] vertexData = newQuad.getVertices(); - for (int vertex = 0; vertex < 4; vertex++) { - BakedQuadHelper.setU(vertexData, vertex, targetSprite - .getU(SpriteShiftEntry.getUnInterpolatedU(original, BakedQuadHelper.getU(vertexData, vertex)))); - BakedQuadHelper.setV(vertexData, vertex, targetSprite - .getV(SpriteShiftEntry.getUnInterpolatedV(original, BakedQuadHelper.getV(vertexData, vertex)))); - } - quads.add(newQuad); - } - - return quads; + return List.of(); } @Override protected Builder gatherModelData(Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state, ModelData blockEntityData) { - List culledSides = new ArrayList<>(); - for (Direction side : Iterate.horizontalDirections) - if (!Block.shouldRenderFace(state, world, pos, side, pos.relative(side))) - culledSides.add(side); - if (culledSides.isEmpty()) - return builder; - return builder.with(CULL_PROPERTY, new CullData(EnumSet.copyOf(culledSides))); + return builder; } @Override diff --git a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothRenderer.java b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothRenderer.java index 85f4c27259..0b651c7269 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/tableCloth/TableClothRenderer.java @@ -9,13 +9,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; +import net.createmod.catnip.api.client.render.CachedBuffers; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -41,7 +41,7 @@ protected void renderSafe(TableClothBlockEntity blockEntity, float partialTicks, .rotateCentered(rotationInRadians, Direction.UP) .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.cutout())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutout())); } ms.pushPose(); @@ -58,8 +58,7 @@ protected void renderSafe(TableClothBlockEntity blockEntity, float partialTicks, ms.mulPose(Axis.YP.rotationDegrees(-i * (360f / stacks.size()) - 45f)); } - BakedModel bakedModel = Minecraft.getInstance() - .getItemRenderer() + BakedModel bakedModel = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .getModel(entry, null, null, 0); boolean blockItem = bakedModel.isGui3d(); if (!blockItem) diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlock.java index dcf8129841..aa2e7de6de 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlock.java @@ -10,12 +10,13 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.levelWrappers.WrappedLevel; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.level.wrapper.WrappedLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.context.BlockPlaceContext; @@ -24,6 +25,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.BlockEntity; @@ -33,6 +35,7 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; @@ -104,13 +107,13 @@ public void onPlace(BlockState state, Level world, BlockPos pos, BlockState p_22 } @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { + public BlockState updateShape(BlockState state, LevelReader worldIn, ScheduledTickAccess ticks, + BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { if (facing.getAxis() .isVertical()) return state; - if (!(worldIn instanceof WrappedLevel) && !worldIn.isClientSide()) - withBlockEntityDo(worldIn, currentPos, BeltTunnelBlockEntity::updateTunnelConnections); + if (worldIn instanceof LevelAccessor levelAccessor && !(worldIn instanceof WrappedLevel) && !levelAccessor.isClientSide()) + withBlockEntityDo(levelAccessor, currentPos, BeltTunnelBlockEntity::updateTunnelConnections); BlockState tunnelState = getTunnelState(worldIn, currentPos); if (tunnelState.getValue(HORIZONTAL_AXIS) == state.getValue(HORIZONTAL_AXIS)) { if (hasWindow(tunnelState) == hasWindow(state)) @@ -198,7 +201,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { Shape shape = state.getValue(SHAPE); shape = shape == Shape.CLOSED ? Shape.WINDOW : Shape.CLOSED; Level world = context.getLevel(); - if (!world.isClientSide) + if (!world.isClientSide()) world.setBlock(context.getClickedPos(), state.setValue(SHAPE, shape), Block.UPDATE_CLIENTS); return InteractionResult.SUCCESS; } @@ -212,16 +215,14 @@ public BlockState rotate(BlockState state, Rotation rotation) { } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + protected void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return; - if (fromPos.equals(pos.below())) { - if (!canSurvive(state, worldIn, pos)) { - worldIn.destroyBlock(pos, true); - return; - } + if (!canSurvive(state, worldIn, pos)) { + worldIn.destroyBlock(pos, true); + return; } } diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java index 63f6b66fb5..01919177fd 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelBlockEntity.java @@ -16,10 +16,10 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -56,21 +56,22 @@ public BeltTunnelBlockEntity(BlockEntityType type, BlockPos pos, BlockState s public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.ANDESITE_TUNNEL.get(), (be, context) -> { if (be.cap == null) { if (AllBlocks.BELT.has(be.level.getBlockState(be.worldPosition.below()))) { BlockEntity beBelow = be.level.getBlockEntity(be.worldPosition.below()); if (beBelow != null) { - IItemHandler capBelow = be.level.getCapability(Capabilities.ItemHandler.BLOCK, be.worldPosition.below(), Direction.UP); + IItemHandler capBelow = com.simibubi.create.foundation.item.LegacyItemHandlerAdapter.of( + be.level.getCapability(Capabilities.Item.BLOCK, be.worldPosition.below(), Direction.UP)); if (capBelow != null) { be.cap = capBelow; } } } } - return be.cap; + return be.cap == null ? null : new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.cap); } ); } @@ -108,16 +109,16 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { Set newFlaps = new HashSet<>(6); - ListTag flapsNBT = compound.getList("Flaps", Tag.TAG_INT); + ListTag flapsNBT = compound.getListOrEmpty("Flaps"); for (Tag inbt : flapsNBT) if (inbt instanceof IntTag) - newFlaps.add(Direction.from3DDataValue(((IntTag) inbt).getAsInt())); + newFlaps.add(Direction.from3DDataValue(((IntTag) inbt).intValue())); sides.clear(); - ListTag sidesNBT = compound.getList("Sides", Tag.TAG_INT); + ListTag sidesNBT = compound.getListOrEmpty("Sides"); for (Tag inbt : sidesNBT) if (inbt instanceof IntTag) - sides.add(Direction.from3DDataValue(((IntTag) inbt).getAsInt())); + sides.add(Direction.from3DDataValue(((IntTag) inbt).intValue())); for (Direction d : Iterate.directions) if (!newFlaps.contains(d)) @@ -175,7 +176,7 @@ public void updateTunnelConnections() { } public void flap(Direction side, boolean inward) { - if (level.isClientSide) { + if (level.isClientSide()) { if (flaps.containsKey(side)) flaps.get(side) .setValue(inward ? -1 : 1); @@ -194,7 +195,7 @@ public void initialize() { @Override public void tick() { super.tick(); - if (!level.isClientSide) { + if (!level.isClientSide()) { if (!flapsToSend.isEmpty()) sendFlaps(); return; @@ -204,7 +205,7 @@ public void tick() { private void sendFlaps() { if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new TunnelFlapPacket(this, flapsToSend)); + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new TunnelFlapPacket(this, flapsToSend)); flapsToSend.clear(); } diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelItem.java index c7f16b52d6..bfca1362d9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelItem.java @@ -36,7 +36,7 @@ protected boolean canPlace(BlockPlaceContext ctx, BlockState state) { protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, Player p_195943_3_, ItemStack p_195943_4_, BlockState state) { boolean flag = super.updateCustomBlockEntityTag(pos, world, p_195943_3_, p_195943_4_, state); - if (!world.isClientSide) { + if (!world.isClientSide()) { BeltBlockEntity belt = BeltHelper.getSegmentBE(world, pos.below()); if (belt != null && belt.casing == CasingType.NONE) belt.setCasingType(AllBlocks.ANDESITE_TUNNEL.has(state) ? CasingType.ANDESITE : CasingType.BRASS); diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelRenderer.java index c2edb61511..8428c8cd83 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelRenderer.java @@ -7,11 +7,11 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; @@ -30,7 +30,7 @@ protected void renderSafe(BeltTunnelBlockEntity be, float partialTicks, PoseStac return; SuperByteBuffer flapBuffer = CachedBuffers.partial(AllPartialModels.BELT_TUNNEL_FLAP, be.getBlockState()); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); for (Direction direction : Iterate.directions) { if (!be.flaps.containsKey(direction)) diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelShapes.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelShapes.java index b505d33520..cbe256cc85 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelShapes.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelShapes.java @@ -2,7 +2,7 @@ import static net.minecraft.world.level.block.Block.box; -import net.createmod.catnip.math.VoxelShaper; +import net.createmod.catnip.api.math.VoxelShaper; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java index 526a5a9c89..41eae89660 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BeltTunnelVisual.java @@ -13,7 +13,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat; import net.minecraft.core.Direction; public class BeltTunnelVisual extends AbstractBlockEntityVisual implements SimpleDynamicVisual { diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlock.java index d223837709..bc68b06935 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlock.java @@ -7,14 +7,18 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; @@ -31,15 +35,15 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP return onBlockEntityUse(level, pos, be -> { if (!(be instanceof BrassTunnelBlockEntity bte)) return InteractionResult.PASS; - List stacksOfGroup = bte.grabAllStacksOfGroup(level.isClientSide); + List stacksOfGroup = bte.grabAllStacksOfGroup(level.isClientSide()); if (stacksOfGroup.isEmpty()) return InteractionResult.PASS; - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; for (ItemStack itemStack : stacksOfGroup) player.getInventory().placeItemBackInInventory(itemStack.copy()); level.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, - 1f + level.random.nextFloat()); + 1f + level.getRandom().nextFloat()); return InteractionResult.SUCCESS; }); } @@ -50,14 +54,16 @@ public BlockEntityType getBlockEntityType() { } @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { - return super.updateShape(state, facing, facingState, worldIn, currentPos, facingPos); + public BlockState updateShape(BlockState state, LevelReader worldIn, ScheduledTickAccess ticks, + BlockPos currentPos, Direction facing, BlockPos facingPos, + BlockState facingState, RandomSource random) { + return super.updateShape(state, worldIn, ticks, currentPos, facing, facingPos, facingState, random); } @Override - public void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, level, pos, newState); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel level, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, level, pos, Blocks.AIR.defaultBlockState()); + super.affectNeighborsAfterRemoval(state, level, pos, isMoving); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java index cab5e121c6..0d98a82321 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelBlockEntity.java @@ -30,10 +30,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -96,9 +96,9 @@ public BrassTunnelBlockEntity(BlockEntityType type, BlockPos pos, BlockState public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.BRASS_TUNNEL.get(), - (be, context) -> be.tunnelCapability + (be, context) -> new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(be.tunnelCapability) ); } @@ -133,7 +133,7 @@ public void tick() { return; if (stackToDistribute.isEmpty() && !syncedOutputActive) return; - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; if (distributionProgress == -1) { @@ -234,7 +234,7 @@ private void distribute(List> validTarge boolean robin = mode == SelectionMode.FORCED_ROUND_ROBIN || mode == SelectionMode.ROUND_ROBIN; if (mode == SelectionMode.RANDOMIZE) - indexStart = level.random.nextInt(amountTargets); + indexStart = level.getRandom().nextInt(amountTargets); if (mode == SelectionMode.PREFER_NEAREST || mode == SelectionMode.SYNCHRONIZE) indexStart = 0; @@ -417,7 +417,7 @@ protected ItemStack insertIntoTunnel(BrassTunnelBlockEntity tunnel, Direction si float movementSpeed = Math.max(Math.abs(beltMovementSpeed), 1 / 8f); int additionalOffset = beltMovementSpeed > 0 ? 1 : 0; Vec3 outPos = BeltHelper.getVectorForOffset(controllerBE, below.index + additionalOffset); - Vec3 outMotion = Vec3.atLowerCornerOf(side.getNormal()) + Vec3 outMotion = Vec3.atLowerCornerOf(side.getUnitVec3i()) .scale(movementSpeed) .add(0, 1 / 8f, 0); outPos.add(outMotion.normalize()); @@ -595,7 +595,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putBoolean("ConnectedLeft", connectedLeft); compound.putBoolean("ConnectedRight", connectedRight); - compound.put("StackToDistribute", stackToDistribute.saveOptional(registries)); + compound.put("StackToDistribute", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(stackToDistribute, registries)); if (stackEnteredFrom != null) NBTHelper.writeEnum(compound, "StackEnteredFrom", stackEnteredFrom); @@ -608,7 +608,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.put(filtered ? "FilteredTargets" : "Targets", NBTHelper.writeCompoundList(distributionTargets.get(filtered), pair -> { CompoundTag nbt = new CompoundTag(); - nbt.put("Pos", NbtUtils.writeBlockPos(pair.getKey())); + nbt.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pair.getKey())); nbt.putInt("Face", pair.getValue() .get3DDataValue()); return nbt; @@ -623,25 +623,25 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool boolean wasConnectedLeft = connectedLeft; boolean wasConnectedRight = connectedRight; - syncedOutputActive = compound.getBoolean("SyncedOutput"); - connectedLeft = compound.getBoolean("ConnectedLeft"); - connectedRight = compound.getBoolean("ConnectedRight"); + syncedOutputActive = compound.getBooleanOr("SyncedOutput", false); + connectedLeft = compound.getBooleanOr("ConnectedLeft", false); + connectedRight = compound.getBooleanOr("ConnectedRight", false); - stackToDistribute = ItemStack.parseOptional(registries, compound.getCompound("StackToDistribute")); + stackToDistribute = com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, compound.getCompoundOrEmpty("StackToDistribute")); stackEnteredFrom = compound.contains("StackEnteredFrom") ? NBTHelper.readEnum(compound, "StackEnteredFrom", Direction.class) : null; - distributionProgress = compound.getFloat("DistributionProgress"); - previousOutputIndex = compound.getInt("PreviousIndex"); - distributionDistanceLeft = compound.getInt("DistanceLeft"); - distributionDistanceRight = compound.getInt("DistanceRight"); + distributionProgress = compound.getFloatOr("DistributionProgress", 0); + previousOutputIndex = compound.getIntOr("PreviousIndex", 0); + distributionDistanceLeft = compound.getIntOr("DistanceLeft", 0); + distributionDistanceRight = compound.getIntOr("DistanceRight", 0); for (boolean filtered : Iterate.trueAndFalse) { distributionTargets.set(filtered, NBTHelper - .readCompoundList(compound.getList(filtered ? "FilteredTargets" : "Targets", Tag.TAG_COMPOUND), nbt -> { + .readCompoundList(compound.getListOrEmpty(filtered ? "FilteredTargets" : "Targets"), nbt -> { BlockPos pos = NBTHelper.readBlockPos(nbt, "Pos"); - Direction face = Direction.from3DDataValue(nbt.getInt("Face")); + Direction face = Direction.from3DDataValue(nbt.getIntOr("Face", 0)); return Pair.of(pos, face); })); } @@ -673,7 +673,7 @@ public void updateTunnelConnections() { connectedLeft = nowConnectedLeft; connectivityChanged = true; BrassTunnelBlockEntity adjacent = getAdjacent(true); - if (adjacent != null && !level.isClientSide) { + if (adjacent != null && !level.isClientSide()) { adjacent.updateTunnelConnections(); adjacent.selectionMode.setValue(selectionMode.getValue()); } @@ -683,7 +683,7 @@ public void updateTunnelConnections() { connectedRight = nowConnectedRight; connectivityChanged = true; BrassTunnelBlockEntity adjacent = getAdjacent(false); - if (adjacent != null && !level.isClientSide) { + if (adjacent != null && !level.isClientSide()) { adjacent.updateTunnelConnections(); adjacent.selectionMode.setValue(selectionMode.getValue()); } @@ -746,7 +746,8 @@ public IItemHandler getBeltCapability() { if (beltCapability == null) { BlockEntity blockEntity = level.getBlockEntity(worldPosition.below()); if (blockEntity != null) - beltCapability = level.getCapability(Capabilities.ItemHandler.BLOCK, blockEntity.getBlockPos(), null); + beltCapability = com.simibubi.create.foundation.item.LegacyItemHandlerAdapter.of( + level.getCapability(Capabilities.Item.BLOCK, blockEntity.getBlockPos(), null)); } return beltCapability; } @@ -794,7 +795,7 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak CreateLang.translate("tooltip.brass_tunnel.contains").style(ChatFormatting.WHITE).forGoggles(tooltip); for (ItemStack item : allStacks) { CreateLang.translate("tooltip.brass_tunnel.contains_entry", - Component.translatable(item.getDescriptionId()).getString(), item.getCount()) + item.getHoverName().getString(), item.getCount()) .style(ChatFormatting.GRAY).forGoggles(tooltip); } CreateLang.translate("tooltip.brass_tunnel.retrieve").style(ChatFormatting.DARK_GRAY).forGoggles(tooltip); diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelCTBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelCTBehaviour.java index 7004a7c862..ca3acc9fe9 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelCTBehaviour.java @@ -10,7 +10,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class BrassTunnelCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelFilterSlot.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelFilterSlot.java index a51b307344..a261cf90d7 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/BrassTunnelFilterSlot.java @@ -2,7 +2,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.world.phys.Vec3; public class BrassTunnelFilterSlot extends ValueBoxTransform.Sided { diff --git a/src/main/java/com/simibubi/create/content/logistics/tunnel/TunnelFlapPacket.java b/src/main/java/com/simibubi/create/content/logistics/tunnel/TunnelFlapPacket.java index 60c2f347ae..7c76a4ee63 100644 --- a/src/main/java/com/simibubi/create/content/logistics/tunnel/TunnelFlapPacket.java +++ b/src/main/java/com/simibubi/create/content/logistics/tunnel/TunnelFlapPacket.java @@ -7,7 +7,7 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.foundation.networking.BlockEntityDataPacket; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlock.java b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlock.java index 7339586c0f..f2e59023f5 100644 --- a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlock.java @@ -13,6 +13,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; @@ -95,8 +96,8 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean pIsMoving) { - if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) { + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean pIsMoving) { + if (state.hasBlockEntity()) { BlockEntity be = world.getBlockEntity(pos); if (!(be instanceof ItemVaultBlockEntity vaultBE)) return; @@ -104,6 +105,7 @@ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState new world.removeBlockEntity(pos); ConnectivityHandler.splitMulti(vaultBE); } + super.affectNeighborsAfterRemoval(state, world, pos, pIsMoving); } public static boolean isVault(BlockState state) { @@ -156,7 +158,7 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return ItemHelper.calcRedstoneFromBlockEntity(this, pLevel, pPos); } diff --git a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlockEntity.java b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlockEntity.java index f472ea0c95..c74888bc8c 100644 --- a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlockEntity.java @@ -14,7 +14,7 @@ import com.simibubi.create.foundation.utility.SameSizeCombinedInvWrapper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -68,13 +68,14 @@ protected void onContentsChanged(int slot) { public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.ITEM_VAULT.get(), (be, context) -> { be.initCapability(); if (be.itemCapability == null) return null; - return be.itemCapability.getCapability(); + IItemHandler capability = be.itemCapability.getCapability(); + return capability == null ? null : new com.simibubi.create.foundation.item.LegacyItemTransferAdapter(capability); } ); } @@ -174,7 +175,7 @@ private static void updateComaratorsInner(Level level, Block provokingBlock, Blo updatePos.move(direction); blockstate = level.getBlockState(updatePos); if (blockstate.getWeakChanges(level, updatePos)) { - level.neighborChanged(blockstate, updatePos, provokingBlock, provokingPos, false); + level.neighborChanged(blockstate, updatePos, provokingBlock, null, false); } } } @@ -243,7 +244,7 @@ public void removeController(boolean keepContents) { @Override public void setController(BlockPos controller) { - if (level.isClientSide && !isVirtual()) + if (level.isClientSide() && !isVirtual()) return; if (controller.equals(this.controller)) return; @@ -278,12 +279,12 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool controller = NBTHelper.readBlockPos(compound, "Controller"); if (isController()) { - radius = compound.getInt("Size"); - length = compound.getInt("Length"); + radius = compound.getIntOr("Size", 0); + length = compound.getIntOr("Length", 0); } if (!clientPacket) { - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(inventory, registries, compound.getCompoundOrEmpty("Inventory")); return; } @@ -299,9 +300,9 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo compound.putBoolean("Uninitialized", true); if (lastKnownPos != null) - compound.put("LastKnownPos", NbtUtils.writeBlockPos(lastKnownPos)); + compound.put("LastKnownPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(lastKnownPos)); if (!isController()) - compound.put("Controller", NbtUtils.writeBlockPos(controller)); + compound.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(controller)); if (isController()) { compound.putInt("Size", radius); compound.putInt("Length", length); @@ -311,7 +312,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo if (!clientPacket) { compound.putString("StorageType", "CombinedInv"); - compound.put("Inventory", inventory.serializeNBT(registries)); + compound.put("Inventory", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.serializeHandler(inventory, registries)); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultCTBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultCTBehaviour.java index d46b266167..c5ea5cdde3 100644 --- a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultCTBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultCTBehaviour.java @@ -12,7 +12,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class ItemVaultCTBehaviour extends ConnectedTextureBehaviour.Base { diff --git a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultItem.java b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultItem.java index 51de16e1cf..092c6bbf56 100644 --- a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultItem.java @@ -5,8 +5,9 @@ import com.simibubi.create.content.equipment.symmetryWand.SymmetryWandItem; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -18,11 +19,9 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; public class ItemVaultItem extends BlockItem { @@ -46,15 +45,13 @@ protected boolean updateCustomBlockEntityTag(BlockPos blockPos, Level level, Pla MinecraftServer minecraftserver = level.getServer(); if (minecraftserver == null) return false; - CustomData blockEntityData = itemStack.get(DataComponents.BLOCK_ENTITY_DATA); - if (blockEntityData != null) { - CompoundTag nbt = blockEntityData.copyTag(); + if (itemStack.has(DataComponents.BLOCK_ENTITY_DATA)) { + CompoundTag nbt = LegacyBlockEntityDataComponentBridge.get(itemStack); nbt.remove("Length"); nbt.remove("Size"); nbt.remove("Controller"); nbt.remove("LastKnownPos"); - BlockEntity.addEntityType(nbt, ((IBE) this.getBlock()).getBlockEntityType()); - itemStack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(nbt)); + LegacyBlockEntityDataComponentBridge.set(itemStack, ((IBE) this.getBlock()).getBlockEntityType(), nbt); } return super.updateCustomBlockEntityTag(blockPos, level, player, itemStack, blockState); } diff --git a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultMountedStorage.java b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultMountedStorage.java index bef8ad5862..14affeef09 100644 --- a/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultMountedStorage.java +++ b/src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultMountedStorage.java @@ -8,6 +8,7 @@ import com.simibubi.create.api.contraption.storage.item.WrapperMountedItemStorage; import com.simibubi.create.content.contraptions.Contraption; import com.simibubi.create.foundation.codec.CreateCodecs; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -53,7 +54,7 @@ public static ItemVaultMountedStorage fromVault(ItemVaultBlockEntity vault) { public static ItemVaultMountedStorage fromLegacy(HolderLookup.Provider registries, CompoundTag nbt) { ItemStackHandler handler = new ItemStackHandler(); - handler.deserializeNBT(registries, nbt); + LegacyItemStackNbtBridge.deserializeHandler(handler, registries, nbt); return new ItemVaultMountedStorage(handler); } } diff --git a/src/main/java/com/simibubi/create/content/materials/ExperienceBlock.java b/src/main/java/com/simibubi/create/content/materials/ExperienceBlock.java index 857cc1e098..218502e2ac 100644 --- a/src/main/java/com/simibubi/create/content/materials/ExperienceBlock.java +++ b/src/main/java/com/simibubi/create/content/materials/ExperienceBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.materials; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.util.RandomSource; diff --git a/src/main/java/com/simibubi/create/content/materials/ExperienceNuggetItem.java b/src/main/java/com/simibubi/create/content/materials/ExperienceNuggetItem.java index 7deb022ed5..e972530559 100644 --- a/src/main/java/com/simibubi/create/content/materials/ExperienceNuggetItem.java +++ b/src/main/java/com/simibubi/create/content/materials/ExperienceNuggetItem.java @@ -1,12 +1,12 @@ package com.simibubi.create.content.materials; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.Direction.Axis; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.ExperienceOrb; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; @@ -26,12 +26,12 @@ public boolean isFoil(ItemStack pStack) { } @Override - public InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { + public InteractionResult use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { ItemStack itemInHand = pPlayer.getItemInHand(pUsedHand); - if (pLevel.isClientSide) { + if (pLevel.isClientSide()) { pLevel.playSound(pPlayer, pPlayer.blockPosition(), SoundEvents.AMETHYST_BLOCK_BREAK, SoundSource.PLAYERS, .5f, 1); - return InteractionResultHolder.consume(itemInHand); + return InteractionResult.CONSUME.heldItemTransformedTo(itemInHand); } int amountUsed = pPlayer.isShiftKeyDown() ? 1 : itemInHand.getCount(); @@ -44,7 +44,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte if (value == 0) continue; - Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, pLevel.random, 1) + Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, pLevel.getRandom(), 1) .normalize(); Vec3 look = pPlayer.getLookAngle(); Vec3 motion = look.scale(0.2) @@ -63,10 +63,10 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte itemInHand.shrink(amountUsed); if (!itemInHand.isEmpty()) - return InteractionResultHolder.success(itemInHand); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemInHand); pPlayer.setItemInHand(pUsedHand, ItemStack.EMPTY); - return InteractionResultHolder.consume(itemInHand); + return InteractionResult.CONSUME.heldItemTransformedTo(itemInHand); } } diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java index 6620d71fb4..6f3c374d32 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlock.java @@ -12,15 +12,17 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; import com.simibubi.create.foundation.item.ItemHelper; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; @@ -31,12 +33,13 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; @@ -52,7 +55,7 @@ public class BasinBlock extends Block implements IBE, IWrenchable { - public static final DirectionProperty FACING = BlockStateProperties.FACING_HOPPER; + public static final EnumProperty FACING = BlockStateProperties.FACING_HOPPER; public BasinBlock(Properties p_i48440_1_) { super(p_i48440_1_); @@ -78,34 +81,34 @@ public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { @Override public InteractionResult onWrenched(BlockState state, UseOnContext context) { - if (!context.getLevel().isClientSide) + if (!context.getLevel().isClientSide()) withBlockEntityDo(context.getLevel(), context.getClickedPos(), bte -> bte.onWrenched(context.getClickedFace())); return InteractionResult.SUCCESS; } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return onBlockEntityUseItemOn(level, pos, be -> { if (!stack.isEmpty()) { if (FluidHelper.tryEmptyItemIntoBE(level, player, hand, stack, be)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (FluidHelper.tryFillItemFromBE(level, player, hand, stack, be)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (GenericItemEmptying.canItemBeEmptied(level, stack) || GenericItemFilling.canItemBeFilled(level, stack)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; if (stack.getItem().equals(Items.SPONGE)) { - IFluidHandler fluidHandler = level.getCapability(Capabilities.FluidHandler.BLOCK, pos, null); + IFluidHandler fluidHandler = LegacyFluidHandlerAdapter.of(level.getCapability(Capabilities.Fluid.BLOCK, pos, null)); if (fluidHandler != null) { FluidStack drained = fluidHandler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.EXECUTE); if (!drained.isEmpty()) { - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } IItemHandlerModifiable inv = be.itemCapability; @@ -125,13 +128,13 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev level.playSound(null, pos, SoundEvents.ITEM_PICKUP, SoundSource.PLAYERS, .2f, 1f + level.getRandom().nextFloat()); be.onEmptied(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); if (!worldIn.getBlockState(entityIn.blockPosition()) .is(this)) return; @@ -168,8 +171,8 @@ public VoxelShape getCollisionShape(BlockState state, BlockGetter reader, BlockP } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); } @Override @@ -178,7 +181,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos) { + public int getAnalogOutputSignal(BlockState blockState, Level worldIn, BlockPos pos, Direction direction) { return getBlockEntityOptional(worldIn, pos).map(BasinBlockEntity::getInputInventory) .map(ItemHelper::calcRedstoneFromInventory) .orElse(0); diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java index fe5a77e245..1217797f2d 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinBlockEntity.java @@ -28,20 +28,26 @@ import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; import com.simibubi.create.foundation.fluid.CombinedTankWrapper; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; +import com.simibubi.create.foundation.fluid.LegacyFluidTransferAdapter; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.CreateLang; - -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.LangBuilder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import com.simibubi.create.foundation.utility.LegacyFluidNbtBridge; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; + +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.LangBuilder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -133,14 +139,14 @@ public BasinBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.BASIN.get(), - (be, context) -> be.itemCapability + (be, context) -> new LegacyItemTransferAdapter(be.itemCapability) ); event.registerBlockEntity( - Capabilities.FluidHandler.BLOCK, + Capabilities.Fluid.BLOCK, AllBlockEntityTypes.BASIN.get(), - (be, context) -> be.fluidCapability + (be, context) -> new LegacyFluidTransferAdapter(be.fluidCapability) ); } @@ -165,26 +171,28 @@ public void addBehaviours(List behaviours) { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - inputInventory.deserializeNBT(registries, compound.getCompound("InputItems")); - outputInventory.deserializeNBT(registries, compound.getCompound("OutputItems")); + inputInventory.deserializeNBT(registries, compound.getCompoundOrEmpty("InputItems")); + outputInventory.deserializeNBT(registries, compound.getCompoundOrEmpty("OutputItems")); preferredSpoutput = null; if (compound.contains("PreferredSpoutput")) preferredSpoutput = NBTHelper.readEnum(compound, "PreferredSpoutput", Direction.class); disabledSpoutputs.clear(); - ListTag disabledList = compound.getList("DisabledSpoutput", Tag.TAG_STRING); - disabledList.forEach(d -> disabledSpoutputs.add(Direction.valueOf(((StringTag) d).getAsString()))); - spoutputBuffer = NBTHelper.readItemList(compound.getList("Overflow", Tag.TAG_COMPOUND), registries); - spoutputFluidBuffer = NBTHelper.readCompoundList(compound.getList("FluidOverflow", Tag.TAG_COMPOUND), tag -> FluidStack.parseOptional(registries, tag)); + ListTag disabledList = compound.getListOrEmpty("DisabledSpoutput"); + disabledList.forEach(d -> disabledSpoutputs.add(Direction.valueOf(((StringTag) d).value()))); + spoutputBuffer = NBTHelper.readItemList(compound.getListOrEmpty("Overflow"), registries); + spoutputFluidBuffer = NBTHelper.readCompoundList(compound.getListOrEmpty("FluidOverflow"), + tag -> LegacyFluidNbtBridge.parseOptional(registries, tag)); if (!clientPacket) return; - NBTHelper.iterateCompoundList(compound.getList("VisualizedItems", Tag.TAG_COMPOUND), - c -> visualizedOutputItems.add(IntAttached.with(OUTPUT_ANIMATION_TIME, ItemStack.parseOptional(registries, c)))); - NBTHelper.iterateCompoundList(compound.getList("VisualizedFluids", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(compound.getListOrEmpty("VisualizedItems"), + c -> visualizedOutputItems + .add(IntAttached.with(OUTPUT_ANIMATION_TIME, LegacyItemStackNbtBridge.parseOptional(registries, c)))); + NBTHelper.iterateCompoundList(compound.getListOrEmpty("VisualizedFluids"), c -> visualizedOutputFluids - .add(IntAttached.with(OUTPUT_ANIMATION_TIME, FluidStack.parseOptional(registries, c)))); + .add(IntAttached.with(OUTPUT_ANIMATION_TIME, LegacyFluidNbtBridge.parseOptional(registries, c)))); } @Override @@ -200,13 +208,15 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.put("DisabledSpoutput", disabledList); compound.put("Overflow", NBTHelper.writeItemList(spoutputBuffer, registries)); compound.put("FluidOverflow", - NBTHelper.writeCompoundList(spoutputFluidBuffer, fs -> (CompoundTag) fs.saveOptional(registries))); + NBTHelper.writeCompoundList(spoutputFluidBuffer, fs -> LegacyFluidNbtBridge.saveOptionalCompound(fs, registries))); if (!clientPacket) return; - compound.put("VisualizedItems", NBTHelper.writeCompoundList(visualizedOutputItems, ia -> (CompoundTag) ia.getValue().saveOptional(registries))); - compound.put("VisualizedFluids", NBTHelper.writeCompoundList(visualizedOutputFluids, ia -> (CompoundTag) ia.getValue().saveOptional(registries))); + compound.put("VisualizedItems", NBTHelper.writeCompoundList(visualizedOutputItems, + ia -> LegacyItemStackNbtBridge.saveOptionalCompound(ia.getValue(), registries))); + compound.put("VisualizedFluids", NBTHelper.writeCompoundList(visualizedOutputFluids, + ia -> LegacyFluidNbtBridge.saveOptionalCompound(ia.getValue(), registries))); visualizedOutputItems.clear(); visualizedOutputFluids.clear(); } @@ -253,7 +263,7 @@ public void notifyUpdate() { public void lazyTick() { super.lazyTick(); - if (!level.isClientSide) { + if (!level.isClientSide()) { updateSpoutput(); if (recipeBackupCheck-- > 0) return; @@ -345,14 +355,14 @@ public void tick() { cachedHeatLevel = null; super.tick(); - if (level.isClientSide) { + if (level.isClientSide()) { createFluidParticles(); tickVisualizedOutputs(); ingredientRotationSpeed.tickChaser(); ingredientRotation.setValue(ingredientRotation.getValue() + ingredientRotationSpeed.getValue()); } - if ((!spoutputBuffer.isEmpty() || !spoutputFluidBuffer.isEmpty()) && !level.isClientSide) + if ((!spoutputBuffer.isEmpty() || !spoutputFluidBuffer.isEmpty()) && !level.isClientSide()) tryClearingSpoutputOverflow(); if (!contentsChanged) return; @@ -391,12 +401,16 @@ private void tryClearingSpoutputOverflow() { if (filter != null && filter.isRecipeFilter()) filter = null; // Do not test spout outputs against the recipe filter - IItemHandler targetInv = be == null ? null - : Optional.ofNullable(level.getCapability(Capabilities.ItemHandler.BLOCK, be.getBlockPos(), direction.getOpposite())) - .orElse(inserter == null ? null : inserter.getInventory()); + IItemHandler targetInv = null; + if (be != null) { + targetInv = + LegacyItemHandlerAdapter.of(level.getCapability(Capabilities.Item.BLOCK, be.getBlockPos(), direction.getOpposite())); + if (targetInv == null && inserter != null) + targetInv = inserter.getInventory(); + } IFluidHandler targetTank = be == null ? null - : level.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), direction.getOpposite()); + : LegacyFluidHandlerAdapter.of(level.getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), direction.getOpposite())); boolean update = false; @@ -542,11 +556,16 @@ private boolean acceptOutputsInner(List outputItems, List InvManipulationBehaviour inserter = be == null ? null : BlockEntityBehaviour.get(level, be.getBlockPos(), InvManipulationBehaviour.TYPE); - IItemHandler targetInv = be == null ? null - : Optional.ofNullable(level.getCapability(Capabilities.ItemHandler.BLOCK, be.getBlockPos(), direction.getOpposite())) - .orElse(inserter == null ? null : inserter.getInventory()); + IItemHandler targetInv = null; + if (be != null) { + targetInv = LegacyItemHandlerAdapter.of( + level.getCapability(Capabilities.Item.BLOCK, be.getBlockPos(), direction.getOpposite())); + if (targetInv == null && inserter != null) + targetInv = inserter.getInventory(); + } IFluidHandler targetTank = be == null ? null - : level.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), direction.getOpposite()); + : LegacyFluidHandlerAdapter.of( + level.getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), direction.getOpposite())); boolean externalTankNotPresent = targetTank == null; if (!outputItems.isEmpty() && targetInv == null) @@ -611,8 +630,8 @@ private boolean acceptItemOutputsIntoBasin(List outputItems, boolean } public void readOnlyItems(CompoundTag compound, HolderLookup.Provider registries) { - inputInventory.deserializeNBT(registries, compound.getCompound("InputItems")); - outputInventory.deserializeNBT(registries, compound.getCompound("OutputItems")); + inputInventory.deserializeNBT(registries, compound.getCompoundOrEmpty("InputItems")); + outputInventory.deserializeNBT(registries, compound.getCompoundOrEmpty("OutputItems")); } public static HeatLevel getHeatLevelOf(BlockState state) { @@ -641,7 +660,7 @@ private void tickVisualizedOutputs() { } private void createFluidParticles() { - RandomSource r = level.random; + RandomSource r = level.getRandom(); if (!visualizedOutputFluids.isEmpty()) createOutputFluidParticles(r); @@ -695,7 +714,7 @@ private void createOutputFluidParticles(RandomSource r) { Direction direction = blockState.getValue(BasinBlock.FACING); if (direction == Direction.DOWN) return; - Vec3 directionVec = Vec3.atLowerCornerOf(direction.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(direction.getUnitVec3i()); Vec3 outVec = VecHelper.getCenterOf(worldPosition) .add(directionVec.scale(.65) .subtract(0, 1 / 4f, 0)); @@ -762,7 +781,8 @@ public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneak if (stackInSlot.isEmpty()) continue; CreateLang.text("") - .add(Component.translatable(stackInSlot.getDescriptionId()) + .add(stackInSlot.getHoverName() + .copy() .withStyle(ChatFormatting.GRAY)) .add(CreateLang.text(" x" + stackInSlot.getCount()) .style(ChatFormatting.GREEN)) diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinGenerator.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinGenerator.java index 0f137a1147..5dc1de35c5 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinGenerator.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinGenerator.java @@ -3,11 +3,11 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class BasinGenerator extends SpecialBlockStateGen { @@ -22,7 +22,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { if (state.getValue(BasinBlock.FACING).getAxis().isVertical()) return AssetLookup.partialBaseModel(ctx, prov); diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinMovementBehaviour.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinMovementBehaviour.java index a9d11d4db1..8c70ef0c13 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinMovementBehaviour.java @@ -5,6 +5,8 @@ import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.behaviour.MovementContext; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import net.minecraft.core.Direction; import net.minecraft.world.entity.item.ItemEntity; @@ -19,7 +21,8 @@ public Map getOrReadInventory(MovementContext context) Map map = new HashMap<>(); map.put("InputItems", new ItemStackHandler(9)); map.put("OutputItems", new ItemStackHandler(8)); - map.forEach((s, h) -> h.deserializeNBT(context.world.registryAccess(), context.blockEntityData.getCompound(s))); + map.forEach((s, h) -> LegacyItemStackNbtBridge.deserializeHandler(h, context.world.registryAccess(), + context.blockEntityData.getCompoundOrEmpty(s))); return map; } @@ -27,9 +30,9 @@ public Map getOrReadInventory(MovementContext context) public void tick(MovementContext context) { MovementBehaviour.super.tick(context); if (context.temporaryData == null || (boolean) context.temporaryData) { - Vec3 facingVec = context.rotation.apply(Vec3.atLowerCornerOf(Direction.UP.getNormal())); + Vec3 facingVec = context.rotation.apply(Vec3.atLowerCornerOf(Direction.UP.getUnitVec3i())); facingVec.normalize(); - if (Direction.getNearest(facingVec.x, facingVec.y, facingVec.z) == Direction.DOWN) + if (LegacyDirectionBridge.nearest(facingVec.x, facingVec.y, facingVec.z, Direction.NORTH) == Direction.DOWN) dump(context, facingVec); } } @@ -46,10 +49,11 @@ private void dump(MovementContext context, Vec3 facingVec) { context.world.addFreshEntity(itemEntity); itemStackHandler.setStackInSlot(i, ItemStack.EMPTY); } - context.blockEntityData.put(key, itemStackHandler.serializeNBT(context.world.registryAccess())); + context.blockEntityData.put(key, + LegacyItemStackNbtBridge.serializeHandler(itemStackHandler, context.world.registryAccess())); }); // FIXME: Why are we setting client-side data here? - if (context.contraption.entity.level().isClientSide) { + if (context.contraption.entity.level().isClientSide()) { BlockEntity blockEntity = context.contraption.getBlockEntityClientSide(context.localPos); if (blockEntity instanceof BasinBlockEntity) ((BasinBlockEntity) blockEntity).readOnlyItems(context.blockEntityData, context.world.registryAccess()); diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinOperatingBlockEntity.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinOperatingBlockEntity.java index ac815797b1..f137d59118 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinOperatingBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinOperatingBlockEntity.java @@ -10,6 +10,8 @@ import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.simple.DeferralBehaviour; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import com.simibubi.create.foundation.recipe.RecipeFinder; import com.simibubi.create.foundation.recipe.trie.AbstractVariant; import com.simibubi.create.foundation.recipe.trie.RecipeTrie; @@ -23,8 +25,8 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.capabilities.Capabilities.FluidHandler; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Fluid; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.items.IItemHandler; @@ -73,7 +75,7 @@ protected boolean updateBasin() { return true; if (isRunning()) return true; - if (level == null || level.isClientSide) + if (level == null || level.isClientSide()) return true; Optional basin = getBasin(); if (!basin.filter(BasinBlockEntity::canContinueProcessing) @@ -139,8 +141,8 @@ protected List> getMatchingRecipes() { List> list = new ArrayList<>(); try { - IItemHandler availableItems = level.getCapability(ItemHandler.BLOCK, basin.getBlockPos(), null); - IFluidHandler availableFluids = level.getCapability(FluidHandler.BLOCK, basin.getBlockPos(), null); + IItemHandler availableItems = LegacyItemHandlerAdapter.of(level.getCapability(Item.BLOCK, basin.getBlockPos(), null)); + IFluidHandler availableFluids = LegacyFluidHandlerAdapter.of(level.getCapability(Fluid.BLOCK, basin.getBlockPos(), null)); // no point even searching, since no recipe will ever match if (availableItems == null && availableFluids == null) { @@ -162,7 +164,7 @@ protected List> getMatchingRecipes() { list.add(r.value()); } - list.sort((r1, r2) -> r2.getIngredients().size() - r1.getIngredients().size()); + list.sort((r1, r2) -> r2.placementInfo().ingredients().size() - r1.placementInfo().ingredients().size()); return list; } diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java index 46a1ac2571..804cee2c53 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinRecipe.java @@ -9,23 +9,28 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; +import com.simibubi.create.content.processing.recipe.ProcessingRecipe; import com.simibubi.create.content.processing.recipe.ProcessingRecipeParams; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import com.simibubi.create.foundation.recipe.DummyCraftingContainer; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.Minecraft; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.util.context.ContextMap; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingInput; import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.PlacementInfo; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; +import net.minecraft.world.item.crafting.display.SlotDisplayContext; import net.minecraft.world.level.Level; import net.neoforged.neoforge.capabilities.Capabilities; @@ -41,8 +46,7 @@ public static boolean match(BasinBlockEntity basin, Recipe recipe) { if (filter == null) return false; - boolean filterTest = filter.test(recipe.getResultItem(basin.getLevel() - .registryAccess())); + boolean filterTest = filter.test(recipeResult(basin.getLevel(), recipe)); if (recipe instanceof BasinRecipe basinRecipe) { if (basinRecipe.getRollableResults() .isEmpty() @@ -64,8 +68,10 @@ public static boolean apply(BasinBlockEntity basin, Recipe recipe) { private static boolean apply(BasinBlockEntity basin, Recipe recipe, boolean test) { boolean isBasinRecipe = recipe instanceof BasinRecipe; - IItemHandler availableItems = basin.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, basin.getBlockPos(), null); - IFluidHandler availableFluids = basin.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, basin.getBlockPos(), null); + IItemHandler availableItems = LegacyItemHandlerAdapter.of( + basin.getLevel().getCapability(Capabilities.Item.BLOCK, basin.getBlockPos(), null)); + IFluidHandler availableFluids = LegacyFluidHandlerAdapter.of( + basin.getLevel().getCapability(Capabilities.Fluid.BLOCK, basin.getBlockPos(), null)); if (availableItems == null || availableFluids == null) return false; @@ -78,7 +84,10 @@ private static boolean apply(BasinBlockEntity basin, Recipe recipe, boolean t List recipeOutputItems = new ArrayList<>(); List recipeOutputFluids = new ArrayList<>(); - List ingredients = new LinkedList<>(recipe.getIngredients()); + PlacementInfo placementInfo = recipe.placementInfo(); + List ingredients = placementInfo.isImpossibleToPlace() + ? new LinkedList<>() + : new LinkedList<>(placementInfo.ingredients()); List fluidIngredients = isBasinRecipe ? ((BasinRecipe) recipe).getFluidIngredients() : Collections.emptyList(); @@ -148,18 +157,15 @@ private static boolean apply(BasinBlockEntity basin, Recipe recipe, boolean t .asCraftInput(); if (recipe instanceof BasinRecipe basinRecipe) { - recipeOutputItems.addAll(basinRecipe.rollResults(basin.getLevel().random)); + recipeOutputItems.addAll(basinRecipe.rollResults(basin.getLevel().getRandom())); for (FluidStack fluidStack : basinRecipe.getFluidResults()) if (!fluidStack.isEmpty()) recipeOutputFluids.add(fluidStack); - for (ItemStack stack : basinRecipe.getRemainingItems(remainderInput)) - if (!stack.isEmpty()) - recipeOutputItems.add(stack); - } else { - recipeOutputItems.add(recipe.getResultItem(basin.getLevel() - .registryAccess())); + ItemStack result = recipeResult(basin.getLevel(), recipe); + if (!result.isEmpty()) + recipeOutputItems.add(result); if (recipe instanceof CraftingRecipe craftingRecipe) { for (ItemStack stack : craftingRecipe.getRemainingItems(remainderInput)) @@ -177,13 +183,35 @@ private static boolean apply(BasinBlockEntity basin, Recipe recipe, boolean t } public static RecipeHolder convertShapeless(RecipeHolder recipe) { + Recipe value = recipe.value(); BasinRecipe basinRecipe = - new Builder<>(BasinRecipe::new, recipe.id()).withItemIngredients(recipe.value().getIngredients()) - .withSingleItemOutput(recipe.value().getResultItem(Minecraft.getInstance().level.registryAccess())) + new Builder<>(BasinRecipe::new, recipe.id().identifier()) + .withItemIngredients(value.placementInfo().ingredients().toArray(new Ingredient[0])) + .withSingleItemOutput(recipeResult(value)) .build(); return new RecipeHolder<>(recipe.id(), basinRecipe); } + private static ItemStack recipeResult(Recipe recipe) { + return recipe.display() + .stream() + .findFirst() + .map(display -> display.result() + .resolveForFirstStack(ContextMap.EMPTY)) + .orElse(ItemStack.EMPTY); + } + + private static ItemStack recipeResult(Level level, Recipe recipe) { + if (recipe instanceof ProcessingRecipe processingRecipe) + return processingRecipe.getResultItem(level.registryAccess()); + return recipe.display() + .stream() + .findFirst() + .map(display -> display.result() + .resolveForFirstStack(SlotDisplayContext.fromLevel(level))) + .orElse(ItemStack.EMPTY); + } + protected BasinRecipe(IRecipeTypeInfo type, ProcessingRecipeParams params) { super(type, params); } diff --git a/src/main/java/com/simibubi/create/content/processing/basin/BasinRenderer.java b/src/main/java/com/simibubi/create/content/processing/basin/BasinRenderer.java index d92729f491..1c8accdb20 100644 --- a/src/main/java/com/simibubi/create/content/processing/basin/BasinRenderer.java +++ b/src/main/java/com/simibubi/create/content/processing/basin/BasinRenderer.java @@ -6,13 +6,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.NeoForgeCatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.NeoForgeCatnipServices; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -76,7 +76,7 @@ protected void renderSafe(BasinBlockEntity basin, float partialTicks, PoseStack if (fluidLevel > 0) { ms.translate(0, (Mth.sin( - AnimationTickHolder.getRenderTime(basin.getLevel()) / 12f + anglePartition * itemCount) + 1.5f) + AnimationTickHolder.getRenderTime() / 12f + anglePartition * itemCount) + 1.5f) * 1 / 32f, 0); } @@ -108,7 +108,7 @@ protected void renderSafe(BasinBlockEntity basin, float partialTicks, PoseStack Direction direction = blockState.getValue(BasinBlock.FACING); if (direction == Direction.DOWN) return; - Vec3 directionVec = Vec3.atLowerCornerOf(direction.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(direction.getUnitVec3i()); Vec3 outVec = VecHelper.getCenterOf(BlockPos.ZERO) .add(directionVec.scale(.55) .subtract(0, 1 / 2f, 0)); @@ -138,7 +138,7 @@ protected void renderSafe(BasinBlockEntity basin, float partialTicks, PoseStack protected void renderItem(PoseStack ms, MultiBufferSource buffer, int light, int overlay, ItemStack stack) { Minecraft mc = Minecraft.getInstance(); - mc.getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(stack, ItemDisplayContext.GROUND, light, overlay, ms, buffer, mc.level, 0); } diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlock.java index ab0823297f..81f5fd72e4 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlock.java @@ -19,23 +19,24 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.lang.Lang; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.advancements.critereon.StatePropertiesPredicate; +import net.createmod.catnip.api.lang.Lang; +import net.minecraft.advancements.predicates.StatePropertiesPredicate; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.FlintAndSteelItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.ItemLike; @@ -57,15 +58,12 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.util.FakePlayer; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class BlazeBurnerBlock extends HorizontalDirectionalBlock implements IBE, IWrenchable, SpecialBlockItemRequirement { @@ -86,7 +84,7 @@ protected void createBlockStateDefinition(Builder builder) { @Override public void onPlace(BlockState state, Level world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { - if (world.isClientSide) + if (world.isClientSide()) return; BlockEntity blockEntity = world.getBlockEntity(pos.above()); if (!(blockEntity instanceof BasinBlockEntity basin)) @@ -95,7 +93,7 @@ public void onPlace(BlockState state, Level world, BlockPos pos, BlockState p_22 } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { + protected ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData) { return getLitOrUnlitStack(state); } @@ -118,16 +116,16 @@ public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { HeatLevel heat = state.getValue(HEAT_LEVEL); if (AllItems.GOGGLES.isIn(stack) && heat != HeatLevel.NONE) return onBlockEntityUseItemOn(level, pos, bbte -> { if (bbte.goggles) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; bbte.goggles = true; bbte.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); BlazeBurnerBlockEntity be = getBlockEntity(level, pos); @@ -135,38 +133,41 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev StockTickerBlockEntity stockTicker = BlazeBurnerBlockEntity.getStockTicker(level, pos); if (stockTicker != null) StockTickerInteractionHandler.interactWithLogisticsManagerAt(player, level, stockTicker.getBlockPos()); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (stack.isEmpty() && heat != HeatLevel.NONE) return onBlockEntityUseItemOn(level, pos, bbte -> { if (!bbte.goggles) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; bbte.goggles = false; bbte.notifyUpdate(); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); if (heat == HeatLevel.NONE) { if (stack.getItem() instanceof FlintAndSteelItem) { level.playSound(player, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, 1.0F, - level.random.nextFloat() * 0.4F + 0.8F); - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; - stack.hurtAndBreak(1, player, LivingEntity.getSlotForHand(hand)); + level.getRandom().nextFloat() * 0.4F + 0.8F); + if (level.isClientSide()) + return InteractionResult.SUCCESS; + stack.hurtAndBreak(1, player, + hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND); level.setBlockAndUpdate(pos, AllBlocks.LIT_BLAZE_BURNER.getDefaultState()); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } boolean doNotConsume = player.isCreative(); boolean forceOverflow = !(player instanceof FakePlayer); - InteractionResultHolder res = + InteractionResult res = tryInsert(state, level, pos, stack, doNotConsume, forceOverflow, false); - ItemStack leftover = res.getObject(); - if (!level.isClientSide && !doNotConsume && !leftover.isEmpty()) { + ItemStack leftover = res instanceof InteractionResult.Success success && success.heldItemTransformedTo() != null + ? success.heldItemTransformedTo() + : ItemStack.EMPTY; + if (!level.isClientSide() && !doNotConsume && !leftover.isEmpty()) { if (stack.isEmpty()) { player.setItemInHand(hand, leftover); } else if (!player.getInventory() @@ -175,34 +176,35 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev } } - return res.getResult() == InteractionResult.SUCCESS ? ItemInteractionResult.SUCCESS : ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return res.consumesAction() ? InteractionResult.SUCCESS : InteractionResult.TRY_WITH_EMPTY_HAND; } - public static InteractionResultHolder tryInsert(BlockState state, Level world, BlockPos pos, + public static InteractionResult tryInsert(BlockState state, Level world, BlockPos pos, ItemStack stack, boolean doNotConsume, boolean forceOverflow, boolean simulate) { if (!state.hasBlockEntity()) - return InteractionResultHolder.fail(ItemStack.EMPTY); + return InteractionResult.FAIL; BlockEntity be = world.getBlockEntity(pos); if (!(be instanceof BlazeBurnerBlockEntity burnerBE)) - return InteractionResultHolder.fail(ItemStack.EMPTY); + return InteractionResult.FAIL; if (burnerBE.isCreativeFuel(stack)) { if (!simulate) burnerBE.applyCreativeFuel(); - return InteractionResultHolder.success(ItemStack.EMPTY); + return InteractionResult.SUCCESS.heldItemTransformedTo(ItemStack.EMPTY); } if (!burnerBE.tryUpdateFuel(stack, forceOverflow, simulate)) - return InteractionResultHolder.fail(ItemStack.EMPTY); + return InteractionResult.FAIL; if (!doNotConsume) { - ItemStack container = stack.hasCraftingRemainingItem() ? stack.getCraftingRemainingItem() : ItemStack.EMPTY; - if (!world.isClientSide) { + ItemStackTemplate craftingRemainder = stack.getCraftingRemainder(); + ItemStack container = craftingRemainder != null ? craftingRemainder.create() : ItemStack.EMPTY; + if (!world.isClientSide()) { stack.shrink(1); } - return InteractionResultHolder.success(container); + return InteractionResult.SUCCESS.heldItemTransformedTo(container); } - return InteractionResultHolder.success(ItemStack.EMPTY); + return InteractionResult.SUCCESS.heldItemTransformedTo(ItemStack.EMPTY); } @Override @@ -238,7 +240,7 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { } @Override - public int getAnalogOutputSignal(BlockState state, Level p_180641_2_, BlockPos p_180641_3_) { + protected int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos, Direction direction) { return Math.max(0, state.getValue(HEAT_LEVEL) .ordinal() - 1); } @@ -249,7 +251,6 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathCompu } @Override - @OnlyIn(Dist.CLIENT) public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) { if (random.nextInt(10) != 0) return; diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java index 613e98a7d9..f3f869a4bf 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockEntity.java @@ -17,11 +17,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -43,7 +43,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class BlazeBurnerBlockEntity extends SmartBlockEntity { @@ -91,7 +90,7 @@ public boolean isCreative() { public void tick() { super.tick(); - if (level.isClientSide) { + if (level.isClientSide()) { if (shouldTickAnimation()) tickAnimation(); if (!isVirtual()) @@ -139,13 +138,11 @@ public static StockTickerBlockEntity getStockTicker(LevelAccessor level, BlockPo return null; } - @OnlyIn(Dist.CLIENT) private boolean shouldTickAnimation() { // Offload the animation tick to the visual when flywheel in enabled return !VisualizationManager.supportsVisualization(level); } - @OnlyIn(Dist.CLIENT) void tickAnimation() { boolean active = getHeatLevelFromBlock().isAtLeast(HeatLevel.FADING) && isValidBlockAbove(); @@ -198,9 +195,9 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - activeFuel = FuelType.values()[compound.getInt("fuelLevel")]; - remainingBurnTime = compound.getInt("burnTimeRemaining"); - isCreative = compound.getBoolean("isCreative"); + activeFuel = FuelType.values()[compound.getIntOr("fuelLevel", 0)]; + remainingBurnTime = compound.getIntOr("burnTimeRemaining", 0); + isCreative = compound.getBooleanOr("isCreative", false); goggles = compound.contains("Goggles"); hat = compound.contains("TrainHat"); super.read(compound, registries, clientPacket); @@ -255,7 +252,7 @@ protected boolean tryUpdateFuel(ItemStack itemStack, boolean forceOverflow, bool newBurnTime = 3200; newFuel = FuelType.SPECIAL; } else { - newBurnTime = itemStack.getBurnTime(null); + newBurnTime = itemStack.getBurnTime(null, level.fuelValues()); if (newBurnTime > 0) { newFuel = FuelType.NORMAL; } else if (AllItemTags.BLAZE_BURNER_FUEL_REGULAR.matches(itemStack)) { @@ -289,7 +286,7 @@ protected boolean tryUpdateFuel(ItemStack itemStack, boolean forceOverflow, bool activeFuel = newFuel; remainingBurnTime = newBurnTime; - if (level.isClientSide) { + if (level.isClientSide()) { spawnParticleBurst(activeFuel == FuelType.SPECIAL); return true; } @@ -300,7 +297,7 @@ protected boolean tryUpdateFuel(ItemStack itemStack, boolean forceOverflow, bool if (prev != getHeatLevelFromBlock()) level.playSound(null, worldPosition, SoundEvents.BLAZE_AMBIENT, SoundSource.BLOCKS, - .125f + level.random.nextFloat() * .125f, 1.15f - level.random.nextFloat() * .25f); + .125f + level.getRandom().nextFloat() * .125f, 1.15f - level.getRandom().nextFloat() * .25f); return true; } @@ -312,7 +309,7 @@ protected void applyCreativeFuel() { HeatLevel next = getHeatLevelFromBlock().nextActiveLevel(); - if (level.isClientSide) { + if (level.isClientSide()) { spawnParticleBurst(next.isAtLeast(HeatLevel.SEETHING)); return; } @@ -336,7 +333,7 @@ public boolean isValidBlockAbove() { protected void playSound() { level.playSound(null, worldPosition, SoundEvents.BLAZE_SHOOT, SoundSource.BLOCKS, - .125f + level.random.nextFloat() * .125f, .75f - level.random.nextFloat() * .25f); + .125f + level.getRandom().nextFloat() * .125f, .75f - level.getRandom().nextFloat() * .25f); } protected HeatLevel getHeatLevel() { @@ -390,7 +387,7 @@ protected void spawnParticles(HeatLevel heatLevel, double burstMult) { public void spawnParticleBurst(boolean soulFlame) { Vec3 c = VecHelper.getCenterOf(worldPosition); - RandomSource r = level.random; + RandomSource r = level.getRandom(); for (int i = 0; i < 20; i++) { Vec3 offset = VecHelper.offsetRandomly(Vec3.ZERO, r, .5f) .multiply(1, .25f, 1) diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockItem.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockItem.java index 09158fe034..93e24476e2 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockItem.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerBlockItem.java @@ -9,15 +9,15 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.AllTags.AllEntityTags; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.util.random.WeightedEntry.Wrapper; +import net.minecraft.util.random.Weighted; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.EntityType; @@ -35,7 +35,6 @@ import net.minecraft.world.level.block.entity.SpawnerBlockEntity; import net.minecraft.world.phys.Vec3; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class BlazeBurnerBlockItem extends BlockItem { @@ -61,11 +60,6 @@ private BlazeBurnerBlockItem(Block block, Properties properties, boolean capture this.capturedBlaze = capturedBlaze; } - @Override - public String getDescriptionId() { - return hasCapturedBlaze() ? super.getDescriptionId() : "item.create." + RegisteredObjectsHelper.getKeyOrThrow(this).getPath(); - } - @Override public InteractionResult useOn(UseOnContext context) { if (hasCapturedBlaze()) @@ -83,7 +77,7 @@ public InteractionResult useOn(UseOnContext context) { List possibleSpawns = spawner.spawnPotentials.unwrap() .stream() - .map(Wrapper::data) + .map(Weighted::value) .toList(); if (possibleSpawns.isEmpty()) { @@ -92,12 +86,13 @@ public InteractionResult useOn(UseOnContext context) { } for (SpawnData e : possibleSpawns) { - Optional> optionalEntity = EntityType.by(e.entityToSpawn()); + Optional> optionalEntity = + EntityType.by(LegacyBlockEntityTagBridge.input(e.entityToSpawn(), world.registryAccess())); if (optionalEntity.isEmpty() || !AllEntityTags.BLAZE_BURNER_CAPTURABLE.matches(optionalEntity.get())) continue; spawnCaptureEffects(world, VecHelper.getCenterOf(pos)); - if (world.isClientSide || player == null) + if (world.isClientSide() || player == null) return InteractionResult.SUCCESS; giveBurnerItemTo(player, context.getItemInHand(), context.getHand()); @@ -117,7 +112,7 @@ public InteractionResult interactLivingEntity(ItemStack heldItem, Player player, Level world = player.level(); spawnCaptureEffects(world, entity.position()); - if (world.isClientSide) + if (world.isClientSide()) return InteractionResult.FAIL; giveBurnerItemTo(player, heldItem, hand); @@ -138,9 +133,10 @@ protected void giveBurnerItemTo(Player player, ItemStack heldItem, InteractionHa } private void spawnCaptureEffects(Level world, Vec3 vec) { - if (world.isClientSide) { + if (world.isClientSide()) { + var random = world.getRandom(); for (int i = 0; i < 40; i++) { - Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, world.random, .125f); + Vec3 motion = VecHelper.offsetRandomly(Vec3.ZERO, random, .125f); world.addParticle(ParticleTypes.FLAME, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z); Vec3 circle = motion.multiply(1, 0, 1) .normalize() diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerHandler.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerHandler.java index 48ab607757..475343a282 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerHandler.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerHandler.java @@ -11,8 +11,8 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.entity.projectile.ThrownEgg; -import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.entity.projectile.throwableitemprojectile.ThrownEgg; +import net.minecraft.world.entity.projectile.throwableitemprojectile.AbstractThrownPotion; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.alchemy.Potion; import net.minecraft.world.item.alchemy.PotionContents; @@ -58,7 +58,7 @@ public static void thrownEggsGetEatenByBurner(ProjectileImpactEvent event) { projectile.discard(); Level world = projectile.level(); - if (world.isClientSide) + if (world.isClientSide()) return; if (!heater.isCreative()) { @@ -76,9 +76,9 @@ public static void thrownEggsGetEatenByBurner(ProjectileImpactEvent event) { public static void splashExtinguishesBurner(ProjectileImpactEvent event) { Projectile projectile = event.getProjectile(); - if (projectile.level().isClientSide) + if (projectile.level().isClientSide()) return; - if (!(projectile instanceof ThrownPotion entity)) + if (!(projectile instanceof AbstractThrownPotion entity)) return; if (event.getRayTraceResult() @@ -107,7 +107,9 @@ private static void extinguishLitBurners(Level world, BlockPos pos, Direction di BlockState state = world.getBlockState(pos); if (AllBlocks.LIT_BLAZE_BURNER.has(state)) { world.playSound(null, pos, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, - 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); + 2.6F + (world.getRandom() + .nextFloat() - world.getRandom() + .nextFloat()) * 0.8F); world.setBlockAndUpdate(pos, AllBlocks.BLAZE_BURNER.getDefaultState()); } } diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerMovementBehaviour.java index 28b04aa756..17114bc10a 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerMovementBehaviour.java @@ -9,13 +9,13 @@ import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.ParticleTypes; @@ -27,7 +27,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class BlazeBurnerMovementBehaviour implements MovementBehaviour { @@ -83,7 +82,7 @@ private float getTargetAngle(MovementContext context) { .getAxis() == Axis.X ? angle + 180 : angle; } - Entity player = Minecraft.getInstance().cameraEntity; + Entity player = Minecraft.getInstance().getCameraEntity(); if (player != null && !player.isInvisible() && context.position != null) { Vec3 applyRotation = context.contraption.entity.reverseRotation(player.position() .subtract(context.position), 1); @@ -98,7 +97,7 @@ private boolean shouldRenderHat(MovementContext context) { CompoundTag data = context.data; if (!data.contains("Conductor")) data.putBoolean("Conductor", determineIfConducting(context)); - return data.getBoolean("Conductor") && (context.contraption.entity instanceof CarriageContraptionEntity cce) + return data.getBooleanOr("Conductor", false) && (context.contraption.entity instanceof CarriageContraptionEntity cce) && cce.hasSchedule(); } @@ -119,7 +118,6 @@ public boolean disableBlockEntityRendering() { } @Override - @OnlyIn(Dist.CLIENT) public void renderInContraption(MovementContext context, VirtualRenderWorld renderWorld, ContraptionMatrices matrices, MultiBufferSource buffer) { if (!shouldRender(context)) diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerRenderer.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerRenderer.java index bdea90817c..5ebad76f59 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerRenderer.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerRenderer.java @@ -13,15 +13,15 @@ import com.simibubi.create.foundation.virtualWorld.VirtualRenderWorld; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -64,7 +64,7 @@ public static void renderInContraption(MovementContext context, VirtualRenderWor heatLevel = HeatLevel.FADING; Level level = context.world; - float horizontalAngle = AngleHelper.rad(headAngle.getValue(AnimationTickHolder.getPartialTicks(level))); + float horizontalAngle = AngleHelper.rad(headAngle.getValue(AnimationTickHolder.getPartialTicks())); boolean drawGoggles = context.blockEntityData.contains("Goggles"); boolean drawHat = conductor || context.blockEntityData.contains("TrainHat"); int hashCode = context.hashCode(); @@ -79,7 +79,7 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform boolean canDrawFlame, boolean drawGoggles, PartialModel drawHat, int hashCode) { boolean blockAbove = animation > 0.125f; - float time = AnimationTickHolder.getRenderTime(level); + float time = AnimationTickHolder.getRenderTime(); float renderTick = time + (hashCode % 13) * 16f; float offsetMult = heatLevel.isAtLeast(HeatLevel.FADING) ? 64 : 16; float offset = Mth.sin((float) ((renderTick / 16f) % (2 * Math.PI))) / offsetMult; @@ -95,7 +95,7 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform if (modelTransform != null) blazeBuffer.transform(modelTransform); blazeBuffer.translate(0, headY, 0); - draw(blazeBuffer, horizontalAngle, ms, bufferSource.getBuffer(RenderType.solid())); + draw(blazeBuffer, horizontalAngle, ms, bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); if (drawGoggles) { PartialModel gogglesModel = blazeModel == AllPartialModels.BLAZE_INERT @@ -105,7 +105,7 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform if (modelTransform != null) gogglesBuffer.transform(modelTransform); gogglesBuffer.translate(0, headY + 8 / 16f, 0); - draw(gogglesBuffer, horizontalAngle, ms, bufferSource.getBuffer(RenderType.solid())); + draw(gogglesBuffer, horizontalAngle, ms, bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } if (drawHat != null) { @@ -114,18 +114,18 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform hatBuffer.transform(modelTransform); hatBuffer.translate(0, headY, 0); if (blazeModel == AllPartialModels.BLAZE_INERT) { - hatBuffer.translateY(0.5f) + hatBuffer.translate(0, 0.5f, 0) .center() .scale(0.75f) .uncenter(); } else { - hatBuffer.translateY(0.75f); + hatBuffer.translate(0, 0.75f, 0); } - VertexConsumer cutout = bufferSource.getBuffer(RenderType.cutoutMipped()); + VertexConsumer cutout = bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); hatBuffer .rotateCentered(horizontalAngle + Mth.PI, Direction.UP) .translate(0.5f, 0, 0.5f) - .light(LightTexture.FULL_BRIGHT) + .light(LightCoordsUtil.FULL_BRIGHT) .renderInto(ms, cutout); } @@ -139,15 +139,15 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform if (modelTransform != null) rodsBuffer.transform(modelTransform); rodsBuffer.translate(0, offset1 + animation + .125f, 0) - .light(LightTexture.FULL_BRIGHT) - .renderInto(ms, bufferSource.getBuffer(RenderType.solid())); + .light(LightCoordsUtil.FULL_BRIGHT) + .renderInto(ms, bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); SuperByteBuffer rodsBuffer2 = CachedBuffers.partial(rodsModel2, blockState); if (modelTransform != null) rodsBuffer2.transform(modelTransform); rodsBuffer2.translate(0, offset2 + animation - 3 / 16f, 0) - .light(LightTexture.FULL_BRIGHT) - .renderInto(ms, bufferSource.getBuffer(RenderType.solid())); + .light(LightCoordsUtil.FULL_BRIGHT) + .renderInto(ms, bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } if (canDrawFlame && blockAbove) { @@ -179,7 +179,7 @@ public static void renderShared(PoseStack ms, @Nullable PoseStack modelTransform flameBuffer.transform(modelTransform); flameBuffer.shiftUVScrolling(spriteShift, (float) uScroll, (float) vScroll); - VertexConsumer cutout = bufferSource.getBuffer(RenderType.cutoutMipped()); + VertexConsumer cutout = bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); draw(flameBuffer, horizontalAngle, ms, cutout); } @@ -199,7 +199,7 @@ public static PartialModel getBlazeModel(HeatLevel heatLevel, boolean blockAbove private static void draw(SuperByteBuffer buffer, float horizontalAngle, PoseStack ms, VertexConsumer vc) { buffer.rotateCentered(horizontalAngle, Direction.UP) - .light(LightTexture.FULL_BRIGHT) + .light(LightCoordsUtil.FULL_BRIGHT) .renderInto(ms, vc); } } diff --git a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerVisual.java b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerVisual.java index 012661a075..b7f3317ffb 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerVisual.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/BlazeBurnerVisual.java @@ -2,7 +2,7 @@ import java.util.function.Consumer; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllPartialModels; @@ -22,9 +22,9 @@ import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; import dev.engine_room.flywheel.lib.visual.SimpleTickableVisual; -import net.createmod.catnip.render.SpriteShiftEntry; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.LightTexture; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; +import net.createmod.catnip.api.math.AngleHelper; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -61,7 +61,7 @@ public BlazeBurnerVisual(VisualizationContext ctx, BlazeBurnerBlockEntity blockE head = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(blazeModel)) .createInstance(); - head.light(LightTexture.FULL_BRIGHT); + head.light(LightCoordsUtil.FULL_BRIGHT); animate(partialTick); } @@ -107,8 +107,8 @@ private void animate(float partialTicks) { largeRods = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(rodsModel2)) .createInstance(); - smallRods.light(LightTexture.FULL_BRIGHT); - largeRods.light(LightTexture.FULL_BRIGHT); + smallRods.light(LightCoordsUtil.FULL_BRIGHT); + largeRods.light(LightCoordsUtil.FULL_BRIGHT); } else if (!needsRods && hasRods) { if (smallRods != null) @@ -133,7 +133,7 @@ private void animate(float partialTicks) { if (blockEntity.goggles && goggles == null) { goggles = instancerProvider().instancer(InstanceTypes.TRANSFORMED, Models.partial(isInert ? AllPartialModels.BLAZE_GOGGLES_SMALL : AllPartialModels.BLAZE_GOGGLES)) .createInstance(); - goggles.light(LightTexture.FULL_BRIGHT); + goggles.light(LightCoordsUtil.FULL_BRIGHT); } else if (!blockEntity.goggles && goggles != null) { goggles.delete(); goggles = null; @@ -146,14 +146,14 @@ private void animate(float partialTicks) { Models.partial( blockEntity.stockKeeper ? AllPartialModels.LOGISTICS_HAT : AllPartialModels.TRAIN_HAT)) .createInstance(); - hat.light(LightTexture.FULL_BRIGHT); + hat.light(LightCoordsUtil.FULL_BRIGHT); } else if (!hatPresent && hat != null) { hat.delete(); hat = null; } var hashCode = blockEntity.hashCode(); - float time = AnimationTickHolder.getRenderTime(level); + float time = AnimationTickHolder.getRenderTime(); float renderTick = time + (hashCode % 13) * 16f; float offsetMult = heatLevel.isAtLeast(BlazeBurnerBlock.HeatLevel.FADING) ? 64 : 16; float offset = Mth.sin((float) ((renderTick / 16f) % (2 * Math.PI))) / offsetMult; @@ -186,7 +186,7 @@ private void animate(float partialTicks) { .translateY(0.75f); hat.rotateCentered(horizontalAngle + Mth.PI, Direction.UP) .translate(0.5f, 0, 0.5f) - .light(LightTexture.FULL_BRIGHT); + .light(LightCoordsUtil.FULL_BRIGHT); hat.setChanged(); } @@ -215,7 +215,7 @@ private void setupFlameInstance() { .createInstance(); flame.position(getVisualPosition()) - .light(LightTexture.FULL_BRIGHT); + .light(LightCoordsUtil.FULL_BRIGHT); SpriteShiftEntry spriteShift = heatLevel == BlazeBurnerBlock.HeatLevel.SEETHING ? AllSpriteShifts.SUPER_BURNER_FLAME : AllSpriteShifts.BURNER_FLAME; diff --git a/src/main/java/com/simibubi/create/content/processing/burner/LitBlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/processing/burner/LitBlazeBurnerBlock.java index 4cea1cf7d6..9921da0731 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/LitBlazeBurnerBlock.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/LitBlazeBurnerBlock.java @@ -5,8 +5,9 @@ import com.simibubi.create.Create; import com.simibubi.create.content.equipment.wrench.IWrenchable; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -14,7 +15,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -32,7 +33,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.common.ItemAbility; public class LitBlazeBurnerBlock extends Block implements IWrenchable { @@ -53,27 +53,27 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (stack.getItem() instanceof ShovelItem || stack.getItem().canPerformAction(stack, EXTINGUISH_FLAME_ACTION)) { level.playSound(player, pos, SoundEvents.GENERIC_EXTINGUISH_FIRE, SoundSource.BLOCKS, 0.5f, 2); - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; stack.hurtAndBreak(1, player, EquipmentSlot.MAINHAND); level.setBlockAndUpdate(pos, AllBlocks.BLAZE_BURNER.getDefaultState()); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (state.getValue(FLAME_TYPE) == FlameType.REGULAR) { if (stack.is(ItemTags.SOUL_FIRE_BASE_BLOCKS)) { - level.playSound(player, pos, SoundEvents.SOUL_SAND_PLACE, SoundSource.BLOCKS, 1.0f, level.random.nextFloat() * 0.4F + 0.8F); - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + level.playSound(player, pos, SoundEvents.SOUL_SAND_PLACE, SoundSource.BLOCKS, 1.0f, level.getRandom().nextFloat() * 0.4F + 0.8F); + if (level.isClientSide()) + return InteractionResult.SUCCESS; level.setBlockAndUpdate(pos, defaultBlockState().setValue(FLAME_TYPE, FlameType.SOUL)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override @@ -83,13 +83,11 @@ public VoxelShape getShape(BlockState state, BlockGetter reader, BlockPos pos, C } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllItems.EMPTY_BLAZE_BURNER.asStack(); } @Override - @OnlyIn(Dist.CLIENT) public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) { world.addAlwaysVisibleParticle(ParticleTypes.LARGE_SMOKE, true, (double) pos.getX() + 0.5D + random.nextDouble() / 3.0D * (double) (random.nextBoolean() ? 1 : -1), @@ -129,7 +127,7 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) { } @Override - public int getAnalogOutputSignal(BlockState state, Level p_180641_2_, BlockPos p_180641_3_) { + public int getAnalogOutputSignal(BlockState state, Level p_180641_2_, BlockPos p_180641_3_, Direction direction) { return state.getValue(FLAME_TYPE) == FlameType.REGULAR ? 1 : 2; } diff --git a/src/main/java/com/simibubi/create/content/processing/burner/ScrollInstance.java b/src/main/java/com/simibubi/create/content/processing/burner/ScrollInstance.java index bcf394450f..c7b613df27 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/ScrollInstance.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/ScrollInstance.java @@ -6,7 +6,7 @@ import dev.engine_room.flywheel.api.instance.InstanceHandle; import dev.engine_room.flywheel.api.instance.InstanceType; import dev.engine_room.flywheel.lib.instance.ColoredLitOverlayInstance; -import net.createmod.catnip.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; import net.minecraft.core.Vec3i; public class ScrollInstance extends ColoredLitOverlayInstance { diff --git a/src/main/java/com/simibubi/create/content/processing/burner/ScrollTransformedInstance.java b/src/main/java/com/simibubi/create/content/processing/burner/ScrollTransformedInstance.java index 920435cc50..c22ca9d6cf 100644 --- a/src/main/java/com/simibubi/create/content/processing/burner/ScrollTransformedInstance.java +++ b/src/main/java/com/simibubi/create/content/processing/burner/ScrollTransformedInstance.java @@ -3,7 +3,7 @@ import dev.engine_room.flywheel.api.instance.InstanceHandle; import dev.engine_room.flywheel.api.instance.InstanceType; import dev.engine_room.flywheel.lib.instance.TransformedInstance; -import net.createmod.catnip.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; public class ScrollTransformedInstance extends TransformedInstance { public float speedU; diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/HeatCondition.java b/src/main/java/com/simibubi/create/content/processing/recipe/HeatCondition.java index 3b6b055926..b9e8bf36d7 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/HeatCondition.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/HeatCondition.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.processing.recipe; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import org.jetbrains.annotations.NotNull; @@ -8,7 +8,7 @@ import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import io.netty.buffer.ByteBuf; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingFluidOutput.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingFluidOutput.java new file mode 100644 index 0000000000..cb58f3717b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingFluidOutput.java @@ -0,0 +1,69 @@ +package com.simibubi.create.content.processing.recipe; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; + +import net.neoforged.neoforge.common.util.NeoForgeExtraCodecs; +import net.neoforged.neoforge.fluids.FluidStack; + +public class ProcessingFluidOutput { + + public static final ProcessingFluidOutput EMPTY = new ProcessingFluidOutput(Fluids.EMPTY, 0); + + public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( + BuiltInRegistries.FLUID.byNameCodec().fieldOf("id").forGetter(ProcessingFluidOutput::fluid), + NeoForgeExtraCodecs.optionalFieldAlwaysWrite(ExtraCodecs.POSITIVE_INT, "amount", 1000).forGetter(ProcessingFluidOutput::amount), + DataComponentPatch.CODEC.optionalFieldOf("components", DataComponentPatch.EMPTY).forGetter(ProcessingFluidOutput::patch) + ).apply(instance, ProcessingFluidOutput::new)); + + public static final StreamCodec STREAM_CODEC = StreamCodec.composite( + ByteBufCodecs.registry(Registries.FLUID), ProcessingFluidOutput::fluid, + ByteBufCodecs.VAR_INT, ProcessingFluidOutput::amount, + DataComponentPatch.STREAM_CODEC, ProcessingFluidOutput::patch, + ProcessingFluidOutput::new + ); + + private final Fluid fluid; + private final int amount; + private final DataComponentPatch patch; + + public ProcessingFluidOutput(Fluid fluid, int amount) { + this(fluid, amount, DataComponentPatch.EMPTY); + } + + public ProcessingFluidOutput(Fluid fluid, int amount, DataComponentPatch patch) { + this.fluid = fluid; + this.amount = amount; + this.patch = patch; + } + + public ProcessingFluidOutput(FluidStack stack) { + this(stack.getFluid(), stack.getAmount(), stack.getComponentsPatch()); + } + + public FluidStack getStack() { + return new FluidStack(fluid, amount, patch); + } + + public Fluid fluid() { + return fluid; + } + + public int amount() { + return amount; + } + + public DataComponentPatch patch() { + return patch; + } +} diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingInventory.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingInventory.java index da03e8d1a3..90f6b2c673 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingInventory.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingInventory.java @@ -8,6 +8,8 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; + import net.neoforged.neoforge.items.ItemStackHandler; public class ProcessingInventory extends ItemStackHandler { @@ -55,21 +57,19 @@ public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { return insertItem; } - @Override public @NotNull CompoundTag serializeNBT(@NotNull HolderLookup.Provider registries) { - CompoundTag nbt = super.serializeNBT(registries); + CompoundTag nbt = LegacyItemStackNbtBridge.serializeHandler(this, registries); nbt.putFloat("ProcessingTime", remainingTime); nbt.putFloat("RecipeTime", recipeDuration); nbt.putBoolean("AppliedRecipe", appliedRecipe); return nbt; } - @Override public void deserializeNBT(@NotNull HolderLookup.Provider registries, CompoundTag nbt) { - remainingTime = nbt.getFloat("ProcessingTime"); - recipeDuration = nbt.getFloat("RecipeTime"); - appliedRecipe = nbt.getBoolean("AppliedRecipe"); - super.deserializeNBT(registries, nbt); + remainingTime = nbt.getFloatOr("ProcessingTime", 0); + recipeDuration = nbt.getFloatOr("RecipeTime", 0); + appliedRecipe = nbt.getBooleanOr("AppliedRecipe", false); + LegacyItemStackNbtBridge.deserializeHandler(this, registries, nbt); if (isEmpty()) appliedRecipe = false; } diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingOutput.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingOutput.java index 80ba873c1a..dff05022d8 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingOutput.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingOutput.java @@ -7,14 +7,14 @@ import com.mojang.serialization.DataResult; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.ExtraCodecs; import net.minecraft.util.RandomSource; import net.minecraft.world.item.Item; @@ -38,7 +38,7 @@ public class ProcessingOutput { private final DataComponentPatch patch; private final float chance; - private ResourceLocation datagenOutput; + private Identifier datagenOutput; public ProcessingOutput(ItemStack stack, float chance) { this(stack.getItem(), stack.getCount(), stack.getComponentsPatch(), chance); @@ -55,11 +55,11 @@ public ProcessingOutput(Item item, int count, DataComponentPatch patch, float ch this.chance = chance; } - public ProcessingOutput(ResourceLocation item, int count, float chance) { + public ProcessingOutput(Identifier item, int count, float chance) { this(item, count, DataComponentPatch.EMPTY, chance); } - public ProcessingOutput(ResourceLocation item, int count, DataComponentPatch patch, float chance) { + public ProcessingOutput(Identifier item, int count, DataComponentPatch patch, float chance) { this.item = Items.AIR; this.datagenOutput = item; this.count = count; @@ -84,6 +84,10 @@ public float getChance() { return chance; } + public Item getItem() { + return item; + } + public ItemStack rollOutput(RandomSource randomSource) { if (chance < 1F) { int count = this.count; @@ -100,9 +104,9 @@ public ItemStack rollOutput(RandomSource randomSource) { @ScheduledForRemoval(inVersion = "1.21.1+ Port") @Deprecated(since = "6.0.3", forRemoval = true) - private static final Codec>> ITEM_CODEC_OLD = Codec.either( - ItemStack.SINGLE_ITEM_CODEC, - ResourceLocation.CODEC.comapFlatMap( + private static final Codec>> ITEM_CODEC_OLD = Codec.either( + ItemStack.CODEC, + Identifier.CODEC.comapFlatMap( loc -> DataResult.error(() -> "Compat cannot be deserialized"), Pair::getFirst ) @@ -119,9 +123,9 @@ public ItemStack rollOutput(RandomSource randomSource) { compat -> new ProcessingOutput(compat.getFirst(), compat.getSecond(), chance) ))); - private static final Codec> ITEM_CODEC = Codec.either( + private static final Codec> ITEM_CODEC = Codec.either( BuiltInRegistries.ITEM.byNameCodec(), - ResourceLocation.CODEC + Identifier.CODEC ); public static final Codec CODEC_NEW = RecordCodecBuilder.create(i -> i.group( diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipe.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipe.java index 9b9631d623..5a12a80fd3 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipe.java @@ -12,7 +12,6 @@ import com.mojang.serialization.MapCodec; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -20,7 +19,10 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.PlacementInfo; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeBookCategories; +import net.minecraft.world.item.crafting.RecipeBookCategory; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; @@ -28,7 +30,6 @@ import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public abstract class ProcessingRecipe implements Recipe { @@ -36,12 +37,12 @@ public abstract class ProcessingRecipe ingredients; protected NonNullList results; protected NonNullList fluidIngredients; - protected NonNullList fluidResults; + protected NonNullList fluidResults; protected int processingDuration; protected HeatCondition requiredHeat; - private RecipeType type; - private RecipeSerializer serializer; + private RecipeType> type; + private RecipeSerializer> serializer; private IRecipeTypeInfo typeInfo; private Supplier forcedResult; @@ -118,7 +119,6 @@ public P getParams() { return params; } - @Override public NonNullList getIngredients() { return ingredients; } @@ -132,7 +132,11 @@ public List getRollableResults() { } public NonNullList getFluidResults() { - return fluidResults; + NonNullList results = NonNullList.create(); + fluidResults.stream() + .map(ProcessingFluidOutput::getStack) + .forEach(results::add); + return results; } public List getRollableResultsAsItemStacks() { @@ -171,16 +175,14 @@ public HeatCondition getRequiredHeat() { // IRecipe<> paperwork @Override - public ItemStack assemble(I t, HolderLookup.Provider provider) { - return getResultItem(provider); + public ItemStack assemble(I t) { + return getResultItem(null); } - @Override public boolean canCraftInDimensions(int width, int height) { return true; } - @Override public ItemStack getResultItem(HolderLookup.Provider provider) { return getRollableResults().isEmpty() ? ItemStack.EMPTY : getRollableResults().getFirst() @@ -194,17 +196,32 @@ public boolean isSpecial() { // Processing recipes do not show up in the recipe book @Override - public String getGroup() { + public String group() { return "processing"; } @Override - public RecipeSerializer getSerializer() { + public boolean showNotification() { + return false; + } + + @Override + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public RecipeBookCategory recipeBookCategory() { + return RecipeBookCategories.CRAFTING_MISC; + } + + @Override + public RecipeSerializer> getSerializer() { return serializer; } @Override - public RecipeType getType() { + public RecipeType> getType() { return type; } diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java index 67ac7fc0c0..d3841b6698 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeBuilder.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import com.google.common.base.Joiner; import com.simibubi.create.Create; @@ -11,9 +12,13 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; +import net.minecraft.core.HolderSet; import net.minecraft.core.NonNullList; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -31,12 +36,12 @@ import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; public abstract class ProcessingRecipeBuilder

, S extends ProcessingRecipeBuilder> { - protected ResourceLocation recipeId; + protected Identifier recipeId; protected Factory factory; protected P params; protected List recipeConditions; - public ProcessingRecipeBuilder(Factory factory, ResourceLocation recipeId) { + public ProcessingRecipeBuilder(Factory factory, Identifier recipeId) { this.recipeId = recipeId; this.factory = factory; this.params = createParams(); @@ -48,7 +53,10 @@ public ProcessingRecipeBuilder(Factory factory, ResourceLocation recipeId) public abstract S self(); public S withItemIngredients(Ingredient... ingredients) { - return withItemIngredients(NonNullList.of(Ingredient.EMPTY, ingredients)); + NonNullList list = NonNullList.create(); + for (Ingredient ingredient : ingredients) + list.add(ingredient); + return withItemIngredients(list); } public S withItemIngredients(NonNullList ingredients) { @@ -70,7 +78,10 @@ public S withItemOutputs(NonNullList outputs) { } public S withFluidIngredients(SizedFluidIngredient... ingredients) { - return withFluidIngredients(NonNullList.of(new SizedFluidIngredient(FluidIngredient.empty(), 1000), ingredients)); + NonNullList list = NonNullList.create(); + for (SizedFluidIngredient ingredient : ingredients) + list.add(ingredient); + return withFluidIngredients(list); } public S withFluidIngredients(NonNullList ingredients) { @@ -83,7 +94,11 @@ public S withFluidOutputs(FluidStack... outputs) { } public S withFluidOutputs(NonNullList outputs) { - params.fluidResults = outputs; + NonNullList converted = NonNullList.create(); + outputs.stream() + .map(ProcessingFluidOutput::new) + .forEach(converted::add); + params.fluidResults = converted; return self(); } @@ -108,20 +123,20 @@ public R build() { public void build(RecipeOutput consumer) { R recipe = build(); IRecipeTypeInfo recipeType = recipe.getTypeInfo(); - ResourceLocation typeId = recipeType.getId(); - ResourceLocation id = recipeId.withPrefix(typeId.getPath() + "/"); + Identifier typeId = recipeType.getId(); + Identifier id = recipeId.withPrefix(typeId.getPath() + "/"); var errors = recipe.validate(); if (!errors.isEmpty()) { errors.add(recipe.getClass().getSimpleName() + "with id " + id + " failed validation:"); Create.LOGGER.warn(Joiner.on('\n').join(errors)); } - consumer.accept(id, recipe, null, recipeConditions.toArray(new ICondition[0])); + consumer.accept(ResourceKey.create(Registries.RECIPE, id), recipe, null, recipeConditions.toArray(new ICondition[0])); } // Datagen shortcuts public S require(TagKey tag) { - return require(Ingredient.of(tag)); + return require(Ingredient.of(HolderSet.emptyNamed(BuiltInRegistries.ITEM, tag))); } public S require(ItemLike item) { @@ -149,7 +164,7 @@ public S require(FlowingFluid fluid, int amount) { } public S require(TagKey fluidTag, int amount) { - return require(SizedFluidIngredient.of(fluidTag, amount)); + return require(new SizedFluidIngredient(FluidIngredient.of(HolderSet.emptyNamed(BuiltInRegistries.FLUID, fluidTag)), amount)); } public S require(SizedFluidIngredient ingredient) { @@ -185,7 +200,7 @@ public S output(float chance, DatagenMod mod, String id, int amount) { return output(new ProcessingOutput(mod.asResource(id), amount, chance)); } - public S output(ResourceLocation id) { + public S output(Identifier id) { return output(1, id, 1); } @@ -193,7 +208,7 @@ public S output(DatagenMod mod, String id) { return output(1, mod.asResource(id), 1); } - public S output(float chance, ResourceLocation registryName, int amount) { + public S output(float chance, Identifier registryName, int amount) { return output(new ProcessingOutput(registryName, amount, chance)); } @@ -208,7 +223,7 @@ public S output(Fluid fluid, int amount) { } public S output(FluidStack fluidStack) { - params.fluidResults.add(fluidStack); + params.fluidResults.add(new ProcessingFluidOutput(fluidStack)); return self(); } diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeParams.java b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeParams.java index 411b5cddd4..b32350d529 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeParams.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/ProcessingRecipeParams.java @@ -10,14 +10,13 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.foundation.codec.CreateCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.crafting.Ingredient; -import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; public class ProcessingRecipeParams { @@ -27,7 +26,7 @@ public class ProcessingRecipeParams { protected NonNullList ingredients; protected NonNullList results; protected NonNullList fluidIngredients; - protected NonNullList fluidResults; + protected NonNullList fluidResults; protected int processingDuration; protected HeatCondition requiredHeat; @@ -44,7 +43,7 @@ protected static

MapCodec

codec(Supplier

instance.group( Codec.either(CreateCodecs.SIZED_FLUID_INGREDIENT, Ingredient.CODEC).listOf().fieldOf("ingredients") .forGetter(ProcessingRecipeParams::ingredients), - Codec.either(FluidStack.CODEC, ProcessingOutput.CODEC).listOf().fieldOf("results") + Codec.either(ProcessingFluidOutput.CODEC, ProcessingOutput.CODEC).listOf().fieldOf("results") .forGetter(ProcessingRecipeParams::results), Codec.INT.optionalFieldOf("processing_time", 0) .forGetter(ProcessingRecipeParams::processingDuration), @@ -82,8 +81,8 @@ protected final List> ingredients() { return ingredients; } - protected final List> results() { - List> results = + protected final List> results() { + List> results = new ArrayList<>(this.results.size() + this.fluidResults.size()); this.results.forEach(result -> results.add(Either.right(result))); this.fluidResults.forEach(result -> results.add(Either.left(result))); @@ -102,7 +101,7 @@ protected void encode(RegistryFriendlyByteBuf buffer) { CatnipStreamCodecBuilders.nonNullList(Ingredient.CONTENTS_STREAM_CODEC).encode(buffer, ingredients); CatnipStreamCodecBuilders.nonNullList(SizedFluidIngredient.STREAM_CODEC).encode(buffer, fluidIngredients); CatnipStreamCodecBuilders.nonNullList(ProcessingOutput.STREAM_CODEC).encode(buffer, results); - CatnipStreamCodecBuilders.nonNullList(FluidStack.STREAM_CODEC).encode(buffer, fluidResults); + CatnipStreamCodecBuilders.nonNullList(ProcessingFluidOutput.STREAM_CODEC).encode(buffer, fluidResults); ByteBufCodecs.VAR_INT.encode(buffer, processingDuration); HeatCondition.STREAM_CODEC.encode(buffer, requiredHeat); } @@ -111,7 +110,7 @@ protected void decode(RegistryFriendlyByteBuf buffer) { ingredients = CatnipStreamCodecBuilders.nonNullList(Ingredient.CONTENTS_STREAM_CODEC).decode(buffer); fluidIngredients = CatnipStreamCodecBuilders.nonNullList(SizedFluidIngredient.STREAM_CODEC).decode(buffer); results = CatnipStreamCodecBuilders.nonNullList(ProcessingOutput.STREAM_CODEC).decode(buffer); - fluidResults = CatnipStreamCodecBuilders.nonNullList(FluidStack.STREAM_CODEC).decode(buffer); + fluidResults = CatnipStreamCodecBuilders.nonNullList(ProcessingFluidOutput.STREAM_CODEC).decode(buffer); processingDuration = ByteBufCodecs.VAR_INT.decode(buffer); requiredHeat = HeatCondition.STREAM_CODEC.decode(buffer); } diff --git a/src/main/java/com/simibubi/create/content/processing/recipe/StandardProcessingRecipe.java b/src/main/java/com/simibubi/create/content/processing/recipe/StandardProcessingRecipe.java index ba51ec5fe3..1bfc4bdc73 100644 --- a/src/main/java/com/simibubi/create/content/processing/recipe/StandardProcessingRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/recipe/StandardProcessingRecipe.java @@ -1,19 +1,20 @@ package com.simibubi.create.content.processing.recipe; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import javax.annotation.ParametersAreNonnullByDefault; import com.mojang.serialization.MapCodec; import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeSerializer; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public abstract class StandardProcessingRecipe extends ProcessingRecipe { public StandardProcessingRecipe(IRecipeTypeInfo typeInfo, ProcessingRecipeParams params) { super(typeInfo, params); @@ -27,7 +28,7 @@ public interface Factory> extends Processi public static class Builder> extends ProcessingRecipeBuilder> { - public Builder(Factory factory, ResourceLocation recipeId) { + public Builder(Factory factory, Identifier recipeId) { super(factory, recipeId); } @@ -42,29 +43,28 @@ public Builder self() { } } - public static class Serializer> implements RecipeSerializer { - private final Factory factory; - private final MapCodec codec; - private final StreamCodec streamCodec; + public static class Serializer { + private static final Map, Factory> FACTORIES = new ConcurrentHashMap<>(); - public Serializer(Factory factory) { - this.factory = factory; - this.codec = ProcessingRecipe.codec(factory, ProcessingRecipeParams.CODEC); - this.streamCodec = ProcessingRecipe.streamCodec(factory, ProcessingRecipeParams.STREAM_CODEC); + public static > RecipeSerializer create(Factory factory) { + RecipeSerializer serializer = new RecipeSerializer<>( + ProcessingRecipe.codec(factory, ProcessingRecipeParams.CODEC), + ProcessingRecipe.streamCodec(factory, ProcessingRecipeParams.STREAM_CODEC) + ); + FACTORIES.put(serializer, factory); + return serializer; } - @Override - public MapCodec codec() { - return codec; - } - - @Override - public StreamCodec streamCodec() { - return streamCodec; + public static boolean hasFactory(RecipeSerializer serializer) { + return FACTORIES.containsKey(serializer); } - public Factory factory() { - return factory; + @SuppressWarnings("unchecked") + public static > Factory factory(RecipeSerializer serializer) { + Factory factory = FACTORIES.get(serializer); + if (factory == null) + throw new IllegalStateException("Recipe serializer " + serializer + " was not created by Create's processing recipe serializer factory"); + return (Factory) factory; } } } diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/IAssemblyRecipe.java b/src/main/java/com/simibubi/create/content/processing/sequenced/IAssemblyRecipe.java index 01a0c8a5e0..a3c27ea301 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/IAssemblyRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/IAssemblyRecipe.java @@ -11,7 +11,6 @@ import net.minecraft.world.level.ItemLike; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; public interface IAssemblyRecipe { @@ -19,7 +18,6 @@ default boolean supportsAssembly() { return true; } - @OnlyIn(Dist.CLIENT) Component getDescriptionForAssembly(); void addRequiredMachines(Set list); diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyItem.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyItem.java index 645aa5d423..700aa0f7a3 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyItem.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyItem.java @@ -1,7 +1,7 @@ package com.simibubi.create.content.processing.sequenced; import com.simibubi.create.AllDataComponents; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipe.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipe.java index 8b0a29caf5..c994789702 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipe.java @@ -11,34 +11,31 @@ import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.content.processing.recipe.ProcessingOutput; import com.simibubi.create.content.processing.recipe.ProcessingRecipe; -import com.simibubi.create.foundation.utility.CreateLang; import io.netty.buffer.ByteBuf; -import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; import net.minecraft.core.HolderLookup; -import net.minecraft.network.chat.CommonComponents; -import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.server.MinecraftServer; import net.minecraft.util.RandomSource; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.PlacementInfo; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeBookCategories; +import net.minecraft.world.item.crafting.RecipeBookCategory; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent; import net.neoforged.neoforge.items.wrapper.RecipeWrapper; public class SequencedAssemblyRecipe implements Recipe { - protected SequencedAssemblyRecipeSerializer serializer; + protected RecipeSerializer serializer; protected Ingredient ingredient; protected List> sequence; @@ -47,7 +44,7 @@ public class SequencedAssemblyRecipe implements Recipe { public final List resultPool; - public SequencedAssemblyRecipe(SequencedAssemblyRecipeSerializer serializer) { + public SequencedAssemblyRecipe(RecipeSerializer serializer) { this.serializer = serializer; sequence = new ArrayList<>(); resultPool = new ArrayList<>(); @@ -72,33 +69,39 @@ public SequencedAssemblyRecipe(SequencedAssemblyRecipeSerializer serializer) { public static > Optional> getRecipe(Level level, ItemStack item, RecipeType type, Class recipeClass) { - List> all = level.getRecipeManager() - .getAllRecipesFor(AllRecipeTypes.SEQUENCED_ASSEMBLY.getType()); + MinecraftServer server = level.getServer(); + if (server == null) + return Optional.empty(); + List> all = getSequencedAssemblyRecipes(server); for (RecipeHolder sequencedAssemblyRecipe : all) { - if (!sequencedAssemblyRecipe.value().appliesTo(sequencedAssemblyRecipe.id(), item)) + Identifier id = sequencedAssemblyRecipe.id().identifier(); + if (!sequencedAssemblyRecipe.value().appliesTo(id, item)) continue; SequencedRecipe nextRecipe = sequencedAssemblyRecipe.value().getNextRecipe(item); ProcessingRecipe recipe = nextRecipe.getRecipe(); if (recipe.getType() != type || !recipeClass.isInstance(recipe)) continue; - recipe.enforceNextResult(() -> sequencedAssemblyRecipe.value().advance(sequencedAssemblyRecipe.id(), item, level.random)); + recipe.enforceNextResult(() -> sequencedAssemblyRecipe.value().advance(id, item, level.getRandom())); return Optional.of(new RecipeHolder<>(sequencedAssemblyRecipe.id(), recipeClass.cast(recipe))); } return Optional.empty(); } public static > List> getRecipes(Level level, ItemStack item, RecipeType type, Class recipeClass, Predicate> recipeFilter) { - List> all = level.getRecipeManager() - .getAllRecipesFor(AllRecipeTypes.SEQUENCED_ASSEMBLY.getType()); + MinecraftServer server = level.getServer(); + if (server == null) + return List.of(); + List> all = getSequencedAssemblyRecipes(server); List> result = new ArrayList<>(); for (RecipeHolder holder : all) { - if (holder.value().appliesTo(holder.id(), item)) { + Identifier id = holder.id().identifier(); + if (holder.value().appliesTo(id, item)) { ProcessingRecipe recipe = holder.value().getNextRecipe(item).getRecipe(); if (recipe.getType() == type && recipeClass.isInstance(recipe)) { - recipe.enforceNextResult(() -> holder.value().advance(holder.id(), item, level.random)); + recipe.enforceNextResult(() -> holder.value().advance(id, item, level.getRandom())); R castedRecipe = recipeClass.cast(recipe); RecipeHolder h = new RecipeHolder<>(holder.id(), castedRecipe); if (recipeFilter.test(h)) @@ -110,7 +113,18 @@ public SequencedAssemblyRecipe(SequencedAssemblyRecipeSerializer serializer) { return result; } - private ItemStack advance(ResourceLocation id, ItemStack input, RandomSource random) { + @SuppressWarnings("unchecked") + private static List> getSequencedAssemblyRecipes(MinecraftServer server) { + RecipeType type = AllRecipeTypes.SEQUENCED_ASSEMBLY.getType(); + return server.getRecipeManager() + .getRecipes() + .stream() + .filter(holder -> holder.value().getType() == type) + .map(holder -> (RecipeHolder) (RecipeHolder) holder) + .toList(); + } + + private ItemStack advance(Identifier id, ItemStack input, RandomSource random) { int step = getStep(input); if ((step + 1) / sequence.size() >= loops) return rollResult(random); @@ -143,11 +157,11 @@ private ItemStack rollResult(RandomSource random) { return ItemStack.EMPTY; } - private boolean appliesTo(ResourceLocation id, ItemStack input) { + private boolean appliesTo(Identifier id, ItemStack input) { // First, check if the item is already in the middle of a sequenced assembly recipe if (input.has(AllDataComponents.SEQUENCED_ASSEMBLY)) { //noinspection DataFlowIssue - return getTransitionalItem().getItem() == input.getItem() && input + return getTransitionalItemItem() == input.getItem() && input .get(AllDataComponents.SEQUENCED_ASSEMBLY) .id().equals(id); } @@ -159,7 +173,7 @@ private SequencedRecipe getNextRecipe(ItemStack input) { return sequence.get(getStep(input) % sequence.size()); } - private int getStep(ItemStack input) { + int getStep(ItemStack input) { if (!input.has(AllDataComponents.SEQUENCED_ASSEMBLY)) return 0; //noinspection DataFlowIssue @@ -172,16 +186,14 @@ public boolean matches(RecipeWrapper inv, Level level) { } @Override - public ItemStack assemble(RecipeWrapper input, HolderLookup.Provider registries) { + public ItemStack assemble(RecipeWrapper input) { return ItemStack.EMPTY; } - @Override public boolean canCraftInDimensions(int width, int height) { return false; } - @Override public ItemStack getResultItem(HolderLookup.Provider registries) { return resultPool.getFirst().getStack(); } @@ -194,7 +206,7 @@ public float getOutputChance() { } @Override - public RecipeSerializer getSerializer() { + public RecipeSerializer> getSerializer() { return serializer; } @@ -204,52 +216,28 @@ public boolean isSpecial() { } @Override - public RecipeType getType() { - return AllRecipeTypes.SEQUENCED_ASSEMBLY.getType(); + public boolean showNotification() { + return false; } - @OnlyIn(Dist.CLIENT) - public static void addToTooltip(ItemTooltipEvent event) { - ItemStack stack = event.getItemStack(); - if (!stack.has(AllDataComponents.SEQUENCED_ASSEMBLY)) - return; - SequencedAssembly sequencedAssembly = stack.get(AllDataComponents.SEQUENCED_ASSEMBLY); - @SuppressWarnings({"RedundantCast", "DataFlowIssue"}) // The java compiler thinks `byKey` returns an Optional> - Optional>> optionalRecipe = - (Optional>) Minecraft.getInstance().level.getRecipeManager() - .byKey(sequencedAssembly.id()); - if (optionalRecipe.isEmpty()) - return; - Recipe recipe = optionalRecipe.get().value(); - if (!(recipe instanceof SequencedAssemblyRecipe sequencedAssemblyRecipe)) - return; - - int length = sequencedAssemblyRecipe.sequence.size(); - int step = sequencedAssemblyRecipe.getStep(stack); - int total = length * sequencedAssemblyRecipe.loops; - List tooltip = event.getToolTip(); - tooltip.add(CommonComponents.EMPTY); - tooltip.add(CreateLang.translateDirect("recipe.sequenced_assembly") - .withStyle(ChatFormatting.GRAY)); - tooltip.add(CreateLang.translateDirect("recipe.assembly.progress", step, total) - .withStyle(ChatFormatting.DARK_GRAY)); - - int remaining = total - step; - for (int i = 0; i < length; i++) { - if (i >= remaining) - break; - SequencedRecipe sequencedRecipe = sequencedAssemblyRecipe.sequence.get((i + step) % length); - Component textComponent = sequencedRecipe.getAsAssemblyRecipe() - .getDescriptionForAssembly(); - if (i == 0) - tooltip.add(CreateLang.translateDirect("recipe.assembly.next", textComponent) - .withStyle(ChatFormatting.AQUA)); - else { - tooltip.add(Component.literal("-> ").append(textComponent) - .withStyle(ChatFormatting.DARK_AQUA)); - } - } + @Override + public String group() { + return ""; + } + @Override + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public RecipeBookCategory recipeBookCategory() { + return RecipeBookCategories.CRAFTING_MISC; + } + + @Override + public RecipeType> getType() { + return AllRecipeTypes.SEQUENCED_ASSEMBLY.getType(); } public Ingredient getIngredient() { @@ -264,15 +252,19 @@ public ItemStack getTransitionalItem() { return transitionalItem.getStack(); } - public record SequencedAssembly(ResourceLocation id, int step, float progress) { + public Item getTransitionalItemItem() { + return transitionalItem.getItem(); + } + + public record SequencedAssembly(Identifier id, int step, float progress) { public static final Codec CODEC = RecordCodecBuilder.create(i -> i.group( - ResourceLocation.CODEC.fieldOf("id").forGetter(SequencedAssembly::id), + Identifier.CODEC.fieldOf("id").forGetter(SequencedAssembly::id), Codec.INT.fieldOf("step").forGetter(SequencedAssembly::step), Codec.FLOAT.fieldOf("progress").forGetter(SequencedAssembly::progress) ).apply(i, SequencedAssembly::new)); public static final StreamCodec STREAM_CODEC = StreamCodec.composite( - ResourceLocation.STREAM_CODEC, SequencedAssembly::id, + Identifier.STREAM_CODEC, SequencedAssembly::id, ByteBufCodecs.INT, SequencedAssembly::step, ByteBufCodecs.FLOAT, SequencedAssembly::progress, SequencedAssembly::new diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeBuilder.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeBuilder.java index 6e9d17fbc7..66762ec3ed 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeBuilder.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeBuilder.java @@ -14,8 +14,12 @@ import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe.Builder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -27,11 +31,11 @@ public class SequencedAssemblyRecipeBuilder { - private ResourceLocation id; + private Identifier id; private SequencedAssemblyRecipe recipe; protected List recipeConditions; - public SequencedAssemblyRecipeBuilder(ResourceLocation id) { + public SequencedAssemblyRecipeBuilder(Identifier id) { this.id = id; recipeConditions = new ArrayList<>(); this.recipe = new SequencedAssemblyRecipe(AllRecipeTypes.SEQUENCED_ASSEMBLY.getSerializer()); @@ -40,21 +44,21 @@ public SequencedAssemblyRecipeBuilder(ResourceLocation id) { public > SequencedAssemblyRecipeBuilder addStep( StandardProcessingRecipe.Factory factory, UnaryOperator> builder) { - return addStep((Function>) + return addStep((Function>) id -> new Builder<>(factory, id), builder); } public SequencedAssemblyRecipeBuilder addStep( ItemApplicationRecipe.Factory factory, UnaryOperator> builder) { - return addStep((Function>) + return addStep((Function>) id -> new ItemApplicationRecipe.Builder<>(factory, id), builder); } public > SequencedAssemblyRecipeBuilder addStep( - Function factory, + Function factory, UnaryOperator builder) { - B recipeBuilder = factory.apply(ResourceLocation.withDefaultNamespace("dummy")); + B recipeBuilder = factory.apply(Identifier.withDefaultNamespace("dummy")); Item placeHolder = recipe.getTransitionalItem().getItem(); recipe.getSequence() .add(new SequencedRecipe<>(builder.apply(recipeBuilder.require(placeHolder) @@ -68,7 +72,7 @@ public SequencedAssemblyRecipeBuilder require(ItemLike ingredient) { } public SequencedAssemblyRecipeBuilder require(TagKey tag) { - return require(Ingredient.of(tag)); + return require(Ingredient.of(HolderSet.emptyNamed(BuiltInRegistries.ITEM, tag))); } public SequencedAssemblyRecipeBuilder require(Ingredient ingredient) { @@ -96,15 +100,15 @@ public SequencedAssemblyRecipeBuilder addOutput(ItemStack item, float weight) { } public RecipeHolder build() { - return new RecipeHolder<>(id, recipe); + return new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, id), recipe); } public void build(RecipeOutput consumer) { RecipeHolder holder = build(); - ResourceLocation id = ResourceLocation.fromNamespaceAndPath(holder.id().getNamespace(), - AllRecipeTypes.SEQUENCED_ASSEMBLY.getId().getPath() + "/" + holder.id().getPath()); + Identifier id = Identifier.fromNamespaceAndPath(holder.id().identifier().getNamespace(), + AllRecipeTypes.SEQUENCED_ASSEMBLY.getId().getPath() + "/" + holder.id().identifier().getPath()); - consumer.accept(id, holder.value(), null, recipeConditions.toArray(new ICondition[0])); + consumer.accept(ResourceKey.create(Registries.RECIPE, id), holder.value(), null, recipeConditions.toArray(new ICondition[0])); } } diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeClient.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeClient.java new file mode 100644 index 0000000000..999b7435a4 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeClient.java @@ -0,0 +1,67 @@ +package com.simibubi.create.content.processing.sequenced; + +import java.util.List; +import java.util.Optional; + +import com.simibubi.create.AllDataComponents; +import com.simibubi.create.foundation.utility.CreateLang; + +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeHolder; + +import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent; + +public class SequencedAssemblyRecipeClient { + public static void addToTooltip(ItemTooltipEvent event) { + ItemStack stack = event.getItemStack(); + if (!stack.has(AllDataComponents.SEQUENCED_ASSEMBLY)) + return; + SequencedAssemblyRecipe.SequencedAssembly sequencedAssembly = stack.get(AllDataComponents.SEQUENCED_ASSEMBLY); + MinecraftServer server = Minecraft.getInstance().getSingleplayerServer(); + if (server == null) + return; + @SuppressWarnings({"RedundantCast", "DataFlowIssue"}) // The java compiler thinks `byKey` returns an Optional> + Optional>> optionalRecipe = + (Optional>) server.getRecipeManager() + .byKey(ResourceKey.create(Registries.RECIPE, sequencedAssembly.id())); + if (optionalRecipe.isEmpty()) + return; + Recipe recipe = optionalRecipe.get().value(); + if (!(recipe instanceof SequencedAssemblyRecipe sequencedAssemblyRecipe)) + return; + + int length = sequencedAssemblyRecipe.sequence.size(); + int step = sequencedAssemblyRecipe.getStep(stack); + int total = length * sequencedAssemblyRecipe.loops; + List tooltip = event.getToolTip(); + tooltip.add(CommonComponents.EMPTY); + tooltip.add(CreateLang.translateDirect("recipe.sequenced_assembly") + .withStyle(ChatFormatting.GRAY)); + tooltip.add(CreateLang.translateDirect("recipe.assembly.progress", step, total) + .withStyle(ChatFormatting.DARK_GRAY)); + + int remaining = total - step; + for (int i = 0; i < length; i++) { + if (i >= remaining) + break; + SequencedRecipe sequencedRecipe = sequencedAssemblyRecipe.sequence.get((i + step) % length); + Component textComponent = sequencedRecipe.getAsAssemblyRecipe() + .getDescriptionForAssembly(); + if (i == 0) + tooltip.add(CreateLang.translateDirect("recipe.assembly.next", textComponent) + .withStyle(ChatFormatting.AQUA)); + else { + tooltip.add(Component.literal("-> ").append(textComponent) + .withStyle(ChatFormatting.DARK_AQUA)); + } + } + } +} diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeSerializer.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeSerializer.java index e147d27770..1516629ded 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeSerializer.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedAssemblyRecipeSerializer.java @@ -1,12 +1,10 @@ package com.simibubi.create.content.processing.sequenced; -import org.jetbrains.annotations.NotNull; - import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.content.processing.recipe.ProcessingOutput; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -14,8 +12,8 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; -public class SequencedAssemblyRecipeSerializer implements RecipeSerializer { - private final MapCodec CODEC = RecordCodecBuilder.mapCodec( +public class SequencedAssemblyRecipeSerializer { + private static final MapCodec CODEC = RecordCodecBuilder.mapCodec( i -> i.group( Ingredient.CODEC.fieldOf("ingredient").forGetter(SequencedAssemblyRecipe::getIngredient), ProcessingOutput.CODEC.fieldOf("transitional_item").forGetter(r -> r.transitionalItem), @@ -23,7 +21,7 @@ public class SequencedAssemblyRecipeSerializer implements RecipeSerializer r.resultPool), ExtraCodecs.NON_NEGATIVE_INT.optionalFieldOf("loops", 1).forGetter(SequencedAssemblyRecipe::getLoops) ).apply(i, (ingredient, transitionalItem, sequence, results, loops) -> { - SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(this); + SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(create()); recipe.ingredient = ingredient; recipe.transitionalItem = transitionalItem; recipe.sequence.addAll(sequence); @@ -37,30 +35,26 @@ public class SequencedAssemblyRecipeSerializer implements RecipeSerializer STREAM_CODEC = StreamCodec.composite( + private static final StreamCodec STREAM_CODEC = StreamCodec.composite( Ingredient.CONTENTS_STREAM_CODEC, r -> r.ingredient, CatnipStreamCodecBuilders.list(SequencedRecipe.STREAM_CODEC), SequencedAssemblyRecipe::getSequence, CatnipStreamCodecBuilders.list(ProcessingOutput.STREAM_CODEC), r -> r.resultPool, ProcessingOutput.STREAM_CODEC, r -> r.transitionalItem, ByteBufCodecs.VAR_INT, r -> r.loops, - (ingredient, transitionalItem, sequence, results, loops) -> { - SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(this); + (ingredient, sequence, results, transitionalItem, loops) -> { + SequencedAssemblyRecipe recipe = new SequencedAssemblyRecipe(create()); recipe.ingredient = ingredient; - recipe.getSequence().addAll(transitionalItem); - recipe.resultPool.addAll(sequence); - recipe.transitionalItem = results; + recipe.getSequence().addAll(sequence); + recipe.resultPool.addAll(results); + recipe.transitionalItem = transitionalItem; recipe.loops = loops; return recipe; } ); - @Override - public @NotNull MapCodec codec() { - return CODEC; - } + private static final RecipeSerializer SERIALIZER = new RecipeSerializer<>(CODEC, STREAM_CODEC); - @Override - public @NotNull StreamCodec streamCodec() { - return STREAM_CODEC; + public static RecipeSerializer create() { + return SERIALIZER; } } diff --git a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedRecipe.java b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedRecipe.java index 97bf83d92d..e9c699ffea 100644 --- a/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedRecipe.java +++ b/src/main/java/com/simibubi/create/content/processing/sequenced/SequencedRecipe.java @@ -44,7 +44,7 @@ public T getRecipe() { void initFromSequencedAssembly(SequencedAssemblyRecipe parent, boolean isFirst) { if (getAsAssemblyRecipe().supportsAssembly()) { - Ingredient transit = Ingredient.of(parent.getTransitionalItem()); + Ingredient transit = Ingredient.of(parent.getTransitionalItemItem()); wrapped.getIngredients() .set(0, isFirst ? CompoundIngredient.of(transit, parent.getIngredient()) : transit); } diff --git a/src/main/java/com/simibubi/create/content/redstone/FilteredDetectorFilterSlot.java b/src/main/java/com/simibubi/create/content/redstone/FilteredDetectorFilterSlot.java index 3ff1cdb6ed..c0eebad93d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/FilteredDetectorFilterSlot.java +++ b/src/main/java/com/simibubi/create/content/redstone/FilteredDetectorFilterSlot.java @@ -4,8 +4,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/redstone/RoseQuartzLampBlock.java b/src/main/java/com/simibubi/create/content/redstone/RoseQuartzLampBlock.java index 6d0ad39fe9..6b8745c010 100644 --- a/src/main/java/com/simibubi/create/content/redstone/RoseQuartzLampBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/RoseQuartzLampBlock.java @@ -9,7 +9,7 @@ import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.redstone.diodes.BrassDiodeBlock; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -22,6 +22,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -59,9 +60,8 @@ public boolean shouldCheckWeakPower(BlockState state, SignalGetter level, BlockP } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, - boolean pIsMoving) { - if (pLevel.isClientSide) + public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { + if (pLevel.isClientSide()) return; boolean isPowered = pState.getValue(POWERED); diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlock.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlock.java index 0d0e430b6f..44a74131ab 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlock.java @@ -1,12 +1,12 @@ package com.simibubi.create.content.redstone.analogLever; -import com.mojang.serialization.MapCodec; +import java.util.Map; +import java.util.function.Function; -import com.simibubi.create.foundation.mixin.accessor.BlockBehaviourAccessor; +import com.mojang.serialization.MapCodec; import org.jetbrains.annotations.NotNull; -import org.joml.Vector3f; import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.foundation.block.IBE; @@ -14,6 +14,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.DustParticleOptions; +import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; @@ -24,29 +25,39 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FaceAttachedHorizontalDirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; +import net.minecraft.world.level.block.state.properties.AttachFace; import net.minecraft.world.level.pathfinder.PathComputationType; import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class AnalogLeverBlock extends FaceAttachedHorizontalDirectionalBlock implements IBE { public static final MapCodec CODEC = simpleCodec(AnalogLeverBlock::new); + private final Function shapes; + public AnalogLeverBlock(Properties p_i48402_1_) { super(p_i48402_1_); + shapes = makeShapes(); + } + + private Function makeShapes() { + VoxelShape baseShape = Block.boxZ(6.0D, 8.0D, 10.0D, 16.0D); + Map> rotatedShapes = Shapes.rotateAttachFace(baseShape); + return getShapeForEachState(state -> rotatedShapes.get(state.getValue(FACE)) + .get(state.getValue(FACING))); } @Override public InteractionResult useWithoutItem(BlockState state, Level worldIn, BlockPos pos, Player player, BlockHitResult hit) { - if (worldIn.isClientSide) { + if (worldIn.isClientSide()) { addParticles(state, worldIn, pos, 1.0F); return InteractionResult.SUCCESS; } @@ -77,7 +88,6 @@ public int getDirectSignal(BlockState blockState, BlockGetter blockAccess, Block } @Override - @OnlyIn(Dist.CLIENT) public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomSource rand) { withBlockEntityDo(worldIn, pos, be -> { if (be.state != 0 && rand.nextFloat() < 0.25F) @@ -86,14 +96,15 @@ public void animateTick(BlockState stateIn, Level worldIn, BlockPos pos, RandomS } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (isMoving || state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (isMoving) return; withBlockEntityDo(worldIn, pos, be -> { if (be.state != 0) updateNeighbors(state, worldIn, pos); worldIn.removeBlockEntity(pos); }); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } private static void addParticles(BlockState state, LevelAccessor worldIn, BlockPos pos, float alpha) { @@ -106,7 +117,7 @@ private static void addParticles(BlockState state, LevelAccessor worldIn, BlockP (double) pos.getY() + 0.5D + 0.1D * (double) direction.getStepY() + 0.2D * (double) direction1.getStepY(); double d2 = (double) pos.getZ() + 0.5D + 0.1D * (double) direction.getStepZ() + 0.2D * (double) direction1.getStepZ(); - worldIn.addParticle(new DustParticleOptions(new Vector3f(1.0F, 0.0F, 0.0F), alpha), d0, d1, d2, 0.0D, 0.0D, + worldIn.addParticle(new DustParticleOptions(0xff0000, alpha), d0, d1, d2, 0.0D, 0.0D, 0.0D); } @@ -117,7 +128,7 @@ static void updateNeighbors(BlockState state, Level world, BlockPos pos) { @Override public @NotNull VoxelShape getShape(@NotNull BlockState state, @NotNull BlockGetter worldIn, @NotNull BlockPos pos, @NotNull CollisionContext context) { - return ((BlockBehaviourAccessor) Blocks.LEVER).create$getShape(state, worldIn, pos, context); + return shapes.apply(state); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java index 1dcb66c117..5401abe359 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverBlockEntity.java @@ -7,8 +7,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -38,8 +38,8 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - state = compound.getInt("State"); - lastChange = compound.getInt("ChangeTimer"); + state = compound.getIntOr("State", 0); + lastChange = compound.getIntOr("ChangeTimer", 0); clientState.chase(state, 0.2f, Chaser.EXP); super.read(compound, registries, clientPacket); } @@ -52,7 +52,7 @@ public void tick() { if (lastChange == 0) updateOutput(); } - if (level.isClientSide) + if (level.isClientSide()) clientState.tickChaser(); } diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverRenderer.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverRenderer.java index f5a2e8055c..02812171f2 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverRenderer.java @@ -6,12 +6,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.theme.Color; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.theme.Color; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; @@ -31,7 +31,7 @@ protected void renderSafe(AnalogLeverBlockEntity be, float partialTicks, PoseSta BlockState leverState = be.getBlockState(); float state = be.clientState.getValue(partialTicks); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); // Handle SuperByteBuffer handle = CachedBuffers.partial(AllPartialModels.ANALOG_LEVER_HANDLE, leverState); diff --git a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java index 3bd2b18494..be95b3b338 100644 --- a/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java +++ b/src/main/java/com/simibubi/create/content/redstone/analogLever/AnalogLeverVisual.java @@ -14,8 +14,8 @@ import dev.engine_room.flywheel.lib.transform.Translate; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleDynamicVisual; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.properties.AttachFace; diff --git a/src/main/java/com/simibubi/create/content/redstone/contact/ContactMovementBehaviour.java b/src/main/java/com/simibubi/create/content/redstone/contact/ContactMovementBehaviour.java index b95abaddfd..3413ab4a90 100644 --- a/src/main/java/com/simibubi/create/content/redstone/contact/ContactMovementBehaviour.java +++ b/src/main/java/com/simibubi/create/content/redstone/contact/ContactMovementBehaviour.java @@ -4,8 +4,9 @@ import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.contraptions.elevator.ElevatorContraption; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.NbtUtils; @@ -19,7 +20,7 @@ public class ContactMovementBehaviour implements MovementBehaviour { @Override public Vec3 getActiveAreaOffset(MovementContext context) { return Vec3.atLowerCornerOf(context.state.getValue(RedstoneContactBlock.FACING) - .getNormal()) + .getUnitVec3i()) .scale(.65f); } @@ -28,7 +29,7 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { BlockState block = context.state; Level world = context.world; - if (world.isClientSide) + if (world.isClientSide()) return; if (context.firstMovement) return; @@ -39,9 +40,9 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { return; Vec3 contact = Vec3.atLowerCornerOf(block.getValue(RedstoneContactBlock.FACING) - .getNormal()); + .getUnitVec3i()); contact = context.rotation.apply(contact); - Direction direction = Direction.getNearest(contact.x, contact.y, contact.z); + Direction direction = LegacyDirectionBridge.nearest(contact.x, contact.y, contact.z, Direction.NORTH); if (visitedState.getValue(RedstoneContactBlock.FACING) != direction.getOpposite()) return; @@ -51,7 +52,7 @@ public void visitNewPosition(MovementContext context, BlockPos pos) { if (AllBlocks.ELEVATOR_CONTACT.has(visitedState) && context.contraption instanceof ElevatorContraption ec) ec.broadcastFloorData(world, pos); - context.data.put("lastContact", NbtUtils.writeBlockPos(pos)); + context.data.put("lastContact", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(pos)); return; } diff --git a/src/main/java/com/simibubi/create/content/redstone/contact/RedstoneContactBlock.java b/src/main/java/com/simibubi/create/content/redstone/contact/RedstoneContactBlock.java index c102ed1ad6..18d76e7048 100644 --- a/src/main/java/com/simibubi/create/content/redstone/contact/RedstoneContactBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/contact/RedstoneContactBlock.java @@ -9,7 +9,6 @@ import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; import com.simibubi.create.foundation.utility.BlockHelper; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -20,7 +19,8 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -29,7 +29,6 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class RedstoneContactBlock extends WrenchableDirectionalBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; @@ -86,8 +85,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { } @Override - public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, LevelAccessor worldIn, - BlockPos currentPos, BlockPos facingPos) { + public BlockState updateShape(BlockState stateIn, LevelReader worldIn, ScheduledTickAccess ticks, BlockPos currentPos, Direction facing, BlockPos facingPos, BlockState facingState, RandomSource random) { if (facing != stateIn.getValue(FACING)) return stateIn; boolean hasValidContact = hasValidContact(worldIn, currentPos, facing); @@ -96,13 +94,11 @@ public BlockState updateShape(BlockState stateIn, Direction facing, BlockState f return stateIn; } - @SuppressWarnings("deprecation") @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() == this && newState.getBlock() == this) - if (state == newState.cycle(POWERED)) - worldIn.updateNeighborsAt(pos, this); - super.onRemove(state, worldIn, pos, newState, isMoving); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (state.getValue(POWERED)) + worldIn.updateNeighborsAt(pos, this); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override @@ -112,7 +108,7 @@ public void tick(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSour worldIn.setBlockAndUpdate(pos, state.setValue(POWERED, hasValidContact)); } - public static boolean hasValidContact(LevelAccessor world, BlockPos pos, Direction direction) { + public static boolean hasValidContact(LevelReader world, BlockPos pos, Direction direction) { BlockState blockState = world.getBlockState(pos.relative(direction)); return (AllBlocks.REDSTONE_CONTACT.has(blockState) || AllBlocks.ELEVATOR_CONTACT.has(blockState)) && blockState.getValue(FACING) == direction.getOpposite(); diff --git a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlock.java b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlock.java index 048636ca42..c1cd181959 100644 --- a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlock.java @@ -11,13 +11,18 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -47,9 +52,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pPos); return pState; } @@ -71,7 +75,7 @@ public FluidState getFluidState(BlockState pState) { @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { playSound(player, level, pos); - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; level.setBlock(pos, state.setValue(POWERED, true), Block.UPDATE_ALL); updateNeighbours(state, level, pos); @@ -85,11 +89,11 @@ public void playSound(@Nullable Player pPlayer, LevelAccessor pLevel, BlockPos p } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - if (!pIsMoving && !pState.is(pNewState.getBlock())) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + if (!pIsMoving) if (pState.getValue(POWERED)) updateNeighbours(pState, pLevel, pPos); - IBE.onRemove(pState, pLevel, pPos, pNewState); + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlockEntity.java index c4b003f88c..8f55245efc 100644 --- a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellBlockEntity.java @@ -6,9 +6,9 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -36,7 +36,7 @@ public void tick() { super.tick(); animation.tickChaser(); - if (level.isClientSide) + if (level.isClientSide()) return; if (blockStateTimer == 0) return; @@ -67,14 +67,14 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c } public void ding() { - if (!level.isClientSide) { + if (!level.isClientSide()) { blockStateTimer = 20; ding = true; sendData(); return; } - animationOffset = level.random.nextFloat() * 2 * Mth.PI; + animationOffset = level.getRandom().nextFloat() * 2 * Mth.PI; animation.startWithValue(1) .chase(0, 0.05, Chaser.LINEAR); } diff --git a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellRenderer.java b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellRenderer.java index ba92910306..5b09b62b6d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/deskBell/DeskBellRenderer.java @@ -4,10 +4,10 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.blockEntity.renderer.SmartBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -41,7 +41,7 @@ protected void renderSafe(DeskBellBlockEntity blockEntity, float partialTicks, P .translate(0, f * -.75f / 16f, 0) .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); CachedBuffers.partial(AllPartialModels.DESK_BELL_BELL, blockState) .center() @@ -55,7 +55,7 @@ protected void renderSafe(DeskBellBlockEntity blockEntity, float partialTicks, P .uncenter() .light(light) .overlay(overlay) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } } diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/AbstractDiodeGenerator.java b/src/main/java/com/simibubi/create/content/redstone/diodes/AbstractDiodeGenerator.java index fb79f85f76..88b58804df 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/AbstractDiodeGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/AbstractDiodeGenerator.java @@ -5,24 +5,24 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateItemModelGenerator; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; -import net.neoforged.neoforge.client.model.generators.ModelFile; -import net.neoforged.neoforge.client.model.generators.ModelFile.ExistingModelFile; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ItemModelBuilder; +import com.tterrag.registrate.providers.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile.ExistingModelFile; public abstract class AbstractDiodeGenerator extends SpecialBlockStateGen { private List models; - public static void diodeItemModel(DataGenContext c, RegistrateItemModelProvider p) { + public static void diodeItemModel(DataGenContext c, RegistrateItemModelGenerator p) { String name = c.getName(); String path = "block/diodes/"; ItemModelBuilder builder = p.withExistingParent(name, p.modLoc(path + name)); @@ -45,7 +45,7 @@ protected abstract List createModels(DataGenContext protected abstract int getModelIndex(BlockState state); @Override - public final ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public final ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { if (models == null) models = createModels(ctx, prov.models()); @@ -56,16 +56,16 @@ protected ExistingModelFile existingModel(BlockModelProvider prov, String name) return prov.getExistingFile(existing(name)); } - protected ResourceLocation existing(String name) { + protected Identifier existing(String name) { return Create.asResource("block/diodes/" + name); } - protected ResourceLocation texture(DataGenContext ctx, String name) { + protected Identifier texture(DataGenContext ctx, String name) { return Create.asResource("block/diodes/" + ctx.getName() + "/" + name); } - protected ResourceLocation poweredTorch() { - return ResourceLocation.withDefaultNamespace("block/redstone_torch"); + protected Identifier poweredTorch() { + return Identifier.withDefaultNamespace("block/redstone_torch"); } } diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlock.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlock.java index 8aa39653b3..0036cf893d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlock.java @@ -13,7 +13,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; @@ -41,24 +41,24 @@ public BrassDiodeBlock(Properties properties) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { return toggle(level, pos, state, player, hand); } - public ItemInteractionResult toggle(Level pLevel, BlockPos pPos, BlockState pState, Player player, + public InteractionResult toggle(Level pLevel, BlockPos pPos, BlockState pState, Player player, InteractionHand pHand) { if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllItems.WRENCH.isIn(player.getItemInHand(pHand))) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (pLevel.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (pLevel.isClientSide()) + return InteractionResult.SUCCESS; pLevel.setBlock(pPos, pState.cycle(INVERTED), Block.UPDATE_ALL); float f = !pState.getValue(INVERTED) ? 0.6F : 0.5F; pLevel.playSound(null, pPos, SoundEvents.LEVER_CLICK, SoundSource.BLOCKS, 0.3F, f); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlockEntity.java index f7166bdc04..4f31e9e693 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeBlockEntity.java @@ -73,7 +73,7 @@ private void onMaxDelayChanged(int newMax) { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - state = compound.getInt("State"); + state = compound.getIntOr("State", 0); super.read(compound, registries, clientPacket); } @@ -103,7 +103,7 @@ public boolean readFromClipboard(@NotNull HolderLookup.Provider registries, Comp if (simulate) return true; BlockState blockState = getBlockState(); - if (blockState.getValue(BrassDiodeBlock.INVERTED) != tag.getBoolean("Inverted")) + if (blockState.getValue(BrassDiodeBlock.INVERTED) != tag.getBooleanOr("Inverted", false)) level.setBlockAndUpdate(worldPosition, blockState.cycle(BrassDiodeBlock.INVERTED)); return true; } diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeGenerator.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeGenerator.java index f3656e6b3f..5b166d8ecc 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeGenerator.java @@ -5,11 +5,11 @@ import com.tterrag.registrate.providers.DataGenContext; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ModelFile; public class BrassDiodeGenerator extends AbstractDiodeGenerator { @@ -17,7 +17,7 @@ public class BrassDiodeGenerator extends AbstractDiodeGenerator { protected List createModels(DataGenContext ctx, BlockModelProvider prov) { List models = new ArrayList<>(4); String name = ctx.getName(); - ResourceLocation template = existing(name); + Identifier template = existing(name); models.add(prov.getExistingFile(template)); models.add(prov.withExistingParent(name + "_powered", template) diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeRenderer.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeRenderer.java index d4912448ca..67a89819e9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeRenderer.java @@ -3,9 +3,9 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.foundation.blockEntity.renderer.ColoredOverlayBlockEntityRenderer; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; public class BrassDiodeRenderer extends ColoredOverlayBlockEntityRenderer { diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollSlot.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollSlot.java index 8992b8f528..45823c62e3 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollSlot.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollSlot.java @@ -4,8 +4,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollValueBehaviour.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollValueBehaviour.java index e5b0586461..c36cb4eb1d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollValueBehaviour.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeScrollValueBehaviour.java @@ -30,7 +30,7 @@ public ValueSettingsBoard createBoard(Player player, BlockHitResult hitResult) { @Override public void onShortInteract(Player player, InteractionHand hand, Direction side, BlockHitResult hitResult) { - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; BlockState blockState = blockEntity.getBlockState(); if (blockState.getBlock()instanceof BrassDiodeBlock bdb) diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeVisual.java b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeVisual.java index bbcfa8a1dc..6c1f8e9fc4 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeVisual.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/BrassDiodeVisual.java @@ -12,7 +12,7 @@ import dev.engine_room.flywheel.lib.model.Models; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleTickableVisual; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; public class BrassDiodeVisual extends AbstractBlockEntityVisual implements SimpleTickableVisual { diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchBlock.java b/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchBlock.java index 45d0e7fb31..7f27cc1fc6 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchBlock.java @@ -6,7 +6,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -97,15 +97,15 @@ else if (back) } @Override - protected ItemInteractionResult activated(Level worldIn, BlockPos pos, BlockState state) { + protected InteractionResult activated(Level worldIn, BlockPos pos, BlockState state) { if (state.getValue(POWERED) != state.getValue(POWERED_SIDE)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (!worldIn.isClientSide) { + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (!worldIn.isClientSide()) { float f = !state.getValue(POWERING) ? 0.6F : 0.5F; worldIn.playSound(null, pos, SoundEvents.LEVER_CLICK, SoundSource.BLOCKS, 0.3F, f); worldIn.setBlock(pos, state.cycle(POWERING), Block.UPDATE_CLIENTS); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchGenerator.java b/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchGenerator.java index bb07ebeaec..3a41c9b729 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/PoweredLatchGenerator.java @@ -5,11 +5,11 @@ import com.tterrag.registrate.providers.DataGenContext; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ModelFile; public class PoweredLatchGenerator extends AbstractDiodeGenerator { @@ -17,8 +17,8 @@ public class PoweredLatchGenerator extends AbstractDiodeGenerator { protected List createModels(DataGenContext ctx, BlockModelProvider prov) { List models = new ArrayList<>(2); String name = ctx.getName(); - ResourceLocation off = existing("latch_off"); - ResourceLocation on = existing("latch_on"); + Identifier off = existing("latch_off"); + Identifier on = existing("latch_on"); models.add(prov.withExistingParent(name, off) .texture("top", texture(ctx, "idle"))); diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseExtenderBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseExtenderBlockEntity.java index 23dc3cf74c..aa034a3370 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseExtenderBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseExtenderBlockEntity.java @@ -23,7 +23,7 @@ protected void updateState(boolean powered, boolean powering, boolean atMax, boo } if (state == 1) { - if (powering && !level.isClientSide) + if (powering && !level.isClientSide()) level.setBlockAndUpdate(worldPosition, getBlockState().setValue(POWERING, false)); if (!powered) state = 0; diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseRepeaterBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseRepeaterBlockEntity.java index 76e9dc0040..6e5040523e 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseRepeaterBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseRepeaterBlockEntity.java @@ -23,7 +23,7 @@ protected void updateState(boolean powered, boolean powering, boolean atMax, boo } state++; - if (level.isClientSide) + if (level.isClientSide()) return; if (state == maxState.getValue() - 1 && !powering) diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseTimerBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseTimerBlockEntity.java index 4b6ad09289..6766287afd 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/PulseTimerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/PulseTimerBlockEntity.java @@ -24,7 +24,7 @@ protected void updateState(boolean powered, boolean powering, boolean atMax, boo else state++; - if (level.isClientSide) + if (level.isClientSide()) return; boolean shouldPower = !powered && (maxState.getValue() == 2 ? state == 0 : state <= 1); diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchBlock.java b/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchBlock.java index 8702085963..7fe9456f4b 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchBlock.java @@ -12,7 +12,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; @@ -57,13 +57,13 @@ protected int getDelay(BlockState state) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.mayBuild()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; return activated(level, pos, state); } @@ -81,13 +81,13 @@ public void tick(BlockState state, ServerLevel worldIn, BlockPos pos, RandomSour worldIn.setBlock(pos, newState.cycle(POWERING), Block.UPDATE_CLIENTS); } - protected ItemInteractionResult activated(Level worldIn, BlockPos pos, BlockState state) { - if (!worldIn.isClientSide) { + protected InteractionResult activated(Level worldIn, BlockPos pos, BlockState state) { + if (!worldIn.isClientSide()) { float f = !state.getValue(POWERING) ? 0.6F : 0.5F; worldIn.playSound(null, pos, SoundEvents.LEVER_CLICK, SoundSource.BLOCKS, 0.3F, f); worldIn.setBlock(pos, state.cycle(POWERING), Block.UPDATE_CLIENTS); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchGenerator.java b/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchGenerator.java index 6750e8193f..6c3e307e40 100644 --- a/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/diodes/ToggleLatchGenerator.java @@ -5,11 +5,11 @@ import com.tterrag.registrate.providers.DataGenContext; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ModelFile; public class ToggleLatchGenerator extends AbstractDiodeGenerator { @@ -17,8 +17,8 @@ public class ToggleLatchGenerator extends AbstractDiodeGenerator { protected List createModels(DataGenContext ctx, BlockModelProvider prov) { String name = ctx.getName(); List models = new ArrayList<>(4); - ResourceLocation off = existing("latch_off"); - ResourceLocation on = existing("latch_on"); + Identifier off = existing("latch_off"); + Identifier on = existing("latch_on"); models.add(prov.getExistingFile(off)); models.add(prov.withExistingParent(name + "_off_powered", off) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkBlockItem.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkBlockItem.java index e1d7e18d68..81fd9d482d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkBlockItem.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkBlockItem.java @@ -5,38 +5,32 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; import com.simibubi.create.foundation.utility.CreateLang; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.component.DataComponents; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtUtils; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.common.util.TriState; +import net.minecraft.util.TriState; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @EventBusSubscriber @@ -71,22 +65,22 @@ public InteractionResult useOn(UseOnContext pContext) { return InteractionResult.FAIL; if (player.isShiftKeyDown() && stack.has(AllDataComponents.CLICK_TO_LINK_DATA)) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; - player.displayClientMessage(CreateLang.translateDirect(msgKey + ".clear"), true); + player.sendOverlayMessage(CreateLang.translateDirect(msgKey + ".clear")); stack.remove(AllDataComponents.CLICK_TO_LINK_DATA); stack.remove(DataComponents.BLOCK_ENTITY_DATA); return InteractionResult.SUCCESS; } - ResourceLocation placedDim = level.dimension() - .location(); + Identifier placedDim = level.dimension() + .identifier(); if (!stack.has(AllDataComponents.CLICK_TO_LINK_DATA)) { if (!isValidTarget(level, pos)) { if (placeWhenInvalid()) { InteractionResult useOn = super.useOn(pContext); - if (level.isClientSide || useOn == InteractionResult.FAIL) + if (level.isClientSide() || useOn == InteractionResult.FAIL) return useOn; ItemStack itemInHand = player.getItemInHand(pContext.getHand()); @@ -97,16 +91,16 @@ public InteractionResult useOn(UseOnContext pContext) { return useOn; } - if (level.isClientSide) + if (level.isClientSide()) AllSoundEvents.DENY.playFrom(player); - player.displayClientMessage(CreateLang.translateDirect(msgKey + ".invalid"), true); + player.sendOverlayMessage(CreateLang.translateDirect(msgKey + ".invalid")); return InteractionResult.FAIL; } - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; - player.displayClientMessage(CreateLang.translateDirect(msgKey + ".set"), true); + player.sendOverlayMessage(CreateLang.translateDirect(msgKey + ".set")); stack.set(AllDataComponents.CLICK_TO_LINK_DATA, new ClickToLinkData(pos, placedDim)); return InteractionResult.SUCCESS; } @@ -114,23 +108,22 @@ public InteractionResult useOn(UseOnContext pContext) { ClickToLinkData data = stack.get(AllDataComponents.CLICK_TO_LINK_DATA); //noinspection DataFlowIssue BlockPos selectedPos = data.selectedPos(); - ResourceLocation selectedDim = data.selectedDim(); + Identifier selectedDim = data.selectedDim(); BlockPos placedPos = pos.relative(pContext.getClickedFace(), state.canBeReplaced() ? 0 : 1); if (maxDistance != -1 && (!selectedPos.closerThan(placedPos, maxDistance) || !selectedDim.equals(placedDim))) { - player.displayClientMessage(CreateLang.translateDirect(msgKey + ".too_far") - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect(msgKey + ".too_far") + .withStyle(ChatFormatting.RED)); return InteractionResult.FAIL; } CompoundTag beTag = new CompoundTag(); - beTag.put("TargetOffset", NbtUtils.writeBlockPos(selectedPos.subtract(placedPos))); - NBTHelper.writeResourceLocation(beTag, "TargetDimension", selectedDim); - BlockEntity.addEntityType(beTag, ((IBE) this.getBlock()).getBlockEntityType()); - stack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(beTag)); + beTag.put("TargetOffset", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(selectedPos.subtract(placedPos))); + NBTHelper.writeIdentifier(beTag, "TargetDimension", selectedDim); + LegacyBlockEntityDataComponentBridge.set(stack, ((IBE) this.getBlock()).getBlockEntityType(), beTag); InteractionResult useOn = super.useOn(pContext); - if (level.isClientSide || useOn == InteractionResult.FAIL) + if (level.isClientSide() || useOn == InteractionResult.FAIL) return useOn; ItemStack itemInHand = player.getItemInHand(pContext.getHand()); @@ -138,36 +131,13 @@ public InteractionResult useOn(UseOnContext pContext) { stack.remove(AllDataComponents.CLICK_TO_LINK_DATA); stack.remove(DataComponents.BLOCK_ENTITY_DATA); } - player.displayClientMessage(CreateLang.translateDirect(msgKey + ".success") - .withStyle(ChatFormatting.GREEN), true); + player.sendOverlayMessage(CreateLang.translateDirect(msgKey + ".success") + .withStyle(ChatFormatting.GREEN)); return useOn; } - private static BlockPos lastShownPos = null; - private static AABB lastShownAABB = null; - - @OnlyIn(Dist.CLIENT) public static void clientTick() { - Player player = Minecraft.getInstance().player; - if (player == null) - return; - ItemStack heldItemMainhand = player.getMainHandItem(); - if (!(heldItemMainhand.getItem() instanceof ClickToLinkBlockItem blockItem)) - return; - if (!heldItemMainhand.has(AllDataComponents.CLICK_TO_LINK_DATA)) - return; - - //noinspection DataFlowIssue - BlockPos selectedPos = heldItemMainhand.get(AllDataComponents.CLICK_TO_LINK_DATA).selectedPos(); - - if (!selectedPos.equals(lastShownPos)) { - lastShownAABB = blockItem.getSelectionBounds(selectedPos); - lastShownPos = selectedPos; - } - - Outliner.getInstance().showAABB("target", lastShownAABB) - .colored(0xffcb74) - .lineWidth(1 / 16f); + ClickToLinkClient.clientTick(); } public abstract int getMaxDistanceFromSelection(); @@ -182,9 +152,7 @@ public boolean isValidTarget(LevelAccessor level, BlockPos pos) { return true; } - @OnlyIn(Dist.CLIENT) - public AABB getSelectionBounds(BlockPos pos) { - Level world = Minecraft.getInstance().level; + public AABB getSelectionBounds(Level world, BlockPos pos) { BlockState state = world.getBlockState(pos); VoxelShape shape = state.getShape(world, pos); return shape.isEmpty() ? new AABB(BlockPos.ZERO) @@ -192,15 +160,15 @@ public AABB getSelectionBounds(BlockPos pos) { .move(pos); } - public record ClickToLinkData(BlockPos selectedPos, ResourceLocation selectedDim) { + public record ClickToLinkData(BlockPos selectedPos, Identifier selectedDim) { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( BlockPos.CODEC.fieldOf("selected_pos").forGetter(ClickToLinkData::selectedPos), - ResourceLocation.CODEC.fieldOf("selected_dim").forGetter(ClickToLinkData::selectedDim) + Identifier.CODEC.fieldOf("selected_dim").forGetter(ClickToLinkData::selectedDim) ).apply(instance, ClickToLinkData::new)); public static final StreamCodec STREAM_CODEC = StreamCodec.composite( BlockPos.STREAM_CODEC, ClickToLinkData::selectedPos, - ResourceLocation.STREAM_CODEC, ClickToLinkData::selectedDim, + Identifier.STREAM_CODEC, ClickToLinkData::selectedDim, ClickToLinkData::new ); } diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkClient.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkClient.java new file mode 100644 index 0000000000..af1966e40b --- /dev/null +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/ClickToLinkClient.java @@ -0,0 +1,44 @@ +package com.simibubi.create.content.redstone.displayLink; + +import com.simibubi.create.AllDataComponents; + +import net.createmod.catnip.api.client.outliner.Outliner; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.AABB; + +public class ClickToLinkClient { + + private static BlockPos lastShownPos = null; + private static AABB lastShownAABB = null; + + public static void clientTick() { + Minecraft minecraft = Minecraft.getInstance(); + Player player = minecraft.player; + Level world = minecraft.level; + if (player == null || world == null) + return; + ItemStack heldItemMainhand = player.getMainHandItem(); + if (!(heldItemMainhand.getItem() instanceof ClickToLinkBlockItem blockItem)) + return; + if (!heldItemMainhand.has(AllDataComponents.CLICK_TO_LINK_DATA)) + return; + + BlockPos selectedPos = heldItemMainhand.get(AllDataComponents.CLICK_TO_LINK_DATA) + .selectedPos(); + + if (!selectedPos.equals(lastShownPos)) { + lastShownAABB = blockItem.getSelectionBounds(world, selectedPos); + lastShownPos = selectedPos; + } + + Outliner.getInstance() + .showAABB("target", lastShownAABB) + .colored(0xffcb74) + .lineWidth(1 / 16f); + } + +} diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java index 9749c84532..ce02d6efe9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlock.java @@ -14,13 +14,11 @@ import com.simibubi.create.foundation.advancement.AdvancementBehaviour; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; -import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -31,6 +29,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.DirectionalBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -43,9 +43,6 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class DisplayLinkBlock extends WrenchableDirectionalBlock implements IBE { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; @@ -71,8 +68,8 @@ public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEn } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } public static void notifyGatherers(LevelAccessor level, BlockPos pos) { @@ -109,11 +106,11 @@ private static void forEachAttachedGatherer(LevelAccessor level, BlockPos pos, } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isClientSide) + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { + if (worldIn.isClientSide()) return; + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (fromPos.equals(pos.relative(state.getValue(FACING) .getOpposite()))) sendToGatherers(worldIn, fromPos, (dlte, p) -> dlte.tickSource(), RedstonePowerDisplaySource.class); @@ -151,21 +148,10 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP return InteractionResult.PASS; if (player.isShiftKeyDown()) return InteractionResult.PASS; - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> this.displayScreen(be, player))); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> DisplayLinkClient.displayScreen(be, player))); return InteractionResult.SUCCESS; } - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(DisplayLinkBlockEntity be, Player player) { - if (!(player instanceof LocalPlayer)) - return; - if (be.targetOffset.equals(BlockPos.ZERO)) { - player.displayClientMessage(CreateLang.translateDirect("display_link.invalid"), true); - return; - } - ScreenOpener.open(new DisplayLinkScreen(be)); - } - @Override protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return false; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockEntity.java index 7fcdfe7daa..f210bf1acc 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockEntity.java @@ -16,15 +16,15 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import dan200.computercraft.api.peripheral.PeripheralCapability; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -80,7 +80,7 @@ public void tick() { return; if (activeSource == null) return; - if (level.isClientSide) + if (level.isClientSide()) return; refreshTicks++; @@ -94,7 +94,7 @@ public void tickSource() { if (getBlockState().getOptionalValue(DisplayLinkBlock.POWERED) .orElse(true)) return; - if (!level.isClientSide) + if (!level.isClientSide()) updateGatheredData(); } @@ -152,7 +152,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean super.write(tag, registries, clientPacket); writeGatheredData(tag); if (clientPacket && activeTarget != null) { - ResourceLocation id = CreateBuiltInRegistries.DISPLAY_TARGET.getKey(this.activeTarget); + Identifier id = CreateBuiltInRegistries.DISPLAY_TARGET.getKey(this.activeTarget); if (id != null) { tag.putString("TargetType", id.toString()); } @@ -160,12 +160,12 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean } private void writeGatheredData(CompoundTag tag) { - tag.put("TargetOffset", NbtUtils.writeBlockPos(targetOffset)); + tag.put("TargetOffset", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(targetOffset)); tag.putInt("TargetLine", targetLine); if (activeSource != null) { CompoundTag data = sourceConfig.copy(); - ResourceLocation id = CreateBuiltInRegistries.DISPLAY_SOURCE.getKey(this.activeSource); + Identifier id = CreateBuiltInRegistries.DISPLAY_SOURCE.getKey(this.activeSource); if (id != null) { data.putString("Id", id.toString()); } @@ -177,15 +177,15 @@ private void writeGatheredData(CompoundTag tag) { protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); targetOffset = NBTHelper.readBlockPos(tag, "TargetOffset"); - targetLine = tag.getInt("TargetLine"); + targetLine = tag.getIntOr("TargetLine", 0); if (clientPacket && tag.contains("TargetType")) - activeTarget = DisplayTarget.get(ResourceLocation.tryParse(tag.getString("TargetType"))); + activeTarget = DisplayTarget.get(Identifier.tryParse(tag.getStringOr("TargetType", ""))); if (!tag.contains("Source")) return; - CompoundTag data = tag.getCompound("Source"); - activeSource = DisplaySource.get(ResourceLocation.tryParse(data.getString("Id"))); + CompoundTag data = tag.getCompoundOrEmpty("Source"); + activeSource = DisplaySource.get(Identifier.tryParse(data.getStringOr("Id", ""))); sourceConfig = new CompoundTag(); if (activeSource != null) sourceConfig = data.copy(); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockItem.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockItem.java index 207c58bad1..8db94501d9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockItem.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkBlockItem.java @@ -3,28 +3,22 @@ import com.simibubi.create.api.behaviour.display.DisplayTarget; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.phys.AABB; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class DisplayLinkBlockItem extends ClickToLinkBlockItem { public DisplayLinkBlockItem(Block pBlock, Properties pProperties) { super(pBlock, pProperties); } - @OnlyIn(Dist.CLIENT) - public AABB getSelectionBounds(BlockPos pos) { - Level world = Minecraft.getInstance().level; + public AABB getSelectionBounds(Level world, BlockPos pos) { DisplayTarget target = DisplayTarget.get(world, pos); if (target != null) return target.getMultiblockBounds(world, pos); - return super.getSelectionBounds(pos); + return super.getSelectionBounds(world, pos); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkClient.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkClient.java new file mode 100644 index 0000000000..bd1970e1d8 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkClient.java @@ -0,0 +1,22 @@ +package com.simibubi.create.content.redstone.displayLink; + +import com.simibubi.create.foundation.utility.CreateLang; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; + +public class DisplayLinkClient { + + public static void displayScreen(DisplayLinkBlockEntity be, Player player) { + if (!(player instanceof LocalPlayer)) + return; + if (be.targetOffset.equals(BlockPos.ZERO)) { + player.sendOverlayMessage(CreateLang.translateDirect("display_link.invalid")); + return; + } + ScreenOpener.open(new DisplayLinkScreen(be)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkConfigurationPacket.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkConfigurationPacket.java index 4410156605..ea4df3345d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkConfigurationPacket.java @@ -10,7 +10,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; public class DisplayLinkConfigurationPacket extends BlockEntityConfigurationPacket { @@ -39,7 +39,7 @@ protected void applySettings(ServerPlayer player, DisplayLinkBlockEntity be) { return; } - ResourceLocation id = ResourceLocation.tryParse(configData.getString("Id")); + Identifier id = Identifier.tryParse(configData.getStringOr("Id", "")); DisplaySource source = DisplaySource.get(id); if (source == null) { be.notifyUpdate(); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkScreen.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkScreen.java index 38b1e91903..c060bb6cb8 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkScreen.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/DisplayLinkScreen.java @@ -3,7 +3,6 @@ import java.util.Collections; import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.api.behaviour.display.DisplaySource; import com.simibubi.create.api.behaviour.display.DisplayTarget; import com.simibubi.create.api.registry.CreateBuiltInRegistries; @@ -17,28 +16,26 @@ import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.ponder.AllCreatePonderTags; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.createmod.catnip.gui.widget.ElementWidget; -import net.createmod.ponder.foundation.ui.PonderTagScreen; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.createmod.catnip.api.client.gui.widget.ElementWidget; +import net.createmod.ponder.impl.client.gui.PonderTagScreen; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -115,9 +112,11 @@ private void initGathererOptions() { Block sourceBlock = sourceState.getBlock(); Block targetBlock = targetState.getBlock(); - asItem = sourceBlock.getCloneItemStack(level, blockEntity.getSourcePosition(), sourceState); + asItem = sourceBlock.asItem() + .getDefaultInstance(); ItemStack sourceIcon = asItem == null || asItem.isEmpty() ? FALLBACK : asItem; - asItem = targetBlock.getCloneItemStack(level, blockEntity.getTargetPosition(), targetState); + asItem = targetBlock.asItem() + .getDefaultInstance(); ItemStack targetIcon = asItem == null || asItem.isEmpty() ? FALLBACK : asItem; sources = DisplaySource.getAll(level, blockEntity.getSourcePosition()); @@ -243,52 +242,35 @@ public void onClose() { if (!sources.isEmpty()) { DisplaySource source = sources.get(sourceTypeSelector == null ? 0 : sourceTypeSelector.getState()); - ResourceLocation id = CreateBuiltInRegistries.DISPLAY_SOURCE.getKey(source); + Identifier id = CreateBuiltInRegistries.DISPLAY_SOURCE.getKey(source); if (id != null) { sourceData.putString("Id", id.toString()); } configWidgets.forEach(s -> s.saveValues(sourceData)); } - CatnipServices.NETWORK.sendToServer(new DisplayLinkConfigurationPacket(blockEntity.getBlockPos(), sourceData, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new DisplayLinkConfigurationPacket(blockEntity.getBlockPos(), sourceData, targetLineSelector == null ? 0 : targetLineSelector.getState())); } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); MutableComponent header = CreateLang.translateDirect("display_link.title"); - graphics.drawString(font, header, x + background.getWidth() / 2 - font.width(header) / 2, y + 4, 0x592424, false); + graphics.text(font, header, x + background.getWidth() / 2 - font.width(header) / 2, y + 4, 0x592424, false); if (sources.isEmpty()) - graphics.drawString(font, CreateLang.translateDirect("display_link.no_source"), x + 65, y + 30, 0xD3D3D3); + graphics.text(font, CreateLang.translateDirect("display_link.no_source"), x + 65, y + 30, 0xD3D3D3); if (target == null) - graphics.drawString(font, CreateLang.translateDirect("display_link.no_target"), x + 65, y + 109, 0xD3D3D3); + graphics.text(font, CreateLang.translateDirect("display_link.no_target"), x + 65, y + 109, 0xD3D3D3); - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(0, guiTop + 46, 0); configWidgets.getFirst() - .renderWidgetBG(guiLeft, graphics); - ms.translate(0, 21, 0); + .renderWidgetBG(guiLeft, guiTop + 46, graphics); configWidgets.getSecond() - .renderWidgetBG(guiLeft, graphics); - ms.popPose(); - - ms.pushPose(); - TransformStack.of(ms) - .pushPose() - .translate(x + background.getWidth() + 4, y + background.getHeight() + 4, 100) - .scale(40) - .rotateXDegrees(-22) - .rotateYDegrees(63); - GuiGameElement.of(blockEntity.getBlockState() - .setValue(DisplayLinkBlock.FACING, Direction.UP)) - .render(graphics); - ms.popPose(); + .renderWidgetBG(guiLeft, guiTop + 67, graphics); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkBulbRenderer.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkBulbRenderer.java index 268c392bb1..adaa2bd740 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkBulbRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkBulbRenderer.java @@ -6,11 +6,11 @@ import com.simibubi.create.foundation.render.RenderTypes; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.math.AngleHelper; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -46,12 +46,12 @@ protected void renderSafe(LinkWithBulbBlockEntity be, float partialTicks, PoseSt CachedBuffers.partial(AllPartialModels.DISPLAY_LINK_TUBE, blockState) .translate(be.getBulbOffset(blockState)) - .light(LightTexture.FULL_BRIGHT) - .renderInto(ms, buffer.getBuffer(RenderType.translucent())); + .light(LightCoordsUtil.FULL_BRIGHT) + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.translucent())); CachedBuffers.partial(AllPartialModels.DISPLAY_LINK_GLOW, blockState) .translate(be.getBulbOffset(blockState)) - .light(LightTexture.FULL_BRIGHT) + .light(LightCoordsUtil.FULL_BRIGHT) .color(color, color, color, 255) .disableDiffuse() .renderInto(ms, buffer.getBuffer(RenderTypes.additive())); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkWithBulbBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkWithBulbBlockEntity.java index 548e534afa..b783e47b29 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkWithBulbBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/LinkWithBulbBlockEntity.java @@ -2,9 +2,9 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/AccumulatedItemCountDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/AccumulatedItemCountDisplaySource.java index 5d7bcd9404..a48713501a 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/AccumulatedItemCountDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/AccumulatedItemCountDisplaySource.java @@ -13,7 +13,7 @@ public class AccumulatedItemCountDisplaySource extends NumericSingleLineDisplayS @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { return Component.literal(String.valueOf(context.sourceConfig() - .getInt("Collected"))); + .getIntOr("Collected", 0))); } public void itemReceived(DisplayLinkBlockEntity be, int amount) { @@ -23,7 +23,7 @@ public void itemReceived(DisplayLinkBlockEntity be, int amount) { return; int collected = be.getSourceConfig() - .getInt("Collected"); + .getIntOr("Collected", 0); be.getSourceConfig() .putInt("Collected", collected + amount); be.updateGatheredData(); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ComputerDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ComputerDisplaySource.java index 986753e6ad..023686c0a2 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ComputerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ComputerDisplaySource.java @@ -17,10 +17,10 @@ public class ComputerDisplaySource extends DisplaySource { @Override public List provideText(DisplayLinkContext context, DisplayTargetStats stats) { List components = new ArrayList<>(); - ListTag tag = context.sourceConfig().getList("ComputerSourceList", Tag.TAG_STRING); + ListTag tag = context.sourceConfig().getListOrEmpty("ComputerSourceList"); for (int i = 0; i < tag.size(); i++) { - components.add(Component.literal(tag.getString(i))); + components.add(Component.literal(tag.getStringOr(i, ""))); } return components; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/EnchantPowerDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/EnchantPowerDisplaySource.java index 8de80b677f..850d272cf6 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/EnchantPowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/EnchantPowerDisplaySource.java @@ -17,7 +17,6 @@ public class EnchantPowerDisplaySource extends NumericSingleLineDisplaySource { protected static final RandomSource random = RandomSource.create(); - protected static final ItemStack stack = new ItemStack(Items.DIAMOND_PICKAXE); @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { @@ -35,8 +34,7 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget enchantPower += level.getBlockState(pos.offset(offset)).getEnchantPowerBonus(level, pos.offset(offset)); } - - int cost = EnchantmentHelper.getEnchantmentCost(random, 2, (int) enchantPower, stack); + int cost = EnchantmentHelper.getEnchantmentCost(random, 2, (int) enchantPower, new ItemStack(Items.DIAMOND_PICKAXE)); return Component.literal(String.valueOf(cost)); } diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FactoryGaugeDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FactoryGaugeDisplaySource.java index 87e087be2a..cf928c2f4b 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FactoryGaugeDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FactoryGaugeDisplaySource.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.logistics.factoryBoard.FactoryPanelPosition; import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FillLevelDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FillLevelDisplaySource.java index cf15791b12..eb9265c474 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FillLevelDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FillLevelDisplaySource.java @@ -7,7 +7,6 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class FillLevelDisplaySource extends PercentOrProgressBarDisplaySource { @@ -23,7 +22,7 @@ protected Float getProgress(DisplayLinkContext context) { @Override protected boolean progressBarActive(DisplayLinkContext context) { return context.sourceConfig() - .getInt("Mode") != 0; + .getIntOr("Mode", 0) != 0; } @Override @@ -32,7 +31,6 @@ protected String getTranslationKey() { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); if (isFirstLine) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FluidListDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FluidListDisplaySource.java index e003824bb4..9267d2355d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FluidListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/FluidListDisplaySource.java @@ -18,8 +18,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.inventory.TankManipulationBehaviour; import com.simibubi.create.foundation.utility.FluidFormatter; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.material.Fluid; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemListDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemListDisplaySource.java index b266aaf267..5c108cf3fd 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemListDisplaySource.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; import com.simibubi.create.foundation.item.CountedItemStackList; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.items.IItemHandler; diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemThroughputDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemThroughputDisplaySource.java index 809c846664..cc803810e5 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemThroughputDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ItemThroughputDisplaySource.java @@ -13,7 +13,6 @@ import net.minecraft.nbt.Tag; import net.minecraft.network.chat.MutableComponent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ItemThroughputDisplaySource extends AccumulatedItemCountDisplaySource { @@ -25,18 +24,18 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget if (conf.contains("Inactive")) return ZERO.copy(); - double interval = 20 * Math.pow(60, conf.getInt("Interval")); - double rate = conf.getFloat("Rate") * interval; + double interval = 20 * Math.pow(60, conf.getIntOr("Interval", 0)); + double rate = conf.getFloatOr("Rate", 0) * interval; if (rate > 0) { - long previousTime = conf.getLong("LastReceived"); + long previousTime = conf.getLongOr("LastReceived", 0); long gameTime = context.blockEntity() .getLevel() .getGameTime(); int diff = (int) (gameTime - previousTime); if (diff > 0) { // Too long since last item - int lastAmount = conf.getInt("LastReceivedAmount"); + int lastAmount = conf.getIntOr("LastReceivedAmount", 0); double timeBetweenStacks = lastAmount / rate; if (diff > timeBetweenStacks * 2) conf.putBoolean("Inactive", true); @@ -62,8 +61,8 @@ public void itemReceived(DisplayLinkBlockEntity be, int amount) { return; } - long previousTime = conf.getLong("LastReceived"); - ListTag rates = conf.getList("PrevRates", Tag.TAG_FLOAT); + long previousTime = conf.getLongOr("LastReceived", 0); + ListTag rates = conf.getListOrEmpty("PrevRates"); if (rates.size() != POOL_SIZE) { rates = new ListTag(); @@ -71,13 +70,13 @@ public void itemReceived(DisplayLinkBlockEntity be, int amount) { rates.add(FloatTag.valueOf(-1)); } - int poolIndex = conf.getInt("Index") % POOL_SIZE; + int poolIndex = conf.getIntOr("Index", 0) % POOL_SIZE; rates.set(poolIndex, FloatTag.valueOf((float) (amount / (double) (gameTime - previousTime)))); float rate = 0; int validIntervals = 0; for (int i = 0; i < POOL_SIZE; i++) { - float pooledRate = rates.getFloat(i); + float pooledRate = rates.getFloatOr(i, 0); if (pooledRate >= 0) { rate += pooledRate; validIntervals++; @@ -99,7 +98,6 @@ public void itemReceived(DisplayLinkBlockEntity be, int amount) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticSpeedDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticSpeedDisplaySource.java index 44f81e0894..eea94af483 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticSpeedDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticSpeedDisplaySource.java @@ -8,7 +8,6 @@ import net.minecraft.network.chat.MutableComponent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class KineticSpeedDisplaySource extends NumericSingleLineDisplaySource { @@ -18,7 +17,7 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget return ZERO.copy(); boolean absoluteValue = context.sourceConfig() - .getInt("Directional") == 0; + .getIntOr("Directional", 0) == 0; float speed = absoluteValue ? Math.abs(speedGauge.getSpeed()) : speedGauge.getSpeed(); return CreateLang.number(speed) .space() @@ -32,7 +31,6 @@ protected String getTranslationKey() { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticStressDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticStressDisplaySource.java index dc6487b982..1c105ec9ad 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticStressDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/KineticStressDisplaySource.java @@ -6,10 +6,9 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.api.lang.LangBuilder; import net.minecraft.network.chat.MutableComponent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class KineticStressDisplaySource extends PercentOrProgressBarDisplaySource { @@ -27,7 +26,7 @@ protected MutableComponent formatNumeric(DisplayLinkContext context, Float curre private int getMode(DisplayLinkContext context) { return context.sourceConfig() - .getInt("Mode"); + .getIntOr("Mode", 0); } @Override @@ -61,7 +60,6 @@ protected boolean progressBarActive(DisplayLinkContext context) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/PercentOrProgressBarDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/PercentOrProgressBarDisplaySource.java index 16ed109fd5..64d8d6f0e3 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/PercentOrProgressBarDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/PercentOrProgressBarDisplaySource.java @@ -26,7 +26,7 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget return formatNumeric(context, rawProgress); String label = context.sourceConfig() - .getString("Label"); + .getStringOr("Label", ""); int labelSize = label.isEmpty() ? 0 : label.length() + 1; int length = Math.min(stats.maxColumns() - labelSize, 128); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/RedstonePowerDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/RedstonePowerDisplaySource.java index cc45c7ee40..40f29020bf 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/RedstonePowerDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/RedstonePowerDisplaySource.java @@ -9,7 +9,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class RedstonePowerDisplaySource extends PercentOrProgressBarDisplaySource { @@ -42,11 +41,10 @@ protected Float getProgress(DisplayLinkContext context) { @Override protected boolean progressBarActive(DisplayLinkContext context) { return context.sourceConfig() - .getInt("Mode") != 0; + .getIntOr("Mode", 0) != 0; } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); if (isFirstLine) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ScoreboardDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ScoreboardDisplaySource.java index 357c62059a..99ff8d0f5d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ScoreboardDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ScoreboardDisplaySource.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -25,7 +25,7 @@ protected Stream> provideEntries(DisplayLinkContex return Stream.empty(); String name = context.sourceConfig() - .getString("Objective"); + .getStringOr("Objective", ""); return showScoreboard(sLevel, name, maxRows); } diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/SingleLineDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/SingleLineDisplaySource.java index 57c4916cdd..9a75c4c2c2 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/SingleLineDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/SingleLineDisplaySource.java @@ -17,7 +17,6 @@ import net.minecraft.network.chat.MutableComponent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class SingleLineDisplaySource extends DisplaySource { @@ -26,13 +25,11 @@ public abstract class SingleLineDisplaySource extends DisplaySource { protected abstract boolean allowsLabeling(DisplayLinkContext context); @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { if (isFirstLine && allowsLabeling(context)) addLabelingTextBox(builder); } - @OnlyIn(Dist.CLIENT) protected void addLabelingTextBox(ModularGuiLineBuilder builder) { builder.addTextInput(0, 137, (e, t) -> { e.setValue(""); @@ -51,7 +48,7 @@ public List provideText(DisplayLinkContext context, DisplayTar if (allowsLabeling(context)) { String label = context.sourceConfig() - .getString("Label"); + .getStringOr("Label", ""); if (!label.isEmpty()) { line = Component.literal(label + " ").append(line); } @@ -65,7 +62,7 @@ public List> provideFlapDisplayText(DisplayLinkContext co if (allowsLabeling(context)) { String label = context.sourceConfig() - .getString("Label"); + .getStringOr("Label", ""); if (!label.isEmpty()) { return ImmutableList.of(ImmutableList.of(Component.literal(label + " "), provideLine(context, stats))); } @@ -87,7 +84,7 @@ public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayBlockEn } String label = context.sourceConfig() - .getString("Label"); + .getStringOr("Label", ""); if (label.isEmpty()) { if (!layout.isLayout(layoutKey)) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StatTrackingDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StatTrackingDisplaySource.java index dbdd85740b..8336f634ac 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StatTrackingDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StatTrackingDisplaySource.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerLevel; @@ -18,7 +18,6 @@ import net.minecraft.world.scores.criteria.ObjectiveCriteria.RenderType; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class StatTrackingDisplaySource extends ScoreboardDisplaySource { @@ -59,7 +58,6 @@ protected boolean shortenNumbers(DisplayLinkContext context) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) {} } diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StationSummaryDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StationSummaryDisplaySource.java index 95f9062532..2f93d7984e 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StationSummaryDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StationSummaryDisplaySource.java @@ -26,7 +26,6 @@ import net.minecraft.util.Mth; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class StationSummaryDisplaySource extends DisplaySource { @@ -56,7 +55,7 @@ public List provideText(DisplayLinkContext context, DisplayTar @Override public List> provideFlapDisplayText(DisplayLinkContext context, DisplayTargetStats stats) { String filter = context.sourceConfig() - .getString("Filter"); + .getStringOr("Filter", ""); boolean hasPlatform = filter.contains("*"); List> list = new ArrayList<>(); @@ -118,9 +117,9 @@ public List> provideFlapDisplayText(DisplayLinkContext co public void loadFlapDisplayLayout(DisplayLinkContext context, FlapDisplayBlockEntity flapDisplay, FlapDisplayLayout layout) { CompoundTag conf = context.sourceConfig(); - int columnWidth = conf.getInt("NameColumn"); - int columnWidth2 = conf.getInt("PlatformColumn"); - boolean hasPlatform = conf.getString("Filter") + int columnWidth = conf.getIntOr("NameColumn", 0); + int columnWidth2 = conf.getIntOr("PlatformColumn", 0); + boolean hasPlatform = conf.getStringOr("Filter", "") .contains("*"); String layoutName = "StationSummary" + columnWidth + hasPlatform + columnWidth2; @@ -194,7 +193,6 @@ public void populateData(DisplayLinkContext context) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { if (isFirstLine) { diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StopWatchDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StopWatchDisplaySource.java index b67254c192..b2df3a6382 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StopWatchDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/StopWatchDisplaySource.java @@ -22,7 +22,7 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget onSignalReset(context); long started = context.sourceConfig() - .getLong("StartTime"); + .getLongOr("StartTime", 0); long current = context.blockEntity() .getLevel() .getGameTime(); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/TimeOfDayDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/TimeOfDayDisplaySource.java index 9f24f7dcd5..c024fd9721 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/TimeOfDayDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/TimeOfDayDisplaySource.java @@ -11,7 +11,6 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerLevel; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TimeOfDayDisplaySource extends SingleLineDisplaySource { @@ -23,7 +22,7 @@ public class TimeOfDayDisplaySource extends SingleLineDisplaySource { @Override protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { - if (!(context.level()instanceof ServerLevel sLevel)) + if (!(context.level() instanceof ServerLevel sLevel)) return EMPTY_TIME; if (!(context.getSourceBlockEntity() instanceof CuckooClockBlockEntity ccbe)) return EMPTY_TIME; @@ -31,11 +30,11 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget return EMPTY_TIME; boolean c12 = context.sourceConfig() - .getInt("Cycle") == 0; - boolean isNatural = sLevel.dimensionType() - .natural(); + .getIntOr("Cycle", 0) == 0; + boolean isNatural = !sLevel.dimensionType() + .hasFixedTime(); - int dayTime = (int) (sLevel.getDayTime() % 24000); + int dayTime = (int) (sLevel.getDefaultClockTime() % 24000); int hours = (dayTime / 1000 + 6) % 24; int minutes = (dayTime % 1000) * 60 / 1000; MutableComponent suffix = CreateLang.translateDirect("generic.daytime." + (hours > 11 ? "pm" : "am")); @@ -48,8 +47,10 @@ protected MutableComponent provideLine(DisplayLinkContext context, DisplayTarget } if (!isNatural) { - hours = sLevel.random.nextInt(70) + 24; - minutes = sLevel.random.nextInt(40) + 60; + hours = sLevel.getRandom() + .nextInt(70) + 24; + minutes = sLevel.getRandom() + .nextInt(40) + 60; } MutableComponent component = Component.literal( @@ -74,7 +75,6 @@ protected String getTranslationKey() { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { super.initConfigurationWidgets(context, builder, isFirstLine); if (isFirstLine) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ValueListDisplaySource.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ValueListDisplaySource.java index 13f8f0be11..08cc4ec19d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ValueListDisplaySource.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/source/ValueListDisplaySource.java @@ -18,14 +18,13 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.level.block.entity.LecternBlockEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class ValueListDisplaySource extends DisplaySource { @@ -153,17 +152,15 @@ private Couple shorten(int number) { protected boolean shortenNumbers(DisplayLinkContext context) { return context.sourceConfig() - .getInt("Format") == 0; + .getIntOr("Format", 0) == 0; } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(DisplayLinkContext context, ModularGuiLineBuilder builder, boolean isFirstLine) { if (isFirstLine) addFullNumberConfig(builder); } - @OnlyIn(Dist.CLIENT) protected void addFullNumberConfig(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(0, 75, (si, l) -> si.forOptions(CreateLang.translatedOptions("display_source.value_list", "shortened", "full_number")) diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/DisplayBoardTarget.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/DisplayBoardTarget.java index 90867b2ce7..e64732ee93 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/DisplayBoardTarget.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/DisplayBoardTarget.java @@ -17,7 +17,6 @@ import net.minecraft.world.phys.AABB; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class DisplayBoardTarget extends DisplayTarget { @@ -87,7 +86,6 @@ private FlapDisplayBlockEntity getController(DisplayLinkContext context) { } @Override - @OnlyIn(Dist.CLIENT) public AABB getMultiblockBounds(LevelAccessor level, BlockPos pos) { AABB baseShape = super.getMultiblockBounds(level, pos); BlockEntity be = level.getBlockEntity(pos); @@ -101,7 +99,7 @@ public AABB getMultiblockBounds(LevelAccessor level, BlockPos pos) { Vec3i normal = controller.getDirection() .getClockWise() - .getNormal(); + .getUnitVec3i(); return baseShape.move(controller.getBlockPos() .subtract(pos)) .expandTowards(normal.getX() * (controller.xSize - 1), 1 - controller.ySize, diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/NixieTubeDisplayTarget.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/NixieTubeDisplayTarget.java index 39c71401e9..d2c952374b 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/NixieTubeDisplayTarget.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/NixieTubeDisplayTarget.java @@ -6,6 +6,7 @@ import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlock; import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlockEntity; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; @@ -15,13 +16,12 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class NixieTubeDisplayTarget extends SingleLineDisplayTarget { @Override protected void acceptLine(MutableComponent text, DisplayLinkContext context) { - String tagElement = Component.Serializer.toJson(text, context.level().registryAccess()); + String tagElement = LegacyComponentSerializationBridge.toJson(text, context.level().registryAccess()); NixieTubeBlock.walkNixies(context.level(), context.getTargetPos(), false, (currentPos, rowPosition) -> { BlockEntity blockEntity = context.level() .getBlockEntity(currentPos); @@ -39,7 +39,6 @@ protected int getWidth(DisplayLinkContext context) { } @Override - @OnlyIn(Dist.CLIENT) public AABB getMultiblockBounds(LevelAccessor level, BlockPos pos) { MutableObject start = new MutableObject<>(null); MutableObject end = new MutableObject<>(null); diff --git a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/SignDisplayTarget.java b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/SignDisplayTarget.java index 6bd7468186..82ffb54514 100644 --- a/src/main/java/com/simibubi/create/content/redstone/displayLink/target/SignDisplayTarget.java +++ b/src/main/java/com/simibubi/create/content/redstone/displayLink/target/SignDisplayTarget.java @@ -5,7 +5,7 @@ import com.simibubi.create.api.behaviour.display.DisplayTarget; import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/simibubi/create/content/redstone/link/IRedstoneLinkable.java b/src/main/java/com/simibubi/create/content/redstone/link/IRedstoneLinkable.java index bb5438196e..3e11658d6e 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/IRedstoneLinkable.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/IRedstoneLinkable.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler.Frequency; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; public interface IRedstoneLinkable { diff --git a/src/main/java/com/simibubi/create/content/redstone/link/LinkBehaviour.java b/src/main/java/com/simibubi/create/content/redstone/link/LinkBehaviour.java index 5e1b6364d0..f6b988006b 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/LinkBehaviour.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/LinkBehaviour.java @@ -14,8 +14,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -107,7 +108,7 @@ public void notifySignalChange() { @Override public void initialize() { super.initialize(); - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; getHandler().addToNetwork(getWorld(), this); newPosition = true; @@ -121,7 +122,7 @@ public Couple getNetworkKey() { @Override public void unload() { super.unload(); - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; getHandler().removeFromNetwork(getWorld(), this); } @@ -134,10 +135,8 @@ public boolean isSafeNBT() { @Override public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { super.write(nbt, registries, clientPacket); - nbt.put("FrequencyFirst", frequencyFirst.getStack() - .saveOptional(registries)); - nbt.put("FrequencyLast", frequencyLast.getStack() - .saveOptional(registries)); + nbt.put("FrequencyFirst", LegacyItemStackNbtBridge.saveOptional(frequencyFirst.getStack(), registries)); + nbt.put("FrequencyLast", LegacyItemStackNbtBridge.saveOptional(frequencyLast.getStack(), registries)); nbt.putLong("LastKnownPosition", blockEntity.getBlockPos() .asLong()); } @@ -146,12 +145,12 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { long positionInTag = blockEntity.getBlockPos() .asLong(); - long positionKey = nbt.getLong("LastKnownPosition"); + long positionKey = nbt.getLongOr("LastKnownPosition", positionInTag); newPosition = positionInTag != positionKey; super.read(nbt, registries, clientPacket); - frequencyFirst = Frequency.of(ItemStack.parseOptional(registries, nbt.getCompound("FrequencyFirst"))); - frequencyLast = Frequency.of(ItemStack.parseOptional(registries, nbt.getCompound("FrequencyLast"))); + frequencyFirst = Frequency.of(LegacyItemStackNbtBridge.parseOptional(registries, nbt.get("FrequencyFirst"))); + frequencyLast = Frequency.of(LegacyItemStackNbtBridge.parseOptional(registries, nbt.get("FrequencyLast"))); } public void setFrequency(boolean first, ItemStack stack) { @@ -234,10 +233,8 @@ public String getClipboardKey() { @Override public boolean writeToClipboard(@NotNull HolderLookup.Provider registries, CompoundTag tag, Direction side) { - tag.put("First", frequencyFirst.getStack() - .saveOptional(registries)); - tag.put("Last", frequencyLast.getStack() - .saveOptional(registries)); + tag.put("First", LegacyItemStackNbtBridge.saveOptional(frequencyFirst.getStack(), registries)); + tag.put("Last", LegacyItemStackNbtBridge.saveOptional(frequencyLast.getStack(), registries)); return true; } @@ -247,8 +244,8 @@ public boolean readFromClipboard(@NotNull HolderLookup.Provider registries, Comp return false; if (simulate) return true; - setFrequency(true, ItemStack.parseOptional(registries, tag.getCompound("First"))); - setFrequency(false, ItemStack.parseOptional(registries, tag.getCompound("Last"))); + setFrequency(true, LegacyItemStackNbtBridge.parseOptional(registries, tag.get("First"))); + setFrequency(false, LegacyItemStackNbtBridge.parseOptional(registries, tag.get("Last"))); return true; } diff --git a/src/main/java/com/simibubi/create/content/redstone/link/LinkHandler.java b/src/main/java/com/simibubi/create/content/redstone/link/LinkHandler.java index ba072a2049..8ef6e9eaa0 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/LinkHandler.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/LinkHandler.java @@ -57,7 +57,7 @@ public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { Vec3 localHit = ray.getLocation() .subtract(Vec3.atLowerCornerOf(pos)) .add(Vec3.atLowerCornerOf(ray.getDirection() - .getNormal()) + .getUnitVec3i()) .scale(.25f)); fakePlayerChoice = localHit.distanceToSqr(behaviour.firstSlot.getLocalOffset(world, pos, blockState)) > localHit .distanceToSqr(behaviour.secondSlot.getLocalOffset(world, pos, blockState)); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/LinkRenderer.java b/src/main/java/com/simibubi/create/content/redstone/link/LinkRenderer.java index 280bdadb3a..94996ebbba 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/LinkRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/LinkRenderer.java @@ -14,12 +14,12 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -83,7 +83,7 @@ public static void renderOnBlockEntity(SmartBlockEntity be, float partialTicks, if (be == null || be.isRemoved()) return; - Entity cameraEntity = Minecraft.getInstance().cameraEntity; + Entity cameraEntity = Minecraft.getInstance().getCameraEntity(); float max = AllConfigs.client().filterItemRenderDistance.getF(); if (!be.isVirtual() && cameraEntity != null && cameraEntity.position() .distanceToSqr(VecHelper.getCenterOf(be.getBlockPos())) > (max * max)) diff --git a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlock.java b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlock.java index b5d69de127..bb56e55d9a 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlock.java @@ -5,7 +5,7 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.WrenchableDirectionalBlock; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -18,6 +18,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -40,11 +42,11 @@ public RedstoneLinkBlock(Properties properties) { } @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, - boolean isMoving) { - if (level.isClientSide) + public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { + if (level.isClientSide()) return; + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); Direction blockFacing = state.getValue(FACING); if (fromPos.equals(pos.relative(blockFacing.getOpposite()))) { if (!canSurvive(state, level, pos)) { @@ -67,9 +69,9 @@ public void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource Direction attachedFace = state.getValue(RedstoneLinkBlock.FACING) .getOpposite(); BlockPos attachedPos = pos.relative(attachedFace); - level.blockUpdated(pos, level.getBlockState(pos) + level.updateNeighborsAt(pos, level.getBlockState(pos) .getBlock()); - level.blockUpdated(attachedPos, level.getBlockState(attachedPos) + level.updateNeighborsAt(attachedPos, level.getBlockState(attachedPos) .getBlock()); } @@ -81,12 +83,12 @@ public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState ol } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pMovedByPiston) { - IBE.onRemove(pState, pLevel, pPos, pNewState); +protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pMovedByPiston) { + IBE.onRemove(pState, pLevel, pPos, Blocks.AIR.defaultBlockState()); } public void updateTransmittedSignal(BlockState state, Level level, BlockPos pos) { - if (level.isClientSide) + if (level.isClientSide()) return; if (state.getValue(RECEIVER)) return; @@ -163,7 +165,7 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP } public InteractionResult toggleMode(BlockState state, Level level, BlockPos pos) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; return onBlockEntityUse(level, pos, be -> { diff --git a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlockEntity.java index a722b8e360..d430f8862a 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkBlockEntity.java @@ -79,13 +79,13 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - transmitter = compound.getBoolean("Transmitter"); + transmitter = compound.getBooleanOr("Transmitter", false); super.read(compound, registries, clientPacket); - receivedSignal = compound.getInt("Receive"); - receivedSignalChanged = compound.getBoolean("ReceivedChanged"); - if (level == null || level.isClientSide || !link.newPosition) - transmittedSignal = compound.getInt("Transmit"); + receivedSignal = compound.getIntOr("Receive", 0); + receivedSignalChanged = compound.getBooleanOr("ReceivedChanged", false); + if (level == null || level.isClientSide() || !link.newPosition) + transmittedSignal = compound.getIntOr("Transmit", 0); } @Override @@ -103,7 +103,7 @@ public void tick() { if (transmitter) return; - if (level.isClientSide) + if (level.isClientSide()) return; BlockState blockState = getBlockState(); @@ -131,9 +131,9 @@ public void updateSelfAndAttached(BlockState blockState) { Direction attachedFace = blockState.getValue(RedstoneLinkBlock.FACING) .getOpposite(); BlockPos attachedPos = worldPosition.relative(attachedFace); - level.blockUpdated(worldPosition, level.getBlockState(worldPosition) + level.updateNeighborsAt(worldPosition, level.getBlockState(worldPosition) .getBlock()); - level.blockUpdated(attachedPos, level.getBlockState(attachedPos) + level.updateNeighborsAt(attachedPos, level.getBlockState(attachedPos) .getBlock()); receivedSignalChanged = false; panelSupport.notifyPanels(); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkFrequencySlot.java b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkFrequencySlot.java index 6244bbc097..6503d2d592 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkFrequencySlot.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkFrequencySlot.java @@ -4,8 +4,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkGenerator.java b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkGenerator.java index fa8686d233..ed299a392e 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkGenerator.java @@ -2,12 +2,12 @@ import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class RedstoneLinkGenerator extends SpecialBlockStateGen { @@ -25,7 +25,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { String variant = state.getValue(RedstoneLinkBlock.RECEIVER) ? "receiver" : "transmitter"; if (state.getValue(RedstoneLinkBlock.FACING).getAxis().isHorizontal()) diff --git a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkNetworkHandler.java b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkNetworkHandler.java index d8c5182928..840b4128ce 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkNetworkHandler.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/RedstoneLinkNetworkHandler.java @@ -11,8 +11,8 @@ import com.simibubi.create.Create; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.levelWrappers.WorldHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.level.WorldHelper; import net.minecraft.core.component.DataComponents; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java index 2887205485..b03710bd25 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlock.java @@ -10,9 +10,11 @@ import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; @@ -50,34 +52,30 @@ public BlockEntity newBlockEntity(BlockPos p_153573_, BlockState p_153574_) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (!player.isShiftKeyDown() && LecternControllerBlockEntity.playerInRange(player, level, pos)) { - if (!level.isClientSide) + if (!level.isClientSide()) withBlockEntityDo(level, pos, be -> be.tryStartUsing(player)); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (player.isShiftKeyDown()) { - if (!level.isClientSide) + if (!level.isClientSide()) replaceWithLectern(state, level, pos); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.is(newState.getBlock())) { - if (!world.isClientSide) - withBlockEntityDo(world, pos, be -> be.dropController(state)); - - super.onRemove(state, world, pos, newState, isMoving); - } + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { + withBlockEntityDo(world, pos, be -> be.dropController(state)); + super.affectNeighborsAfterRemoval(state, world, pos, isMoving); } @Override - public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { + public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos, Direction direction) { return 15; } @@ -95,8 +93,8 @@ public void replaceWithLectern(BlockState state, Level world, BlockPos pos) { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, Player player) { - return Blocks.LECTERN.getCloneItemStack(state, target, level, pos, player); + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { + return Blocks.LECTERN.asItem().getDefaultInstance(); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java index f1f7562636..13f3bde133 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerBlockEntity.java @@ -8,9 +8,10 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -30,7 +31,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class LecternControllerBlockEntity extends SmartBlockEntity { private ItemContainerContents controllerData = ItemContainerContents.EMPTY; @@ -51,7 +51,7 @@ protected void write(CompoundTag compound, HolderLookup.Provider registries, boo super.write(compound, registries, clientPacket); compound.put("ControllerData", CatnipCodecUtils.encode(ItemContainerContents.CODEC, registries, controllerData).orElseThrow()); if (user != null) - compound.putUUID("User", user); + LegacyNbtUtilsBridge.putUUID(compound, "User", user); } @Override @@ -66,7 +66,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool controllerData = CatnipCodecUtils.decode(ItemContainerContents.CODEC, registries, compound.get("ControllerData")) .orElse(ItemContainerContents.EMPTY); - user = compound.hasUUID("User") ? compound.getUUID("User") : null; + user = LegacyNbtUtilsBridge.hasUUID(compound, "User") ? LegacyNbtUtilsBridge.getUUID(compound, "User") : null; } public ItemStack getController() { @@ -113,12 +113,12 @@ public static boolean playerIsUsingLectern(Player player) { public void tick() { super.tick(); - if (level.isClientSide) { + if (level.isClientSide()) { CatnipServices.PLATFORM.executeOnClientOnly(() -> this::tryToggleActive); prevUser = user; } - if (!level.isClientSide) { + if (!level.isClientSide()) { deactivatedThisTick = false; if (!(level instanceof ServerLevel)) @@ -137,7 +137,6 @@ public void tick() { } } - @OnlyIn(Dist.CLIENT) private void tryToggleActive() { if (user == null && Minecraft.getInstance().player.getUUID().equals(prevUser)) { LinkedControllerClientHandler.deactivateInLectern(); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerRenderer.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerRenderer.java index 45290387b1..b6e1bcd1cd 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LecternControllerRenderer.java @@ -7,9 +7,9 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemDisplayContext; @@ -26,8 +26,7 @@ protected void renderSafe(LecternControllerBlockEntity be, float partialTicks, P ItemStack stack = AllItems.LINKED_CONTROLLER.asStack(); ItemDisplayContext transformType = ItemDisplayContext.NONE; - CustomRenderedItemModel mainModel = (CustomRenderedItemModel) Minecraft.getInstance() - .getItemRenderer() + CustomRenderedItemModel mainModel = (CustomRenderedItemModel) com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .getModel(stack, be.getLevel(), null, 0); PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay); boolean active = be.hasUser(); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerClientHandler.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerClientHandler.java index 82247629d1..410f1a23c9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerClientHandler.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerClientHandler.java @@ -5,7 +5,7 @@ import java.util.HashSet; import java.util.List; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import org.lwjgl.glfw.GLFW; @@ -20,14 +20,14 @@ import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.FontHelper.Palette; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.DeltaTracker; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -38,7 +38,7 @@ public class LinkedControllerClientHandler { - public static final LayeredDraw.Layer OVERLAY = LinkedControllerClientHandler::renderOverlay; + public static final GuiLayer OVERLAY = LinkedControllerClientHandler::renderOverlay; public static Mode MODE = Mode.IDLE; public static int PACKET_RATE = 5; @@ -92,11 +92,11 @@ protected static void onReset() { selectedLocation = BlockPos.ZERO; if (inLectern()) - CatnipServices.NETWORK.sendToServer(new LinkedControllerStopLecternPacket(lecternPos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerStopLecternPacket(lecternPos)); lecternPos = null; if (!currentlyPressed.isEmpty()) - CatnipServices.NETWORK.sendToServer(new LinkedControllerInputPacket(currentlyPressed, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerInputPacket(currentlyPressed, false)); currentlyPressed.clear(); LinkedControllerItemRenderer.resetButtons(); @@ -137,14 +137,13 @@ public static void tick() { return; } - if (mc.screen != null) { + if (mc.gui.screen() != null) { MODE = Mode.IDLE; onReset(); return; } - if (InputConstants.isKeyDown(mc.getWindow() - .getWindow(), GLFW.GLFW_KEY_ESCAPE)) { + if (InputConstants.isKeyDown(mc.getWindow(), GLFW.GLFW_KEY_ESCAPE)) { MODE = Mode.IDLE; onReset(); return; @@ -165,13 +164,13 @@ public static void tick() { if (MODE == Mode.ACTIVE) { // Released Keys if (!releasedKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new LinkedControllerInputPacket(releasedKeys, false, lecternPos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerInputPacket(releasedKeys, false, lecternPos)); AllSoundEvents.CONTROLLER_CLICK.playAt(player.level(), player.blockPosition(), 1f, .5f, true); } // Newly Pressed Keys if (!newKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new LinkedControllerInputPacket(newKeys, true, lecternPos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerInputPacket(newKeys, true, lecternPos)); packetCooldown = PACKET_RATE; AllSoundEvents.CONTROLLER_CLICK.playAt(player.level(), player.blockPosition(), 1f, .75f, true); } @@ -179,7 +178,7 @@ public static void tick() { // Keepalive Pressed Keys if (packetCooldown == 0) { if (!pressedKeys.isEmpty()) { - CatnipServices.NETWORK.sendToServer(new LinkedControllerInputPacket(pressedKeys, true, lecternPos)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerInputPacket(pressedKeys, true, lecternPos)); packetCooldown = PACKET_RATE; } } @@ -197,7 +196,7 @@ public static void tick() { for (Integer integer : newKeys) { LinkBehaviour linkBehaviour = BlockEntityBehaviour.get(mc.level, selectedLocation, LinkBehaviour.TYPE); if (linkBehaviour != null) { - CatnipServices.NETWORK.sendToServer(new LinkedControllerBindPacket(integer, selectedLocation)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new LinkedControllerBindPacket(integer, selectedLocation)); CreateLang.translate("linked_controller.key_bound", controls.get(integer) .getTranslatedKeyMessage() .getString()) @@ -212,22 +211,14 @@ public static void tick() { controls.forEach(kb -> kb.setDown(false)); } - public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { - int width1 = guiGraphics.guiWidth(); - int height1 = guiGraphics.guiHeight(); + public static void renderOverlay(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { + int width1 = GuiGraphicsExtractor.guiWidth(); + int height1 = GuiGraphicsExtractor.guiHeight(); Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui) - return; if (MODE != Mode.BIND) return; - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); - Screen tooltipScreen = new Screen(CommonComponents.EMPTY) { - }; - tooltipScreen.init(mc, width1, height1); - Object[] keys = new Object[6]; List controls = ControlsUtil.getControls(); for (int i = 0; i < controls.size(); i++) { @@ -250,9 +241,7 @@ public static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTrac int y = height1 - height - 24; // TODO - guiGraphics.renderComponentTooltip(Minecraft.getInstance().font, list, x, y); - - poseStack.popPose(); + GuiGraphicsExtractor.setComponentTooltipForNextFrame(Minecraft.getInstance().font, list, x, y); } public enum Mode { diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerInputPacket.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerInputPacket.java index 6baad1a8e4..495df6280b 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerInputPacket.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerInputPacket.java @@ -7,8 +7,8 @@ import com.simibubi.create.AllPackets; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; @@ -46,7 +46,7 @@ protected void handleLectern(ServerPlayer player, LecternControllerBlockEntity l @Override protected void handleItem(ServerPlayer player, ItemStack heldItem) { - Level world = player.getCommandSenderWorld(); + Level world = player.level(); UUID uniqueID = player.getUUID(); BlockPos pos = player.blockPosition(); diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItem.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItem.java index 0355057642..29c0440e51 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItem.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItem.java @@ -10,14 +10,13 @@ import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.render.SimpleCustomRenderer; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -32,7 +31,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.items.ItemStackHandler; @@ -54,22 +52,22 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext ctx) { if (player.mayBuild()) { if (player.isShiftKeyDown()) { if (AllBlocks.LECTERN_CONTROLLER.has(hitState)) { - if (!world.isClientSide) + if (!world.isClientSide()) AllBlocks.LECTERN_CONTROLLER.get().withBlockEntityDo(world, pos, be -> be.swapControllers(stack, player, ctx.getHand(), hitState)); return InteractionResult.SUCCESS; } } else { if (AllBlocks.REDSTONE_LINK.has(hitState)) { - if (world.isClientSide) + if (world.isClientSide()) CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> this.toggleBindMode(ctx.getClickedPos())); player.getCooldowns() - .addCooldown(this, 2); + .addCooldown(stack, 2); return InteractionResult.SUCCESS; } if (hitState.is(Blocks.LECTERN) && !hitState.getValue(LecternBlock.HAS_BOOK)) { - if (!world.isClientSide) { + if (!world.isClientSide()) { ItemStack lecternStack = player.isCreative() ? stack.copy() : stack.split(1); AllBlocks.LECTERN_CONTROLLER.get().replaceLectern(hitState, world, pos, lecternStack); } @@ -81,37 +79,35 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext ctx) { } } - return use(world, player, ctx.getHand()).getResult(); + return use(world, player, ctx.getHand()); } @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { ItemStack heldItem = player.getItemInHand(hand); if (player.isShiftKeyDown() && hand == InteractionHand.MAIN_HAND) { - if (!world.isClientSide && player instanceof ServerPlayer && player.mayBuild()) + if (!world.isClientSide() && player instanceof ServerPlayer && player.mayBuild()) player.openMenu(this, buf -> { ItemStack.STREAM_CODEC.encode(buf, heldItem); }); - return InteractionResultHolder.success(heldItem); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldItem); } if (!player.isShiftKeyDown()) { - if (world.isClientSide) + if (world.isClientSide()) CatnipServices.PLATFORM.executeOnClientOnly(() -> this::toggleActive); player.getCooldowns() - .addCooldown(this, 2); + .addCooldown(heldItem, 2); } - return InteractionResultHolder.pass(heldItem); + return InteractionResult.PASS; } - @OnlyIn(Dist.CLIENT) private void toggleBindMode(BlockPos pos) { LinkedControllerClientHandler.toggleBindMode(pos); } - @OnlyIn(Dist.CLIENT) private void toggleActive() { LinkedControllerClientHandler.toggle(); } @@ -140,11 +136,9 @@ public AbstractContainerMenu createMenu(int id, Inventory inv, Player player) { @Override public Component getDisplayName() { - return getDescription(); + return getName(getDefaultInstance()); } - @Override - @OnlyIn(Dist.CLIENT) public void initializeClient(Consumer consumer) { consumer.accept(SimpleCustomRenderer.create(this, new LinkedControllerItemRenderer())); } diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItemRenderer.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItemRenderer.java index 27290fc5f1..ca7f74cce9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerItemRenderer.java @@ -13,12 +13,12 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.item.ItemDisplayContext; @@ -132,7 +132,7 @@ protected static void render(ItemStack stack, CustomRenderedItemModel model, return; } - BakedModel button = BUTTON.get(); + Object button = BUTTON.get(); float s = 1 / 16f; float b = s * -.75f; int index = 0; @@ -163,7 +163,7 @@ protected static void render(ItemStack stack, CustomRenderedItemModel model, ms.popPose(); } - protected static void renderButton(PartialItemModelRenderer renderer, PoseStack ms, int light, float pt, BakedModel button, + protected static void renderButton(PartialItemModelRenderer renderer, PoseStack ms, int light, float pt, Object button, float b, int index, boolean renderDepression) { ms.pushPose(); if (renderDepression) { diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerScreen.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerScreen.java index 03682aeda8..fc9d5597fb 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerScreen.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerScreen.java @@ -14,9 +14,9 @@ import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; @@ -61,7 +61,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int invX = getLeftOfCentered(PLAYER_INVENTORY.getWidth()); int invY = topPos + background.getHeight() + 4; renderPlayerInventory(graphics, invX, invY); @@ -70,7 +70,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in int y = topPos; background.render(graphics, x, y); - graphics.drawString(font, title, x + 15, y + 4, 0x592424, false); + graphics.text(font, title, x + 15, y + 4, 0x592424, false); GuiGameElement.of(menu.contentHolder).at(x + background.getWidth() - 4, y + background.getHeight() - 56, -200) @@ -87,7 +87,7 @@ protected void containerTick() { } @Override - protected void renderTooltip(GuiGraphics graphics, int x, int y) { + protected void renderTooltip(GuiGraphicsExtractor graphics, int x, int y) { if (!menu.getCarried() .isEmpty() || this.hoveredSlot == null || hoveredSlot.container == menu.playerInventory) { super.renderTooltip(graphics, x, y); @@ -98,7 +98,7 @@ protected void renderTooltip(GuiGraphics graphics, int x, int y) { if (hoveredSlot.hasItem()) list = getTooltipFromContainerItem(hoveredSlot.getItem()); - graphics.renderComponentTooltip(font, addToTooltip(list, hoveredSlot.getSlotIndex()), x, y); + graphics.setComponentTooltipForNextFrame(font, addToTooltip(list, hoveredSlot.getSlotIndex()), x, y); } private List addToTooltip(List list, int slot) { diff --git a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerServerHandler.java b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerServerHandler.java index e5e631a6f5..81f794a949 100644 --- a/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerServerHandler.java +++ b/src/main/java/com/simibubi/create/content/redstone/link/controller/LinkedControllerServerHandler.java @@ -15,9 +15,9 @@ import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler.Frequency; import com.simibubi.create.foundation.advancement.AllAdvancements; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelAccessor; diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/DoubleFaceAttachedBlock.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/DoubleFaceAttachedBlock.java index ecaf8b1a99..083761ae93 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/DoubleFaceAttachedBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/DoubleFaceAttachedBlock.java @@ -54,7 +54,7 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { .setValue(FACING, pContext.getHorizontalDirection()); } else { Vec3 n = Vec3.atLowerCornerOf(direction.getClockWise() - .getNormal()); + .getUnitVec3i()); DoubleAttachFace face = DoubleAttachFace.WALL; if (pContext.getPlayer() != null) { Vec3 lookAngle = pContext.getPlayer() diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java index b794a31095..15f4aebb4f 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlock.java @@ -18,8 +18,9 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.content.schematics.requirement.ItemRequirement.ItemUseType; import com.simibubi.create.foundation.block.IBE; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.component.DataComponents; @@ -27,7 +28,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; @@ -37,7 +38,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -64,25 +67,25 @@ public NixieTubeBlock(Properties properties, DyeColor color) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; NixieTubeBlockEntity nixie = getBlockEntity(level, pos); if (nixie == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; // Refuse interaction if nixie tube is in a computer-controlled row if (isInComputerControlledRow(level, pos)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (stack.isEmpty()) { if (nixie.reactsToRedstone()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; nixie.clearCustomText(); updateDisplayedRedstoneValue(state, level, pos); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } boolean display = @@ -90,7 +93,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev DyeColor dye = DyeColor.getColor(stack); if (!display && dye == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; Component component = stack.getOrDefault(DataComponents.CUSTOM_NAME, Component.empty()); @@ -100,10 +103,10 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev component = entries.getFirst().text; } - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; - String tagUsed = Component.Serializer.toJson(component, level.registryAccess()); + String tagUsed = LegacyComponentSerializationBridge.toJson(component, level.registryAccess()); // Skip computer check in this walk since it was already performed at the start. walkNixies(level, pos, true, (currentPos, rowPosition) -> { if (display) @@ -112,7 +115,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev level.setBlockAndUpdate(currentPos, withColor(state, dye)); }); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } public static Direction getLeftNixieDirection(@NotNull BlockState state) { @@ -215,9 +218,7 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) { - if (newState.getBlock() instanceof NixieTubeBlock) - return; + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel world, BlockPos pos, boolean isMoving) { world.removeBlockEntity(pos); if (Mods.COMPUTERCRAFT.isLoaded()) { // A computer-controlled nixie tube row may have been broken in the middle. @@ -253,7 +254,7 @@ public void onRemove(BlockState state, Level world, BlockPos pos, BlockState new } @Override - public ItemStack getCloneItemStack(LevelReader pLevel, BlockPos pPos, BlockState pState) { + public ItemStack getCloneItemStack(LevelReader pLevel, BlockPos pPos, BlockState pState, boolean includeData) { return AllBlocks.ORANGE_NIXIE_TUBE.asStack(); } @@ -274,12 +275,10 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { if (color != DyeColor.ORANGE) - return AllBlocks.ORANGE_NIXIE_TUBE.get() - .getCloneItemStack(state, target, level, pos, player); - return super.getCloneItemStack(state, target, level, pos, player); + return AllBlocks.ORANGE_NIXIE_TUBE.asStack(); + return super.getCloneItemStack(level, pos, state, includeData); } @Override @@ -288,10 +287,9 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighbourState, LevelAccessor world, - BlockPos pos, BlockPos neighbourPos) { + public BlockState updateShape(BlockState state, LevelReader world, ScheduledTickAccess ticks, BlockPos pos, Direction direction, BlockPos neighbourPos, BlockState neighbourState, RandomSource random) { if (state.getValue(WATERLOGGED)) - world.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(world)); return state; } @@ -309,9 +307,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, - boolean isMoving) { - if (level.isClientSide) + public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, Orientation orientation, boolean isMoving) { + if (level.isClientSide()) return; if (!level.getBlockTicks() .willTickThisTick(pos, this)) @@ -339,14 +336,14 @@ public void onPlace(BlockState state, Level worldIn, BlockPos pos, BlockState ol } public static void updateDisplayedRedstoneValue(NixieTubeBlockEntity be, BlockState state, boolean force) { - if (be.getLevel() == null || be.getLevel().isClientSide) + if (be.getLevel() == null || be.getLevel().isClientSide()) return; if (be.reactsToRedstone() || force) be.updateRedstoneStrength(getPower(be.getLevel(), state, be.getBlockPos())); } private void updateDisplayedRedstoneValue(BlockState state, Level level, BlockPos pos) { - if (level.isClientSide) + if (level.isClientSide()) return; withBlockEntityDo(level, pos, be -> NixieTubeBlock.updateDisplayedRedstoneValue(be, state, false)); } diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlockEntity.java index 356805ca4d..db25ddd573 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeBlockEntity.java @@ -19,7 +19,7 @@ import com.simibubi.create.foundation.utility.DynamicComponent; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -111,12 +111,12 @@ public static void registerCapabilities(RegisterCapabilitiesEvent event) { @Override public void tick() { super.tick(); - if (!level.isClientSide) + if (!level.isClientSide()) return; signalState = null; if (computerBehaviour.hasAttachedComputer()) { - if (level.isClientSide && cachedSignalTE.get() != null) { + if (level.isClientSide() && cachedSignalTE.get() != null) { cachedSignalTE = new WeakReference<>(null); } return; @@ -141,7 +141,7 @@ public void tick() { @Override public void initialize() { - if (level.isClientSide) + if (level.isClientSide()) updateDisplayedStrings(); } @@ -220,7 +220,7 @@ protected void read(CompoundTag nbt, HolderLookup.Provider registries, boolean c if (component.isValid()) { customText = Optional.of(component); - nixieIndex = nbt.getInt("CustomTextIndex"); + nixieIndex = nbt.getIntOr("CustomTextIndex", 0); } else { customText = Optional.empty(); nixieIndex = 0; @@ -231,10 +231,11 @@ protected void read(CompoundTag nbt, HolderLookup.Provider registries, boolean c } if (customText.isEmpty()) - redstoneStrength = nbt.getInt("RedstoneStrength"); + redstoneStrength = nbt.getIntOr("RedstoneStrength", 0); if (clientPacket || isVirtual()) { if (nbt.contains("ComputerSignal")) { - byte[] encodedComputerSignal = nbt.getByteArray("ComputerSignal"); + byte[] encodedComputerSignal = nbt.getByteArray("ComputerSignal") + .orElse(new byte[0]); if (computerSignal == null) computerSignal = new ComputerSignal(); computerSignal.decode(encodedComputerSignal); diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeGenerator.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeGenerator.java index 3467d81636..d0d99e8716 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeGenerator.java @@ -3,14 +3,16 @@ import com.simibubi.create.content.redstone.nixieTube.DoubleFaceAttachedBlock.DoubleAttachFace; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class NixieTubeGenerator extends SpecialBlockStateGen { + private ModelFile model; + @Override protected int getXRotation(BlockState state) { return state.getValue(NixieTubeBlock.FACE) @@ -25,10 +27,12 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { - return prov.models() - .withExistingParent(ctx.getName(), prov.modLoc("block/nixie_tube/block")); + if (model == null) + model = prov.models() + .withExistingParent(ctx.getName(), prov.modLoc("block/nixie_tube/block")); + return model; } } diff --git a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeRenderer.java b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeRenderer.java index 9ad810e8fd..831e9979c0 100644 --- a/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeRenderer.java +++ b/src/main/java/com/simibubi/create/content/redstone/nixieTube/NixieTubeRenderer.java @@ -8,19 +8,19 @@ import com.simibubi.create.foundation.utility.DyeHelper; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.font.glyphs.BakedGlyph; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource.BufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.network.chat.Style; @@ -111,21 +111,14 @@ public static void drawTube(PoseStack ms, MultiBufferSource buffer, String c, fl } public static void drawInWorldString(PoseStack ms, MultiBufferSource buffer, String c, int color) { - Font fontRenderer = Minecraft.getInstance().font; - fontRenderer.drawInBatch(c, 0, 0, color, false, ms.last() - .pose(), buffer, Font.DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); - if (buffer instanceof BufferSource) { - BakedGlyph texturedglyph = fontRenderer.getFontSet(Style.DEFAULT_FONT) - .whiteGlyph(); - ((BufferSource) buffer).endBatch(texturedglyph.renderType(Font.DisplayMode.NORMAL)); - } + // TODO 26.2: Rebuild in-world text rendering on the new Font render-state API. } private void renderAsSignal(NixieTubeBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { BlockState blockState = be.getBlockState(); Direction facing = NixieTubeBlock.getFacing(blockState); - Vec3 observerVec = Minecraft.getInstance().cameraEntity.getEyePosition(partialTicks); + Vec3 observerVec = Minecraft.getInstance().getCameraEntity().getEyePosition(partialTicks); var msr = TransformStack.of(ms); if (facing == Direction.DOWN) @@ -138,11 +131,11 @@ private void renderAsSignal(NixieTubeBlockEntity be, float partialTicks, PoseSta CachedBuffers.partial(AllPartialModels.SIGNAL_PANEL, blockState) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); ms.pushPose(); ms.translate(1 / 2f, 7.5f / 16f, 1 / 2f); - float renderTime = AnimationTickHolder.getRenderTime(be.getLevel()); + float renderTime = AnimationTickHolder.getRenderTime(); Vec3 lampVec = Vec3.atCenterOf(be.getBlockPos()); Vec3 diff = lampVec.subtract(observerVec); @@ -169,7 +162,7 @@ private void renderAsSignal(NixieTubeBlockEntity be, float partialTicks, PoseSta .light(0xf000f0) .disableDiffuse() .scale(vert ? longSide : 1, vert ? 1 : longSide, 1) - .renderInto(ms, buffer.getBuffer(RenderType.translucent())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.translucent())); CachedBuffers .partial( @@ -213,7 +206,7 @@ private void renderAsSignal(NixieTubeBlockEntity be, float partialTicks, PoseSta .light(0xf000f0) .disableDiffuse() .scale(width, height, 1) - .renderInto(ms, buffer.getBuffer(RenderType.translucent())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.translucent())); CachedBuffers .partial(AllPartialModels.SIGNAL_COMPUTER_WHITE_GLOW, blockState) diff --git a/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailBlock.java b/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailBlock.java index 220d36b3e3..a5947bad11 100644 --- a/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailBlock.java @@ -7,18 +7,18 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.content.equipment.wrench.IWrenchable; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.Vec3i; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.vehicle.AbstractMinecart; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.BlockGetter; @@ -39,7 +39,6 @@ import net.minecraft.world.phys.Vec3; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault public class ControllerRailBlock extends BaseRailBlock implements IWrenchable { public static final EnumProperty SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT; @@ -59,7 +58,7 @@ public ControllerRailBlock(Properties properties) { public static Vec3i getAccelerationVector(BlockState state) { Direction pointingTo = getPointingTowards(state); - return (isStateBackwards(state) ? pointingTo.getOpposite() : pointingTo).getNormal(); + return (isStateBackwards(state) ? pointingTo.getOpposite() : pointingTo).getUnitVec3i(); } private static Direction getPointingTowards(BlockState state) { @@ -113,13 +112,13 @@ private static void decelerateCart(BlockPos pos, AbstractMinecart cart) { cart.setDeltaMovement(diff.x / 16f, 0, diff.z / 16f); if (cart instanceof MinecartFurnace fme) { - fme.xPush = fme.zPush = 0; + fme.push = Vec3.ZERO; } } private static boolean isStableWith(BlockState testState, BlockGetter world, BlockPos pos) { return canSupportRigidBlock(world, pos.below()) && (!testState.getValue(SHAPE) - .isAscending() || canSupportRigidBlock(world, pos.relative(getPointingTowards(testState)))); + .isSlope() || canSupportRigidBlock(world, pos.relative(getPointingTowards(testState)))); } @Override @@ -140,16 +139,14 @@ protected void createBlockStateDefinition(StateDefinition.Builder from.getY() && !current.getValue(SHAPE) - .isAscending()) + .isSlope()) continue; BlockState testState = world.getBlockState(testPos); if (testState.getBlock() instanceof ControllerRailBlock @@ -264,7 +261,7 @@ public boolean hasAnalogOutputSignal(BlockState state) { } @Override - public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos) { + public int getAnalogOutputSignal(BlockState state, Level world, BlockPos pos, Direction direction) { return state.getValue(POWER); } diff --git a/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailGenerator.java b/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailGenerator.java index a79a372eee..e560701f2d 100644 --- a/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/rail/ControllerRailGenerator.java @@ -3,13 +3,13 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.level.block.state.properties.RailShape; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class ControllerRailGenerator extends SpecialBlockStateGen { @@ -43,12 +43,12 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { RailShape shape = state.getValue(ControllerRailBlock.SHAPE); boolean backwards = ControllerRailBlock.isStateBackwards(state); - String model = shape.isAscending() ? backwards ? "ascending_south" : "ascending_north" : "north_south"; + String model = shape.isSlope() ? backwards ? "ascending_south" : "ascending_north" : "north_south"; return AssetLookup.partialBaseModel(ctx, prov, model); } diff --git a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlock.java b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlock.java index 262bf3c894..adb1a41904 100644 --- a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlock.java @@ -11,7 +11,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.InvManipulationBehaviour; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -22,6 +22,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -63,8 +65,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { else if (BlockEntityBehaviour.get(blockEntity, FluidTransportBehaviour.TYPE) != null) canDetect = true; else if (blockEntity != null && ( - context.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, blockEntity.getBlockPos(), null) != null || - context.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, blockEntity.getBlockPos(), null) != null + context.getLevel().getCapability(Capabilities.Item.BLOCK, blockEntity.getBlockPos(), null) != null || + context.getLevel().getCapability(Capabilities.Fluid.BLOCK, blockEntity.getBlockPos(), null) != null )) canDetect = true; else if (blockEntity instanceof FunnelBlockEntity) @@ -114,14 +116,14 @@ public boolean canConnectRedstone(BlockState state, BlockGetter world, BlockPos } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { InvManipulationBehaviour behaviour = BlockEntityBehaviour.get(worldIn, pos, InvManipulationBehaviour.TYPE); + BlockPos fromPos = orientation == null ? pos : pos.relative(orientation.getFront()); if (behaviour != null) behaviour.onNeighborChanged(fromPos); } diff --git a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlockEntity.java index c8f21f2044..bc954e7f5a 100644 --- a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverBlockEntity.java @@ -18,8 +18,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.inventory.TankManipulationBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.inventory.VersionedInventoryTrackerBehaviour; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -178,7 +178,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); - turnOffTicks = compound.getInt("TurnOff"); + turnOffTicks = compound.getIntOr("TurnOff", 0); } @Override diff --git a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverGenerator.java b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverGenerator.java index 3ee0b8f6d7..d79719ccb0 100644 --- a/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/smartObserver/SmartObserverGenerator.java @@ -4,11 +4,11 @@ import com.simibubi.create.foundation.data.AssetLookup; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class SmartObserverGenerator extends SpecialBlockStateGen { @@ -27,7 +27,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { return AssetLookup.forPowered(ctx, prov) .apply(state); diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlock.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlock.java index 71401a34b1..12be91d6e2 100644 --- a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlock.java +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlock.java @@ -5,16 +5,14 @@ import com.simibubi.create.content.redstone.DirectedDirectionalBlock; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.BlockPlaceContext; @@ -29,8 +27,6 @@ import net.minecraft.world.level.block.state.properties.AttachFace; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.phys.BlockHitResult; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; public class ThresholdSwitchBlock extends DirectedDirectionalBlock implements IBE { @@ -81,17 +77,11 @@ protected void createBlockStateDefinition(Builder builder) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player != null && AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> this.displayScreen(be, player))); - return ItemInteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(ThresholdSwitchBlockEntity be, Player player) { - if (player instanceof LocalPlayer) - ScreenOpener.open(new ThresholdSwitchScreen(be)); + return InteractionResult.TRY_WITH_EMPTY_HAND; + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> ThresholdSwitchClient.displayScreen(be, player))); + return InteractionResult.SUCCESS; } @Override @@ -103,8 +93,8 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { BlockEntity be = context.getLevel() .getBlockEntity(context.getClickedPos() .relative(face)); - if (be != null && (be.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, be.getBlockPos(), null) != null || - be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null) != null)) { + if (be != null && (be.getLevel().getCapability(Capabilities.Item.BLOCK, be.getBlockPos(), null) != null || + be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null) != null)) { preferredFacing = face; break; } diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java index 9056c3fa65..838de3c442 100644 --- a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchBlockEntity.java @@ -20,7 +20,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.inventory.VersionedInventoryTrackerBehaviour; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponents; @@ -77,15 +77,15 @@ public ThresholdSwitchBlockEntity(BlockEntityType type, BlockPos pos, BlockSt @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - onWhenAbove = compound.getInt("OnAboveAmount"); - offWhenBelow = compound.getInt("OffBelowAmount"); - currentLevel = compound.getInt("CurrentAmount"); - currentMinLevel = compound.getInt("CurrentMinAmount"); - currentMaxLevel = compound.getInt("CurrentMaxAmount"); - inStacks = compound.getBoolean("InStacks"); - redstoneState = compound.getBoolean("Powered"); - inverted = compound.getBoolean("Inverted"); - poweredAfterDelay = compound.getBoolean("PoweredAfterDelay"); + onWhenAbove = compound.getIntOr("OnAboveAmount", 128); + offWhenBelow = compound.getIntOr("OffBelowAmount", 64); + currentLevel = compound.getIntOr("CurrentAmount", -1); + currentMinLevel = compound.getIntOr("CurrentMinAmount", 0); + currentMaxLevel = compound.getIntOr("CurrentMaxAmount", 0); + inStacks = compound.getBooleanOr("InStacks", false); + redstoneState = compound.getBooleanOr("Powered", false); + inverted = compound.getBooleanOr("Inverted", false); + poweredAfterDelay = compound.getBooleanOr("PoweredAfterDelay", false); super.read(compound, registries, clientPacket); } @@ -242,7 +242,7 @@ else if (!redstoneState && currentLevel >= onWhenAbove) } private boolean isSuitableInventory(BlockEntity be) { - return be != null && !(be instanceof StockTickerBlockEntity || level.getCapability(Capabilities.ItemHandler.BLOCK, be.getBlockPos(), null, be, null) instanceof ProcessingInventory); + return be != null && !(be instanceof StockTickerBlockEntity || level.getCapability(Capabilities.Item.BLOCK, be.getBlockPos(), null, be, null) instanceof ProcessingInventory); } private BlockPos getTargetPos() { @@ -293,7 +293,7 @@ protected void scheduleBlockTick() { @Override public void lazyTick() { super.lazyTick(); - if (level.isClientSide) + if (level.isClientSide()) return; updateCurrentLevel(); } @@ -335,7 +335,7 @@ public boolean shouldBePowered() { public void updatePowerAfterDelay() { poweredAfterDelay = shouldBePowered(); - level.blockUpdated(worldPosition, getBlockState().getBlock()); + level.updateNeighborsAt(worldPosition, getBlockState().getBlock()); sendData(); } diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchClient.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchClient.java new file mode 100644 index 0000000000..086f2a6b80 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchClient.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.redstone.thresholdSwitch; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; + +public class ThresholdSwitchClient { + + public static void displayScreen(ThresholdSwitchBlockEntity be, Player player) { + if (player instanceof LocalPlayer) + ScreenOpener.open(new ThresholdSwitchScreen(be)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchGenerator.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchGenerator.java index f255694f90..a0cdc313db 100644 --- a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchGenerator.java +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchGenerator.java @@ -3,15 +3,20 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; + +import java.util.HashMap; +import java.util.Map; public class ThresholdSwitchGenerator extends SpecialBlockStateGen { + private final Map models = new HashMap<>(); + @Override protected int getXRotation(BlockState state) { return 0; @@ -23,14 +28,15 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { int level = state.getValue(ThresholdSwitchBlock.LEVEL); String path = "block/threshold_switch/block_" + Lang.asId(state.getValue(ThresholdSwitchBlock.TARGET) .name()); - return prov.models() - .withExistingParent(path + "_" + level, Create.asResource(path)) - .texture("level", Create.asResource("block/threshold_switch/level_" + level)); + String modelName = path + "_" + level; + return models.computeIfAbsent(modelName, $ -> prov.models() + .withExistingParent(modelName, Create.asResource(path)) + .texture("level", Create.asResource("block/threshold_switch/level_" + level))); } } diff --git a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchScreen.java b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchScreen.java index 5090dba236..99fc293bd9 100644 --- a/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchScreen.java +++ b/src/main/java/com/simibubi/create/content/redstone/thresholdSwitch/ThresholdSwitchScreen.java @@ -10,20 +10,20 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.ponder.AllCreatePonderTags; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.createmod.ponder.foundation.ui.PonderTagScreen; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.createmod.ponder.impl.client.gui.PonderTagScreen; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; @@ -137,12 +137,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int pButton) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); - graphics.drawString(font, title, x + background.getWidth() / 2 - font.width(title) / 2, y + 4, 0x592424, false); + graphics.text(font, title, x + background.getWidth() / 2 - font.width(title) / 2, y + 4, 0x592424, false); ThresholdType typeOfCurrentTarget = blockEntity.getTypeOfCurrentTarget(); boolean forItems = typeOfCurrentTarget == ThresholdType.ITEM; @@ -162,18 +162,18 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float inStacks.getState() == 0 ? CreateLang.translateDirect("schedule.condition.threshold.items") : CreateLang.translateDirect("schedule.condition.threshold.stacks"); valueStep = inStacks.getState() == 0 ? 1 : 64; - graphics.drawString(font, suffix, x + 105, y + 28, 0xFFFFFFFF, true); - graphics.drawString(font, suffix, x + 105, y + 28 + 24, 0xFFFFFFFF, true); + graphics.text(font, suffix, x + 105, y + 28, 0xFFFFFFFF, true); + graphics.text(font, suffix, x + 105, y + 28 + 24, 0xFFFFFFFF, true); } - graphics.drawString(font, + graphics.text(font, Component.literal("\u2265 " + (typeOfCurrentTarget == ThresholdType.UNSUPPORTED ? "" : forItems ? onAbove.getState() / valueStep : blockEntity.format(onAbove.getState() / valueStep, stacks) .getString())), x + 53, y + 28, 0xFFFFFFFF, true); - graphics.drawString(font, + graphics.text(font, Component.literal("\u2264 " + (typeOfCurrentTarget == ThresholdType.UNSUPPORTED ? "" : forItems ? offBelow.getState() / valueStep : blockEntity.format(offBelow.getState() / valueStep, stacks) @@ -200,30 +200,13 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float AllGuiTextures.THRESHOLD_SWITCH_CURRENT_STATE.render(graphics, torchX - 3, torchY - 4 + (highlightTopRow ? 0 : 24)); - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(torchX - 5, torchY + 14, 200); - TransformStack.of(ms) - .rotateXDegrees(-22.5f) - .rotateYDegrees(45); - - for (boolean power : Iterate.trueAndFalse) { - GuiGameElement.of(Blocks.REDSTONE_TORCH.defaultBlockState() - .setValue(RedstoneTorchBlock.LIT, blockEntity.isInverted() ^ power)) - .scale(20) - .render(graphics); - ms.translate(0, 26, 0); - } - - ms.popPose(); - if (mouseX >= itemX && mouseX < itemX + 16 && mouseY >= itemY && mouseY < itemY + 16) { ArrayList list = new ArrayList<>(); if (displayItem.isEmpty()) { list.add(CreateLang.translateDirect("gui.threshold_switch.not_attached")); list.add(CreateLang.translateDirect("display_link.view_compatible") .withStyle(ChatFormatting.DARK_GRAY)); - graphics.renderComponentTooltip(font, list, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, list, mouseX, mouseY); return; } @@ -233,7 +216,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float .withStyle(ChatFormatting.GRAY)); list.add(CreateLang.translateDirect("display_link.view_compatible") .withStyle(ChatFormatting.DARK_GRAY)); - graphics.renderComponentTooltip(font, list, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, list, mouseX, mouseY); return; } @@ -259,14 +242,14 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float list.add(CreateLang.translateDirect("display_link.view_compatible") .withStyle(ChatFormatting.DARK_GRAY)); - graphics.renderComponentTooltip(font, list, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, list, mouseX, mouseY); return; } for (boolean power : Iterate.trueAndFalse) { int thisTorchY = power ? torchY : torchY + 26; if (mouseX >= torchX && mouseX < torchX + 16 && mouseY >= thisTorchY && mouseY < thisTorchY + 16) { - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, List.of(CreateLang .translate(power ^ blockEntity.isInverted() ? "gui.threshold_switch.power_on_when" : "gui.threshold_switch.power_off_when") @@ -342,7 +325,7 @@ public void removed() { } protected void send(boolean invert) { - CatnipServices.NETWORK.sendToServer(new ConfigureThresholdSwitchPacket(blockEntity.getBlockPos(), offBelow.getState(), + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ConfigureThresholdSwitchPacket(blockEntity.getBlockPos(), offBelow.getState(), onAbove.getState(), invert, inStacks.getState() == 1)); } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicAndQuillItem.java b/src/main/java/com/simibubi/create/content/schematics/SchematicAndQuillItem.java index ff93123264..ac42747700 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicAndQuillItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicAndQuillItem.java @@ -4,16 +4,17 @@ import com.simibubi.create.AllEntityTypes; import com.simibubi.create.content.contraptions.glue.SuperGlueEntity; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.DoubleTag; import net.minecraft.nbt.IntTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; @@ -32,8 +33,8 @@ public static void replaceStructureVoidWithAir(CompoundTag nbt) { String structureVoid = RegisteredObjectsHelper.getKeyOrThrow(Blocks.STRUCTURE_VOID) .toString(); - NBTHelper.iterateCompoundList(nbt.getList("palette", 10), c -> { - if (c.contains("Name") && c.getString("Name") + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("palette"), c -> { + if (c.contains("Name") && c.getStringOr("Name", "") .equals(structureVoid)) { c.putString("Name", air); } @@ -41,23 +42,22 @@ public static void replaceStructureVoidWithAir(CompoundTag nbt) { } public static void clampGlueBoxes(Level level, AABB aabb, CompoundTag nbt) { - ListTag listtag = nbt.getList("entities", 10) + ListTag listtag = nbt.getListOrEmpty("entities") .copy(); for (Iterator iterator = listtag.iterator(); iterator.hasNext();) { Tag tag = iterator.next(); if (!(tag instanceof CompoundTag compoundtag)) continue; - if (compoundtag.contains("nbt") && ResourceLocation.parse(compoundtag.getCompound("nbt") - .getString("id")).equals(AllEntityTypes.SUPER_GLUE.getId())) { + if (compoundtag.contains("nbt") && Identifier.parse(compoundtag.getCompoundOrEmpty("nbt") + .getStringOr("id", "")).equals(AllEntityTypes.SUPER_GLUE.getId())) { iterator.remove(); } } for (SuperGlueEntity entity : SuperGlueEntity.collectCropped(level, aabb)) { Vec3 vec3 = new Vec3(entity.getX() - aabb.minX, entity.getY() - aabb.minY, entity.getZ() - aabb.minZ); - CompoundTag compoundtag = new CompoundTag(); - entity.save(compoundtag); + CompoundTag compoundtag = LegacyBlockEntityTagBridge.output(level.registryAccess(), entity::save); BlockPos blockpos = BlockPos.containing(vec3); CompoundTag entityTag = new CompoundTag(); diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicClient.java b/src/main/java/com/simibubi/create/content/schematics/SchematicClient.java new file mode 100644 index 0000000000..8a400dda4c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicClient.java @@ -0,0 +1,13 @@ +package com.simibubi.create.content.schematics; + +import com.simibubi.create.content.schematics.client.SchematicEditScreen; + +import net.createmod.catnip.api.client.gui.ScreenOpener; + +public class SchematicClient { + + public static void displayBlueprintScreen() { + ScreenOpener.open(new SchematicEditScreen()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicExport.java b/src/main/java/com/simibubi/create/content/schematics/SchematicExport.java index 86c34111dc..f84edffc8f 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicExport.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicExport.java @@ -5,6 +5,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; +import java.util.List; import org.jetbrains.annotations.Nullable; @@ -41,7 +42,7 @@ public static SchematicExportResult saveSchematic(Path dir, String fileName, boo BlockPos bounds = new BlockPos(bb.getXSpan(), bb.getYSpan(), bb.getZSpan()); StructureTemplate structure = new StructureTemplate(); - structure.fillFromWorld(level, origin, bounds, true, Blocks.AIR); + structure.fillFromWorld(level, origin, bounds, true, List.of(Blocks.AIR)); CompoundTag data = structure.save(new CompoundTag()); SchematicAndQuillItem.replaceStructureVoidWithAir(data); SchematicAndQuillItem.clampGlueBoxes(level, new AABB(Vec3.atLowerCornerOf(origin), Vec3.atLowerCornerOf(origin.offset(bounds))), data); diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicInstances.java b/src/main/java/com/simibubi/create/content/schematics/SchematicInstances.java index 7402fce75d..4f181a421c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicInstances.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicInstances.java @@ -9,8 +9,8 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.content.contraptions.StructureTransform; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.levelWrappers.SchematicLevel; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java b/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java index 5f268d2019..11741b1a70 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicItem.java @@ -8,6 +8,7 @@ import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.List; +import java.util.function.Consumer; import java.util.zip.GZIPInputStream; import org.jetbrains.annotations.NotNull; @@ -16,12 +17,10 @@ import com.mojang.logging.LogUtils; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllItems; -import com.simibubi.create.content.schematics.client.SchematicEditScreen; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreatePaths; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; @@ -31,10 +30,10 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; @@ -43,9 +42,6 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - public class SchematicItem extends Item { private static final Logger LOGGER = LogUtils.getLogger(); @@ -69,14 +65,14 @@ public static ItemStack create(Level level, String schematic, String owner) { } @Override - @OnlyIn(value = Dist.CLIENT) - public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag flagIn) { + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay tooltipDisplay, + Consumer tooltip, TooltipFlag flagIn) { if (stack.has(AllDataComponents.SCHEMATIC_FILE)) { - tooltip.add(Component.literal(ChatFormatting.GOLD + stack.get(AllDataComponents.SCHEMATIC_FILE))); + tooltip.accept(Component.literal(ChatFormatting.GOLD + stack.get(AllDataComponents.SCHEMATIC_FILE))); } else { - tooltip.add(CreateLang.translateDirect("schematic.invalid").withStyle(ChatFormatting.RED)); + tooltip.accept(CreateLang.translateDirect("schematic.invalid").withStyle(ChatFormatting.RED)); } - super.appendHoverText(stack, context, tooltip, flagIn); + super.appendHoverText(stack, context, tooltipDisplay, tooltip, flagIn); } public static void writeSize(Level level, ItemStack blueprint) { @@ -141,10 +137,10 @@ public InteractionResult useOn(UseOnContext context) { } @Override - public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { + public InteractionResult use(Level worldIn, Player playerIn, InteractionHand handIn) { if (!onItemUse(playerIn, handIn)) return super.use(worldIn, playerIn, handIn); - return new InteractionResultHolder<>(InteractionResult.SUCCESS, playerIn.getItemInHand(handIn)); + return InteractionResult.SUCCESS.heldItemTransformedTo(playerIn.getItemInHand(handIn)); } private boolean onItemUse(Player player, InteractionHand hand) { @@ -154,13 +150,8 @@ private boolean onItemUse(Player player, InteractionHand hand) { return false; if (!player.level().isClientSide()) return true; - CatnipServices.PLATFORM.executeOnClientOnly(() -> this::displayBlueprintScreen); + CatnipServices.PLATFORM.executeOnClientOnly(() -> SchematicClient::displayBlueprintScreen); return true; } - @OnlyIn(value = Dist.CLIENT) - protected void displayBlueprintScreen() { - ScreenOpener.open(new SchematicEditScreen()); - } - } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicPrinter.java b/src/main/java/com/simibubi/create/content/schematics/SchematicPrinter.java index 6e96209337..517baf768e 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicPrinter.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicPrinter.java @@ -13,10 +13,11 @@ import com.simibubi.create.content.schematics.requirement.ItemRequirement; import com.simibubi.create.foundation.blockEntity.IMergeableBE; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.levelWrappers.SchematicLevel; -import net.createmod.catnip.math.BBHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; +import net.createmod.catnip.api.math.BBHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -70,24 +71,24 @@ public void fromTag(CompoundTag compound, boolean clientPacket) { } } - printingEntityIndex = compound.getInt("EntityProgress"); - printStage = PrintStage.valueOf(compound.getString("PrintStage")); - compound.getList("DeferredBlocks", 10).stream() + printingEntityIndex = compound.getIntOr("EntityProgress", -1); + printStage = PrintStage.valueOf(compound.getStringOr("PrintStage", PrintStage.BLOCKS.name())); + compound.getListOrEmpty("DeferredBlocks").stream() .map(p -> NBTHelper.readBlockPos((CompoundTag) p, "Pos")) .collect(Collectors.toCollection(() -> deferredBlocks)); } public void write(CompoundTag compound) { if (currentPos != null) - compound.put("CurrentPos", NbtUtils.writeBlockPos(currentPos)); + compound.put("CurrentPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(currentPos)); if (schematicAnchor != null) - compound.put("Anchor", NbtUtils.writeBlockPos(schematicAnchor)); + compound.put("Anchor", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(schematicAnchor)); compound.putInt("EntityProgress", printingEntityIndex); compound.putString("PrintStage", printStage.name()); ListTag tagDeferredBlocks = new ListTag(); for (BlockPos p : deferredBlocks) { CompoundTag tag = new CompoundTag(); - tag.put("Pos", NbtUtils.writeBlockPos(p)); + tag.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(p)); tagDeferredBlocks.add(tag); } compound.put("DeferredBlocks", tagDeferredBlocks); @@ -250,13 +251,13 @@ public ItemRequirement getCurrentRequirement() { BlockPos target = getCurrentTarget(); BlockState blockState = BlockHelper.setZeroAge(blockReader.getBlockState(target)); - BlockEntity blockEntity = null; - if (blockState.hasBlockEntity()) { - blockEntity = ((EntityBlock) blockState.getBlock()).newBlockEntity(target, blockState); - CompoundTag data = BlockHelper.prepareBlockEntityData(blockReader, blockState, blockReader.getBlockEntity(target)); - if (blockEntity != null && data != null) - blockEntity.loadWithComponents(data, blockReader.registryAccess()); - } + BlockEntity blockEntity = null; + if (blockState.hasBlockEntity()) { + blockEntity = ((EntityBlock) blockState.getBlock()).newBlockEntity(target, blockState); + CompoundTag data = BlockHelper.prepareBlockEntityData(blockReader, blockState, blockReader.getBlockEntity(target)); + if (blockEntity != null && data != null) + blockEntity.loadWithComponents(LegacyBlockEntityTagBridge.input(data, blockReader.registryAccess())); + } return ItemRequirement.of(blockState, blockEntity); } diff --git a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java index bd9e5331e2..5b5711fbbc 100644 --- a/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java +++ b/src/main/java/com/simibubi/create/content/schematics/SchematicProcessor.java @@ -6,22 +6,20 @@ import com.mojang.serialization.MapCodec; import com.simibubi.create.AllStructureProcessorTypes; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.nbt.NBTProcessors; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessor; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -public class SchematicProcessor extends StructureProcessor { +public class SchematicProcessor implements StructureProcessor { public static final SchematicProcessor INSTANCE = new SchematicProcessor(); public static final MapCodec CODEC = MapCodec.unit(() -> INSTANCE); @@ -47,19 +45,14 @@ public StructureTemplate.StructureBlockInfo process(LevelReader world, BlockPos @Override public StructureTemplate.StructureEntityInfo processEntity(LevelReader world, BlockPos pos, StructureTemplate.StructureEntityInfo rawInfo, StructureTemplate.StructureEntityInfo info, StructurePlaceSettings settings, StructureTemplate template) { - return EntityType.by(info.nbt).flatMap(type -> { - if (world instanceof Level) { - Entity e = type.create((Level) world); - if (e != null && !e.onlyOpCanSetNbt()) { - return Optional.of(info); - } - } - return Optional.empty(); - }).orElse(null); + return EntityType.by(LegacyBlockEntityTagBridge.input(info.nbt, world.registryAccess())) + .filter(type -> !type.onlyOpCanSetNbt()) + .map(type -> info) + .orElse(null); } @Override - protected StructureProcessorType getType() { + public MapCodec codec() { return AllStructureProcessorTypes.SCHEMATIC.get(); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java index bad1ebad27..b38c03297d 100644 --- a/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/ServerSchematicLoader.java @@ -86,7 +86,7 @@ public void shutdown() { } public void handleNewUpload(ServerPlayer player, String schematic, long size, BlockPos pos) { - String playerName = player.getGameProfile().getName(); + String playerName = player.getName().getString(); Path baseDir = CreatePaths.UPLOADED_SCHEMATICS_DIR; Path playerPath = baseDir.resolve(playerName).normalize(); @@ -116,7 +116,7 @@ public void handleNewUpload(ServerPlayer player, String schematic, long size, Bl try { // Validate Referenced Block - SchematicTableBlockEntity table = getTable(player.getCommandSenderWorld(), pos); + SchematicTableBlockEntity table = getTable(player.level(), pos); if (table == null) return; @@ -168,8 +168,8 @@ public CSchematics getConfig() { } public void handleWriteRequest(ServerPlayer player, String schematic, byte[] data) { - String playerSchematicId = player.getGameProfile() - .getName() + "/" + schematic; + String playerSchematicId = player.getName() + .getString() + "/" + schematic; if (activeUploads.containsKey(playerSchematicId)) { SchematicUploadEntry entry = activeUploads.get(playerSchematicId); @@ -235,8 +235,8 @@ public SchematicTableBlockEntity getTable(Level world, BlockPos pos) { } public void handleFinishedUpload(ServerPlayer player, String schematic) { - String playerSchematicId = player.getGameProfile() - .getName() + "/" + schematic; + String playerSchematicId = player.getName() + .getString() + "/" + schematic; if (activeUploads.containsKey(playerSchematicId)) { try { @@ -257,8 +257,8 @@ public void handleFinishedUpload(ServerPlayer player, String schematic) { if (table == null) return; table.finishUpload(); - table.inventory.setStackInSlot(1, SchematicItem.create(world, schematic, player.getGameProfile() - .getName())); + table.inventory.setStackInSlot(1, SchematicItem.create(world, schematic, player.getName() + .getString())); } catch (IOException e) { Create.LOGGER.error("Exception Thrown when finishing Upload: {}", playerSchematicId, e); @@ -268,7 +268,7 @@ public void handleFinishedUpload(ServerPlayer player, String schematic) { public void handleInstantSchematic(ServerPlayer player, String schematic, Level world, BlockPos pos, BlockPos bounds) { - String playerName = player.getGameProfile().getName(); + String playerName = player.getName().getString(); Path baseDir = CreatePaths.UPLOADED_SCHEMATICS_DIR; Path playerPath = baseDir.resolve(playerName).normalize(); diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/ConfigureSchematicannonPacket.java b/src/main/java/com/simibubi/create/content/schematics/cannon/ConfigureSchematicannonPacket.java index 98e0a2a772..e4870375d9 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/ConfigureSchematicannonPacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/ConfigureSchematicannonPacket.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.schematics.cannon.SchematicannonBlockEntity.State; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java b/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java index 257280665c..1e2e7d92f8 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/LaunchedItem.java @@ -12,8 +12,10 @@ import com.simibubi.create.content.kinetics.belt.item.BeltConnectorItem; import com.simibubi.create.content.kinetics.simpleRelays.AbstractSimpleShaftBlock; import com.simibubi.create.foundation.utility.BlockHelper; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderGetter; @@ -23,7 +25,6 @@ import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -58,7 +59,7 @@ public boolean update(Level world) { ticksRemaining--; return false; } - if (world.isClientSide) + if (world.isClientSide()) return false; place(world); @@ -69,8 +70,8 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { CompoundTag c = new CompoundTag(); c.putInt("TotalTicks", totalTicks); c.putInt("TicksLeft", ticksRemaining); - c.put("Stack", stack.saveOptional(registries)); - c.put("Target", NbtUtils.writeBlockPos(target)); + c.put("Stack", LegacyItemStackNbtBridge.saveOptional(stack, registries)); + c.put("Target", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(target)); return c; } @@ -85,9 +86,9 @@ public static LaunchedItem fromNBT(CompoundTag c, HolderLookup.Provider registri void readNBT(CompoundTag c, HolderLookup.Provider registries, HolderGetter holderGetter) { target = NBTHelper.readBlockPos(c, "Target"); - ticksRemaining = c.getInt("TicksLeft"); - totalTicks = c.getInt("TotalTicks"); - stack = ItemStack.parseOptional(registries, c.getCompound("Stack")); + ticksRemaining = c.getIntOr("TicksLeft", 0); + totalTicks = c.getIntOr("TotalTicks", 0); + stack = LegacyItemStackNbtBridge.parseOptional(registries, c.getCompound("Stack")); } public static class ForBlockState extends LaunchedItem { @@ -119,9 +120,9 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { @Override void readNBT(CompoundTag nbt, HolderLookup.Provider registries, HolderGetter holderGetter) { super.readNBT(nbt, registries, holderGetter); - state = NbtUtils.readBlockState(holderGetter, nbt.getCompound("BlockState")); - if (nbt.contains("Data", Tag.TAG_COMPOUND)) { - data = nbt.getCompound("Data"); + state = NbtUtils.readBlockState(holderGetter, nbt.getCompoundOrEmpty("BlockState")); + if (nbt.contains("Data")) { + data = nbt.getCompoundOrEmpty("Data"); } } @@ -143,15 +144,16 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { CompoundTag serializeNBT = super.serializeNBT(registries); serializeNBT.putInt("Length", length); serializeNBT.putIntArray("Casing", Arrays.stream(casings) - .map(CasingType::ordinal) - .toList()); + .mapToInt(CasingType::ordinal) + .toArray()); return serializeNBT; } @Override void readNBT(CompoundTag nbt, HolderLookup.Provider registries, HolderGetter holderGetter) { - length = nbt.getInt("Length"); - int[] intArray = nbt.getIntArray("Casing"); + length = nbt.getIntOr("Length", 0); + int[] intArray = nbt.getIntArray("Casing") + .orElse(new int[0]); casings = new CasingType[length]; for (int i = 0; i < casings.length; i++) casings[i] = i >= intArray.length ? CasingType.NONE @@ -206,10 +208,9 @@ public ForEntity(BlockPos start, BlockPos target, ItemStack stack, Entity entity public boolean update(Level world) { if (deferredTag != null && entity == null) { try { - Optional loadEntityUnchecked = EntityType.create(deferredTag, world); - if (!loadEntityUnchecked.isPresent()) + entity = LegacyBlockEntityTagBridge.loadEntityRecursive(deferredTag, world); + if (entity == null) return true; - entity = loadEntityUnchecked.get(); } catch (Exception var3) { return true; } @@ -222,7 +223,7 @@ public boolean update(Level world) { public CompoundTag serializeNBT(HolderLookup.Provider registries) { CompoundTag serializeNBT = super.serializeNBT(registries); if (entity != null) - serializeNBT.put("Entity", entity.serializeNBT(registries)); + serializeNBT.put("Entity", LegacyBlockEntityTagBridge.saveAsPassenger(entity, registries)); return serializeNBT; } @@ -230,7 +231,7 @@ public CompoundTag serializeNBT(HolderLookup.Provider registries) { void readNBT(CompoundTag nbt, HolderLookup.Provider registries, HolderGetter holderGetter) { super.readNBT(nbt, registries, holderGetter); if (nbt.contains("Entity")) - deferredTag = nbt.getCompound("Entity"); + deferredTag = nbt.getCompoundOrEmpty("Entity"); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/MaterialChecklist.java b/src/main/java/com/simibubi/create/content/schematics/cannon/MaterialChecklist.java index 456241239e..cb3a033d3c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/MaterialChecklist.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/MaterialChecklist.java @@ -26,6 +26,7 @@ import net.minecraft.server.network.Filterable; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.Items; import net.minecraft.world.item.component.WrittenBookContent; @@ -93,10 +94,10 @@ public ItemStack createWrittenBook() { List keys = new ArrayList<>(Sets.union(required.keySet(), damageRequired.keySet())); Collections.sort(keys, (item1, item2) -> { Locale locale = Locale.ENGLISH; - String name1 = item1.getDescription() + String name1 = new ItemStack(item1).getHoverName() .getString() .toLowerCase(locale); - String name2 = item2.getDescription() + String name2 = new ItemStack(item2).getHoverName() .getString() .toLowerCase(locale); return name1.compareTo(name2); @@ -171,10 +172,10 @@ public ItemStack createWrittenClipboard() { List keys = new ArrayList<>(Sets.union(required.keySet(), damageRequired.keySet())); Collections.sort(keys, (item1, item2) -> { Locale locale = Locale.ENGLISH; - String name1 = item1.getDescription() + String name1 = new ItemStack(item1).getHoverName() .getString() .toLowerCase(locale); - String name2 = item2.getDescription() + String name2 = new ItemStack(item2).getHoverName() .getString() .toLowerCase(locale); return name1.compareTo(name2); @@ -238,9 +239,10 @@ private MutableComponent entry(ItemStack item, int amount, boolean unfinished, b int stacks = amount / 64; int remainder = amount % 64; MutableComponent tc = Component.empty(); - tc.append(Component.translatable(item.getDescriptionId()) + tc.append(item.getHoverName() + .copy() .setStyle(Style.EMPTY - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new HoverEvent.ItemStackInfo(item))))); + .withHoverEvent(new HoverEvent.ShowItem(ItemStackTemplate.fromNonEmptyStack(item))))); if (!unfinished && forBook) tc.append(" \u2714"); diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlock.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlock.java index dd26ba71d6..66943c0223 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlock.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlock.java @@ -8,8 +8,10 @@ import com.simibubi.create.foundation.item.ItemHelper; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -46,7 +48,7 @@ public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable L @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, be -> player.openMenu(be, be::sendToMenu)); @@ -54,18 +56,19 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP } @Override - public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + public void neighborChanged(BlockState state, Level worldIn, BlockPos pos, Block blockIn, Orientation orientation, boolean isMoving) { withBlockEntityDo(worldIn, pos, be -> be.neighbourCheckCooldown = 0); } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasBlockEntity() || state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (!state.hasBlockEntity()) return; withBlockEntityDo(worldIn, pos, be -> ItemHelper.dropContents(worldIn, pos, be.inventory)); worldIn.removeBlockEntity(pos); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java index 8e43f9a54c..3243d124bc 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonBlockEntity.java @@ -34,13 +34,14 @@ import com.simibubi.create.infrastructure.config.CSchematics; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponentGetter; import net.minecraft.core.component.DataComponentMap.Builder; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -69,7 +70,6 @@ import net.minecraft.world.phys.AABB; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; @@ -143,14 +143,7 @@ public void findInventories() { if (AllBlocks.CREATIVE_CRATE.has(level.getBlockState(worldPosition.relative(facing)))) hasCreativeCrate = true; - BlockEntity blockEntity = level.getBlockEntity(worldPosition.relative(facing)); - if (blockEntity != null) { - IItemHandler capability = - level.getCapability(Capabilities.ItemHandler.BLOCK, blockEntity.getBlockPos(), facing.getOpposite()); - if (capability != null) { - attachedInventories.add(capability); - } - } + // TODO 26.2: migrate schematicannon inventory access to NeoForge's ResourceHandler item capability. } } @@ -162,26 +155,28 @@ public void clearContent() { @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (!clientPacket) { - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(inventory, registries, + compound.getCompoundOrEmpty("Inventory")); } // Gui information - statusMsg = compound.getString("Status"); - schematicProgress = compound.getFloat("Progress"); - bookPrintingProgress = compound.getFloat("PaperProgress"); - remainingFuel = compound.getInt("RemainingFuel"); - String stateString = compound.getString("State"); - state = stateString.isEmpty() ? State.STOPPED : State.valueOf(compound.getString("State")); - blocksPlaced = compound.getInt("AmountPlaced"); - blocksToPlace = compound.getInt("AmountToPlace"); + statusMsg = compound.getStringOr("Status", ""); + schematicProgress = compound.getFloatOr("Progress", 0); + bookPrintingProgress = compound.getFloatOr("PaperProgress", 0); + remainingFuel = compound.getIntOr("RemainingFuel", 0); + String stateString = compound.getStringOr("State", ""); + state = stateString.isEmpty() ? State.STOPPED : State.valueOf(stateString); + blocksPlaced = compound.getIntOr("AmountPlaced", 0); + blocksToPlace = compound.getIntOr("AmountToPlace", 0); missingItem = null; if (compound.contains("MissingItem")) { - ItemStack.parse(registries, compound.getCompound("MissingItem")).ifPresent(i -> missingItem = i); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parse(registries, + compound.getCompoundOrEmpty("MissingItem")).ifPresent(i -> missingItem = i); } // Settings - SchematicannonOptions options = CatnipCodecUtils.decode(SchematicannonOptions.CODEC, registries, compound.getCompound("Options")) + SchematicannonOptions options = CatnipCodecUtils.decode(SchematicannonOptions.CODEC, registries, compound.getCompoundOrEmpty("Options")) .orElse(new SchematicannonOptions(2, false, false)); replaceMode = options.replaceMode; skipMissing = options.skipMissing; @@ -189,29 +184,29 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool // Printer & Flying Blocks if (compound.contains("Printer")) - printer.fromTag(compound.getCompound("Printer"), clientPacket); + printer.fromTag(compound.getCompoundOrEmpty("Printer"), clientPacket); if (compound.contains("FlyingBlocks")) readFlyingBlocks(compound, registries); - defaultYaw = compound.getFloat("DefaultYaw"); + defaultYaw = compound.getFloatOr("DefaultYaw", 0); super.read(compound, registries, clientPacket); } protected void readFlyingBlocks(CompoundTag compound, HolderLookup.Provider registries) { - ListTag tagBlocks = compound.getList("FlyingBlocks", 10); + ListTag tagBlocks = compound.getListOrEmpty("FlyingBlocks"); if (tagBlocks.isEmpty()) flyingBlocks.clear(); boolean pastDead = false; for (int i = 0; i < tagBlocks.size(); i++) { - CompoundTag c = tagBlocks.getCompound(i); + CompoundTag c = tagBlocks.getCompoundOrEmpty(i); LaunchedItem launched = LaunchedItem.fromNBT(c, registries, blockHolderGetter()); BlockPos readBlockPos = launched.target; // Always write to Server block entity - if (level == null || !level.isClientSide) { + if (level == null || !level.isClientSide()) { flyingBlocks.add(launched); continue; } @@ -236,7 +231,7 @@ protected void readFlyingBlocks(CompoundTag compound, HolderLookup.Provider regi @Override public void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { if (!clientPacket) { - compound.put("Inventory", inventory.serializeNBT(registries)); + compound.put("Inventory", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.serializeHandler(inventory, registries)); if (state == State.RUNNING) { compound.putBoolean("Running", true); } @@ -252,7 +247,7 @@ public void write(CompoundTag compound, HolderLookup.Provider registries, boolea compound.putInt("AmountToPlace", blocksToPlace); if (missingItem != null) - compound.put("MissingItem", missingItem.saveOptional(registries)); + compound.put("MissingItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(missingItem, registries)); // Settings Tag options = CatnipCodecUtils.encode(SchematicannonOptions.CODEC, registries, new SchematicannonOptions(replaceMode, skipMissing, replaceBlockEntities)).orElseThrow(); @@ -286,7 +281,7 @@ public void tick() { previousTarget = printer.getCurrentTarget(); tickFlyingBlocks(); - if (level.isClientSide) + if (level.isClientSide()) return; // Update Fuel and Paper @@ -887,13 +882,12 @@ public void lazyTick() { } @Override - @OnlyIn(Dist.CLIENT) public AABB getRenderBoundingBox() { return AABB.INFINITE; } @Override - protected void applyImplicitComponents(DataComponentInput componentInput) { + protected void applyImplicitComponents(DataComponentGetter componentInput) { SchematicannonOptions options = componentInput.getOrDefault(AllDataComponents.SCHEMATICANNON_OPTIONS, new SchematicannonOptions(2, true, false)); replaceMode = options.replaceMode; diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonRenderer.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonRenderer.java index ab69eb1454..85d29c6a1d 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonRenderer.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonRenderer.java @@ -11,12 +11,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.createmod.ponder.render.VirtualRenderHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -54,7 +54,7 @@ protected void renderSafe(SchematicannonBlockEntity blockEntity, float partialTi ms.pushPose(); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); SuperByteBuffer connector = CachedBuffers.partial(AllPartialModels.SCHEMATICANNON_CONNECTOR, state); connector.translate(.5f, 0, .5f); @@ -177,16 +177,12 @@ private static void renderLaunchedBlocks(SchematicannonBlockEntity blockEntity, } float scale = .3f; ms.scale(scale, scale, scale); - Minecraft.getInstance() - .getBlockRenderer() - .renderSingleBlock(state, ms, buffer, light, overlay, - VirtualRenderHelper.VIRTUAL_DATA, null); + // TODO 26.2: Rebuild launched-block rendering on the render-state block model pipeline. } else if (launched instanceof ForEntity) { // Render the item float scale = 1.2f; ms.scale(scale, scale, scale); - Minecraft.getInstance() - .getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(launched.stack, ItemDisplayContext.GROUND, light, overlay, ms, buffer, blockEntity.getLevel(), 0); } @@ -214,7 +210,7 @@ private static void renderLaunchedBlocks(SchematicannonBlockEntity blockEntity, } @Override - public boolean shouldRenderOffScreen(SchematicannonBlockEntity blockEntity) { + public boolean shouldRenderOffScreen() { return true; } diff --git a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java index f971455fe8..181efb4cc7 100644 --- a/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/cannon/SchematicannonScreen.java @@ -18,14 +18,15 @@ import com.simibubi.create.foundation.gui.widget.Indicator; import com.simibubi.create.foundation.gui.widget.Indicator.State; import com.simibubi.create.foundation.item.TooltipHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.lang.FontHelper.Palette; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -269,7 +270,7 @@ private void fillToolTip(IconButton button, Indicator indicator, String tooltipK } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int invX = getLeftOfCentered(AllGuiTextures.PLAYER_INVENTORY.getWidth()); int invY = topPos + BG_TOP.getHeight() + BG_BOTTOM.getHeight() + 2; renderPlayerInventory(graphics, invX, invY); @@ -296,7 +297,7 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in .scale(5) .render(graphics); - graphics.drawString(font, title, x + (BG_TOP.getWidth() - 8 - font.width(title)) / 2, y + 2, 0x505050, false); + graphics.text(font, title, x + (BG_TOP.getWidth() - 8 - font.width(title)) / 2, y + 2, 0x505050, false); Component msg = CreateLang.translateDirect("schematicannon.status." + be.statusMsg); int stringWidth = font.width(msg); @@ -309,40 +310,42 @@ protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, in .render(graphics); } - graphics.drawString(font, msg, x + 103 - stringWidth / 2, y + 53, 0xDDEEFF); + graphics.text(font, msg, x + 103 - stringWidth / 2, y + 53, 0xDDEEFF); if ("schematicErrored".equals(be.statusMsg)) - graphics.drawString(font, CreateLang.translateDirect("schematicannon.status.schematicErroredCheckLogs"), + graphics.text(font, CreateLang.translateDirect("schematicannon.status.schematicErroredCheckLogs"), x + 103 - stringWidth / 2, y + 65, 0xDDEEFF); } - protected void renderBlueprintHighlight(GuiGraphics graphics, int x, int y) { + protected void renderBlueprintHighlight(GuiGraphicsExtractor graphics, int x, int y) { AllGuiTextures.SCHEMATICANNON_HIGHLIGHT.render(graphics, x + 10, y + 60); } - protected void renderPrintingProgress(GuiGraphics graphics, int x, int y, float progress) { + protected void renderPrintingProgress(GuiGraphicsExtractor graphics, int x, int y, float progress) { progress = Math.min(progress, 1); AllGuiTextures sprite = AllGuiTextures.SCHEMATICANNON_PROGRESS; - graphics.blit(sprite.location, x + 44, y + 64, sprite.getStartX(), sprite.getStartY(), (int) (sprite.getWidth() * progress), sprite.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, sprite.location, x + 44, y + 64, sprite.getStartX(), + sprite.getStartY(), (int) (sprite.getWidth() * progress), sprite.getHeight(), 256, 256); } - protected void renderChecklistPrinterProgress(GuiGraphics graphics, int x, int y, float progress) { + protected void renderChecklistPrinterProgress(GuiGraphicsExtractor graphics, int x, int y, float progress) { AllGuiTextures sprite = AllGuiTextures.SCHEMATICANNON_CHECKLIST_PROGRESS; - graphics.blit(sprite.location, x + 154, y + 20, sprite.getStartX(), sprite.getStartY(), (int) (sprite.getWidth() * progress), - sprite.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, sprite.location, x + 154, y + 20, sprite.getStartX(), + sprite.getStartY(), (int) (sprite.getWidth() * progress), sprite.getHeight(), 256, 256); } - protected void renderFuelBar(GuiGraphics graphics, int x, int y, float amount) { + protected void renderFuelBar(GuiGraphicsExtractor graphics, int x, int y, float amount) { AllGuiTextures sprite = AllGuiTextures.SCHEMATICANNON_FUEL; if (menu.contentHolder.hasCreativeCrate) { AllGuiTextures.SCHEMATICANNON_FUEL_CREATIVE.render(graphics, x + 36, y + 19); return; } - graphics.blit(sprite.location, x + 36, y + 19, sprite.getStartX(), sprite.getStartY(), (int) (sprite.getWidth() * amount), sprite.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, sprite.location, x + 36, y + 19, sprite.getStartX(), + sprite.getStartY(), (int) (sprite.getWidth() * amount), sprite.getHeight(), 256, 256); } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { SchematicannonBlockEntity be = menu.contentHolder; int x = leftPos; @@ -352,20 +355,20 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl if (mouseX >= fuelX && mouseY >= fuelY && mouseX <= fuelX + AllGuiTextures.SCHEMATICANNON_FUEL.getWidth() && mouseY <= fuelY + AllGuiTextures.SCHEMATICANNON_FUEL.getHeight()) { List tooltip = getFuelLevelTooltip(be); - graphics.renderComponentTooltip(font, tooltip, mouseX, mouseY); + graphics.setComponentTooltipForNextFrame(font, tooltip, mouseX, mouseY); } if (hoveredSlot != null && !hoveredSlot.hasItem()) { if (hoveredSlot.index == 0) - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, TooltipHelper.cutTextComponent(CreateLang.translateDirect(_slotSchematic), Palette.GRAY_AND_BLUE), mouseX, mouseY); if (hoveredSlot.index == 2) - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, TooltipHelper.cutTextComponent(CreateLang.translateDirect(_slotListPrinter), Palette.GRAY_AND_BLUE), mouseX, mouseY); if (hoveredSlot.index == 4) - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, TooltipHelper.cutTextComponent(CreateLang.translateDirect(_slotGunpowder), Palette.GRAY_AND_BLUE), mouseX, mouseY); } @@ -374,13 +377,13 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl int missingBlockX = x + 128, missingBlockY = y + 49; if (mouseX >= missingBlockX && mouseY >= missingBlockY && mouseX <= missingBlockX + 16 && mouseY <= missingBlockY + 16) { - graphics.renderTooltip(font, be.missingItem, mouseX, mouseY); + graphics.setTooltipForNextFrame(font, be.missingItem, mouseX, mouseY); } } int paperX = x + 112, paperY = y + 19; if (mouseX >= paperX && mouseY >= paperY && mouseX <= paperX + 16 && mouseY <= paperY + 16) - graphics.renderTooltip(font, listPrinter, mouseX, mouseY); + graphics.setTooltipForNextFrame(font, listPrinter, mouseX, mouseY); super.renderForeground(graphics, mouseX, mouseY, partialTicks); } @@ -415,7 +418,7 @@ protected List getFuelLevelTooltip(SchematicannonBlockEntity be) { } protected void sendOptionUpdate(Option option, boolean set) { - CatnipServices.NETWORK.sendToServer(new ConfigureSchematicannonPacket(option, set)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ConfigureSchematicannonPacket(option, set)); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/client/ClientSchematicLoader.java b/src/main/java/com/simibubi/create/content/schematics/client/ClientSchematicLoader.java index b209090819..e99f76c481 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/ClientSchematicLoader.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/ClientSchematicLoader.java @@ -23,15 +23,13 @@ import com.simibubi.create.foundation.utility.FilesHelper; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.network.chat.Component; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) public class ClientSchematicLoader { public static final int PACKET_DELAY = 10; @@ -78,13 +76,13 @@ public void startNewUpload(String schematic) { if (!isGZIPEncoded(path.toFile())) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) - player.displayClientMessage(CreateLang.translateDirect("schematics.wrongFormat"), false); + player.sendSystemMessage(CreateLang.translateDirect("schematics.wrongFormat")); return; } in = Files.newInputStream(path, StandardOpenOption.READ); activeUploads.put(schematic, in); - CatnipServices.NETWORK.sendToServer(SchematicUploadPacket.begin(schematic, size)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(SchematicUploadPacket.begin(schematic, size)); } catch (IOException e) { Create.LOGGER.error("Encountered an error while starting schematic upload", e); } @@ -97,8 +95,8 @@ public static boolean validateSizeLimitation(long size) { if (size > maxSize * 1000) { LocalPlayer player = Minecraft.getInstance().player; if (player != null) { - player.displayClientMessage(CreateLang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB)."), false); - player.displayClientMessage(CreateLang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB"), false); + player.sendSystemMessage(CreateLang.translateDirect("schematics.uploadTooLarge").append(" (" + size / 1000 + " KB).")); + player.sendSystemMessage(CreateLang.translateDirect("schematics.maxAllowedSize").append(" " + maxSize + " KB")); } return false; } @@ -135,7 +133,7 @@ private void continueUpload(String schematic) { if (status < maxPacketSize) data = Arrays.copyOf(data, status); if (Minecraft.getInstance().level != null) - CatnipServices.NETWORK.sendToServer(SchematicUploadPacket.write(schematic, data)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(SchematicUploadPacket.write(schematic, data)); else { //noinspection resource activeUploads.remove(schematic); @@ -153,7 +151,7 @@ private void continueUpload(String schematic) { private void finishUpload(String schematic) { if (activeUploads.containsKey(schematic)) { - CatnipServices.NETWORK.sendToServer(SchematicUploadPacket.finish(schematic)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(SchematicUploadPacket.finish(schematic)); //noinspection resource activeUploads.remove(schematic); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java index c11b16567a..e5e579894c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicAndQuillHandler.java @@ -16,11 +16,11 @@ import com.simibubi.create.foundation.utility.RaycastHelper; import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -58,9 +58,9 @@ public boolean mouseScrolled(double delta) { return true; AABB bb = new AABB(Vec3.atLowerCornerOf(firstPos), Vec3.atLowerCornerOf(secondPos)); - Vec3i vec = selectedFace.getNormal(); - Vec3 projectedView = Minecraft.getInstance().gameRenderer.getMainCamera() - .getPosition(); + Vec3i vec = selectedFace.getUnitVec3i(); + Vec3 projectedView = Minecraft.getInstance().gameRenderer.mainCamera() + .position(); if (bb.contains(projectedView)) delta *= -1; @@ -167,8 +167,8 @@ public void tick() { if (secondPos != null) { AABB bb = new AABB(Vec3.atLowerCornerOf(firstPos), Vec3.atLowerCornerOf(secondPos)).expandTowards(1, 1, 1) .inflate(.45f); - Vec3 projectedView = Minecraft.getInstance().gameRenderer.getMainCamera() - .getPosition(); + Vec3 projectedView = Minecraft.getInstance().gameRenderer.mainCamera() + .position(); boolean inside = bb.contains(projectedView); PredicateTraceResult result = RaycastHelper.rayTraceUntil(player, 70, pos -> inside ^ bb.contains(VecHelper.getCenterOf(pos))); @@ -201,7 +201,7 @@ private boolean isActive() { private boolean isPresent() { return Minecraft.getInstance() != null && Minecraft.getInstance().level != null - && Minecraft.getInstance().screen == null; + && Minecraft.getInstance().gui.screen() == null; } public void saveSchematic(String string, boolean convertImmediately) { @@ -226,7 +226,7 @@ public void saveSchematic(String string, boolean convertImmediately) { try { if (!ClientSchematicLoader.validateSizeLimitation(Files.size(file))) return; - CatnipServices.NETWORK.sendToServer(new InstantSchematicPacket(result.fileName(), result.origin(), result.bounds())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new InstantSchematicPacket(result.fileName(), result.origin(), result.bounds())); } catch (IOException e) { Create.LOGGER.error("Error instantly uploading Schematic file: " + file, e); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java index 659e8783c3..1a6c48c788 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicEditScreen.java @@ -13,9 +13,9 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.core.BlockPos; import net.minecraft.nbt.NbtUtils; @@ -82,7 +82,6 @@ protected void init() { widget.setBordered(false); widget.setTextColor(0xFFFFFF); widget.setFocused(false); - widget.mouseClicked(0, 0, 0); widget.setFilter(s -> { if (s.isEmpty() || s.equals("-")) return true; @@ -111,8 +110,8 @@ protected void init() { .ordinal()) .writingTo(labelM); - addRenderableWidgets(xInput, yInput, zInput); - addRenderableWidgets(labelR, labelM, rotationArea, mirrorArea); + addRenderableWidgets(List.of(xInput, yInput, zInput)); + addRenderableWidgets(List.of(labelR, labelM, rotationArea, mirrorArea)); confirmButton = new IconButton(x + background.getWidth() - 33, y + background.getHeight() - 26, AllIcons.I_CONFIRM); @@ -124,7 +123,7 @@ protected void init() { @Override public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - if (isPaste(code)) { + if (hasControlDown() && code == org.lwjgl.glfw.GLFW.GLFW_KEY_V) { String coords = minecraft.keyboardHandler.getClipboard(); if (coords != null && !coords.isEmpty()) { coords.replaceAll(" ", ""); @@ -152,13 +151,13 @@ public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); String title = handler.getCurrentSchematicName(); - graphics.drawString(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false); + graphics.text(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false); GuiGameElement.of(AllItems.SCHEMATIC.asStack()) .at(x + background.getWidth() + 6, y + background.getHeight() - 40, -200) diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java index b988020126..aca6ca95e1 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHandler.java @@ -19,15 +19,15 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.levelWrappers.SchematicLevel; -import net.createmod.catnip.outliner.AABBOutline; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; +import net.createmod.catnip.api.client.outliner.AABBOutline; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; @@ -48,7 +48,7 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; -public class SchematicHandler implements LayeredDraw.Layer { +public class SchematicHandler implements GuiLayer { private String displayedSchematic; private SchematicTransformation transformation; @@ -70,7 +70,6 @@ public class SchematicHandler implements LayeredDraw.Layer { public SchematicHandler() { overlay = new SchematicHotbarSlotOverlay(); currentTool = ToolType.DEPLOY; - selectionScreen = new ToolSelectionScreen(ImmutableList.of(ToolType.DEPLOY), this::equip); transformation = new SchematicTransformation(); } @@ -157,8 +156,8 @@ private void setupRenderer() { blockEntity.setLevel(w); fixControllerBlockEntities(w); } catch (Exception e) { - Minecraft.getInstance().player.displayClientMessage(CreateLang.translate("schematic.error") - .component(), false); + Minecraft.getInstance().player.sendSystemMessage(CreateLang.translate("schematic.error") + .component()); Create.LOGGER.error("Failed to load Schematic for Previewing", e); return; } @@ -253,15 +252,15 @@ public void updateRenderers() { } @Override - public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public void render(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || !active) + if (!active) return; if (activeSchematicItem != null) - this.overlay.renderOn(guiGraphics, activeHotbarSlot); + this.overlay.renderOn(GuiGraphicsExtractor, activeHotbarSlot); currentTool.getTool() - .renderOverlay(mc.gui, guiGraphics, deltaTracker.getGameTimeDeltaPartialTick(false), guiGraphics.guiWidth(), guiGraphics.guiHeight()); - selectionScreen.renderPassive(guiGraphics, deltaTracker.getGameTimeDeltaPartialTick(false)); + .renderOverlay(mc.gui, GuiGraphicsExtractor, deltaTracker.getGameTimeDeltaPartialTick(false), GuiGraphicsExtractor.guiWidth(), GuiGraphicsExtractor.guiHeight()); + selectionScreen.renderPassive(GuiGraphicsExtractor, deltaTracker.getGameTimeDeltaPartialTick(false)); } public boolean onMouseInput(int button, boolean pressed) { @@ -319,7 +318,7 @@ private ItemStack findBlueprintInHand(Player player) { return null; activeSchematicItem = stack; - activeHotbarSlot = player.getInventory().selected; + activeHotbarSlot = player.getInventory().getSelectedSlot(); return stack; } @@ -344,7 +343,7 @@ public void markDirty() { public void sync() { if (activeSchematicItem == null) return; - CatnipServices.NETWORK.sendToServer(new SchematicSyncPacket(activeHotbarSlot, transformation.toSettings(), + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new SchematicSyncPacket(activeHotbarSlot, transformation.toSettings(), transformation.getAnchor(), deployed)); } @@ -386,7 +385,7 @@ public String getCurrentSchematicName() { } public void printInstantly() { - CatnipServices.NETWORK.sendToServer(new SchematicPlacePacket(activeSchematicItem.copy())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new SchematicPlacePacket(activeSchematicItem.copy())); activeSchematicItem.set(AllDataComponents.SCHEMATIC_DEPLOYED, false); SchematicInstances.clearHash(activeSchematicItem); active = false; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHotbarSlotOverlay.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHotbarSlotOverlay.java index 37005ff9ca..e205c1518b 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicHotbarSlotOverlay.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicHotbarSlotOverlay.java @@ -1,25 +1,21 @@ package com.simibubi.create.content.schematics.client; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.gui.AllGuiTextures; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; public class SchematicHotbarSlotOverlay { - public void renderOn(GuiGraphics graphics, int slot) { + public void renderOn(GuiGraphicsExtractor graphics, int slot) { Window mainWindow = Minecraft.getInstance().getWindow(); int x = mainWindow.getGuiScaledWidth() / 2 - 88; int y = mainWindow.getGuiScaledHeight() - 19; - RenderSystem.enableDepthTest(); - PoseStack ms = graphics.pose(); - ms.pushPose(); - ms.translate(0, 0, -300); + LegacyRenderSystemBridge.enableDepthTest(); AllGuiTextures.SCHEMATIC_SLOT.render(graphics, x + 20 * slot, y); - ms.popPose(); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java index a15ae33f6b..be9c7c62a3 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicPromptScreen.java @@ -9,9 +9,9 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -75,12 +75,12 @@ public void init() { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; background.render(graphics, x, y); - graphics.drawString(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false); + graphics.text(font, title, x + (background.getWidth() - 8 - font.width(title)) / 2, y + 4, 0x505050, false); GuiGameElement.of(AllItems.SCHEMATIC.asStack()) .at(x + 22, y + 24, 0) @@ -102,7 +102,7 @@ public boolean keyPressed(int keyCode, int p_keyPressed_2_, int p_keyPressed_3_) this.onClose(); return true; } - return nameField.keyPressed(keyCode, p_keyPressed_2_, p_keyPressed_3_); + return nameField.keyPressed(new net.minecraft.client.input.KeyEvent(keyCode, p_keyPressed_2_, p_keyPressed_3_)); } private void confirm(boolean convertImmediately) { diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java index b2f4319483..5843ad2cee 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicRenderer.java @@ -7,33 +7,19 @@ import java.util.Map; import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.render.BlockEntityRenderHelper; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.levelWrappers.SchematicLevel; -import net.createmod.catnip.render.ShadedBlockSbbBuilder; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.render.SuperRenderTypeBuffer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.BlockRenderDispatcher; -import net.minecraft.client.renderer.block.ModelBlockRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.structure.BoundingBox; - -import net.neoforged.neoforge.client.model.data.ModelData; public class SchematicRenderer { private static final ThreadLocal THREAD_LOCAL_OBJECTS = ThreadLocal.withInitial(ThreadLocalObjects::new); - private final Map bufferCache = new LinkedHashMap<>(getLayerCount()); + private final Map bufferCache = new LinkedHashMap<>(); private boolean changed; protected final SchematicLevel schematic; private final BlockPos anchor; @@ -57,87 +43,22 @@ public void update() { } public void render(PoseStack ms, SuperRenderTypeBuffer buffers) { - Minecraft mc = Minecraft.getInstance(); - if (mc.level == null || mc.player == null) - return; - if (changed) - redraw(); - changed = false; - - bufferCache.forEach((layer, buffer) -> { - buffer.renderInto(ms, buffers.getBuffer(layer)); - }); - scratchErroredBlockEntities.clear(); - BlockEntityRenderHelper.renderBlockEntities(renderedBlockEntities, shouldRenderBlockEntities, scratchErroredBlockEntities, null, schematic, ms, null, buffers, AnimationTickHolder.getPartialTicks()); - - // Don't bother looping over errored BEs again. - shouldRenderBlockEntities.andNot(scratchErroredBlockEntities); + // TODO 26.2: Rebuild schematic preview rendering on the render-state block model pipeline. } protected void redraw() { bufferCache.clear(); - - for (RenderType layer : RenderType.chunkBufferLayers()) { - SuperByteBuffer buffer = drawLayer(layer); - if (!buffer.isEmpty()) - bufferCache.put(layer, buffer); - } } protected SuperByteBuffer drawLayer(RenderType layer) { - BlockRenderDispatcher dispatcher = Minecraft.getInstance().getBlockRenderer(); - ModelBlockRenderer renderer = dispatcher.getModelRenderer(); - ThreadLocalObjects objects = THREAD_LOCAL_OBJECTS.get(); - - PoseStack poseStack = objects.poseStack; - RandomSource random = objects.random; - BlockPos.MutableBlockPos mutableBlockPos = objects.mutableBlockPos; - SchematicLevel renderWorld = schematic; - BoundingBox bounds = renderWorld.getBounds(); - - ShadedBlockSbbBuilder sbbBuilder = objects.sbbBuilder; - sbbBuilder.begin(); - - renderWorld.renderMode = true; - ModelBlockRenderer.enableCaching(); - for (BlockPos localPos : BlockPos.betweenClosed(bounds.minX(), bounds.minY(), bounds.minZ(), bounds.maxX(), bounds.maxY(), bounds.maxZ())) { - BlockPos pos = mutableBlockPos.setWithOffset(localPos, anchor); - BlockState state = renderWorld.getBlockState(pos); - - if (state.getRenderShape() == RenderShape.MODEL) { - BakedModel model = dispatcher.getBlockModel(state); - BlockEntity blockEntity = renderWorld.getBlockEntity(localPos); - ModelData modelData = blockEntity != null ? blockEntity.getModelData() : ModelData.EMPTY; - modelData = model.getModelData(renderWorld, pos, state, modelData); - long seed = state.getSeed(pos); - random.setSeed(seed); - if (model.getRenderTypes(state, random, modelData).contains(layer)) { - poseStack.pushPose(); - poseStack.translate(localPos.getX(), localPos.getY(), localPos.getZ()); - - renderer.tesselateBlock(renderWorld, model, state, pos, poseStack, sbbBuilder, true, - random, seed, OverlayTexture.NO_OVERLAY, modelData, layer); - - poseStack.popPose(); - } - } - } - ModelBlockRenderer.clearCache(); - renderWorld.renderMode = false; - - return sbbBuilder.end(); + return null; } private static int getLayerCount() { - return RenderType.chunkBufferLayers() - .size(); + return 0; } private static class ThreadLocalObjects { - public final PoseStack poseStack = new PoseStack(); - public final RandomSource random = RandomSource.createNewThreadLocalInstance(); - public final BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos(); - public final ShadedBlockSbbBuilder sbbBuilder = ShadedBlockSbbBuilder.create(); } } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java b/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java index 0735a2f9c6..2273bbdda8 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/SchematicTransformation.java @@ -5,10 +5,10 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Mirror; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java index e5274628c5..10db1aed3a 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/ToolSelectionScreen.java @@ -4,15 +4,15 @@ import java.util.function.Consumer; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllKeys; import com.simibubi.create.content.schematics.client.tools.ToolType; import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.utility.CreateLang; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -34,7 +34,6 @@ public class ToolSelectionScreen extends Screen { public ToolSelectionScreen(List tools, Consumer callback) { super(Component.literal("Tool Selection")); - this.minecraft = Minecraft.getInstance(); this.tools = tools; this.callback = callback; focused = false; @@ -59,23 +58,20 @@ public void cycle(int direction) { selection = (selection + tools.size()) % tools.size(); } - private void draw(GuiGraphics graphics, float partialTicks) { - PoseStack matrixStack = graphics.pose(); + private void draw(GuiGraphicsExtractor graphics, float partialTicks) { Window mainWindow = minecraft.getWindow(); if (!initialized) - init(minecraft, mainWindow.getGuiScaledWidth(), mainWindow.getGuiScaledHeight()); + init(mainWindow.getGuiScaledWidth(), mainWindow.getGuiScaledHeight()); int x = (mainWindow.getGuiScaledWidth() - w) / 2 + 15; int y = mainWindow.getGuiScaledHeight() - h - 75; - matrixStack.pushPose(); - matrixStack.translate(0, -yOffset, focused ? 100 : 0); - AllGuiTextures gray = AllGuiTextures.HUD_BACKGROUND; - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(1, 1, 1, focused ? 7 / 8f : 1 / 2f); + LegacyRenderSystemBridge.enableBlend(); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, focused ? 7 / 8f : 1 / 2f); - graphics.blit(gray.location, x - 15, y, gray.getStartX(), gray.getStartY(), w, h, gray.getWidth(), gray.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, gray.location, x - 15, y, gray.getStartX(), gray.getStartY(), w, h, + gray.getWidth(), gray.getHeight()); float toolTipAlpha = yOffset / 10; List toolTip = tools.get(selection) @@ -83,63 +79,59 @@ private void draw(GuiGraphics graphics, float partialTicks) { int stringAlphaComponent = ((int) (toolTipAlpha * 0xFF)) << 24; if (toolTipAlpha > 0.25f) { - RenderSystem.setShaderColor(.7f, .7f, .8f, toolTipAlpha); - graphics.blit(gray.location, x - 15, y + 33, gray.getStartX(), gray.getStartY(), w, h + 22, gray.getWidth(), gray.getHeight()); - RenderSystem.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.setShaderColor(.7f, .7f, .8f, toolTipAlpha); + graphics.blit(RenderPipelines.GUI_TEXTURED, gray.location, x - 15, y + 33, gray.getStartX(), + gray.getStartY(), w, h + 22, gray.getWidth(), gray.getHeight()); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); if (toolTip.size() > 0) - graphics.drawString(font, toolTip.get(0), x - 10, y + 38, 0xEEEEEE + stringAlphaComponent, false); + graphics.text(font, toolTip.get(0), x - 10, y + 38, 0xEEEEEE + stringAlphaComponent, false); if (toolTip.size() > 1) - graphics.drawString(font, toolTip.get(1), x - 10, y + 50, 0xCCDDFF + stringAlphaComponent, false); + graphics.text(font, toolTip.get(1), x - 10, y + 50, 0xCCDDFF + stringAlphaComponent, false); if (toolTip.size() > 2) - graphics.drawString(font, toolTip.get(2), x - 10, y + 60, 0xCCDDFF + stringAlphaComponent, false); + graphics.text(font, toolTip.get(2), x - 10, y + 60, 0xCCDDFF + stringAlphaComponent, false); if (toolTip.size() > 3) - graphics.drawString(font, toolTip.get(3), x - 10, y + 72, 0xCCCCDD + stringAlphaComponent, false); + graphics.text(font, toolTip.get(3), x - 10, y + 72, 0xCCCCDD + stringAlphaComponent, false); } - RenderSystem.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); if (tools.size() > 1) { String keyName = AllKeys.TOOL_MENU.getBoundKey(); int width = minecraft.getWindow() .getGuiScaledWidth(); if (!focused) - graphics.drawCenteredString(minecraft.font, CreateLang.translateDirect(holdToFocus, keyName), width / 2, + graphics.centeredText(minecraft.font, CreateLang.translateDirect(holdToFocus, keyName), width / 2, y - 10, 0xCCDDFF); else - graphics.drawCenteredString(minecraft.font, scrollToCycle, width / 2, y - 10, 0xCCDDFF); + graphics.centeredText(minecraft.font, scrollToCycle, width / 2, y - 10, 0xCCDDFF); } else { x += 65; } for (int i = 0; i < tools.size(); i++) { - RenderSystem.enableBlend(); - matrixStack.pushPose(); + LegacyRenderSystemBridge.enableBlend(); float alpha = focused ? 1 : .2f; if (i == selection) { - matrixStack.translate(0, -10, 0); - RenderSystem.setShaderColor(1, 1, 1, 1); - graphics.drawCenteredString(minecraft.font, tools.get(i) + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); + graphics.centeredText(minecraft.font, tools.get(i) .getDisplayName() .getString(), x + i * 50 + 24, y + 28, 0xCCDDFF); alpha = 1; } - RenderSystem.setShaderColor(0, 0, 0, alpha); + LegacyRenderSystemBridge.setShaderColor(0, 0, 0, alpha); tools.get(i) .getIcon() .render(graphics, x + i * 50 + 16, y + 12); - RenderSystem.setShaderColor(1, 1, 1, alpha); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, alpha); tools.get(i) .getIcon() .render(graphics, x + i * 50 + 16, y + 11); - - matrixStack.popPose(); } - RenderSystem.setShaderColor(1, 1, 1, 1); - RenderSystem.disableBlend(); - matrixStack.popPose(); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.disableBlend(); } public void update() { @@ -149,7 +141,7 @@ public void update() { yOffset *= .9f; } - public void renderPassive(GuiGraphics graphics, float partialTicks) { + public void renderPassive(GuiGraphicsExtractor graphics, float partialTicks) { draw(graphics, partialTicks); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java index 989c46297d..05993b2271 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/DeployTool.java @@ -7,9 +7,9 @@ import com.simibubi.create.AllKeys; import com.simibubi.create.content.schematics.client.SchematicTransformation; -import net.createmod.catnip.render.SuperRenderTypeBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.outliner.AABBOutline; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.outliner.AABBOutline; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/FlipTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/FlipTool.java index 3efe2dd2f5..63f63bfec5 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/FlipTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/FlipTool.java @@ -3,9 +3,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllSpecialTextures; -import net.createmod.catnip.render.SuperRenderTypeBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.outliner.AABBOutline; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.outliner.AABBOutline; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; @@ -60,7 +60,7 @@ public void renderOnSchematic(PoseStack ms, SuperRenderTypeBuffer buffer) { AABB bounds = schematicHandler.getBounds(); Vec3 directionVec = Vec3.atLowerCornerOf(Direction.get(AxisDirection.POSITIVE, facing.getAxis()) - .getNormal()); + .getUnitVec3i()); Vec3 boundsSize = new Vec3(bounds.getXsize(), bounds.getYsize(), bounds.getZsize()); Vec3 vec = boundsSize.multiply(directionVec); bounds = bounds.contract(vec.x, vec.y, vec.z) diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java index d9597676a6..e4e70a205a 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/ISchematicTool.java @@ -2,9 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.phys.Vec3; public interface ISchematicTool { @@ -16,7 +16,7 @@ public interface ISchematicTool { public boolean handleMouseWheel(double delta); public void renderTool(PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 camera); - public void renderOverlay(Gui gui, GuiGraphics graphics, float partialTicks, int width, int height); + public void renderOverlay(Gui gui, GuiGraphicsExtractor graphics, float partialTicks, int width, int height); public void renderOnSchematic(PoseStack ms, SuperRenderTypeBuffer buffer); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/MoveTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/MoveTool.java index 4961935dc1..6417f063a4 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/MoveTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/MoveTool.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.schematics.client.SchematicTransformation; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.Direction.Axis; import net.minecraft.world.phys.Vec3; @@ -25,7 +25,7 @@ public boolean handleMouseWheel(double delta) { return true; SchematicTransformation transformation = schematicHandler.getTransformation(); - Vec3 vec = Vec3.atLowerCornerOf(selectedFace.getNormal()).scale(-Math.signum(delta)); + Vec3 vec = Vec3.atLowerCornerOf(selectedFace.getUnitVec3i()).scale(-Math.signum(delta)); vec = vec.multiply(transformation.getMirrorModifier(Axis.X), 1, transformation.getMirrorModifier(Axis.Z)); vec = VecHelper.rotate(vec, transformation.getRotationTarget(), Axis.Y); transformation.move((int) vec.x, 0, (int) vec.z); diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java index a68edf112c..4b036fbbcd 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/PlacementToolBase.java @@ -2,9 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.phys.Vec3; public abstract class PlacementToolBase extends SchematicToolBase { @@ -25,7 +25,7 @@ public void renderTool(PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 camera) } @Override - public void renderOverlay(Gui gui, GuiGraphics graphics, float partialTicks, int width, int height) { + public void renderOverlay(Gui gui, GuiGraphicsExtractor graphics, float partialTicks, int width, int height) { super.renderOverlay(gui, graphics, partialTicks, width, height); } diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/RotateTool.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/RotateTool.java index 045e046db1..895903501e 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/RotateTool.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/RotateTool.java @@ -2,9 +2,9 @@ import com.mojang.blaze3d.vertex.PoseStack; -import net.createmod.catnip.render.SuperRenderTypeBuffer; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.outliner.LineOutline; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.outliner.LineOutline; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java index 61e0affade..5bc4784ea3 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/SchematicToolBase.java @@ -9,13 +9,13 @@ import com.simibubi.create.foundation.utility.RaycastHelper; import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.AABBOutline; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.AABBOutline; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -120,7 +120,7 @@ public void renderTool(PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 camera) } @Override - public void renderOverlay(Gui gui, GuiGraphics graphics, float partialTicks, int width, int height) { + public void renderOverlay(Gui gui, GuiGraphicsExtractor graphics, float partialTicks, int width, int height) { } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/client/tools/ToolType.java b/src/main/java/com/simibubi/create/content/schematics/client/tools/ToolType.java index e8d92d9255..44f8a655f8 100644 --- a/src/main/java/com/simibubi/create/content/schematics/client/tools/ToolType.java +++ b/src/main/java/com/simibubi/create/content/schematics/client/tools/ToolType.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicSyncPacket.java b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicSyncPacket.java index da0404e759..87261a8e05 100644 --- a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicSyncPacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicSyncPacket.java @@ -6,7 +6,7 @@ import com.simibubi.create.content.schematics.SchematicInstances; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java index 9a57a581d9..518bc7d00a 100644 --- a/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java +++ b/src/main/java/com/simibubi/create/content/schematics/packet/SchematicUploadPacket.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.schematics.table.SchematicTableMenu; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ServerboundPacketPayload; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.ByteBufCodecs; diff --git a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java index 3df40b4188..d7185d2922 100644 --- a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java +++ b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java @@ -16,9 +16,10 @@ import com.simibubi.create.foundation.data.recipe.Mods; import com.simibubi.create.foundation.mixin.accessor.ItemFrameAccessor; -import net.createmod.catnip.components.ComponentProcessors; +import net.createmod.catnip.api.data.component.ComponentProcessors; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.decoration.ItemFrame; import net.minecraft.world.item.Item; @@ -28,7 +29,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.DirtPathBlock; -import net.minecraft.world.level.block.FarmBlock; +import net.minecraft.world.level.block.FarmlandBlock; import net.minecraft.world.level.block.SeaPickleBlock; import net.minecraft.world.level.block.SnowLayerBlock; import net.minecraft.world.level.block.TurtleEggBlock; @@ -115,10 +116,14 @@ private static ItemRequirement defaultOf(BlockState state, BlockEntity be) { if (block instanceof SnowLayerBlock) return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(item, state.getValue(SnowLayerBlock.LAYERS) .intValue())); - // FD's rich soil extends FarmBlock so this is to make sure the cost is correct (it should be rich soil not dirt) - if (block == BuiltInRegistries.BLOCK.get(Mods.FD.asResource("rich_soil_farmland"))) - return new ItemRequirement(ItemUseType.CONSUME, BuiltInRegistries.ITEM.get(Mods.FD.asResource("rich_soil"))); - if (block instanceof FarmBlock || block instanceof DirtPathBlock) + // FD's rich soil extends FarmlandBlock so this is to make sure the cost is correct (it should be rich soil not dirt) + if (block == BuiltInRegistries.BLOCK.get(Mods.FD.asResource("rich_soil_farmland")) + .map(ref -> ref.value()) + .orElse(null)) + return BuiltInRegistries.ITEM.get(Mods.FD.asResource("rich_soil")) + .map(ref -> new ItemRequirement(ItemUseType.CONSUME, ref.value())) + .orElse(INVALID); + if (block instanceof FarmlandBlock || block instanceof DirtPathBlock) return new ItemRequirement(ItemUseType.CONSUME, Items.DIRT); if (block instanceof AbstractBannerBlock && be instanceof BannerBlockEntity bannerBE) return new ItemRequirement(new StrictNbtStackRequirement(bannerBE.getItem(), ItemUseType.CONSUME)); @@ -152,9 +157,12 @@ public static ItemRequirement of(Entity entity) { if (entity instanceof ArmorStand armorStand) { List requirements = new ArrayList<>(); requirements.add(new StackRequirement(new ItemStack(Items.ARMOR_STAND), ItemUseType.CONSUME)); - armorStand.getAllSlots() - .forEach(s -> requirements - .add(new StrictNbtStackRequirement(ComponentProcessors.withUnsafeComponentsDiscarded(s), ItemUseType.CONSUME))); + for (EquipmentSlot slot : EquipmentSlot.values()) { + ItemStack stack = armorStand.getItemBySlot(slot); + if (!stack.isEmpty()) + requirements.add(new StrictNbtStackRequirement(ComponentProcessors.withUnsafeComponentsDiscarded(stack), + ItemUseType.CONSUME)); + } return new ItemRequirement(requirements); } diff --git a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlock.java b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlock.java index a65c329171..421a140b8c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlock.java +++ b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlock.java @@ -7,6 +7,7 @@ import com.simibubi.create.foundation.item.ItemHelper; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -64,7 +65,7 @@ public VoxelShape getShape(BlockState state, BlockGetter worldIn, BlockPos pos, @Override protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, be -> player.openMenu(be, be::sendToMenu)); @@ -72,12 +73,13 @@ protected InteractionResult useWithoutItem(BlockState state, Level level, BlockP } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasBlockEntity() || state.getBlock() == newState.getBlock()) + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + if (!state.hasBlockEntity()) return; withBlockEntityDo(worldIn, pos, be -> ItemHelper.dropContents(worldIn, pos, be.inventory)); worldIn.removeBlockEntity(pos); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override diff --git a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlockEntity.java b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlockEntity.java index e5f379d85c..c18f4b37ef 100644 --- a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableBlockEntity.java @@ -51,14 +51,15 @@ public SchematicTableBlockEntity(BlockEntityType type, BlockPos pos, BlockSta @Override protected void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - inventory.deserializeNBT(registries, compound.getCompound("Inventory")); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(inventory, registries, + compound.getCompoundOrEmpty("Inventory")); super.read(compound, registries, clientPacket); if (!clientPacket) return; if (compound.contains("Uploading")) { isUploading = true; - uploadingSchematic = compound.getString("Schematic"); - uploadingProgress = compound.getFloat("Progress"); + uploadingSchematic = compound.getStringOr("Schematic", ""); + uploadingProgress = compound.getFloatOr("Progress", 0); } else { isUploading = false; uploadingSchematic = null; @@ -68,7 +69,7 @@ protected void read(CompoundTag compound, HolderLookup.Provider registries, bool @Override protected void write(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - compound.put("Inventory", inventory.serializeNBT(registries)); + compound.put("Inventory", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.serializeHandler(inventory, registries)); super.write(compound, registries, clientPacket); if (clientPacket && isUploading) { compound.putBoolean("Uploading", true); diff --git a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableScreen.java b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableScreen.java index 46984a5510..a749638b29 100644 --- a/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableScreen.java +++ b/src/main/java/com/simibubi/create/content/schematics/table/SchematicTableScreen.java @@ -20,9 +20,10 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreatePaths; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.Util; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.minecraft.util.Util; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; @@ -132,7 +133,7 @@ protected void init() { } @Override - protected void renderBg(GuiGraphics graphics, float partialTicks, int mouseX, int mouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { int invX = getLeftOfCentered(PLAYER_INVENTORY.getWidth()); int invY = topPos + background.getHeight() + 4; renderPlayerInventory(graphics, invX, invY); @@ -151,10 +152,10 @@ else if (menu.getSlot(1) else titleText = title; - graphics.drawString(font, titleText, x + (background.getWidth() - 8 - font.width(titleText)) / 2, y + 4, 0x505050, false); + graphics.text(font, titleText, x + (background.getWidth() - 8 - font.width(titleText)) / 2, y + 4, 0x505050, false); if (schematicsArea == null) - graphics.drawString(font, noSchematics, x + 54, y + 26, 0xD3D3D3); + graphics.text(font, noSchematics, x + 54, y + 26, 0xD3D3D3); GuiGameElement.of(renderedItem) .at(x + background.getWidth(), y + background.getHeight() - 40, -200) @@ -164,8 +165,8 @@ else if (menu.getSlot(1) int width = (int) (SCHEMATIC_TABLE_PROGRESS.getWidth() * Mth.lerp(partialTicks, lastChasingProgress, chasingProgress)); int height = SCHEMATIC_TABLE_PROGRESS.getHeight(); - graphics.blit(SCHEMATIC_TABLE_PROGRESS.location, x + 70, y + 59, SCHEMATIC_TABLE_PROGRESS.getStartX(), - SCHEMATIC_TABLE_PROGRESS.getStartY(), width, height); + graphics.blit(RenderPipelines.GUI_TEXTURED, SCHEMATIC_TABLE_PROGRESS.location, x + 70, y + 59, + SCHEMATIC_TABLE_PROGRESS.getStartX(), SCHEMATIC_TABLE_PROGRESS.getStartY(), width, height, 256, 256); } @Override diff --git a/src/main/java/com/simibubi/create/content/trains/CameraDistanceModifier.java b/src/main/java/com/simibubi/create/content/trains/CameraDistanceModifier.java index 685bd1112f..80b4af2da5 100644 --- a/src/main/java/com/simibubi/create/content/trains/CameraDistanceModifier.java +++ b/src/main/java/com/simibubi/create/content/trains/CameraDistanceModifier.java @@ -2,8 +2,8 @@ import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; public class CameraDistanceModifier { diff --git a/src/main/java/com/simibubi/create/content/trains/CubeParticle.java b/src/main/java/com/simibubi/create/content/trains/CubeParticle.java index 9f5513114c..7876e1b0f3 100644 --- a/src/main/java/com/simibubi/create/content/trains/CubeParticle.java +++ b/src/main/java/com/simibubi/create/content/trains/CubeParticle.java @@ -2,24 +2,12 @@ import org.jetbrains.annotations.NotNull; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.blaze3d.vertex.VertexFormat; - -import net.createmod.ponder.enums.PonderSpecialTextures; -import net.minecraft.client.Camera; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; import net.minecraft.client.particle.ParticleRenderType; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.core.BlockPos; -import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.phys.Vec3; public class CubeParticle extends Particle { @@ -43,30 +31,6 @@ public class CubeParticle extends Particle { // RIGHT new Vec3(1, -1, 1), new Vec3(1, 1, 1), new Vec3(1, 1, -1), new Vec3(1, -1, -1) }; - private static final ParticleRenderType RENDER_TYPE = new ParticleRenderType() { - - @Override - public @NotNull BufferBuilder begin(Tesselator tesselator, TextureManager textureManager) { - PonderSpecialTextures.BLANK.bind(); - - // transparent, additive blending - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); - - // opaque -// RenderSystem.depthMask(true); -// RenderSystem.disableBlend(); -// RenderSystem.enableLighting(); - - BufferBuilder builder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.PARTICLE); - - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - - return builder; - } - }; - protected float scale; protected boolean hot; @@ -118,45 +82,17 @@ public void tick() { } @Override - public void render(VertexConsumer builder, Camera renderInfo, float p_225606_3_) { - Vec3 projectedView = renderInfo.getPosition(); - float lerpedX = (float) (Mth.lerp(p_225606_3_, this.xo, this.x) - projectedView.x()); - float lerpedY = (float) (Mth.lerp(p_225606_3_, this.yo, this.y) - projectedView.y()); - float lerpedZ = (float) (Mth.lerp(p_225606_3_, this.zo, this.z) - projectedView.z()); - - // int light = getBrightnessForRender(p_225606_3_); - int light = LightTexture.FULL_BRIGHT; - double ageMultiplier = 1 - Math.pow(Mth.clamp(age + p_225606_3_, 0, lifetime), 3) / Math.pow(lifetime, 3); - - for (int i = 0; i < 6; i++) { - // 6 faces to a cube - for (int j = 0; j < 4; j++) { - Vec3 vec = CUBE[i * 4 + j].scale(-1); - vec = vec - /* .rotate(?) */ - .scale(scale * ageMultiplier) - .add(lerpedX, lerpedY, lerpedZ); - - builder.addVertex((float) vec.x, (float) vec.y, (float) vec.z) - .setUv((float) j / 2, j % 2) - .setColor(rCol, gCol, bCol, alpha) - .setLight(light); - } - } - } - - @Override - public ParticleRenderType getRenderType() { - return RENDER_TYPE; + public @NotNull ParticleRenderType getGroup() { + // TODO 26.2: Rebuild cube particle extraction for the new particle render-state pipeline. + return ParticleRenderType.NO_RENDER; } public static class Factory implements ParticleProvider { @Override public Particle createParticle(CubeParticleData data, ClientLevel world, double x, double y, double z, double motionX, - double motionY, double motionZ) { + double motionY, double motionZ, RandomSource random) { CubeParticle particle = new CubeParticle(world, x, y, z, motionX, motionY, motionZ); - particle.setColor(data.r, data.g, data.b); particle.setScale(data.scale); particle.averageAge(data.avgAge); particle.setHot(data.hot); diff --git a/src/main/java/com/simibubi/create/content/trains/CubeParticleData.java b/src/main/java/com/simibubi/create/content/trains/CubeParticleData.java index 38ff3be583..1a3d63e2f8 100644 --- a/src/main/java/com/simibubi/create/content/trains/CubeParticleData.java +++ b/src/main/java/com/simibubi/create/content/trains/CubeParticleData.java @@ -6,7 +6,6 @@ import com.simibubi.create.AllParticleTypes; import com.simibubi.create.foundation.particle.ICustomParticleData; -import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -15,7 +14,6 @@ import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class CubeParticleData implements ParticleOptions, ICustomParticleData { @@ -68,13 +66,6 @@ public StreamCodec getStreamC public MapCodec getCodec(ParticleType type) { return CODEC; } - - @Override - @OnlyIn(Dist.CLIENT) - public ParticleProvider getFactory() { - return new CubeParticle.Factory(); - } - @Override public ParticleType getType() { return AllParticleTypes.CUBE.get(); diff --git a/src/main/java/com/simibubi/create/content/trains/GlobalRailwayManager.java b/src/main/java/com/simibubi/create/content/trains/GlobalRailwayManager.java index b59cc27bf4..71813791a6 100644 --- a/src/main/java/com/simibubi/create/content/trains/GlobalRailwayManager.java +++ b/src/main/java/com/simibubi/create/content/trains/GlobalRailwayManager.java @@ -27,7 +27,7 @@ import com.simibubi.create.content.trains.signal.SignalEdgeGroup; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; @@ -35,7 +35,6 @@ import net.minecraft.world.level.LevelAccessor; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class GlobalRailwayManager { @@ -57,7 +56,7 @@ public GlobalRailwayManager() { public void playerLogin(Player player) { if (player instanceof ServerPlayer serverPlayer) { - loadTrackData(serverPlayer.getServer()); + loadTrackData(serverPlayer.level().getServer()); for (TrackGraph g : trackNetworks.values()) { sync.sendFullGraphTo(g, serverPlayer); } @@ -294,7 +293,6 @@ public GlobalRailwayManager sided(LevelAccessor level) { return m.getValue(); } - @OnlyIn(Dist.CLIENT) private void clientManager(MutableObject m) { m.setValue(CreateClient.RAILWAYS); } diff --git a/src/main/java/com/simibubi/create/content/trains/HonkPacket.java b/src/main/java/com/simibubi/create/content/trains/HonkPacket.java index ae0a1ea86f..3b282d17a9 100644 --- a/src/main/java/com/simibubi/create/content/trains/HonkPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/HonkPacket.java @@ -11,8 +11,8 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -21,7 +21,6 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.level.gameevent.GameEvent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class HonkPacket implements CustomPacketPayload { protected final UUID trainId; @@ -52,8 +51,7 @@ private Clientbound(UUID id, boolean isHonk) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { Train train = Create.RAILWAYS.sided(null).trains.get(trainId); if (train == null) return; diff --git a/src/main/java/com/simibubi/create/content/trains/RailwaySavedData.java b/src/main/java/com/simibubi/create/content/trains/RailwaySavedData.java index bbabbcdd86..3b3e27c0f7 100644 --- a/src/main/java/com/simibubi/create/content/trains/RailwaySavedData.java +++ b/src/main/java/com/simibubi/create/content/trains/RailwaySavedData.java @@ -4,6 +4,7 @@ import java.util.Map; import java.util.UUID; +import com.mojang.serialization.Codec; import com.simibubi.create.Create; import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.content.trains.graph.DimensionPalette; @@ -11,25 +12,29 @@ import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.signal.SignalBoundary; import com.simibubi.create.content.trains.signal.SignalEdgeGroup; +import com.simibubi.create.foundation.utility.GlobalRegistryAccess; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.saveddata.SavedData; +import net.minecraft.world.level.saveddata.SavedDataType; public class RailwaySavedData extends SavedData { + private static final SavedDataType TYPE = new SavedDataType<>(Create.asResource("create_tracks"), + level -> new RailwaySavedData(), level -> codec(level.registryAccess())); + private Map trackNetworks = new HashMap<>(); private Map signalEdgeGroups = new HashMap<>(); private Map trains = new HashMap<>(); - public static SavedData.Factory factory() { - return new SavedData.Factory<>(RailwaySavedData::new, RailwaySavedData::load); + private static Codec codec(HolderLookup.Provider registries) { + return CompoundTag.CODEC.xmap(tag -> load(tag, registries), data -> data.save(new CompoundTag(), registries)); } - @Override public CompoundTag save(CompoundTag nbt, HolderLookup.Provider registries) { GlobalRailwayManager railways = Create.RAILWAYS; // Create.LOGGER.info("Saving Railway Information..."); @@ -53,15 +58,15 @@ private static RailwaySavedData load(CompoundTag nbt, HolderLookup.Provider regi // Create.LOGGER.info("Loading Railway Information..."); DimensionPalette dimensions = DimensionPalette.read(nbt); - NBTHelper.iterateCompoundList(nbt.getList("RailGraphs", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("RailGraphs"), c -> { TrackGraph graph = TrackGraph.read(c, registries, dimensions); sd.trackNetworks.put(graph.id, graph); }); - NBTHelper.iterateCompoundList(nbt.getList("SignalBlocks", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("SignalBlocks"), c -> { SignalEdgeGroup group = SignalEdgeGroup.read(c); sd.signalEdgeGroups.put(group.id, group); }); - NBTHelper.iterateCompoundList(nbt.getList("Trains", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Trains"), c -> { Train train = Train.read(c, registries, sd.trackNetworks, dimensions); sd.trains.put(train.id, train); }); @@ -101,7 +106,7 @@ private RailwaySavedData() {} public static RailwaySavedData load(MinecraftServer server) { return server.overworld() .getDataStorage() - .computeIfAbsent(factory(), "create_tracks"); + .computeIfAbsent(TYPE); } } diff --git a/src/main/java/com/simibubi/create/content/trains/TrainHUD.java b/src/main/java/com/simibubi/create/content/trains/TrainHUD.java index 1d55de4dd0..6a6ac5b7db 100644 --- a/src/main/java/com/simibubi/create/content/trains/TrainHUD.java +++ b/src/main/java/com/simibubi/create/content/trains/TrainHUD.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.trains; -import com.mojang.blaze3d.vertex.PoseStack; +import org.joml.Matrix3x2fStack; import com.simibubi.create.content.contraptions.actors.trainControls.ControlsBlock; import com.simibubi.create.content.contraptions.actors.trainControls.ControlsHandler; import com.simibubi.create.content.trains.entity.Carriage; @@ -10,16 +10,16 @@ import com.simibubi.create.foundation.utility.ControlsUtil; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.placement.PlacementClient; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -30,7 +30,7 @@ public class TrainHUD { - public static final LayeredDraw.Layer OVERLAY = TrainHUD::renderOverlay; + public static final GuiLayer OVERLAY = TrainHUD::renderOverlay; static LerpedFloat displayedSpeed = LerpedFloat.linear(); static LerpedFloat displayedThrottle = LerpedFloat.linear(); @@ -75,14 +75,14 @@ public static void tick() { if (isSprintKeyPressed && honkPacketCooldown-- <= 0) { train.determineHonk(mc.level); if (train.lowHonk != null) { - CatnipServices.NETWORK.sendToServer(new HonkPacket.Serverbound(train, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new HonkPacket.Serverbound(train, true)); honkPacketCooldown = 5; usedToHonk = true; } } if (!isSprintKeyPressed && usedToHonk) { - CatnipServices.NETWORK.sendToServer(new HonkPacket.Serverbound(train, false)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new HonkPacket.Serverbound(train, false)); honkPacketCooldown = 0; usedToHonk = false; } @@ -96,7 +96,7 @@ public static void tick() { } if (hudPacketCooldown-- <= 0) { - CatnipServices.NETWORK.sendToServer(new TrainHUDUpdatePacket.Serverbound(train, editedThrottle)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrainHUDUpdatePacket.Serverbound(train, editedThrottle)); hudPacketCooldown = 5; } } @@ -107,10 +107,10 @@ private static Carriage getCarriage() { return cce.getCarriage(); } - private static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + private static void renderOverlay(GuiGraphicsExtractor graphics, DeltaTracker deltaTracker) { float partialTicks = deltaTracker.getGameTimeDeltaPartialTick(false); Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; if (!(ControlsHandler.getContraption() instanceof CarriageContraptionEntity cce)) @@ -126,53 +126,53 @@ private static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTra if (localPos == null) return; - PoseStack poseStack = guiGraphics.pose(); - poseStack.pushPose(); - poseStack.translate(guiGraphics.guiWidth() / 2 - 91, guiGraphics.guiHeight() - 29, 0); + Matrix3x2fStack poseStack = graphics.pose(); + poseStack.pushMatrix(); + poseStack.translate(graphics.guiWidth() / 2 - 91, graphics.guiHeight() - 29); // Speed, Throttle - AllGuiTextures.TRAIN_HUD_FRAME.render(guiGraphics, -2, 1); - AllGuiTextures.TRAIN_HUD_SPEED_BG.render(guiGraphics, 0, 0); + AllGuiTextures.TRAIN_HUD_FRAME.render(graphics, -2, 1); + AllGuiTextures.TRAIN_HUD_SPEED_BG.render(graphics, 0, 0); int w = (int) (AllGuiTextures.TRAIN_HUD_SPEED.getWidth() * displayedSpeed.getValue(partialTicks)); int h = AllGuiTextures.TRAIN_HUD_SPEED.getHeight(); - guiGraphics.blit(AllGuiTextures.TRAIN_HUD_SPEED.location, 0, 0, 0, AllGuiTextures.TRAIN_HUD_SPEED.getStartX(), + graphics.blit(RenderPipelines.GUI_TEXTURED, AllGuiTextures.TRAIN_HUD_SPEED.location, 0, 0, AllGuiTextures.TRAIN_HUD_SPEED.getStartX(), AllGuiTextures.TRAIN_HUD_SPEED.getStartY(), w, h, 256, 256); int promptSize = (int) displayedPromptSize.getValue(partialTicks); if (promptSize > 1) { - poseStack.pushPose(); - poseStack.translate(promptSize / -2f + 91, -27, 0); + poseStack.pushMatrix(); + poseStack.translate(promptSize / -2f + 91, -27); - AllGuiTextures.TRAIN_PROMPT_L.render(guiGraphics, -3, 0); - AllGuiTextures.TRAIN_PROMPT_R.render(guiGraphics, promptSize, 0); - guiGraphics.blit(AllGuiTextures.TRAIN_PROMPT.location, 0, 0, 0, AllGuiTextures.TRAIN_PROMPT.getStartX() + (128 - promptSize / 2f), + AllGuiTextures.TRAIN_PROMPT_L.render(graphics, -3, 0); + AllGuiTextures.TRAIN_PROMPT_R.render(graphics, promptSize, 0); + graphics.blit(RenderPipelines.GUI_TEXTURED, AllGuiTextures.TRAIN_PROMPT.location, 0, 0, AllGuiTextures.TRAIN_PROMPT.getStartX() + (128 - promptSize / 2f), AllGuiTextures.TRAIN_PROMPT.getStartY(), promptSize, AllGuiTextures.TRAIN_PROMPT.getHeight(), 256, 256); - poseStack.popPose(); + poseStack.popMatrix(); Font font = mc.font; if (currentPrompt != null && font.width(currentPrompt) < promptSize - 10) { - poseStack.pushPose(); - poseStack.translate(font.width(currentPrompt) / -2f + 82, -27, 100); + poseStack.pushMatrix(); + poseStack.translate(font.width(currentPrompt) / -2f + 82, -27); if (currentPromptShadow) - guiGraphics.drawString(font, currentPrompt, 9, 4, 0x544D45); + graphics.text(font, currentPrompt, 9, 4, 0x544D45); else - guiGraphics.drawString(font, currentPrompt, 9, 4, 0x544D45, false); - poseStack.popPose(); + graphics.text(font, currentPrompt, 9, 4, 0x544D45, false); + poseStack.popMatrix(); } } - AllGuiTextures.TRAIN_HUD_DIRECTION.render(guiGraphics, 77, -20); + AllGuiTextures.TRAIN_HUD_DIRECTION.render(graphics, 77, -20); w = (int) (AllGuiTextures.TRAIN_HUD_THROTTLE.getWidth() * (1 - displayedThrottle.getValue(partialTicks))); int invW = AllGuiTextures.TRAIN_HUD_THROTTLE.getWidth() - w; - guiGraphics.blit(AllGuiTextures.TRAIN_HUD_THROTTLE.location, invW, 0, 0, AllGuiTextures.TRAIN_HUD_THROTTLE.getStartX() + invW, + graphics.blit(RenderPipelines.GUI_TEXTURED, AllGuiTextures.TRAIN_HUD_THROTTLE.location, invW, 0, AllGuiTextures.TRAIN_HUD_THROTTLE.getStartX() + invW, AllGuiTextures.TRAIN_HUD_THROTTLE.getStartY(), w, h, 256, 256); - AllGuiTextures.TRAIN_HUD_THROTTLE_POINTER.render(guiGraphics, + AllGuiTextures.TRAIN_HUD_THROTTLE_POINTER.render(graphics, Math.max(1, AllGuiTextures.TRAIN_HUD_THROTTLE.getWidth() - w) - 3, -2); // Direction @@ -202,11 +202,11 @@ private static void renderOverlay(GuiGraphics guiGraphics, DeltaTracker deltaTra float angle = diff + angleOffset; float snappedAngle = (snapSize * Math.round(angle / snapSize)) % 360f; - poseStack.translate(91, -9, 0); - poseStack.scale(0.925f, 0.925f, 1); - PlacementClient.textured(poseStack, 0, 0, 1, snappedAngle); + poseStack.translate(91, -9); + poseStack.scale(0.925f, 0.925f); + // TODO 26.2: restore Catnip placement indicator rendering for the train HUD direction arrow. - poseStack.popPose(); + poseStack.popMatrix(); } public static boolean onScroll(double delta) { diff --git a/src/main/java/com/simibubi/create/content/trains/TrainHUDUpdatePacket.java b/src/main/java/com/simibubi/create/content/trains/TrainHUDUpdatePacket.java index 65292cdbe9..411d8e0e13 100644 --- a/src/main/java/com/simibubi/create/content/trains/TrainHUDUpdatePacket.java +++ b/src/main/java/com/simibubi/create/content/trains/TrainHUDUpdatePacket.java @@ -10,10 +10,10 @@ import com.simibubi.create.content.trains.entity.Train; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -21,7 +21,6 @@ import net.minecraft.server.level.ServerPlayer; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class TrainHUDUpdatePacket implements CustomPacketPayload { protected final UUID trainId; @@ -60,8 +59,7 @@ private Clientbound(UUID trainId, @Nullable Double throttle, double speed, int f } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { Train train = Create.RAILWAYS.sided(null).trains.get(trainId); if (train == null) return; diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java index a282fffa2c..a5c94ed1e5 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlock.java @@ -28,24 +28,27 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.BlockEntity; @@ -57,13 +60,14 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; +import net.minecraft.util.RandomSource; public abstract class AbstractBogeyBlock extends Block implements IBE, ProperWaterloggedBlock, SpecialBlockItemRequirement, IWrenchable { public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.registry(Registries.BLOCK).map( block -> (AbstractBogeyBlock) block, Function.identity() ); public static final EnumProperty AXIS = BlockStateProperties.HORIZONTAL_AXIS; - static final List BOGEYS = new ArrayList<>(); + static final List BOGEYS = new ArrayList<>(); public BogeySizes.BogeySize size; public AbstractBogeyBlock(Properties pProperties, BogeySizes.BogeySize size) { @@ -91,7 +95,7 @@ public Set getValidPathfindingTypes(BogeyStyle style) { * Only for internal Create use. If you have your own style set, do not call this method */ @ApiStatus.Internal - public static void registerStandardBogey(ResourceLocation block) { + public static void registerStandardBogey(Identifier block) { BOGEYS.add(block); } @@ -102,9 +106,11 @@ protected void createBlockStateDefinition(StateDefinition.Builder 1) { BlockEntity be = level.getBlockEntity(pos); if (!(be instanceof AbstractBogeyBlockEntity sbbe)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; - player.getCooldowns().addCooldown(stack.getItem(), 20); + player.getCooldowns().addCooldown(stack, 20); BogeyStyle currentStyle = sbbe.getStyle(); BogeySizes.BogeySize size = getSize(); BogeyStyle style = this.getNextStyle(currentStyle); if (style == currentStyle) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; Set validSizes = style.validSizes(); @@ -204,44 +210,44 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev CompoundTag oldData = sbbe.getBogeyData(); level.setBlock(pos, copyProperties(state, getStateOfSize(sbbe, size)), Block.UPDATE_ALL); if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; bogeyBlockEntity.setBogeyData(oldData); } - player.displayClientMessage(CreateLang.translateDirect("bogey.style.updated_style") - .append(": ").append(style.displayName), true); + player.sendOverlayMessage(CreateLang.translateDirect("bogey.style.updated_style") + .append(": ").append(style.displayName)); } else { CompoundTag oldData = sbbe.getBogeyData(); level.setBlock(pos, this.getStateOfSize(sbbe, size), Block.UPDATE_ALL); if (!(level.getBlockEntity(pos) instanceof AbstractBogeyBlockEntity bogeyBlockEntity)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; bogeyBlockEntity.setBogeyData(oldData); - player.displayClientMessage(CreateLang.translateDirect("bogey.style.updated_style_and_size") - .append(": ").append(style.displayName), true); + player.sendOverlayMessage(CreateLang.translateDirect("bogey.style.updated_style_and_size") + .append(": ").append(style.displayName)); } - return ItemInteractionResult.CONSUME; + return InteractionResult.CONSUME; } return onInteractWithBogey(state, level, pos, player, hand, hitResult); } // Allows for custom interactions with bogey block to be added simply - protected ItemInteractionResult onInteractWithBogey(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, + protected InteractionResult onInteractWithBogey(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } /** * If, instead of using the style-based cycling system you prefer to use separate blocks, return them from this method */ - protected List getBogeyBlockCycle() { + protected List getBogeyBlockCycle() { return BOGEYS; } @Override public BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { Block block = state.getBlock(); - List bogeyCycle = getBogeyBlockCycle(); + List bogeyCycle = getBogeyBlockCycle(); int indexOf = bogeyCycle.indexOf(RegisteredObjectsHelper.getKeyOrThrow(block)); if (indexOf == -1) return state; @@ -250,8 +256,10 @@ public BlockState getRotatedBlockState(BlockState state, Direction targetedFace) boolean trackAxisAlongFirstCoordinate = isTrackAxisAlongFirstCoordinate(state); while (index != indexOf) { - ResourceLocation id = bogeyCycle.get(index); - Block newBlock = BuiltInRegistries.BLOCK.get(id); + Identifier id = bogeyCycle.get(index); + Block newBlock = BuiltInRegistries.BLOCK.get(id) + .map(Holder::value) + .orElse(null); if (newBlock instanceof AbstractBogeyBlock bogey) { BlockState matchingBogey = bogey.getMatchingBogey(bogeyUpDirection, trackAxisAlongFirstCoordinate); if (matchingBogey != null) diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlockEntity.java index 4d42180a5d..6fceceb753 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/AbstractBogeyBlockEntity.java @@ -2,21 +2,22 @@ import static com.simibubi.create.content.trains.entity.CarriageBogey.UPSIDE_DOWN_KEY; -import net.minecraft.core.HolderLookup; - import org.jetbrains.annotations.NotNull; import com.simibubi.create.AllBogeyStyles; import com.simibubi.create.foundation.blockEntity.CachedRenderBBBlockEntity; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.AABB; public abstract class AbstractBogeyBlockEntity extends CachedRenderBBBlockEntity { @@ -39,23 +40,23 @@ public CompoundTag getBogeyData() { public void setBogeyData(@NotNull CompoundTag newData) { if (!newData.contains(BOGEY_STYLE_KEY)) { - ResourceLocation style = getDefaultStyle().id; - NBTHelper.writeResourceLocation(newData, BOGEY_STYLE_KEY, style); + Identifier style = getDefaultStyle().id; + NBTHelper.writeIdentifier(newData, BOGEY_STYLE_KEY, style); } this.bogeyData = newData; } public void setBogeyStyle(@NotNull BogeyStyle style) { - ResourceLocation location = style.id; + Identifier location = style.id; CompoundTag data = this.getBogeyData(); - NBTHelper.writeResourceLocation(data, BOGEY_STYLE_KEY, location); + NBTHelper.writeIdentifier(data, BOGEY_STYLE_KEY, location); markUpdated(); } @NotNull public BogeyStyle getStyle() { CompoundTag data = this.getBogeyData(); - ResourceLocation currentStyle = NBTHelper.readResourceLocation(data, BOGEY_STYLE_KEY); + Identifier currentStyle = NBTHelper.readIdentifier(data, BOGEY_STYLE_KEY); BogeyStyle style = AllBogeyStyles.BOGEY_STYLES.get(currentStyle); if (style == null) { setBogeyStyle(getDefaultStyle()); @@ -65,24 +66,27 @@ public BogeyStyle getStyle() { } @Override - protected void saveAdditional(@NotNull CompoundTag tag, HolderLookup.@NotNull Provider registries) { + protected void saveAdditional(@NotNull ValueOutput output) { + super.saveAdditional(output); + CompoundTag tag = new CompoundTag(); CompoundTag data = this.getBogeyData(); if (data != null) tag.put(BOGEY_DATA_KEY, data); // Now contains style - super.saveAdditional(tag, registries); + LegacyBlockEntityTagBridge.store(output, tag); } @Override - protected void loadAdditional(@NotNull CompoundTag tag, HolderLookup.@NotNull Provider registries) { + protected void loadAdditional(@NotNull ValueInput input) { + super.loadAdditional(input); + CompoundTag tag = LegacyBlockEntityTagBridge.read(input); if (tag.contains(BOGEY_DATA_KEY)) - this.bogeyData = tag.getCompound(BOGEY_DATA_KEY); + this.bogeyData = tag.getCompoundOrEmpty(BOGEY_DATA_KEY); else this.bogeyData = this.createBogeyData(); - super.loadAdditional(tag, registries); } private CompoundTag createBogeyData() { CompoundTag nbt = new CompoundTag(); - NBTHelper.writeResourceLocation(nbt, BOGEY_STYLE_KEY, getDefaultStyle().id); + NBTHelper.writeIdentifier(nbt, BOGEY_STYLE_KEY, getDefaultStyle().id); boolean upsideDown = false; if (getBlockState().getBlock() instanceof AbstractBogeyBlock bogeyBlock) upsideDown = bogeyBlock.isUpsideDown(getBlockState()); diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyBlockEntityRenderer.java b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyBlockEntityRenderer.java index 77e373ad6e..37103054f5 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyBlockEntityRenderer.java @@ -6,7 +6,7 @@ import com.mojang.math.Axis; import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyRenderer.java b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyRenderer.java index 9afce4cb67..c71442c1a9 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyRenderer.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.nbt.CompoundTag; public interface BogeyRenderer { diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/BogeySizes.java b/src/main/java/com/simibubi/create/content/trains/bogey/BogeySizes.java index 879aec548e..75674abf5a 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/BogeySizes.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/BogeySizes.java @@ -12,14 +12,14 @@ import com.simibubi.create.Create; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public final class BogeySizes { - private static final Map BOGEY_SIZES = new HashMap<>(); + private static final Map BOGEY_SIZES = new HashMap<>(); private static final List SORTED_INCREASING = new ArrayList<>(); private static final List SORTED_DECREASING = new ArrayList<>(); @UnmodifiableView - private static final Map BOGEY_SIZES_VIEW = Collections.unmodifiableMap(BOGEY_SIZES); + private static final Map BOGEY_SIZES_VIEW = Collections.unmodifiableMap(BOGEY_SIZES); @UnmodifiableView private static final List SORTED_INCREASING_VIEW = Collections.unmodifiableList(SORTED_INCREASING); @UnmodifiableView @@ -37,7 +37,7 @@ private BogeySizes() { } public static void register(BogeySize size) { - ResourceLocation id = size.id(); + Identifier id = size.id(); if (BOGEY_SIZES.containsKey(id)) { throw new IllegalArgumentException(); } @@ -50,7 +50,7 @@ public static void register(BogeySize size) { } @UnmodifiableView - public static Map all() { + public static Map all() { return BOGEY_SIZES_VIEW; } @@ -68,7 +68,7 @@ public static List allSortedDecreasing() { public static void init() { } - public record BogeySize(ResourceLocation id, float wheelRadius) { + public record BogeySize(Identifier id, float wheelRadius) { public BogeySize nextBySize() { List values = allSortedIncreasing(); int ordinal = values.indexOf(this); diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyStyle.java b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyStyle.java index 7931d823f7..e04f093d50 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/BogeyStyle.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/BogeyStyle.java @@ -15,20 +15,19 @@ import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.api.visualization.VisualizationContext; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.sounds.SoundEvent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class BogeyStyle { - public final ResourceLocation id; - public final ResourceLocation cycleGroup; + public final Identifier id; + public final Identifier cycleGroup; public final Component displayName; public final Supplier soundEvent; public final ParticleOptions contactParticle; @@ -36,10 +35,9 @@ public class BogeyStyle { public final CompoundTag defaultData; private final Map>> sizes; - @OnlyIn(Dist.CLIENT) private Map sizeRenderers; - public BogeyStyle(ResourceLocation id, ResourceLocation cycleGroup, Component displayName, + public BogeyStyle(Identifier id, Identifier cycleGroup, Component displayName, Supplier soundEvent, ParticleOptions contactParticle, ParticleOptions smokeParticle, CompoundTag defaultData, Map>> sizes, Map>> sizeRenderers) { @@ -60,7 +58,7 @@ public BogeyStyle(ResourceLocation id, ResourceLocation cycleGroup, Component di }); } - public Map getCycleGroup() { + public Map getCycleGroup() { return AllBogeyStyles.getCycleGroup(cycleGroup); } @@ -81,7 +79,6 @@ public AbstractBogeyBlock getNextBlock(BogeySizes.BogeySize currentSize) { .orElse((AbstractBogeyBlock) getBlockForSize(currentSize)); } - @OnlyIn(Dist.CLIENT) public void render(BogeySize size, float partialTick, PoseStack poseStack, MultiBufferSource buffers, int light, int overlay, float wheelAngle, @Nullable CompoundTag bogeyData, boolean inContraption) { if (bogeyData == null) bogeyData = new CompoundTag(); @@ -94,7 +91,6 @@ public void render(BogeySize size, float partialTick, PoseStack poseStack, Multi } } - @OnlyIn(Dist.CLIENT) @Nullable public BogeyVisual createVisual(BogeySize size, VisualizationContext ctx, float partialTick, boolean inContraption) { SizeRenderer renderer = sizeRenderers.get(size); @@ -104,13 +100,12 @@ public BogeyVisual createVisual(BogeySize size, VisualizationContext ctx, float return null; } - @OnlyIn(Dist.CLIENT) public record SizeRenderer(BogeyRenderer renderer, BogeyVisualizer visualizer) { } public static class Builder { - protected final ResourceLocation id; - protected final ResourceLocation cycleGroup; + protected final Identifier id; + protected final Identifier cycleGroup; protected final Map>> sizes = new HashMap<>(); protected Component displayName = CreateLang.translateDirect("bogey.style.invalid"); @@ -122,7 +117,7 @@ public static class Builder { protected final Map>> sizeRenderers = new HashMap<>(); - public Builder(ResourceLocation id, ResourceLocation cycleGroup) { + public Builder(Identifier id, Identifier cycleGroup) { this.id = id; this.cycleGroup = cycleGroup; } diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java index b03474253a..a26ec9aebb 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyBlock.java @@ -51,8 +51,7 @@ public BogeyStyle getDefaultStyle() { } @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, LevelReader level, BlockPos pos, - Player player) { + public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state, boolean includeData, Player player) { return AllBlocks.RAILWAY_CASING.asStack(); } diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyRenderer.java b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyRenderer.java index 0103b190b0..2de329c20d 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyRenderer.java @@ -7,12 +7,12 @@ import com.simibubi.create.AllSpriteShifts; import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; @@ -21,7 +21,7 @@ public class StandardBogeyRenderer implements BogeyRenderer { @Override public void render(CompoundTag bogeyData, float wheelAngle, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int light, int overlay, boolean inContraption) { - VertexConsumer buffer = bufferSource.getBuffer(RenderType.cutoutMipped()); + VertexConsumer buffer = bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); SuperByteBuffer shaft = CachedBuffers.block(AllBlocks.SHAFT.getDefaultState() .setValue(ShaftBlock.AXIS, Direction.Axis.Z)); @@ -41,7 +41,7 @@ public static class Small extends StandardBogeyRenderer { public void render(CompoundTag bogeyData, float wheelAngle, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int light, int overlay, boolean inContraption) { super.render(bogeyData, wheelAngle, partialTick, poseStack, bufferSource, light, overlay, inContraption); - VertexConsumer buffer = bufferSource.getBuffer(RenderType.cutoutMipped()); + VertexConsumer buffer = bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); CachedBuffers.partial(AllPartialModels.BOGEY_FRAME, Blocks.AIR.defaultBlockState()) .scale(1 - 1 / 512f) @@ -68,7 +68,7 @@ public static class Large extends StandardBogeyRenderer { public void render(CompoundTag bogeyData, float wheelAngle, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int light, int overlay, boolean inContraption) { super.render(bogeyData, wheelAngle, partialTick, poseStack, bufferSource, light, overlay, inContraption); - VertexConsumer buffer = bufferSource.getBuffer(RenderType.cutoutMipped()); + VertexConsumer buffer = bufferSource.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); SuperByteBuffer secondaryShaft = CachedBuffers.block(AllBlocks.SHAFT.getDefaultState() .setValue(ShaftBlock.AXIS, Direction.Axis.X)); diff --git a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyVisual.java b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyVisual.java index 6f0845f3f3..d83f3ad4d1 100644 --- a/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyVisual.java +++ b/src/main/java/com/simibubi/create/content/trains/bogey/StandardBogeyVisual.java @@ -16,7 +16,7 @@ import dev.engine_room.flywheel.lib.instance.InstanceTypes; import dev.engine_room.flywheel.lib.instance.TransformedInstance; import dev.engine_room.flywheel.lib.model.Models; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlock.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlock.java index 168f9b9021..a06b0b4489 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlock.java @@ -15,11 +15,10 @@ import com.simibubi.create.content.kinetics.simpleRelays.ICogWheel; import com.simibubi.create.foundation.block.IBE; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementHelpers; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementHelpers; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -32,7 +31,7 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.DyeColor; @@ -42,6 +41,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -115,11 +116,11 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); + IPlacementHelper placementHelper = PLACEMENT_HELPER; if (placementHelper.matchesItem(stack)) return placementHelper.getOffset(player, level, state, pos, hitResult) .placeInWorld(level, (BlockItem) stack.getItem(), player, hand, hitResult); @@ -127,32 +128,32 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev FlapDisplayBlockEntity flapBE = getBlockEntity(level, pos); if (flapBE == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; flapBE = flapBE.getController(); if (flapBE == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; double yCoord = hitResult.getLocation() .add(Vec3.atLowerCornerOf(hitResult.getDirection() .getOpposite() - .getNormal()) + .getUnitVec3i()) .scale(.125f)).y; int lineIndex = flapBE.getLineIndexAt(yCoord); if (stack.isEmpty()) { if (!flapBE.isSpeedRequirementFulfilled()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; flapBE.applyTextManually(lineIndex, null); - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } if (stack.getItem() == Items.GLOW_INK_SAC) { - if (!level.isClientSide) { + if (!level.isClientSide()) { level.playSound(null, pos, SoundEvents.INK_SAC_USE, SoundSource.BLOCKS, 1.0F, 1.0F); flapBE.setGlowing(lineIndex); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } boolean display = @@ -160,11 +161,11 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev DyeColor dye = DyeColor.getColor(stack); if (!display && dye == null) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (dye == null && !flapBE.isSpeedRequirementFulfilled()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + return InteractionResult.TRY_WITH_EMPTY_HAND; + if (level.isClientSide()) + return InteractionResult.SUCCESS; Component customName = stack.get(DataComponents.CUSTOM_NAME); @@ -178,7 +179,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev flapBE.applyTextManually(line++, Component.literal(string)); } } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } flapBE.applyTextManually(lineIndex, customName); @@ -188,7 +189,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev flapBE.setColour(lineIndex, dye); } - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } @Override @@ -273,15 +274,14 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public BlockState updateShape(BlockState state, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - return updatedShapeInner(state, pDirection, pNeighborState, pLevel, pCurrentPos); + public BlockState updateShape(BlockState state, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + return updatedShapeInner(state, pDirection, pNeighborState, ticks, pLevel, pCurrentPos); } private BlockState updatedShapeInner(BlockState state, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos) { + ScheduledTickAccess ticks, LevelReader pLevel, BlockPos pCurrentPos) { if (state.getValue(BlockStateProperties.WATERLOGGED)) - pLevel.scheduleTick(pCurrentPos, Fluids.WATER, Fluids.WATER.getTickDelay(pLevel)); + ticks.scheduleTick(pCurrentPos, Fluids.WATER, Fluids.WATER.getTickDelay(pLevel)); if (!canConnect(state, pNeighborState)) return setConnection(state, pDirection, false); if (pDirection.getAxis() == getConnectionAxis(state)) @@ -318,9 +318,9 @@ public static BlockState setConnection(BlockState state, Direction side, boolean } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - super.onRemove(pState, pLevel, pPos, pNewState, pIsMoving); - if (pIsMoving || pNewState.getBlock() == this) + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, boolean pIsMoving) { + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pIsMoving); + if (pIsMoving) return; for (Direction d : Iterate.directionsInAxis(getConnectionAxis(pState))) { BlockPos relative = pPos.relative(d); @@ -331,10 +331,9 @@ public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState } } - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); + private static final IPlacementHelper PLACEMENT_HELPER = PlacementHelpers.register(new PlacementHelper()); - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { + private static class PlacementHelper implements IPlacementHelper { @Override public Predicate getItemPredicate() { return AllBlocks.DISPLAY_BOARD::isIn; diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java index f23faf0ced..bf92e5763e 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayBlockEntity.java @@ -10,7 +10,7 @@ import com.simibubi.create.foundation.utility.DyeHelper; import com.simibubi.create.foundation.utility.DynamicComponent; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -61,7 +61,7 @@ public void lazyTick() { } public void updateControllerStatus() { - if (level.isClientSide) + if (level.isClientSide()) return; BlockState blockState = getBlockState(); @@ -108,13 +108,13 @@ public void updateControllerStatus() { public void tick() { super.tick(); isRunning = super.isSpeedRequirementFulfilled(); - if ((!level.isClientSide || !isRunning) && !isVirtual()) + if ((!level.isClientSide() || !isRunning) && !isVirtual()) return; int activeFlaps = 0; boolean instant = Math.abs(getSpeed()) > 128; for (FlapDisplayLayout line : lines) for (FlapDisplaySection section : line.getSections()) - activeFlaps += section.tick(instant, level.random); + activeFlaps += section.tick(instant, level.getRandom()); if (activeFlaps == 0) return; @@ -227,9 +227,9 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c int prevX = xSize; int prevY = ySize; - isController = tag.getBoolean("Controller"); - xSize = tag.getInt("XSize"); - ySize = tag.getInt("YSize"); + isController = tag.getBooleanOr("Controller", false); + xSize = tag.getIntOr("XSize", 1); + ySize = tag.getIntOr("YSize", 1); manualLines = new boolean[ySize * 2]; for (int i = 0; i < ySize * 2; i++) @@ -251,7 +251,7 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c List lines = getLines(); for (int i = 0; i < lines.size(); i++) lines.get(i) - .read(tag.getCompound("Display" + i), registries); + .read(tag.getCompoundOrEmpty("Display" + i), registries); } public int getLineIndexAt(double yCoord) { @@ -302,7 +302,7 @@ protected AABB createRenderBoundingBox() { if (!isController) return aabb; Vec3i normal = getDirection().getClockWise() - .getNormal(); + .getUnitVec3i(); return aabb.expandTowards(normal.getX() * xSize, -ySize, normal.getZ() * xSize); } diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayLayout.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayLayout.java index 8d8aec66d1..4775d695b2 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayLayout.java +++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayLayout.java @@ -5,7 +5,7 @@ import org.apache.commons.lang3.mutable.MutableInt; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -43,8 +43,8 @@ public CompoundTag write(HolderLookup.Provider registries) { public void read(CompoundTag tag, HolderLookup.Provider registries) { String prevKey = layoutKey; - layoutKey = tag.getString("Key"); - ListTag sectionsTag = tag.getList("Sections", Tag.TAG_COMPOUND); + layoutKey = tag.getStringOr("Key", "Default"); + ListTag sectionsTag = tag.getListOrEmpty("Sections"); if (!prevKey.equals(layoutKey)) { sections = NBTHelper.readCompoundList(sectionsTag, i -> FlapDisplaySection.load(i, registries)); diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayRenderer.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayRenderer.java index 432bd866b7..090c7455a4 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplayRenderer.java @@ -2,7 +2,7 @@ import java.util.List; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import org.joml.Matrix4f; import com.mojang.blaze3d.font.GlyphInfo; @@ -13,17 +13,17 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.font.FontSet; import net.minecraft.client.gui.font.glyphs.BakedGlyph; import net.minecraft.client.gui.font.glyphs.EmptyGlyph; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.MultiBufferSource.BufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource.BufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.Vec3i; import net.minecraft.network.chat.Style; @@ -34,7 +34,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class FlapDisplayRenderer extends KineticBlockEntityRenderer { @@ -47,9 +46,6 @@ protected void renderSafe(FlapDisplayBlockEntity be, float partialTicks, PoseSta int light, int overlay) { super.renderSafe(be, partialTicks, ms, buffer, light, overlay); - Font fontRenderer = Minecraft.getInstance().font; - FontSet fontSet = fontRenderer.getFontSet(Style.DEFAULT_FONT); - float scale = 1 / 32f; if (!be.isController) @@ -88,18 +84,13 @@ protected void renderSafe(FlapDisplayBlockEntity be, float partialTicks, PoseSta for (int i = 0; i < line.size(); i++) { FlapDisplaySection section = line.get(i); renderOutput.nextSection(section); - int ticks = AnimationTickHolder.getTicks(be.getLevel()); + int ticks = AnimationTickHolder.getTicks(); String text = section.renderCharsIndividually() || !section.spinning[0] ? section.text : section.cyclingOptions[((ticks / 3) + i * 13) % section.cyclingOptions.length]; StringDecomposer.iterateFormatted(text, Style.EMPTY, renderOutput); ms.translate(section.size + (section.hasGap ? 8 : 1), 0, 0); } - if (buffer instanceof BufferSource bs) { - BakedGlyph texturedglyph = fontSet.whiteGlyph(); - bs.endBatch(texturedglyph.renderType(Font.DisplayMode.NORMAL)); - } - ms.popPose(); ms.translate(0, 16, 0); } @@ -107,7 +98,6 @@ protected void renderSafe(FlapDisplayBlockEntity be, float partialTicks, PoseSta ms.popPose(); } - @OnlyIn(Dist.CLIENT) static class FlapDisplayRenderOutput implements FormattedCharSink { final MultiBufferSource bufferSource; @@ -141,10 +131,11 @@ public void nextSection(FlapDisplaySection section) { } public boolean accept(int charIndex, Style style, int glyph) { - FontSet fontset = getFontSet(); - int ticks = paused ? 0 : AnimationTickHolder.getTicks(level); - float time = paused ? 0 : AnimationTickHolder.getRenderTime(level); + int ticks = paused ? 0 : AnimationTickHolder.getTicks(); + float time = paused ? 0 : AnimationTickHolder.getRenderTime(); float dim = 1; + float standardWidth = section.wideFlaps ? FlapDisplaySection.WIDE_MONOSPACE : FlapDisplaySection.MONOSPACE; + float glyphWidth = standardWidth; if (section.renderCharsIndividually() && section.spinning[Math.min(charIndex, section.spinning.length)]) { float speed = section.spinningTicks > 5 && section.spinningTicks < 20 ? 1.75f : 2.5f; @@ -155,9 +146,6 @@ public boolean accept(int charIndex, Style style, int glyph) { dim = 0.75f; } - GlyphInfo glyphinfo = fontset.getGlyphInfo(glyph, false); - float glyphWidth = glyphinfo.getAdvance(false); - if (!section.renderCharsIndividually() && section.spinning[0]) { glyph = ticks % 3 == 0 ? glyphWidth == 6 ? '-' : glyphWidth == 1 ? '\'' : glyph : glyph; glyph = ticks % 3 == 2 ? glyphWidth == 6 ? '_' : glyphWidth == 1 ? '.' : glyph : glyph; @@ -165,8 +153,6 @@ public boolean accept(int charIndex, Style style, int glyph) { dim = 0.75f; } - BakedGlyph bakedglyph = - style.isObfuscated() && glyph != 32 ? fontset.getRandomGlyph(glyphinfo) : fontset.getGlyph(glyph); TextColor textcolor = style.getColor(); float red = this.r * dim; @@ -180,15 +166,10 @@ public boolean accept(int charIndex, Style style, int glyph) { blue = (i & 255) / 255f; } - float standardWidth = section.wideFlaps ? FlapDisplaySection.WIDE_MONOSPACE : FlapDisplaySection.MONOSPACE; - if (section.renderCharsIndividually()) x += (standardWidth - glyphWidth) / 2f; - if (isNotEmpty(bakedglyph)) { - VertexConsumer vertexconsumer = bufferSource.getBuffer(renderTypeOf(bakedglyph)); - bakedglyph.render(style.isItalic(), x, 0, pose, vertexconsumer, red, green, blue, a, light); - } + // TODO 26.2: Rebuild flap text submission on the new Font render-state API. if (section.renderCharsIndividually()) x += standardWidth - (standardWidth - glyphWidth) / 2f; @@ -207,24 +188,19 @@ public float finish(int bgColor) { float g = (bgColor >> 8 & 255) / 255f; float b = (bgColor & 255) / 255f; - BakedGlyph bakedglyph = getFontSet().whiteGlyph(); - VertexConsumer vertexconsumer = bufferSource.getBuffer(renderTypeOf(bakedglyph)); - bakedglyph.renderEffect(new BakedGlyph.Effect(-1f, 9f, section.size, -2f, 0.01f, r, g, b, a), this.pose, - vertexconsumer, light); - return x; } private FontSet getFontSet() { - return Minecraft.getInstance().font.getFontSet(Style.DEFAULT_FONT); + return null; } private RenderType renderTypeOf(BakedGlyph bakedglyph) { - return bakedglyph.renderType(Font.DisplayMode.NORMAL); + return null; } private boolean isNotEmpty(BakedGlyph bakedglyph) { - return !(bakedglyph instanceof EmptyGlyph); + return false; } } @@ -236,8 +212,8 @@ protected SuperByteBuffer getRotatedModel(FlapDisplayBlockEntity be, BlockState } @Override - public boolean shouldRenderOffScreen(FlapDisplayBlockEntity be) { - return be.isController; + public boolean shouldRenderOffScreen() { + return true; } } diff --git a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplaySection.java b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplaySection.java index 1bf338c81a..d035c99ece 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/FlapDisplaySection.java +++ b/src/main/java/com/simibubi/create/content/trains/display/FlapDisplaySection.java @@ -6,8 +6,9 @@ import com.google.common.base.Strings; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -132,7 +133,7 @@ public CompoundTag write(HolderLookup.Provider registries) { if (wideFlaps) NBTHelper.putMarker(tag, "Wide"); if (component != null) - tag.putString("Text", Component.Serializer.toJson(component, registries)); + tag.putString("Text", LegacyComponentSerializationBridge.toJson(component, registries)); if (sendTransition) NBTHelper.putMarker(tag, "Transition"); sendTransition = false; @@ -140,8 +141,8 @@ public CompoundTag write(HolderLookup.Provider registries) { } public static FlapDisplaySection load(CompoundTag tag, HolderLookup.Provider registries) { - float width = tag.getFloat("Width"); - String cycle = tag.getString("Cycle"); + float width = tag.getFloatOr("Width", 0); + String cycle = tag.getStringOr("Cycle", "alphabet"); boolean singleFlap = tag.contains("SingleFlap"); boolean hasGap = tag.contains("Gap"); @@ -153,18 +154,18 @@ public static FlapDisplaySection load(CompoundTag tag, HolderLookup.Provider reg if (!tag.contains("Text")) return section; - section.component = Component.Serializer.fromJson(tag.getString("Text"), registries); - section.refresh(tag.getBoolean("Transition")); + section.component = LegacyComponentSerializationBridge.fromJson(tag.getStringOr("Text", ""), registries); + section.refresh(tag.getBooleanOr("Transition", false)); return section; } public void update(CompoundTag tag, HolderLookup.Provider registries) { - String text = tag.getString("Text"); + String text = tag.getStringOr("Text", ""); if (!text.isEmpty()) - component = Component.Serializer.fromJson(text, registries); + component = LegacyComponentSerializationBridge.fromJson(text, registries); if (cyclingOptions == null) cyclingOptions = getFlapCycle(cycle); - refresh(tag.getBoolean("Transition")); + refresh(tag.getBooleanOr("Transition", false)); } public boolean renderCharsIndividually() { diff --git a/src/main/java/com/simibubi/create/content/trains/display/GlobalTrainDisplayData.java b/src/main/java/com/simibubi/create/content/trains/display/GlobalTrainDisplayData.java index baa05e1375..d330969f73 100644 --- a/src/main/java/com/simibubi/create/content/trains/display/GlobalTrainDisplayData.java +++ b/src/main/java/com/simibubi/create/content/trains/display/GlobalTrainDisplayData.java @@ -9,7 +9,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.trains.entity.Train; -import net.createmod.catnip.data.Glob; +import net.createmod.catnip.api.data.Glob; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/AddTrainPacket.java b/src/main/java/com/simibubi/create/content/trains/entity/AddTrainPacket.java index beb01e0d14..ef6de2fdbb 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/AddTrainPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/AddTrainPacket.java @@ -4,18 +4,16 @@ import com.simibubi.create.CreateClient; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record AddTrainPacket(Train train) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = Train.STREAM_CODEC.map(AddTrainPacket::new, AddTrainPacket::train); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { CreateClient.RAILWAYS.trains.put(train.id, train); } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/ArrivalSoundQueue.java b/src/main/java/com/simibubi/create/content/trains/entity/ArrivalSoundQueue.java index a515d7ff16..76760deb9e 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/ArrivalSoundQueue.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/ArrivalSoundQueue.java @@ -13,8 +13,8 @@ import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock; import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock.WhistleSize; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtUtils; @@ -76,7 +76,7 @@ public Pair getFirstWhistle(CarriageContraptionEntity entity) continue; BlockState state = info.state(); if (state.getBlock() instanceof WhistleBlock && info.nbt() != null) { - int pitch = info.nbt().getInt("Pitch"); + int pitch = info.nbt().getIntOr("Pitch", 0); WhistleSize size = state.getValue(WhistleBlock.SIZE); return Pair.of(size == WhistleSize.LARGE, (size == WhistleSize.SMALL ? 12 : 0) - pitch); } @@ -91,17 +91,17 @@ public void serialize(CompoundTag tagIn) { tag.put("Sources", NBTHelper.writeCompoundList(sources.entries(), e -> { CompoundTag c = new CompoundTag(); c.putInt("Tick", e.getKey()); - c.put("Pos", NbtUtils.writeBlockPos(e.getValue())); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(e.getValue())); return c; })); tagIn.put("SoundQueue", tag); } public void deserialize(CompoundTag tagIn) { - CompoundTag tag = tagIn.getCompound("SoundQueue"); - offset = tag.getInt("Offset"); - NBTHelper.iterateCompoundList(tag.getList("Sources", Tag.TAG_COMPOUND), - c -> add(c.getInt("Tick"), NBTHelper.readBlockPos(c, "Pos"))); + CompoundTag tag = tagIn.getCompoundOrEmpty("SoundQueue"); + offset = tag.getIntOr("Offset", 0); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("Sources"), + c -> add(c.getIntOr("Tick", 0), NBTHelper.readBlockPos(c, "Pos"))); } public void add(int offset, BlockPos localPos) { @@ -139,7 +139,7 @@ public static void play(CarriageContraptionEntity entity, StructureBlockInfo inf } if (state.getBlock() instanceof WhistleBlock && info.nbt() != null) { - int pitch = info.nbt().getInt("Pitch"); + int pitch = info.nbt().getIntOr("Pitch", 0); WhistleSize size = state.getValue(WhistleBlock.SIZE); float f = (float) Math.pow(2, ((size == WhistleSize.SMALL ? 12 : 0) - pitch) / 12.0); playSimple(entity, diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Carriage.java b/src/main/java/com/simibubi/create/content/trains/entity/Carriage.java index 7f8160be11..f9c878dde8 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Carriage.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Carriage.java @@ -26,14 +26,16 @@ import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.graph.TrackNodeLocation; import com.simibubi.create.foundation.advancement.AllAdvancements; - -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; + +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -47,13 +49,11 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class Carriage { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -476,15 +476,15 @@ public CompoundTag write(DimensionPalette dimensions, HolderLookup.Provider regi CarriageContraptionEntity entity = dimensionalCarriageEntity.entity.get(); if (entity == null) continue; - serialize(entity); + serialize(entity, registries); Contraption contraption = entity.getContraption(); if (contraption == null) continue; Map mapping = contraption.getSeatMapping(); for (Entity passenger : entity.getPassengers()) if (mapping.containsKey(passenger.getUUID())) { - CompoundTag data = new CompoundTag(); - if (passenger.saveAsPassenger(data)) + CompoundTag data = LegacyBlockEntityTagBridge.saveAsPassenger(passenger, registries); + if (!data.isEmpty()) passengerMap.put(mapping.get(passenger.getUUID()), data); } } @@ -506,34 +506,34 @@ public CompoundTag write(DimensionPalette dimensions, HolderLookup.Provider regi return tag; } - private void serialize(Entity entity) { - serialisedEntity = new CompoundTag(); - entity.saveAsPassenger(serialisedEntity); + private void serialize(Entity entity, HolderLookup.Provider registries) { + serialisedEntity = LegacyBlockEntityTagBridge.saveAsPassenger(entity, registries); serialisedEntity.remove("Passengers"); - serialisedEntity.getCompound("Contraption") + serialisedEntity.getCompoundOrEmpty("Contraption") .remove("Passengers"); } public static Carriage read(CompoundTag tag, HolderLookup.Provider registries, TrackGraph graph, DimensionPalette dimensions) { - CarriageBogey bogey1 = CarriageBogey.read(tag.getCompound("FirstBogey"), graph, dimensions); + CarriageBogey bogey1 = CarriageBogey.read(tag.getCompoundOrEmpty("FirstBogey"), graph, dimensions); CarriageBogey bogey2 = - tag.contains("SecondBogey") ? CarriageBogey.read(tag.getCompound("SecondBogey"), graph, dimensions) : null; + tag.contains("SecondBogey") ? CarriageBogey.read(tag.getCompoundOrEmpty("SecondBogey"), graph, dimensions) : null; - Carriage carriage = new Carriage(bogey1, bogey2, tag.getInt("Spacing")); + Carriage carriage = new Carriage(bogey1, bogey2, tag.getIntOr("Spacing", 0)); - carriage.stalled = tag.getBoolean("Stalled"); - carriage.presentConductors = Couple.create(tag.getBoolean("FrontConductor"), tag.getBoolean("BackConductor")); - carriage.serialisedEntity = tag.getCompound("Entity") + carriage.stalled = tag.getBooleanOr("Stalled", false); + carriage.presentConductors = + Couple.create(tag.getBooleanOr("FrontConductor", false), tag.getBooleanOr("BackConductor", false)); + carriage.serialisedEntity = tag.getCompoundOrEmpty("Entity") .copy(); - NBTHelper.iterateCompoundList(tag.getList("EntityPositioning", Tag.TAG_COMPOUND), - c -> carriage.getDimensional(dimensions.decode(c.getInt("Dim"))) + NBTHelper.iterateCompoundList(tag.getListOrEmpty("EntityPositioning"), + c -> carriage.getDimensional(dimensions.decode(c.getIntOr("Dim", -1))) .read(c, registries)); - CompoundTag passengersTag = tag.getCompound("Passengers"); - passengersTag.getAllKeys() + CompoundTag passengersTag = tag.getCompoundOrEmpty("Passengers"); + passengersTag.keySet() .forEach(key -> carriage.serialisedPassengers.put(Integer.valueOf(key.substring(4)), - passengersTag.getCompound(key))); + passengersTag.getCompoundOrEmpty(key))); return carriage; } @@ -660,17 +660,17 @@ public CompoundTag write(HolderLookup.Provider registries) { } public void read(CompoundTag tag, HolderLookup.Provider registries) { - cutoff = tag.getFloat("Cutoff"); - discardTicks = tag.getInt("DiscardTicks"); + cutoff = tag.getFloatOr("Cutoff", 0); + discardTicks = tag.getIntOr("DiscardTicks", 0); storage.read(tag, registries, false, null); if (tag.contains("Pivot")) - pivot = TrackNodeLocation.read(tag.getCompound("Pivot"), null); + pivot = TrackNodeLocation.read(tag.getCompoundOrEmpty("Pivot"), null); if (positionAnchor != null) return; if (tag.contains("PositionAnchor")) - positionAnchor = VecHelper.readNBT(tag.getList("PositionAnchor", Tag.TAG_DOUBLE)); + positionAnchor = VecHelper.readNBT(tag.getListOrEmpty("PositionAnchor")); if (tag.contains("RotationAnchors")) - rotationAnchors = Couple.deserializeEach(tag.getList("RotationAnchors", Tag.TAG_COMPOUND), + rotationAnchors = Couple.deserializeEach(tag.getListOrEmpty("RotationAnchors"), VecHelper::readNBTCompound); } @@ -726,15 +726,14 @@ public void updatePassengerLoadout() { if (tag.contains("PlayerPassenger")) { passenger = sLevel.getServer() .getPlayerList() - .getPlayer(tag.getUUID("PlayerPassenger")); + .getPlayer(LegacyNbtUtilsBridge.getUUID(tag, "PlayerPassenger")); } else { - passenger = EntityType.loadEntityRecursive(tag, entity.level(), e -> { - e.moveTo(positionAnchor); - return e; - }); - if (passenger != null) + passenger = LegacyBlockEntityTagBridge.loadEntityRecursive(tag, entity.level()); + if (passenger != null) { + passenger.snapTo(positionAnchor); sLevel.tryAddFreshEntityWithPassengers(passenger); + } } if (passenger != null) { @@ -765,9 +764,9 @@ public void updatePassengerLoadout() { continue; } - CompoundTag passengerData = new CompoundTag(); - passenger.saveAsPassenger(passengerData); - serialisedPassengers.put(seat, passengerData); + CompoundTag passengerData = LegacyBlockEntityTagBridge.saveAsPassenger(passenger, sLevel.registryAccess()); + if (!passengerData.isEmpty()) + serialisedPassengers.put(seat, passengerData); passenger.discard(); } @@ -780,7 +779,7 @@ private void dismountPlayer(ServerLevel sLevel, ServerPlayer sp, Integer seat, b } CompoundTag tag = new CompoundTag(); - tag.putUUID("PlayerPassenger", sp.getUUID()); + LegacyNbtUtilsBridge.putUUID(tag, "PlayerPassenger", sp.getUUID()); serialisedPassengers.put(seat, tag); sp.stopRiding(); sp.getPersistentData() @@ -798,7 +797,7 @@ private void dismountPlayer(ServerLevel sLevel, ServerPlayer sp, Integer seat, b continue; ServerLevel level = sLevel.getServer() .getLevel(other.getKey()); - sp.teleportTo(level, loc.x, loc.y, loc.z, sp.getYRot(), sp.getXRot()); + sp.teleportTo(level, loc.x, loc.y, loc.z, Set.of(), sp.getYRot(), sp.getXRot(), true); sp.setPortalCooldown(); AllAdvancements.TRAIN_PORTAL.awardTo(sp); } @@ -818,7 +817,6 @@ public void updateRenderedCutoff() { CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> invalidate(cce)); } - @OnlyIn(Dist.CLIENT) private void invalidate(CarriageContraptionEntity entity) { // Update the portal cutoff first to ensure it's reflected in the updated mesh. entity.updateRenderedPortalCutoff(); @@ -831,15 +829,14 @@ private void invalidate(CarriageContraptionEntity entity) { private void createEntity(Level level, boolean loadPassengers) { if (positionAnchor != null) serialisedEntity.put("Pos", VecHelper.writeNBT(positionAnchor)); - Entity entity = EntityType.create(serialisedEntity, level) - .orElse(null); + Entity entity = LegacyBlockEntityTagBridge.loadEntityRecursive(serialisedEntity, level); if (!(entity instanceof CarriageContraptionEntity cce)) { train.invalid = true; return; } - entity.moveTo(positionAnchor); + entity.snapTo(positionAnchor); this.entity = new WeakReference<>(cce); cce.setCarriage(Carriage.this); @@ -862,13 +859,14 @@ private void removeAndSaveEntity(CarriageContraptionEntity entity, boolean porta Integer seat = mapping.get(passenger.getUUID()); if (passenger instanceof ServerPlayer sp) { - dismountPlayer(sp.serverLevel(), sp, seat, portal); + dismountPlayer(sp.level(), sp, seat, portal); continue; } - CompoundTag passengerData = new CompoundTag(); - passenger.saveAsPassenger(passengerData); - serialisedPassengers.put(seat, passengerData); + CompoundTag passengerData = + LegacyBlockEntityTagBridge.saveAsPassenger(passenger, entity.level().registryAccess()); + if (!passengerData.isEmpty()) + serialisedPassengers.put(seat, passengerData); } } @@ -876,7 +874,7 @@ private void removeAndSaveEntity(CarriageContraptionEntity entity, boolean porta if (!(passenger instanceof Player)) passenger.discard(); - serialize(entity); + serialize(entity, entity.level().registryAccess()); entity.discard(); this.entity.clear(); } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageBogey.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageBogey.java index 296491b0e5..dd4658f2d1 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageBogey.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageBogey.java @@ -14,13 +14,13 @@ import com.simibubi.create.content.trains.graph.DimensionPalette; import com.simibubi.create.content.trains.graph.TrackGraph; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.Direction.Axis; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; @@ -29,7 +29,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -196,23 +196,27 @@ public CompoundTag write(DimensionPalette dimensions) { tag.put("Points", points.serializeEach(tp -> tp.write(dimensions))); tag.putBoolean("UpsideDown", upsideDown); bogeyData.putBoolean(UPSIDE_DOWN_KEY, upsideDown); - NBTHelper.writeResourceLocation(bogeyData, BOGEY_STYLE_KEY, getStyle().id); + NBTHelper.writeIdentifier(bogeyData, BOGEY_STYLE_KEY, getStyle().id); tag.put(BOGEY_DATA_KEY, bogeyData); return tag; } public static CarriageBogey read(CompoundTag tag, TrackGraph graph, DimensionPalette dimensions) { - ResourceLocation location = ResourceLocation.parse(tag.getString("Type")); - AbstractBogeyBlock type = (AbstractBogeyBlock) BuiltInRegistries.BLOCK.get(location); - boolean upsideDown = tag.getBoolean("UpsideDown"); - Couple points = Couple.deserializeEach(tag.getList("Points", Tag.TAG_COMPOUND), + Identifier location = Identifier.parse(tag.getStringOr("Type", "minecraft:air")); + AbstractBogeyBlock type = BuiltInRegistries.BLOCK.get(location) + .map(holder -> holder.value()) + .filter(AbstractBogeyBlock.class::isInstance) + .map(AbstractBogeyBlock.class::cast) + .orElseThrow(); + boolean upsideDown = tag.getBooleanOr("UpsideDown", false); + Couple points = Couple.deserializeEach(tag.getListOrEmpty("Points"), c -> TravellingPoint.read(c, graph, dimensions)); - CompoundTag data = tag.getCompound(AbstractBogeyBlockEntity.BOGEY_DATA_KEY); + CompoundTag data = tag.getCompoundOrEmpty(AbstractBogeyBlockEntity.BOGEY_DATA_KEY); return new CarriageBogey(type, upsideDown, data, points.getFirst(), points.getSecond()); } public BogeyStyle getStyle() { - ResourceLocation location = NBTHelper.readResourceLocation(this.bogeyData, BOGEY_STYLE_KEY); + Identifier location = NBTHelper.readIdentifier(this.bogeyData, BOGEY_STYLE_KEY); BogeyStyle style = AllBogeyStyles.BOGEY_STYLES.get(location); return style != null ? style : AllBogeyStyles.STANDARD; // just for safety } @@ -224,7 +228,7 @@ public BogeySize getSize() { private CompoundTag createBogeyData() { BogeyStyle style = type != null ? type.getDefaultStyle() : AllBogeyStyles.STANDARD; CompoundTag nbt = style.defaultData != null ? style.defaultData : new CompoundTag(); - NBTHelper.writeResourceLocation(nbt, BOGEY_STYLE_KEY, style.id); + NBTHelper.writeIdentifier(nbt, BOGEY_STYLE_KEY, style.id); nbt.putBoolean(UPSIDE_DOWN_KEY, isUpsideDown()); return nbt; } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java index 8052b213ba..82976b7509 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraption.java @@ -24,10 +24,10 @@ import com.simibubi.create.foundation.collision.CollisionList; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -196,7 +196,7 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke tag.putBoolean("BackBlazeConductor", blockConductors.getSecond()); ListTag list = NBTHelper.writeCompoundList(conductorSeats.entrySet(), e -> { CompoundTag compoundTag = new CompoundTag(); - compoundTag.put("Pos", NbtUtils.writeBlockPos(e.getKey())); + compoundTag.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(e.getKey())); compoundTag.putBoolean("Forward", e.getValue() .getFirst()); compoundTag.putBoolean("Backward", e.getValue() @@ -211,14 +211,15 @@ public CompoundTag writeNBT(HolderLookup.Provider registries, boolean spawnPacke @Override public void readNBT(Level world, CompoundTag nbt, boolean spawnData) { assemblyDirection = NBTHelper.readEnum(nbt, "AssemblyDirection", Direction.class); - forwardControls = nbt.getBoolean("FrontControls"); - backwardControls = nbt.getBoolean("BackControls"); + forwardControls = nbt.getBooleanOr("FrontControls", false); + backwardControls = nbt.getBooleanOr("BackControls", false); blockConductors = - Couple.create(nbt.getBoolean("FrontBlazeConductor"), nbt.getBoolean("BackBlazeConductor")); + Couple.create(nbt.getBooleanOr("FrontBlazeConductor", false), + nbt.getBooleanOr("BackBlazeConductor", false)); conductorSeats.clear(); - NBTHelper.iterateCompoundList(nbt.getList("ConductorSeats", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("ConductorSeats"), c -> conductorSeats.put(NBTHelper.readBlockPos(c, "Pos"), - Couple.create(c.getBoolean("Forward"), c.getBoolean("Backward")))); + Couple.create(c.getBooleanOr("Forward", false), c.getBooleanOr("Backward", false)))); soundQueue.deserialize(nbt); super.readNBT(world, nbt, spawnData); } @@ -341,7 +342,8 @@ public RenderedBlocks getRenderedBlocks() { if (withinVisible(pos)) { values.put(pos, info.state()); } else if (atSeam(pos)) { - values.put(pos, Blocks.PURPLE_STAINED_GLASS.defaultBlockState()); + values.put(pos, Blocks.STAINED_GLASS.purple() + .defaultBlockState()); } }); return new RenderedBlocks(pos -> values.getOrDefault(pos, Blocks.AIR.defaultBlockState()), values.keySet()); diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntity.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntity.java index ccfc49d79f..6ec2c29f06 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntity.java @@ -25,12 +25,13 @@ import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -54,14 +55,13 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class CarriageContraptionEntity extends OrientedContraptionEntity { private static final EntityDataAccessor CARRIAGE_DATA = SynchedEntityData.defineId(CarriageContraptionEntity.class, AllEntityDataSerializers.CARRIAGE_DATA); private static final EntityDataAccessor> TRACK_GRAPH = - SynchedEntityData.defineId(CarriageContraptionEntity.class, EntityDataSerializers.OPTIONAL_UUID); + SynchedEntityData.defineId(CarriageContraptionEntity.class, AllEntityDataSerializers.OPTIONAL_UUID); private static final EntityDataAccessor SCHEDULED = SynchedEntityData.defineId(CarriageContraptionEntity.class, EntityDataSerializers.BOOLEAN); @@ -81,9 +81,7 @@ public class CarriageContraptionEntity extends OrientedContraptionEntity { private Vec3 serverPrevPos; - @OnlyIn(Dist.CLIENT) public CarriageSounds sounds; - @OnlyIn(Dist.CLIENT) public CarriageParticles particles; public CarriageContraptionEntity(EntityType type, Level world) { @@ -91,11 +89,10 @@ public CarriageContraptionEntity(EntityType type, Level world) { validForRender = false; firstPositionUpdate = true; arrivalSoundTicks = Integer.MIN_VALUE; - derailParticleOffset = VecHelper.offsetRandomly(Vec3.ZERO, world.random, 1.5f) + derailParticleOffset = VecHelper.offsetRandomly(Vec3.ZERO, world.getRandom(), 1.5f) .multiply(1, .25f, 1); } - @Override public boolean isControlledByLocalInstance() { return true; } @@ -121,7 +118,7 @@ public void syncCarriage() { public void onSyncedDataUpdated(EntityDataAccessor key) { super.onSyncedDataUpdated(key); - if (!level().isClientSide) + if (!level().isClientSide()) return; bindCarriage(); @@ -216,7 +213,7 @@ protected void tickContraption() { return; if (carriage == null) { - if (level().isClientSide) + if (level().isClientSide()) bindCarriage(); else discard(); @@ -234,7 +231,7 @@ protected void tickContraption() { CarriageSyncData carriageData = getCarriageData(); - if (!level().isClientSide) { + if (!level().isClientSide()) { entityData.set(SCHEDULED, carriage.train.runtime.getSchedule() != null); @@ -468,15 +465,15 @@ public void onClientRemoval() { @Override protected void writeAdditional(CompoundTag compound, HolderLookup.Provider registries, boolean spawnPacket) { super.writeAdditional(compound, registries, spawnPacket); - compound.putUUID("TrainId", trainId); + LegacyNbtUtilsBridge.putUUID(compound, "TrainId", trainId); compound.putInt("CarriageIndex", carriageIndex); } @Override protected void readAdditional(CompoundTag compound, boolean spawnPacket) { super.readAdditional(compound, spawnPacket); - trainId = compound.getUUID("TrainId"); - carriageIndex = compound.getInt("CarriageIndex"); + trainId = LegacyNbtUtilsBridge.getUUID(compound, "TrainId"); + carriageIndex = compound.getIntOr("CarriageIndex", 0); if (spawnPacket) { xOld = getX(); yOld = getY(); @@ -550,7 +547,7 @@ public boolean control(BlockPos controlsLocalPos, Collection heldContro return false; if (carriage.train.derailed) return false; - if (level().isClientSide) + if (level().isClientSide()) return true; if (player.isSpectator()) return false; @@ -696,7 +693,7 @@ private void displayApproachStationMessage(Player player, GlobalStation station) private void cleanUpApproachStationMessage(Player player) { if (!stationMessage) return; - player.displayClientMessage(CommonComponents.EMPTY, true); + player.sendOverlayMessage(CommonComponents.EMPTY); stationMessage = false; } @@ -741,7 +738,6 @@ public void setCarriage(Carriage carriage) { dimensional.updateRenderedCutoff(); } - @OnlyIn(Dist.CLIENT) public void updateRenderedPortalCutoff() { if (carriage == null) return; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntityRenderer.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntityRenderer.java index 0b14d4463b..f05b147341 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntityRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageContraptionEntityRenderer.java @@ -5,8 +5,8 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.culling.Frustum; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.core.BlockPos; @@ -100,7 +100,7 @@ public static int getBogeyLightCoords(CarriageContraptionEntity entity, Carriage var lightPos = BlockPos.containing(anchorPosition == null ? entity.getLightProbePosition(partialTicks) : anchorPosition); - return LightTexture.pack(entity.level().getBrightness(LightLayer.BLOCK, lightPos), + return LightCoordsUtil.pack(entity.level().getBrightness(LightLayer.BLOCK, lightPos), entity.level().getBrightness(LightLayer.SKY, lightPos)); } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageCouplingRenderer.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageCouplingRenderer.java index 2299495cbd..cd459ebe40 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageCouplingRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageCouplingRenderer.java @@ -8,13 +8,13 @@ import com.simibubi.create.AllPartialModels; import com.simibubi.create.CreateClient; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; @@ -28,7 +28,7 @@ public class CarriageCouplingRenderer { public static void renderAll(PoseStack ms, MultiBufferSource buffer, Vec3 camera) { Collection trains = CreateClient.RAILWAYS.trains.values(); - VertexConsumer vb = buffer.getBuffer(RenderType.solid()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); BlockState air = Blocks.AIR.defaultBlockState(); float partialTicks = AnimationTickHolder.getPartialTicks(); Level level = Minecraft.getInstance().level; @@ -117,7 +117,7 @@ public static void renderAll(PoseStack ms, MultiBufferSource buffer, Vec3 camera public static int getPackedLightCoords(Entity pEntity, float pPartialTicks) { BlockPos blockpos = BlockPos.containing(pEntity.getLightProbePosition(pPartialTicks)); - return LightTexture.pack(getBlockLightLevel(pEntity, blockpos), getSkyLightLevel(pEntity, blockpos)); + return LightCoordsUtil.pack(getBlockLightLevel(pEntity, blockpos), getSkyLightLevel(pEntity, blockpos)); } protected static int getSkyLightLevel(Entity pEntity, BlockPos pPos) { diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageEntityHandler.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageEntityHandler.java index d3f5a2cbc4..b22690416f 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageEntityHandler.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageEntityHandler.java @@ -20,7 +20,7 @@ public static void onEntityEnterSection(EntityEvent.EnteringSection event) { return; SectionPos newPos = event.getNewPos(); Level level = entity.level(); - if (level.isClientSide) + if (level.isClientSide()) return; if (!isActiveChunk(level, newPos.center())) cce.leftTickingChunks = true; @@ -30,7 +30,7 @@ public static void validateCarriageEntity(CarriageContraptionEntity entity) { if (!entity.isAlive()) return; Level level = entity.level(); - if (level.isClientSide) + if (level.isClientSide()) return; if (!isActiveChunk(level, entity.blockPosition())) entity.leftTickingChunks = true; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageParticles.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageParticles.java index ae91071c10..5cf758782e 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageParticles.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageParticles.java @@ -2,10 +2,10 @@ import com.simibubi.create.content.trains.entity.Carriage.DimensionalCarriageEntity; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.client.Minecraft; import net.minecraft.core.Direction.Axis; import net.minecraft.util.RandomSource; @@ -32,14 +32,14 @@ public CarriageParticles(CarriageContraptionEntity entity) { public void tick(DimensionalCarriageEntity dce) { Minecraft mc = Minecraft.getInstance(); - Entity camEntity = mc.cameraEntity; + Entity camEntity = mc.getCameraEntity(); if (camEntity == null) return; Vec3 leadingAnchor = dce.leadingAnchor(); if (leadingAnchor == null || !leadingAnchor.closerThan(camEntity.position(), 64)) return; - RandomSource r = entity.level().random; + RandomSource r = entity.level().getRandom(); Vec3 contraptionMotion = entity.position() .subtract(entity.getPrevPositionVec()); double length = contraptionMotion.length(); diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageSounds.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageSounds.java index e9d472420f..154e0d5e41 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageSounds.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageSounds.java @@ -3,11 +3,11 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.AllSoundEvents.SoundEntry; import com.simibubi.create.content.trains.entity.Carriage.DimensionalCarriageEntity; -import com.simibubi.create.foundation.mixin.accessor.GuiAccessor; +import com.simibubi.create.foundation.mixin.accessor.HudAccessor; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Couple; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.SubtitleOverlay; import net.minecraft.client.resources.sounds.AbstractTickableSoundInstance; @@ -57,7 +57,7 @@ public CarriageSounds(CarriageContraptionEntity entity) { public void tick(DimensionalCarriageEntity dce) { Minecraft mc = Minecraft.getInstance(); - Entity camEntity = mc.cameraEntity; + Entity camEntity = mc.getCameraEntity(); if (camEntity == null) return; @@ -271,7 +271,7 @@ public void stop() { } static class LoopingSound extends AbstractTickableSoundInstance { - private static final SubtitleOverlay OVERLAY = ((GuiAccessor) Minecraft.getInstance().gui).create$getSubtitleOverlay(); + private static final SubtitleOverlay OVERLAY = ((HudAccessor) Minecraft.getInstance().gui.hud).create$getSubtitleOverlay(); private final boolean repeatSubtitle; private final WeighedSoundEvents weighedSoundEvents = this.resolve(Minecraft.getInstance().getSoundManager()); diff --git a/src/main/java/com/simibubi/create/content/trains/entity/CarriageSyncData.java b/src/main/java/com/simibubi/create/content/trains/entity/CarriageSyncData.java index 2ddab22bc2..120495400a 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/CarriageSyncData.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/CarriageSyncData.java @@ -19,10 +19,10 @@ import com.simibubi.create.content.trains.graph.TrackNode; import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java index b8efa5f75d..6d2f6fe038 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Navigation.java @@ -33,13 +33,14 @@ import com.simibubi.create.content.trains.signal.SignalEdgeGroup; import com.simibubi.create.content.trains.signal.TrackEdgePoint; import com.simibubi.create.content.trains.station.GlobalStation; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.content.trains.track.BezierConnection; import com.simibubi.create.content.trains.track.TrackMaterial; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.data.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; @@ -850,7 +851,7 @@ public CompoundTag write(DimensionPalette dimensions) { removeBrokenPathEntries(); - tag.putUUID("Destination", destination.id); + LegacyNbtUtilsBridge.putUUID(tag, "Destination", destination.id); tag.putDouble("DistanceToDestination", distanceToDestination); tag.putDouble("DistanceStartedAt", distanceStartedAt); tag.putBoolean("BehindTrain", destinationBehindTrain); @@ -863,7 +864,7 @@ public CompoundTag write(DimensionPalette dimensions) { })); if (waitingForSignal == null) return tag; - tag.putUUID("BlockingSignal", waitingForSignal.getFirst()); + LegacyNbtUtilsBridge.putUUID(tag, "BlockingSignal", waitingForSignal.getFirst()); tag.putBoolean("BlockingSignalSide", waitingForSignal.getSecond()); tag.putDouble("DistanceToSignal", distanceToSignal); tag.putInt("TicksWaitingForSignal", ticksWaitingForSignal); @@ -872,31 +873,32 @@ public CompoundTag write(DimensionPalette dimensions) { public void read(CompoundTag tag, TrackGraph graph, DimensionPalette dimensions) { destination = graph != null && tag.contains("Destination") - ? graph.getPoint(EdgePointType.STATION, tag.getUUID("Destination")) + ? graph.getPoint(EdgePointType.STATION, LegacyNbtUtilsBridge.getUUID(tag, "Destination")) : null; if (destination == null) return; - distanceToDestination = tag.getDouble("DistanceToDestination"); - distanceStartedAt = tag.getDouble("DistanceStartedAt"); - destinationBehindTrain = tag.getBoolean("BehindTrain"); - announceArrival = tag.getBoolean("AnnounceArrival"); + distanceToDestination = tag.getDoubleOr("DistanceToDestination", 0); + distanceStartedAt = tag.getDoubleOr("DistanceStartedAt", 0); + destinationBehindTrain = tag.getBooleanOr("BehindTrain", false); + announceArrival = tag.getBooleanOr("AnnounceArrival", false); currentPath.clear(); - NBTHelper.iterateCompoundList(tag.getList("Path", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(tag.getListOrEmpty("Path"), c -> currentPath.add(Couple - .deserializeEach(c.getList("Nodes", Tag.TAG_COMPOUND), c2 -> TrackNodeLocation.read(c2, dimensions)) + .deserializeEach(c.getListOrEmpty("Nodes"), c2 -> TrackNodeLocation.read(c2, dimensions)) .map(graph::locateNode))); removeBrokenPathEntries(); waitingForSignal = tag.contains("BlockingSignal") - ? Pair.of(tag.getUUID("BlockingSignal"), tag.getBoolean("BlockingSignalSide")) + ? Pair.of(LegacyNbtUtilsBridge.getUUID(tag, "BlockingSignal"), + tag.getBooleanOr("BlockingSignalSide", false)) : null; if (waitingForSignal == null) return; - distanceToSignal = tag.getDouble("DistanceToSignal"); - ticksWaitingForSignal = tag.getInt("TicksWaitingForSignal"); + distanceToSignal = tag.getDoubleOr("DistanceToSignal", 0); + ticksWaitingForSignal = tag.getIntOr("TicksWaitingForSignal", 0); } private void removeBrokenPathEntries() { diff --git a/src/main/java/com/simibubi/create/content/trains/entity/RemoveTrainPacket.java b/src/main/java/com/simibubi/create/content/trains/entity/RemoveTrainPacket.java index ccfb00562f..048f7ffdad 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/RemoveTrainPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/RemoveTrainPacket.java @@ -8,8 +8,7 @@ import io.netty.buffer.ByteBuf; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.codec.StreamCodec; @@ -21,8 +20,7 @@ public RemoveTrainPacket(Train train) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { CreateClient.RAILWAYS.trains.remove(this.id); } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/Train.java b/src/main/java/com/simibubi/create/content/trains/entity/Train.java index 39fb6b7642..711ba8c185 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/Train.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/Train.java @@ -44,16 +44,18 @@ import com.simibubi.create.content.trains.station.StationBlockEntity; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.codecs.stream.CatnipLargerStreamCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.codec.stream.CatnipLargerStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -67,7 +69,7 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -1123,16 +1125,21 @@ public void burnFuel() { IItemHandlerModifiable fuelItems = carriage.storage.getFuelItems(); if (fuelItems == null) continue; + CarriageContraptionEntity fuelEntity = carriage.anyAvailableEntity(); + if (fuelEntity == null) + continue; for (int slot = 0; slot < fuelItems.getSlots(); slot++) { ItemStack stack = fuelItems.extractItem(slot, 1, true); - int burnTime = stack.getBurnTime(null); + int burnTime = stack.getBurnTime(null, fuelEntity.level() + .fuelValues()); if (burnTime <= 0) continue; stack = fuelItems.extractItem(slot, 1, false); fuelTicks += burnTime * stack.getCount(); - ItemStack containerItem = stack.getCraftingRemainingItem(); + ItemStack containerItem = stack.getCraftingRemainder() + .create(); if (!containerItem.isEmpty()) ItemHandlerHelper.insertItemStacked(fuelItems, containerItem, false); return; @@ -1157,13 +1164,15 @@ public float acceleration() { public CompoundTag write(DimensionPalette dimensions, HolderLookup.Provider registries) { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", id); + LegacyNbtUtilsBridge.putUUID(tag, "Id", id); if (owner != null) - tag.putUUID("Owner", owner); + LegacyNbtUtilsBridge.putUUID(tag, "Owner", owner); if (graph != null) - tag.putUUID("Graph", graph.id); + LegacyNbtUtilsBridge.putUUID(tag, "Graph", graph.id); tag.put("Carriages", NBTHelper.writeCompoundList(carriages, c -> c.write(dimensions, registries))); - tag.putIntArray("CarriageSpacing", carriageSpacing); + tag.putIntArray("CarriageSpacing", carriageSpacing.stream() + .mapToInt(Integer::intValue) + .toArray()); tag.putBoolean("DoubleEnded", doubleEnded); tag.putDouble("Speed", speed); tag.putDouble("Throttle", throttle); @@ -1173,27 +1182,27 @@ public CompoundTag write(DimensionPalette dimensions, HolderLookup.Provider regi tag.putDouble("TargetSpeed", targetSpeed); tag.putString("IconType", icon.id.toString()); tag.putInt("MapColorIndex", mapColorIndex); - tag.putString("Name", Component.Serializer.toJson(name, registries)); + tag.putString("Name", LegacyComponentSerializationBridge.toJson(name, registries)); if (currentStation != null) - tag.putUUID("Station", currentStation); + LegacyNbtUtilsBridge.putUUID(tag, "Station", currentStation); tag.putBoolean("Backwards", currentlyBackwards); tag.putBoolean("Derailed", derailed); tag.putBoolean("UpdateSignals", updateSignalBlocks); tag.put("SignalBlocks", NBTHelper.writeCompoundList(occupiedSignalBlocks.entrySet(), e -> { CompoundTag compoundTag = new CompoundTag(); - compoundTag.putUUID("Id", e.getKey()); + LegacyNbtUtilsBridge.putUUID(compoundTag, "Id", e.getKey()); if (e.getValue() != null) - compoundTag.putUUID("Boundary", e.getValue()); + LegacyNbtUtilsBridge.putUUID(compoundTag, "Boundary", e.getValue()); return compoundTag; })); tag.put("ReservedSignalBlocks", NBTHelper.writeCompoundList(reservedSignalBlocks, uid -> { CompoundTag compoundTag = new CompoundTag(); - compoundTag.putUUID("Id", uid); + LegacyNbtUtilsBridge.putUUID(compoundTag, "Id", uid); return compoundTag; })); tag.put("OccupiedObservers", NBTHelper.writeCompoundList(occupiedObservers, uid -> { CompoundTag compoundTag = new CompoundTag(); - compoundTag.putUUID("Id", uid); + LegacyNbtUtilsBridge.putUUID(compoundTag, "Id", uid); return compoundTag; })); tag.put("MigratingPoints", NBTHelper.writeCompoundList(migratingPoints, tm -> tm.write(dimensions))); @@ -1205,45 +1214,50 @@ public CompoundTag write(DimensionPalette dimensions, HolderLookup.Provider regi } public static Train read(CompoundTag tag, HolderLookup.Provider registries, Map trackNetworks, DimensionPalette dimensions) { - UUID id = tag.getUUID("Id"); - UUID owner = tag.contains("Owner") ? tag.getUUID("Owner") : null; - UUID graphId = tag.contains("Graph") ? tag.getUUID("Graph") : null; + UUID id = LegacyNbtUtilsBridge.getUUID(tag, "Id"); + UUID owner = tag.contains("Owner") ? LegacyNbtUtilsBridge.getUUID(tag, "Owner") : null; + UUID graphId = tag.contains("Graph") ? LegacyNbtUtilsBridge.getUUID(tag, "Graph") : null; TrackGraph graph = graphId == null ? null : trackNetworks.get(graphId); List carriages = new ArrayList<>(); - NBTHelper.iterateCompoundList(tag.getList("Carriages", Tag.TAG_COMPOUND), + NBTHelper.iterateCompoundList(tag.getListOrEmpty("Carriages"), c -> carriages.add(Carriage.read(c, registries, graph, dimensions))); List carriageSpacing = new ArrayList<>(); - for (int i : tag.getIntArray("CarriageSpacing")) + for (int i : tag.getIntArray("CarriageSpacing") + .orElse(new int[0])) carriageSpacing.add(i); - boolean doubleEnded = tag.getBoolean("DoubleEnded"); - int mapColorIndex = tag.getInt("MapColorIndex"); + boolean doubleEnded = tag.getBooleanOr("DoubleEnded", false); + int mapColorIndex = tag.getIntOr("MapColorIndex", 0); Train train = new Train(id, owner, graph, carriages, carriageSpacing, doubleEnded, mapColorIndex); - train.speed = tag.getDouble("Speed"); - train.throttle = tag.getDouble("Throttle"); + train.speed = tag.getDoubleOr("Speed", 0); + train.throttle = tag.getDoubleOr("Throttle", 1); if (tag.contains("SpeedBeforeStall")) - train.speedBeforeStall = tag.getDouble("SpeedBeforeStall"); - train.targetSpeed = tag.getDouble("TargetSpeed"); - train.icon = TrainIconType.byId(ResourceLocation.parse(tag.getString("IconType"))); - train.name = Component.Serializer.fromJson(tag.getString("Name"), registries); - train.currentStation = tag.contains("Station") ? tag.getUUID("Station") : null; - train.currentlyBackwards = tag.getBoolean("Backwards"); - train.derailed = tag.getBoolean("Derailed"); - train.updateSignalBlocks = tag.getBoolean("UpdateSignals"); - train.fuelTicks = tag.getInt("Fuel"); - - NBTHelper.iterateCompoundList(tag.getList("SignalBlocks", Tag.TAG_COMPOUND), c -> train.occupiedSignalBlocks - .put(c.getUUID("Id"), c.contains("Boundary") ? c.getUUID("Boundary") : null)); - NBTHelper.iterateCompoundList(tag.getList("ReservedSignalBlocks", Tag.TAG_COMPOUND), - c -> train.reservedSignalBlocks.add(c.getUUID("Id"))); - NBTHelper.iterateCompoundList(tag.getList("OccupiedObservers", Tag.TAG_COMPOUND), - c -> train.occupiedObservers.add(c.getUUID("Id"))); - NBTHelper.iterateCompoundList(tag.getList("MigratingPoints", Tag.TAG_COMPOUND), + train.speedBeforeStall = tag.getDoubleOr("SpeedBeforeStall", 0); + train.targetSpeed = tag.getDoubleOr("TargetSpeed", 0); + train.icon = TrainIconType.byId(Identifier.parse(tag.getStringOr("IconType", + TrainIconType.getDefault() + .getId() + .toString()))); + train.name = LegacyComponentSerializationBridge.fromJson(tag.getStringOr("Name", ""), registries); + train.currentStation = tag.contains("Station") ? LegacyNbtUtilsBridge.getUUID(tag, "Station") : null; + train.currentlyBackwards = tag.getBooleanOr("Backwards", false); + train.derailed = tag.getBooleanOr("Derailed", false); + train.updateSignalBlocks = tag.getBooleanOr("UpdateSignals", false); + train.fuelTicks = tag.getIntOr("Fuel", 0); + + NBTHelper.iterateCompoundList(tag.getListOrEmpty("SignalBlocks"), c -> train.occupiedSignalBlocks + .put(LegacyNbtUtilsBridge.getUUID(c, "Id"), + c.contains("Boundary") ? LegacyNbtUtilsBridge.getUUID(c, "Boundary") : null)); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("ReservedSignalBlocks"), + c -> train.reservedSignalBlocks.add(LegacyNbtUtilsBridge.getUUID(c, "Id"))); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("OccupiedObservers"), + c -> train.occupiedObservers.add(LegacyNbtUtilsBridge.getUUID(c, "Id"))); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("MigratingPoints"), c -> train.migratingPoints.add(TrainMigration.read(c, dimensions))); - train.runtime.read(registries, tag.getCompound("Runtime")); - train.navigation.read(tag.getCompound("Navigation"), graph, dimensions); + train.runtime.read(registries, tag.getCompoundOrEmpty("Runtime")); + train.navigation.read(tag.getCompoundOrEmpty("Navigation"), graph, dimensions); if (train.getCurrentStation() != null) train.getCurrentStation() diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainIconType.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainIconType.java index e5acd73a1e..8d504e3db5 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainIconType.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainIconType.java @@ -5,43 +5,43 @@ import com.simibubi.create.Create; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import io.netty.buffer.ByteBuf; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrainIconType { - public static final StreamCodec STREAM_CODEC = ResourceLocation.STREAM_CODEC.map( + public static final StreamCodec STREAM_CODEC = Identifier.STREAM_CODEC.map( TrainIconType::byId, TrainIconType::getId ); - public static Map REGISTRY = new HashMap<>(); + public static Map REGISTRY = new HashMap<>(); - public static void register(ResourceLocation id, ResourceLocation sheet, int x, int y) { + public static void register(Identifier id, Identifier sheet, int x, int y) { REGISTRY.put(id, new TrainIconType(id, sheet, x, y)); } static { - ResourceLocation sheet = Create.asResource("textures/gui/assemble.png"); + Identifier sheet = Create.asResource("textures/gui/assemble.png"); register(Create.asResource("traditional"), sheet, 2, 205); register(Create.asResource("electric"), sheet, 2, 216); register(Create.asResource("modern"), sheet, 2, 227); } - ResourceLocation sheet; - ResourceLocation id; + Identifier sheet; + Identifier id; int x, y; - public TrainIconType(ResourceLocation id, ResourceLocation sheet, int x, int y) { + public TrainIconType(Identifier id, Identifier sheet, int x, int y) { this.id = id; this.sheet = sheet; this.x = x; this.y = y; } - public static TrainIconType byId(ResourceLocation id) { + public static TrainIconType byId(Identifier id) { return REGISTRY.getOrDefault(id, getDefault()); } @@ -49,18 +49,17 @@ public static TrainIconType getDefault() { return REGISTRY.get(Create.asResource("traditional")); } - public ResourceLocation getId() { + public Identifier getId() { return id; } public static final int ENGINE = -1; public static final int FLIPPED_ENGINE = -2; - @OnlyIn(Dist.CLIENT) - public int render(int lengthOrEngine, GuiGraphics graphics, int x, int y) { + public int render(int lengthOrEngine, GuiGraphicsExtractor graphics, int x, int y) { int offset = getIconOffset(lengthOrEngine); int width = getIconWidth(lengthOrEngine); - graphics.blit(sheet, x, y, 0, this.x + offset, this.y, width, 10, 256, 256); + graphics.blit(RenderPipelines.GUI_TEXTURED, sheet, x, y, this.x + offset, this.y, width, 10, 256, 256); return width; } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainMigration.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainMigration.java index e2f442fdb7..9358d686ea 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainMigration.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainMigration.java @@ -9,8 +9,8 @@ import com.simibubi.create.content.trains.graph.TrackNode; import com.simibubi.create.content.trains.graph.TrackNodeLocation; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; @@ -110,11 +110,11 @@ public CompoundTag write(DimensionPalette dimensions) { public static TrainMigration read(CompoundTag tag, DimensionPalette dimensions) { TrainMigration trainMigration = new TrainMigration(); - trainMigration.curve = tag.getBoolean("Curve"); - trainMigration.fallback = VecHelper.readNBT(tag.getList("Fallback", Tag.TAG_DOUBLE)); - trainMigration.positionOnOldEdge = tag.getDouble("Position"); + trainMigration.curve = tag.getBooleanOr("Curve", false); + trainMigration.fallback = VecHelper.readNBT(tag.getListOrEmpty("Fallback")); + trainMigration.positionOnOldEdge = tag.getDoubleOr("Position", 0); trainMigration.locations = - Couple.deserializeEach(tag.getList("Nodes", Tag.TAG_COMPOUND), c -> TrackNodeLocation.read(c, dimensions)); + Couple.deserializeEach(tag.getListOrEmpty("Nodes"), c -> TrackNodeLocation.read(c, dimensions)); return trainMigration; } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainPromptPacket.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainPromptPacket.java index 6ee72a820e..992cf9ad14 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainPromptPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainPromptPacket.java @@ -4,14 +4,13 @@ import com.simibubi.create.content.trains.TrainHUD; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentSerialization; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record TrainPromptPacket(Component text, boolean shadow) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -21,8 +20,7 @@ public record TrainPromptPacket(Component text, boolean shadow) implements Clien ); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { TrainHUD.currentPrompt = text; TrainHUD.currentPromptShadow = shadow; TrainHUD.promptKeepAlive = 30; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocationPacket.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocationPacket.java index 13a60fc1bc..ccdbcf3b73 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocationPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocationPacket.java @@ -10,10 +10,10 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.UUIDUtil; @@ -58,18 +58,18 @@ public void handle(ServerPlayer sender) { return; int verifyDistance = AllConfigs.server().trains.maxTrackPlacementLength.get() * 2; - if (!sender.canInteractWithBlock(pos, verifyDistance)) { + if (sender.distanceToSqr(Vec3.atCenterOf(pos)) > verifyDistance * verifyDistance) { Create.LOGGER.warn(messagePrefix + train.name.getString() + ": player too far from clicked pos"); return; } - if (!sender.canInteractWithEntity(cce, verifyDistance)) { + if (sender.distanceToSqr(cce) > verifyDistance * verifyDistance) { Create.LOGGER.warn(messagePrefix + train.name.getString() + ": player too far from carriage entity"); return; } if (TrainRelocator.relocate(train, sender.level(), pos, hoveredBezier, direction, lookAngle, false)) { - sender.displayClientMessage(CreateLang.translateDirect("train.relocate.success") - .withStyle(ChatFormatting.GREEN), true); + sender.sendSystemMessage(CreateLang.translateDirect("train.relocate.success") + .withStyle(ChatFormatting.GREEN)); train.carriages.forEach(c -> c.forEachPresentEntity(e -> { e.nonDamageTicks = 10; CatnipServices.NETWORK.sendToClientsTrackingEntity(e, diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocator.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocator.java index 9eb0d5f940..40c9928a9f 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocator.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainRelocator.java @@ -32,10 +32,10 @@ import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -52,7 +52,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.client.event.InputEvent; public class TrainRelocator { @@ -71,7 +70,6 @@ public static boolean isRelocating() { return relocatingTrain != null; } - @OnlyIn(Dist.CLIENT) public static void onClicked(InputEvent.InteractionKeyMappingTriggered event) { if (relocatingTrain == null) return; @@ -83,10 +81,10 @@ public static void onClicked(InputEvent.InteractionKeyMappingTriggered event) { if (player.isSpectator()) return; - if (!player.canInteractWithBlock(relocatingOrigin, 24) || player.isShiftKeyDown()) { + if (player.distanceToSqr(Vec3.atCenterOf(relocatingOrigin)) > 24 * 24 || player.isShiftKeyDown()) { relocatingTrain = null; - player.displayClientMessage(CreateLang.translateDirect("train.relocate.abort") - .withStyle(ChatFormatting.RED), true); + player.sendSystemMessage(CreateLang.translateDirect("train.relocate.abort") + .withStyle(ChatFormatting.RED)); return; } @@ -105,7 +103,6 @@ public static void onClicked(InputEvent.InteractionKeyMappingTriggered event) { } @Nullable - @OnlyIn(Dist.CLIENT) public static Boolean relocateClient(Train relocating, boolean simulate) { Minecraft mc = Minecraft.getInstance(); HitResult hitResult = mc.hitResult; @@ -154,7 +151,7 @@ public static Boolean relocateClient(Train relocating, boolean simulate) { boolean result = relocate(relocating, mc.level, blockPos, hoveredBezier, direction, lookAngle, true); if (!simulate && result) { relocating.carriages.forEach(c -> c.forEachPresentEntity(e -> e.nonDamageTicks = 10)); - CatnipServices.NETWORK.sendToServer(new TrainRelocationPacket(relocatingTrain, blockPos, lookAngle, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrainRelocationPacket(relocatingTrain, blockPos, lookAngle, relocatingEntityId, direction, hoveredBezier)); } @@ -214,7 +211,7 @@ public static boolean relocate(Train train, Level level, BlockPos pos, BezierTra blockingIndex.increment(); }); - if (level.isClientSide && simulate && !recordedVecs.isEmpty()) { + if (level.isClientSide() && simulate && !recordedVecs.isEmpty()) { toVisualise = new ArrayList<>(); toVisualise.add(recordedVecs.get(0)); } @@ -225,7 +222,7 @@ public static boolean relocate(Train train, Level level, BlockPos pos, BezierTra boolean blocking = i >= blockingIndex.intValue() - 1; boolean collided = !blocked.booleanValue() && train.findCollidingTrain(level, vec1, vec2, level.dimension()) != null; - if (level.isClientSide && simulate) + if (level.isClientSide() && simulate) toVisualise.add(vec2); if (collided || blocking) return false; @@ -268,7 +265,6 @@ public static boolean relocate(Train train, Level level, BlockPos pos, BezierTra return true; } - @OnlyIn(Dist.CLIENT) public static void visualise(Train train, int i, Vec3 v1, Vec3 v2, boolean valid) { Outliner.getInstance().showLine(Pair.of(train, i), v1.add(0, -.825f, 0), v2.add(0, -.825f, 0)) .colored(valid ? 0x95CD41 : 0xEA5C2B) @@ -276,7 +272,6 @@ public static void visualise(Train train, int i, Vec3 v1, Vec3 v2, boolean valid .lineWidth(i % 2 == 1 ? 1 / 6f : 1 / 4f); } - @OnlyIn(Dist.CLIENT) public static void clientTick() { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; @@ -299,34 +294,34 @@ public static void clientTick() { if (entity instanceof AbstractContraptionEntity ce && Math.abs(ce.getPosition(0) .subtract(ce.getPosition(1)) .lengthSqr()) > 1 / 1024d) { - player.displayClientMessage(CreateLang.translateDirect("train.cannot_relocate_moving") - .withStyle(ChatFormatting.RED), true); + player.sendSystemMessage(CreateLang.translateDirect("train.cannot_relocate_moving") + .withStyle(ChatFormatting.RED)); relocatingTrain = null; return; } if (!AllItems.WRENCH.isIn(player.getMainHandItem())) { - player.displayClientMessage(CreateLang.translateDirect("train.relocate.abort") - .withStyle(ChatFormatting.RED), true); + player.sendSystemMessage(CreateLang.translateDirect("train.relocate.abort") + .withStyle(ChatFormatting.RED)); relocatingTrain = null; return; } - if (!player.canInteractWithBlock(relocatingOrigin, 24)) { - player.displayClientMessage(CreateLang.translateDirect("train.relocate.too_far") - .withStyle(ChatFormatting.RED), true); + if (player.distanceToSqr(Vec3.atCenterOf(relocatingOrigin)) > 24 * 24) { + player.sendSystemMessage(CreateLang.translateDirect("train.relocate.too_far") + .withStyle(ChatFormatting.RED)); return; } Boolean success = relocateClient(relocating, true); if (success == null) { - player.displayClientMessage(CreateLang.translateDirect("train.relocate", relocating.name), true); + player.sendSystemMessage(CreateLang.translateDirect("train.relocate", relocating.name)); } else if (success) { - player.displayClientMessage(CreateLang.translateDirect("train.relocate.valid") - .withStyle(ChatFormatting.GREEN), true); + player.sendSystemMessage(CreateLang.translateDirect("train.relocate.valid") + .withStyle(ChatFormatting.GREEN)); } else { - player.displayClientMessage(CreateLang.translateDirect("train.relocate.invalid") - .withStyle(ChatFormatting.RED), true); + player.sendSystemMessage(CreateLang.translateDirect("train.relocate.invalid") + .withStyle(ChatFormatting.RED)); } return; } @@ -353,7 +348,6 @@ public static void clientTick() { } } - @OnlyIn(Dist.CLIENT) public static boolean carriageWrenched(Vec3 vec3, CarriageContraptionEntity entity) { Train train = getTrainFromEntity(entity); if (train == null) @@ -364,7 +358,6 @@ public static boolean carriageWrenched(Vec3 vec3, CarriageContraptionEntity enti return true; } - @OnlyIn(Dist.CLIENT) public static boolean addToTooltip(List tooltip, boolean shiftKeyDown) { Train train = getTrainFromEntity(hoveredEntity.get()); if (train != null && train.derailed) { @@ -374,7 +367,6 @@ public static boolean addToTooltip(List tooltip, boolean shiftKeyDown return false; } - @OnlyIn(Dist.CLIENT) private static Train getRelocating(LevelAccessor level) { return relocatingTrain == null ? null : Create.RAILWAYS.sided(level).trains.get(relocatingTrain); } diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TrainStatus.java b/src/main/java/com/simibubi/create/content/trains/entity/TrainStatus.java index d0d0be62f0..fbe122c2de 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TrainStatus.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TrainStatus.java @@ -124,7 +124,7 @@ public void crash() { .append( CreateLang.translateDirect( "train.status.collision.where", - key.location().toString(), + key.identifier().toString(), train.getPositionInDimension(key).get().toShortString() ).withStyle(style -> style.withColor(0xFFD3B4)) ); @@ -152,8 +152,8 @@ public void tick(Level level) { if (owner == null) return; if (owner instanceof Player player) { - player.displayClientMessage(CreateLang.translateDirect("train.status", train.name) - .withStyle(ChatFormatting.GOLD), false); + player.sendSystemMessage(CreateLang.translateDirect("train.status", train.name) + .withStyle(ChatFormatting.GOLD)); queued.forEach(message -> message.displayToPlayer(player)); } queued.clear(); @@ -180,7 +180,7 @@ public void newSchedule() { public record StatusMessage(Component... messages) { public void displayToPlayer(Player player) { - Arrays.stream(messages).forEach(messages -> player.displayClientMessage(messages, false)); + Arrays.stream(messages).forEach(player::sendSystemMessage); } }; diff --git a/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java b/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java index 5f2e10fb9f..7ca82a0ba7 100644 --- a/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java +++ b/src/main/java/com/simibubi/create/content/trains/entity/TravellingPoint.java @@ -24,8 +24,8 @@ import com.simibubi.create.content.trains.graph.TrackNodeLocation; import com.simibubi.create.content.trains.signal.TrackEdgePoint; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.util.Mth; @@ -431,16 +431,16 @@ public static TravellingPoint read(CompoundTag tag, TrackGraph graph, DimensionP return new TravellingPoint(null, null, null, 0, false); Couple locs = tag.contains("Nodes") - ? Couple.deserializeEach(tag.getList("Nodes", Tag.TAG_COMPOUND), c -> TrackNodeLocation.read(c, dimensions)) + ? Couple.deserializeEach(tag.getListOrEmpty("Nodes"), c -> TrackNodeLocation.read(c, dimensions)) .map(graph::locateNode) : Couple.create(null, null); if (locs.either(Objects::isNull)) return new TravellingPoint(null, null, null, 0, false); - double position = tag.getDouble("Position"); + double position = tag.getDoubleOr("Position", 0); return new TravellingPoint(locs.getFirst(), locs.getSecond(), graph.getConnectionsFrom(locs.getFirst()) - .get(locs.getSecond()), position, tag.getBoolean("UpsideDown")); + .get(locs.getSecond()), position, tag.getBooleanOr("UpsideDown", false)); } } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/DimensionPalette.java b/src/main/java/com/simibubi/create/content/trains/graph/DimensionPalette.java index 1a3e1c07bf..60080ac7c9 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/DimensionPalette.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/DimensionPalette.java @@ -4,15 +4,15 @@ import java.util.List; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.Level; public class DimensionPalette { @@ -46,21 +46,21 @@ public ResourceKey decode(int index) { public void send(FriendlyByteBuf buffer) { buffer.writeInt(gatheredDims.size()); - gatheredDims.forEach(rk -> buffer.writeResourceLocation(rk.location())); + gatheredDims.forEach(rk -> buffer.writeIdentifier(rk.identifier())); } public static DimensionPalette receive(FriendlyByteBuf buffer) { DimensionPalette palette = new DimensionPalette(); int length = buffer.readInt(); for (int i = 0; i < length; i++) - palette.gatheredDims.add(ResourceKey.create(Registries.DIMENSION, buffer.readResourceLocation())); + palette.gatheredDims.add(ResourceKey.create(Registries.DIMENSION, buffer.readIdentifier())); return palette; } public void write(CompoundTag tag) { tag.put("DimensionPalette", NBTHelper.writeCompoundList(gatheredDims, rk -> { CompoundTag c = new CompoundTag(); - c.putString("Id", rk.location() + c.putString("Id", rk.identifier() .toString()); return c; })); @@ -68,8 +68,8 @@ public void write(CompoundTag tag) { public static DimensionPalette read(CompoundTag tag) { DimensionPalette palette = new DimensionPalette(); - NBTHelper.iterateCompoundList(tag.getList("DimensionPalette", Tag.TAG_COMPOUND), c -> palette.gatheredDims - .add(ResourceKey.create(Registries.DIMENSION, ResourceLocation.parse(c.getString("Id"))))); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("DimensionPalette"), c -> palette.gatheredDims + .add(ResourceKey.create(Registries.DIMENSION, Identifier.parse(c.getStringOr("Id", "minecraft:overworld"))))); return palette; } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/DiscoveredPath.java b/src/main/java/com/simibubi/create/content/trains/graph/DiscoveredPath.java index 77dafc7735..e82d261bd0 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/DiscoveredPath.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/DiscoveredPath.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.trains.station.GlobalStation; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; public class DiscoveredPath { public List> path; diff --git a/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java b/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java index 27330f3a7b..229134fa98 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/EdgeData.java @@ -14,11 +14,11 @@ import com.simibubi.create.content.trains.signal.SignalEdgeGroup; import com.simibubi.create.content.trains.signal.TrackEdgePoint; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; public class EdgeData { @@ -180,12 +180,12 @@ public CompoundTag write(DimensionPalette dimensions) { if (singleSignalGroup == passiveGroup) NBTHelper.putMarker(nbt, "PassiveGroup"); else if (singleSignalGroup != null) - nbt.putUUID("SignalGroup", singleSignalGroup); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.putUUID(nbt, "SignalGroup", singleSignalGroup); if (hasPoints()) nbt.put("Points", NBTHelper.writeCompoundList(points, point -> { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", point.id); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.putUUID(tag, "Id", point.id); tag.putString("Type", point.getType() .getId() .toString()); @@ -199,22 +199,27 @@ else if (singleSignalGroup != null) public static EdgeData read(CompoundTag nbt, TrackEdge edge, TrackGraph graph, DimensionPalette dimensions) { EdgeData data = new EdgeData(edge); if (nbt.contains("SignalGroup")) - data.singleSignalGroup = nbt.getUUID("SignalGroup"); + data.singleSignalGroup = + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.getUUID(nbt, "SignalGroup"); else if (!nbt.contains("PassiveGroup")) data.singleSignalGroup = null; if (nbt.contains("Points")) - NBTHelper.iterateCompoundList(nbt.getList("Points", Tag.TAG_COMPOUND), tag -> { - ResourceLocation location = ResourceLocation.parse(tag.getString("Type")); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Points"), tag -> { + String typeId = tag.getStringOr("Type", ""); + if (typeId.isBlank()) + return; + Identifier location = Identifier.parse(typeId); EdgePointType type = EdgePointType.TYPES.get(location); if (type == null || !tag.contains("Id")) return; - TrackEdgePoint point = graph.getPoint(type, tag.getUUID("Id")); + TrackEdgePoint point = + graph.getPoint(type, com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.getUUID(tag, "Id")); if (point != null) data.points.add(point); }); if (nbt.contains("Intersections")) - data.intersections = NBTHelper.readCompoundList(nbt.getList("Intersections", Tag.TAG_COMPOUND), + data.intersections = NBTHelper.readCompoundList(nbt.getListOrEmpty("Intersections"), c -> TrackEdgeIntersection.read(c, dimensions)); return data; } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointManager.java b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointManager.java index ce559457a4..ca490e9d55 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointManager.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointManager.java @@ -3,8 +3,8 @@ import com.simibubi.create.Create; import com.simibubi.create.content.trains.signal.TrackEdgePoint; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; public class EdgePointManager { diff --git a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointStorage.java b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointStorage.java index c278891346..f03f6f99bb 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointStorage.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointStorage.java @@ -9,7 +9,7 @@ import com.simibubi.create.Create; import com.simibubi.create.content.trains.signal.TrackEdgePoint; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -85,8 +85,8 @@ public CompoundTag write(HolderLookup.Provider registries, DimensionPalette dime public void read(CompoundTag nbt, HolderLookup.Provider registries, DimensionPalette dimensions) { for (EdgePointType type : EdgePointType.TYPES.values()) { - ListTag list = nbt.getList(type.getId() - .toString(), Tag.TAG_COMPOUND); + ListTag list = nbt.getListOrEmpty(type.getId() + .toString()); Map map = getMap(type); NBTHelper.iterateCompoundList(list, tag -> { TrackEdgePoint edgePoint = type.create(); diff --git a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointType.java b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointType.java index 411e278753..b77d6fa901 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/EdgePointType.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/EdgePointType.java @@ -11,12 +11,12 @@ import com.simibubi.create.content.trains.station.GlobalStation; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class EdgePointType { - public static final Map> TYPES = new HashMap<>(); - private ResourceLocation id; + public static final Map> TYPES = new HashMap<>(); + private Identifier id; private Supplier factory; public static final EdgePointType SIGNAL = @@ -26,13 +26,13 @@ public class EdgePointType { public static final EdgePointType OBSERVER = register(Create.asResource("observer"), TrackObserver::new); - public static EdgePointType register(ResourceLocation id, Supplier factory) { + public static EdgePointType register(Identifier id, Supplier factory) { EdgePointType type = new EdgePointType<>(id, factory); TYPES.put(id, type); return type; } - public EdgePointType(ResourceLocation id, Supplier factory) { + public EdgePointType(Identifier id, Supplier factory) { this.id = id; this.factory = factory; } @@ -43,12 +43,12 @@ public T create() { return t; } - public ResourceLocation getId() { + public Identifier getId() { return id; } public static TrackEdgePoint read(FriendlyByteBuf buffer, DimensionPalette dimensions) { - ResourceLocation type = buffer.readResourceLocation(); + Identifier type = buffer.readIdentifier(); EdgePointType edgePointType = TYPES.get(type); TrackEdgePoint point = edgePointType.create(); point.read(buffer, dimensions); diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackEdge.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackEdge.java index 80cef36a5c..2c03fbbb8d 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackEdge.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackEdge.java @@ -10,7 +10,7 @@ import com.simibubi.create.content.trains.track.BezierConnection; import com.simibubi.create.content.trains.track.TrackMaterial; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.nbt.CompoundTag; @@ -245,8 +245,8 @@ public static TrackEdge read(TrackNode node1, TrackNode node2, CompoundTag tag, DimensionPalette dimensions) { TrackEdge trackEdge = new TrackEdge(node1, node2, tag.contains("Positions") ? new BezierConnection(tag, BlockPos.ZERO) : null, - TrackMaterial.deserialize(tag.getString("Material"))); - trackEdge.edgeData = EdgeData.read(tag.getCompound("Signals"), trackEdge, graph, dimensions); + TrackMaterial.deserialize(tag.getStringOr("Material", TrackMaterial.ANDESITE.id.toString()))); + trackEdge.edgeData = EdgeData.read(tag.getCompoundOrEmpty("Signals"), trackEdge, graph, dimensions); return trackEdge; } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackEdgeIntersection.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackEdgeIntersection.java index ec9059dd01..29cea3a044 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackEdgeIntersection.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackEdgeIntersection.java @@ -2,7 +2,7 @@ import java.util.UUID; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; @@ -29,9 +29,9 @@ public boolean targets(TrackNodeLocation target1, TrackNodeLocation target2) { public CompoundTag write(DimensionPalette dimensions) { CompoundTag nbt = new CompoundTag(); - nbt.putUUID("Id", id); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.putUUID(nbt, "Id", id); if (groupId != null) - nbt.putUUID("GroupId", groupId); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.putUUID(nbt, "GroupId", groupId); nbt.putDouble("Location", location); nbt.putDouble("TargetLocation", targetLocation); nbt.put("TargetEdge", target.serializeEach(loc -> loc.write(dimensions))); @@ -40,12 +40,12 @@ public CompoundTag write(DimensionPalette dimensions) { public static TrackEdgeIntersection read(CompoundTag nbt, DimensionPalette dimensions) { TrackEdgeIntersection intersection = new TrackEdgeIntersection(); - intersection.id = nbt.getUUID("Id"); + intersection.id = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.getUUID(nbt, "Id"); if (nbt.contains("GroupId")) - intersection.groupId = nbt.getUUID("GroupId"); - intersection.location = nbt.getDouble("Location"); - intersection.targetLocation = nbt.getDouble("TargetLocation"); - intersection.target = Couple.deserializeEach(nbt.getList("TargetEdge", Tag.TAG_COMPOUND), + intersection.groupId = com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.getUUID(nbt, "GroupId"); + intersection.location = nbt.getDoubleOr("Location", 0); + intersection.targetLocation = nbt.getDoubleOr("TargetLocation", 0); + intersection.target = Couple.deserializeEach(nbt.getListOrEmpty("TargetEdge"), tag -> TrackNodeLocation.read(tag, dimensions)); return intersection; } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java index c959f1452a..614b2956a3 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraph.java @@ -24,12 +24,13 @@ import com.simibubi.create.content.trains.signal.TrackEdgePoint; import com.simibubi.create.content.trains.track.BezierConnection; import com.simibubi.create.content.trains.track.TrackMaterial; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.theme.Color; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -520,7 +521,7 @@ public void markDirty() { public CompoundTag write(HolderLookup.Provider registries, DimensionPalette dimensions) { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", id); + LegacyNbtUtilsBridge.putUUID(tag, "Id", id); tag.putInt("Color", color.getRGB()); Map indexTracker = new HashMap<>(); @@ -561,18 +562,18 @@ public CompoundTag write(HolderLookup.Provider registries, DimensionPalette dime } public static TrackGraph read(CompoundTag tag, HolderLookup.Provider registries, DimensionPalette dimensions) { - TrackGraph graph = new TrackGraph(tag.getUUID("Id")); - graph.color = new Color(tag.getInt("Color")); - graph.edgePoints.read(tag.getCompound("Points"), registries, dimensions); + TrackGraph graph = new TrackGraph(LegacyNbtUtilsBridge.getUUID(tag, "Id")); + graph.color = new Color(tag.getIntOr("Color", 0xffffff)); + graph.edgePoints.read(tag.getCompoundOrEmpty("Points"), registries, dimensions); Map indexTracker = new HashMap<>(); - ListTag nodesList = tag.getList("Nodes", Tag.TAG_COMPOUND); + ListTag nodesList = tag.getListOrEmpty("Nodes"); int i = 0; for (Tag t : nodesList) { CompoundTag nodeTag = (CompoundTag) t; - TrackNodeLocation location = TrackNodeLocation.read(nodeTag.getCompound("Location"), dimensions); - Vec3 normal = VecHelper.readNBT(nodeTag.getList("Normal", Tag.TAG_DOUBLE)); + TrackNodeLocation location = TrackNodeLocation.read(nodeTag.getCompoundOrEmpty("Location"), dimensions); + Vec3 normal = VecHelper.readNBT(nodeTag.getListOrEmpty("Normal")); graph.loadNode(location, nextNodeId(), normal); indexTracker.put(i, graph.locateNode(location)); i++; @@ -586,9 +587,9 @@ public static TrackGraph read(CompoundTag tag, HolderLookup.Provider registries, if (!nodeTag.contains("Connections")) continue; - NBTHelper.iterateCompoundList(nodeTag.getList("Connections", Tag.TAG_COMPOUND), c -> { - TrackNode node2 = indexTracker.get(c.getInt("To")); - TrackEdge edge = TrackEdge.read(node1, node2, c.getCompound("EdgeData"), graph, dimensions); + NBTHelper.iterateCompoundList(nodeTag.getListOrEmpty("Connections"), c -> { + TrackNode node2 = indexTracker.get(c.getIntOr("To", -1)); + TrackEdge edge = TrackEdge.read(node1, node2, c.getCompoundOrEmpty("EdgeData"), graph, dimensions); graph.putConnection(node1, node2, edge); }); } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphHelper.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphHelper.java index 8525e2636c..440155d3fe 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphHelper.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphHelper.java @@ -13,7 +13,7 @@ import com.simibubi.create.content.trains.track.ITrackBlock; import com.simibubi.create.content.trains.track.TrackBlockEntity; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphLocation.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphLocation.java index a43223735f..6f13677f09 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphLocation.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphLocation.java @@ -1,6 +1,6 @@ package com.simibubi.create.content.trains.graph; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; public class TrackGraphLocation { diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphPacket.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphPacket.java index c4bbe5c824..40ff0aba9f 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphPacket.java @@ -6,9 +6,8 @@ import com.simibubi.create.content.trains.GlobalRailwayManager; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class TrackGraphPacket implements ClientboundPacketPayload { @@ -17,8 +16,7 @@ public abstract class TrackGraphPacket implements ClientboundPacketPayload { public boolean packetDeletesGraph; @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { this.handle(CreateClient.RAILWAYS, CreateClient.RAILWAYS.getOrCreateGraph(graphId, netId)); } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphRollCallPacket.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphRollCallPacket.java index 308da88d36..271bea7618 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphRollCallPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphRollCallPacket.java @@ -13,15 +13,14 @@ import com.simibubi.create.content.trains.GlobalRailwayManager; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record TrackGraphRollCallPacket(List entries) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = CatnipStreamCodecBuilders.list(Entry.STREAM_CODEC).map( @@ -37,8 +36,7 @@ public static TrackGraphRollCallPacket ofServer() { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { GlobalRailwayManager manager = Create.RAILWAYS.sided(null); Set unusedIds = new HashSet<>(manager.trackNetworks.keySet()); List failedIds = new ArrayList<>(); @@ -60,7 +58,7 @@ public void handle(LocalPlayer player) { } for (Integer failed : failedIds) - CatnipServices.NETWORK.sendToServer(new TrackGraphRequestPacket(failed)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrackGraphRequestPacket(failed)); for (UUID unused : unusedIds) manager.trackNetworks.remove(unused); } diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSync.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSync.java index 30267a5030..0ea8b0964e 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSync.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSync.java @@ -15,10 +15,10 @@ import com.simibubi.create.content.trains.signal.EdgeGroupColor; import com.simibubi.create.content.trains.signal.SignalEdgeGroupPacket; import com.simibubi.create.content.trains.signal.TrackEdgePoint; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; import net.minecraft.server.level.ServerPlayer; public class TrackGraphSync { diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSyncPacket.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSyncPacket.java index 5c682db431..2f147bdb93 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSyncPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphSyncPacket.java @@ -15,9 +15,9 @@ import com.simibubi.create.content.trains.track.BezierConnection; import com.simibubi.create.content.trains.track.TrackMaterial; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphVisualizer.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphVisualizer.java index 214c83b47e..debb0476e5 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphVisualizer.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackGraphVisualizer.java @@ -14,9 +14,9 @@ import com.simibubi.create.content.trains.signal.TrackEdgePoint; import com.simibubi.create.content.trains.track.BezierConnection; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.AABB; @@ -26,7 +26,7 @@ public class TrackGraphVisualizer { public static void visualiseSignalEdgeGroups(TrackGraph graph) { Minecraft mc = Minecraft.getInstance(); - Entity cameraEntity = mc.cameraEntity; + Entity cameraEntity = mc.getCameraEntity(); if (cameraEntity == null) return; AABB box = graph.getBounds(mc.level).box; @@ -213,7 +213,7 @@ public static void visualiseSignalEdgeGroups(TrackGraph graph) { public static void debugViewGraph(TrackGraph graph, boolean extended) { Minecraft mc = Minecraft.getInstance(); - Entity cameraEntity = mc.cameraEntity; + Entity cameraEntity = mc.getCameraEntity(); if (cameraEntity == null) return; AABB box = graph.getBounds(mc.level).box; diff --git a/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java b/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java index e31f2bf656..c1a5ed7bf6 100644 --- a/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java +++ b/src/main/java/com/simibubi/create/content/trains/graph/TrackNodeLocation.java @@ -8,8 +8,8 @@ import com.simibubi.create.content.trains.track.BezierConnection; import com.simibubi.create.content.trains.track.TrackMaterial; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; @@ -75,7 +75,7 @@ public int hashCode() { public CompoundTag write(DimensionPalette dimensions) { CompoundTag c = new CompoundTag(); - c.put("Pos", NbtUtils.writeBlockPos(new BlockPos(this))); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(new BlockPos(this))); if (dimensions != null) c.putInt("D", dimensions.encode(dimension)); if (yOffsetPixels != 0) @@ -85,10 +85,10 @@ public CompoundTag write(DimensionPalette dimensions) { public static TrackNodeLocation read(CompoundTag tag, DimensionPalette dimensions) { TrackNodeLocation location = fromPackedPos(tag.contains("Pos") ? NBTHelper.readBlockPos(tag, "Pos") - : new BlockPos(tag.getInt("X"), tag.getInt("Y"), tag.getInt("Z"))); + : new BlockPos(tag.getIntOr("X", 0), tag.getIntOr("Y", 0), tag.getIntOr("Z", 0))); if (dimensions != null) - location.dimension = dimensions.decode(tag.getInt("D")); - location.yOffsetPixels = tag.getInt("YO"); + location.dimension = dimensions.decode(tag.getIntOr("D", -1)); + location.yOffsetPixels = tag.getIntOr("YO", 0); return location; } diff --git a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserver.java b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserver.java index 4739918d78..05aaf4c406 100644 --- a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserver.java +++ b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserver.java @@ -12,6 +12,7 @@ import com.simibubi.create.content.trains.signal.SingleBlockEntityEdgePoint; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -85,10 +86,10 @@ public void keepAlive(Train train) { @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean migration, DimensionPalette dimensions) { super.read(nbt, registries, migration, dimensions); - activated = nbt.getInt("Activated"); - filter = FilterItemStack.of(registries, nbt.getCompound("Filter")); + activated = nbt.getIntOr("Activated", 0); + filter = FilterItemStack.of(registries, nbt.getCompoundOrEmpty("Filter")); if (nbt.contains("TrainId")) - currentTrain = nbt.getUUID("TrainId"); + currentTrain = LegacyNbtUtilsBridge.getUUID(nbt, "TrainId"); } @Override @@ -102,7 +103,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, DimensionPa nbt.putInt("Activated", activated); nbt.put("Filter", filter.serializeNBT(registries)); if (currentTrain != null) - nbt.putUUID("TrainId", currentTrain); + LegacyNbtUtilsBridge.putUUID(nbt, "TrainId", currentTrain); } @Override diff --git a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlock.java b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlock.java index efc99dc277..0633c4ca25 100644 --- a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverBlock.java @@ -5,10 +5,12 @@ import com.simibubi.create.foundation.block.IBE; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -55,8 +57,8 @@ public BlockEntityType getBlockEntityType() } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); } } diff --git a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverRenderer.java b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverRenderer.java index cfa4a13b28..c382934365 100644 --- a/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/observer/TrackObserverRenderer.java @@ -8,7 +8,7 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/DestinationSuggestions.java b/src/main/java/com/simibubi/create/content/trains/schedule/DestinationSuggestions.java index f44e938b64..395363d542 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/DestinationSuggestions.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/DestinationSuggestions.java @@ -6,7 +6,7 @@ import com.mojang.brigadier.context.StringRange; import com.mojang.brigadier.suggestion.Suggestion; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.CommandSuggestions; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/IScheduleInput.java b/src/main/java/com/simibubi/create/content/trains/schedule/IScheduleInput.java index e8fab724ee..28d2a51423 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/IScheduleInput.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/IScheduleInput.java @@ -7,21 +7,20 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; -import net.createmod.catnip.data.Pair; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.data.Pair; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public interface IScheduleInput { public abstract Pair getSummary(); - public abstract ResourceLocation getId(); + public abstract Identifier getId(); public abstract CompoundTag getData(); @@ -32,7 +31,7 @@ public default int slotsTargeted() { } public default List getTitleAs(String type) { - ResourceLocation id = getId(); + Identifier id = getId(); return ImmutableList .of(Component.translatable(id.getNamespace() + ".schedule." + type + "." + id.getPath())); } @@ -52,11 +51,9 @@ public default List getSecondLineTooltip(int slot) { return null; } - @OnlyIn(Dist.CLIENT) public default void initConfigurationWidgets(ModularGuiLineBuilder builder) {}; - @OnlyIn(Dist.CLIENT) - public default boolean renderSpecialIcon(GuiGraphics graphics, int x, int y) { + public default boolean renderSpecialIcon(GuiGraphicsExtractor graphics, int x, int y) { return false; } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/Schedule.java b/src/main/java/com/simibubi/create/content/trains/schedule/Schedule.java index 910e70829b..1d92e0737e 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/Schedule.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/Schedule.java @@ -22,9 +22,9 @@ import com.simibubi.create.content.trains.schedule.destination.FetchPackagesInstruction; import com.simibubi.create.content.trains.schedule.destination.ScheduleInstruction; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -33,7 +33,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class Schedule { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -43,9 +43,9 @@ public class Schedule { Schedule::new ); - public static List>> INSTRUCTION_TYPES = + public static List>> INSTRUCTION_TYPES = new ArrayList<>(); - public static List>> CONDITION_TYPES = + public static List>> CONDITION_TYPES = new ArrayList<>(); static { @@ -73,7 +73,7 @@ private static void registerCondition(String name, Supplier List getTypeOptions(List> list) { + public static List getTypeOptions(List> list) { String langSection = list.equals(INSTRUCTION_TYPES) ? "instruction." : "condition."; return list.stream() .map(Pair::getFirst) @@ -108,10 +108,10 @@ public CompoundTag write(HolderLookup.Provider registries) { public static Schedule fromTag(HolderLookup.Provider registries, CompoundTag tag) { Schedule schedule = new Schedule(); - schedule.entries = NBTHelper.readCompoundList(tag.getList("Entries", Tag.TAG_COMPOUND), t -> ScheduleEntry.fromTag(registries, t)); - schedule.cyclic = tag.getBoolean("Cyclic"); + schedule.entries = NBTHelper.readCompoundList(tag.getListOrEmpty("Entries"), t -> ScheduleEntry.fromTag(registries, t)); + schedule.cyclic = tag.getBooleanOr("Cyclic", true); if (tag.contains("Progress")) - schedule.savedProgress = tag.getInt("Progress"); + schedule.savedProgress = tag.getIntOr("Progress", 0); return schedule; } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleDataEntry.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleDataEntry.java index aa09111423..ba7a7f045f 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleDataEntry.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleDataEntry.java @@ -28,15 +28,15 @@ protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) protected T enumData(String key, Class enumClass) { T[] enumConstants = enumClass.getEnumConstants(); - return enumConstants[data.getInt(key) % enumConstants.length]; + return enumConstants[data.getIntOr(key, 0) % enumConstants.length]; } protected String textData(String key) { - return data.getString(key); + return data.getStringOr(key, ""); } protected int intData(String key) { - return data.getInt(key); + return data.getIntOr(key, 0); } } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEditPacket.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEditPacket.java index 788543f8d1..117e3b8ac0 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEditPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEditPacket.java @@ -27,7 +27,7 @@ public void handle(ServerPlayer sender) { mainHandItem.set(AllDataComponents.TRAIN_SCHEDULE, schedule.write(sender.registryAccess())); sender.getCooldowns() - .addCooldown(mainHandItem.getItem(), 5); + .addCooldown(mainHandItem, 5); } @Override diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEntry.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEntry.java index 8e2d52e1c8..a7a28e9dbd 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEntry.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleEntry.java @@ -6,8 +6,8 @@ import com.simibubi.create.content.trains.schedule.condition.ScheduleWaitCondition; import com.simibubi.create.content.trains.schedule.destination.ScheduleInstruction; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -52,10 +52,10 @@ public CompoundTag write(HolderLookup.Provider registries) { public static ScheduleEntry fromTag(HolderLookup.Provider registries, CompoundTag tag) { ScheduleEntry entry = new ScheduleEntry(); - entry.instruction = ScheduleInstruction.fromTag(registries, tag.getCompound("Instruction")); + entry.instruction = ScheduleInstruction.fromTag(registries, tag.getCompoundOrEmpty("Instruction")); entry.conditions = new ArrayList<>(); if (entry.instruction.supportsConditions()) - for (Tag t : tag.getList("Conditions", Tag.TAG_LIST)) + for (Tag t : tag.getListOrEmpty("Conditions")) if (t instanceof ListTag list) entry.conditions.add(NBTHelper.readCompoundList(list, conditionTag -> ScheduleWaitCondition.fromTag(registries, conditionTag))); return entry; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleItem.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleItem.java index deaeae2a8e..5d6d52a0d7 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleItem.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleItem.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.trains.schedule; import java.util.List; +import java.util.function.Consumer; import com.simibubi.create.AllDataComponents; import com.simibubi.create.AllMenuTypes; @@ -14,7 +15,7 @@ import com.simibubi.create.foundation.recipe.ItemCopyingRecipe.SupportsItemCopying; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -24,7 +25,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -33,12 +33,12 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.TooltipDisplay; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ScheduleItem extends Item implements MenuProvider, SupportsItemCopying { @@ -50,21 +50,21 @@ public ScheduleItem(Properties pProperties) { public InteractionResult useOn(UseOnContext context) { if (context.getPlayer() == null) return InteractionResult.PASS; - return use(context.getLevel(), context.getPlayer(), context.getHand()).getResult(); + return use(context.getLevel(), context.getPlayer(), context.getHand()); } @Override - public InteractionResultHolder use(Level world, Player player, InteractionHand hand) { + public InteractionResult use(Level world, Player player, InteractionHand hand) { ItemStack heldItem = player.getItemInHand(hand); if (!player.isShiftKeyDown() && hand == InteractionHand.MAIN_HAND) { - if (!world.isClientSide && player instanceof ServerPlayer) + if (!world.isClientSide() && player instanceof ServerPlayer) player.openMenu(this, buf -> { ItemStack.STREAM_CODEC.encode(buf, heldItem); }); - return InteractionResultHolder.success(heldItem); + return InteractionResult.SUCCESS.heldItemTransformedTo(heldItem); } - return InteractionResultHolder.pass(heldItem); + return InteractionResult.PASS; } public InteractionResult handScheduleTo(ItemStack pStack, Player pPlayer, LivingEntity pInteractionTarget, @@ -79,7 +79,7 @@ public InteractionResult handScheduleTo(ItemStack pStack, Player pPlayer, Living Entity rootVehicle = pInteractionTarget.getRootVehicle(); if (!(rootVehicle instanceof CarriageContraptionEntity entity)) return pass; - if (pPlayer.level().isClientSide) + if (pPlayer.level().isClientSide()) return InteractionResult.SUCCESS; Contraption contraption = entity.getContraption(); @@ -97,28 +97,28 @@ public InteractionResult handScheduleTo(ItemStack pStack, Player pPlayer, Living .get(seatIndex); Couple directions = cc.conductorSeats.get(seatPos); if (directions == null) { - pPlayer.displayClientMessage(CreateLang.translateDirect("schedule.non_controlling_seat"), true); + pPlayer.sendOverlayMessage(CreateLang.translateDirect("schedule.non_controlling_seat")); AllSoundEvents.DENY.playOnServer(pPlayer.level(), pPlayer.blockPosition(), 1, 1); return InteractionResult.SUCCESS; } if (train.runtime.getSchedule() != null) { AllSoundEvents.DENY.playOnServer(pPlayer.level(), pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(CreateLang.translateDirect("schedule.remove_with_empty_hand"), true); + pPlayer.sendOverlayMessage(CreateLang.translateDirect("schedule.remove_with_empty_hand")); return InteractionResult.SUCCESS; } if (schedule.entries.isEmpty()) { AllSoundEvents.DENY.playOnServer(pPlayer.level(), pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(CreateLang.translateDirect("schedule.no_stops"), true); + pPlayer.sendOverlayMessage(CreateLang.translateDirect("schedule.no_stops")); return InteractionResult.SUCCESS; } train.runtime.setSchedule(schedule, false); AllAdvancements.CONDUCTOR.awardTo(pPlayer); AllSoundEvents.CONFIRM.playOnServer(pPlayer.level(), pPlayer.blockPosition(), 1, 1); - pPlayer.displayClientMessage(CreateLang.translateDirect("schedule.applied_to_train") - .withStyle(ChatFormatting.GREEN), true); + pPlayer.sendOverlayMessage(CreateLang.translateDirect("schedule.applied_to_train") + .withStyle(ChatFormatting.GREEN)); pStack.shrink(1); pPlayer.setItemInHand(pUsedHand, pStack.isEmpty() ? ItemStack.EMPTY : pStack); } @@ -127,8 +127,8 @@ public InteractionResult handScheduleTo(ItemStack pStack, Player pPlayer, Living } @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, TooltipContext context, List tooltip, TooltipFlag flagIn) { + public void appendHoverText(ItemStack stack, TooltipContext context, TooltipDisplay tooltipDisplay, + Consumer tooltip, TooltipFlag flagIn) { Schedule schedule = getSchedule(context.registries(), stack); if (schedule == null || schedule.entries.isEmpty()) return; @@ -144,7 +144,7 @@ public void appendHoverText(ItemStack stack, TooltipContext context, List predictionTicks.add(TBD)); if (readTransits.length == schedule.entries.size()) diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java index 1636cf4c22..ff543cd3d9 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/ScheduleScreen.java @@ -9,11 +9,11 @@ import java.util.Set; import java.util.function.Consumer; +import org.joml.Matrix3x2fStack; import org.jetbrains.annotations.Nullable; import com.google.common.collect.ImmutableList; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllDataComponents; import com.simibubi.create.Create; import com.simibubi.create.content.trains.GlobalRailwayManager; @@ -38,20 +38,22 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.client.gui.UIRenderHelper; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.MouseButtonInfo; import net.minecraft.client.renderer.Rect2i; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.CommonComponents; @@ -192,7 +194,7 @@ protected void startEditing(IScheduleInput field, Consumer onClose, boo for (int i = 0; i < field.slotsTargeted(); i++) { ItemStack item = field.getItem(i); menu.ghostInventory.setStackInSlot(i, item); - CatnipServices.NETWORK.sendToServer(new GhostItemSubmitPacket(item, i)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GhostItemSubmitPacket(item, i)); } if (field instanceof ScheduleInstruction instruction) { @@ -277,7 +279,7 @@ protected void stopEditing() { IScheduleInput editing = editingCondition == null ? editingDestination : editingCondition; for (int i = 0; i < editing.slotsTargeted(); i++) { editing.setItem(i, menu.ghostInventory.getStackInSlot(i)); - CatnipServices.NETWORK.sendToServer(new GhostItemSubmitPacket(ItemStack.EMPTY, i)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new GhostItemSubmitPacket(ItemStack.EMPTY, i)); } editorSubWidgets.save(editing.getData()); @@ -371,22 +373,26 @@ protected void containerTick() { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - partialTicks = minecraft.getTimer().getGameTimeDeltaPartialTick(false); + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + partialTicks = net.createmod.catnip.api.client.animation.AnimationTickHolder.getGuiPartialTicks(); if (menu.slotsActive) - super.render(graphics, mouseX, mouseY, partialTicks); + super.extractRenderState(graphics, mouseX, mouseY, partialTicks); else { - renderBackground(graphics, mouseX, mouseY, partialTicks); renderBg(graphics, partialTicks, mouseX, mouseY); for (Renderable widget : this.renderables) - widget.render(graphics, mouseX, mouseY, partialTicks); + widget.extractRenderState(graphics, mouseX, mouseY, partialTicks); renderForeground(graphics, mouseX, mouseY, partialTicks); } } - protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - PoseStack matrixStack = graphics.pose(); + @Override + public void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + extractRenderState(graphics, mouseX, mouseY, partialTicks); + } + + protected void renderSchedule(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + Matrix3x2fStack matrixStack = graphics.pose(); UIRenderHelper.drawStretched(graphics, leftPos + 33, topPos + 16, 3, 173, 200, AllGuiTextures.SCHEDULE_STRIP_DARK); @@ -400,17 +406,17 @@ protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, floa for (int i = 0; i <= entries.size(); i++) { if (schedule.savedProgress == i && !schedule.entries.isEmpty()) { - matrixStack.pushPose(); + matrixStack.pushMatrix(); float expectedY = scrollOffset + topPos + yOffset + 4; float actualY = Mth.clamp(expectedY, topPos + 18, topPos + 170); - matrixStack.translate(0, actualY, 0); + matrixStack.translate(0, actualY); (expectedY == actualY ? AllGuiTextures.SCHEDULE_POINTER : AllGuiTextures.SCHEDULE_POINTER_OFFSCREEN) .render(graphics, leftPos, 0); - matrixStack.popPose(); + matrixStack.popMatrix(); } - matrixStack.pushPose(); - matrixStack.translate(0, scrollOffset, 0); + matrixStack.pushMatrix(); + matrixStack.translate(0, scrollOffset); if (i == 0 || entries.size() == 0) UIRenderHelper.drawStretched(graphics, leftPos + 33, topPos + 16, 3, 10, -100, AllGuiTextures.SCHEDULE_STRIP_LIGHT); @@ -420,7 +426,7 @@ protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, floa yOffset += 9; AllGuiTextures.SCHEDULE_STRIP_END.render(graphics, leftPos + 29, topPos + yOffset); AllGuiTextures.SCHEDULE_CARD_NEW.render(graphics, leftPos + 43, topPos + yOffset); - matrixStack.popPose(); + matrixStack.popMatrix(); break; } @@ -434,7 +440,7 @@ protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, floa yOffset += 10; } - matrixStack.popPose(); + matrixStack.popMatrix(); if (!scheduleEntry.instruction.supportsConditions()) continue; @@ -455,15 +461,15 @@ protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, floa // graphics.fill(leftPos + 43, 0, leftPos + 204, 300, 0xFFFFFFFF); graphics.enableScissor(leftPos + 43, 0, leftPos + 204, 400); - matrixStack.pushPose(); - matrixStack.translate(0, scrollOffset, 0); + matrixStack.pushMatrix(); + matrixStack.translate(0, scrollOffset); renderScheduleConditions(graphics, scheduleEntry, cardY, mouseX, mouseY, partialTicks, cardHeight, i); - matrixStack.popPose(); + matrixStack.popMatrix(); graphics.disableScissor(); if (isConditionAreaScrollable(scheduleEntry)) { - matrixStack.pushPose(); - matrixStack.translate(0, scrollOffset, 0); + matrixStack.pushMatrix(); + matrixStack.translate(0, scrollOffset); int center = (cardHeight - 8 + CARD_HEADER) / 2; float chaseTarget = horizontalScrolls.get(i) .getChaseTarget(); @@ -471,20 +477,19 @@ protected void renderSchedule(GuiGraphics graphics, int mouseX, int mouseY, floa AllGuiTextures.SCHEDULE_SCROLL_LEFT.render(graphics, leftPos + 40, topPos + cardY + center); if (!Mth.equal(chaseTarget, scheduleEntry.conditions.size() - 1)) AllGuiTextures.SCHEDULE_SCROLL_RIGHT.render(graphics, leftPos + 203, topPos + cardY + center); - matrixStack.popPose(); + matrixStack.popMatrix(); } } graphics.disableScissor(); - int zLevel = 200; - graphics.fillGradient(leftPos + 16, topPos + 16, leftPos + 16 + 220, topPos + 16 + 10, zLevel, 0x77000000, + graphics.fillGradient(leftPos + 16, topPos + 16, leftPos + 16 + 220, topPos + 16 + 10, 0x77000000, 0x00000000); - graphics.fillGradient(leftPos + 16, topPos + 179, leftPos + 16 + 220, topPos + 179 + 10, zLevel, 0x00000000, + graphics.fillGradient(leftPos + 16, topPos + 179, leftPos + 16 + 220, topPos + 179 + 10, 0x00000000, 0x77000000); } - public int renderScheduleEntry(GuiGraphics graphics, ScheduleEntry entry, int yOffset, int mouseX, int mouseY, + public int renderScheduleEntry(GuiGraphicsExtractor graphics, ScheduleEntry entry, int yOffset, int mouseX, int mouseY, float partialTicks) { int zLevel = 0; @@ -500,9 +505,9 @@ public int renderScheduleEntry(GuiGraphics graphics, ScheduleEntry entry, int yO boolean supportsConditions = entry.instruction.supportsConditions(); int cardHeight = cardHeader + (supportsConditions ? 24 + maxRows * 18 : 4); - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(leftPos + 25, topPos + yOffset, 0); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(leftPos + 25, topPos + yOffset); UIRenderHelper.drawStretched(graphics, 0, 1, cardWidth, cardHeight - 2, zLevel, light); UIRenderHelper.drawStretched(graphics, 1, 0, cardWidth - 2, cardHeight, zLevel, light); @@ -531,24 +536,24 @@ public int renderScheduleEntry(GuiGraphics graphics, ScheduleEntry entry, int yO renderInput(graphics, destination, 26, 5, false, 100); entry.instruction.renderSpecialIcon(graphics, 30, 5); - matrixStack.popPose(); + matrixStack.popMatrix(); return cardHeight; } - public void renderScheduleConditions(GuiGraphics graphics, ScheduleEntry entry, int yOffset, int mouseX, int mouseY, + public void renderScheduleConditions(GuiGraphicsExtractor graphics, ScheduleEntry entry, int yOffset, int mouseX, int mouseY, float partialTicks, int cardHeight, int entryIndex) { int cardWidth = CARD_WIDTH; int cardHeader = CARD_HEADER; - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); - matrixStack.translate(leftPos + 25, topPos + yOffset, 0); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); + matrixStack.translate(leftPos + 25, topPos + yOffset); int xOffset = 26; float scrollOffset = getConditionScroll(entry, partialTicks, entryIndex); - matrixStack.pushPose(); - matrixStack.translate(-scrollOffset, 0, 0); + matrixStack.pushMatrix(); + matrixStack.translate(-scrollOffset, 0); for (List list : entry.conditions) { int maxWidth = getConditionColumnWidth(list); @@ -565,18 +570,15 @@ public void renderScheduleConditions(GuiGraphics graphics, ScheduleEntry entry, } AllGuiTextures.SCHEDULE_CONDITION_NEW.render(graphics, xOffset - 3, 29); - matrixStack.popPose(); + matrixStack.popMatrix(); if (xOffset + 16 > cardWidth - 26) { - TransformStack.of(matrixStack) - .rotateZDegrees(-90); - int zLevel = 200; - graphics.fillGradient(-cardHeight + 2, 18, -2 - cardHeader, 28, zLevel, 0x44000000, 0x00000000); - graphics.fillGradient(-cardHeight + 2, cardWidth - 26, -2 - cardHeader, cardWidth - 16, zLevel, 0x00000000, + graphics.fillGradient(-cardHeight + 2, 18, -2 - cardHeader, 28, 0x44000000, 0x00000000); + graphics.fillGradient(-cardHeight + 2, cardWidth - 26, -2 - cardHeader, cardWidth - 16, 0x00000000, 0x44000000); } - matrixStack.popPose(); + matrixStack.popMatrix(); } private boolean isConditionAreaScrollable(ScheduleEntry entry) { @@ -606,14 +608,14 @@ private int getConditionColumnWidth(List list) { return maxWidth; } - protected int renderInput(GuiGraphics graphics, Pair pair, int x, int y, boolean clean, + protected int renderInput(GuiGraphicsExtractor graphics, Pair pair, int x, int y, boolean clean, int minSize) { ItemStack stack = pair.getFirst(); Component text = pair.getSecond(); boolean hasItem = !stack.isEmpty(); int fieldSize = Math.min(getFieldSize(minSize, pair), 150); - PoseStack matrixStack = graphics.pose(); - matrixStack.pushPose(); + Matrix3x2fStack matrixStack = graphics.pose(); + matrixStack.pushMatrix(); AllGuiTextures left = clean ? AllGuiTextures.SCHEDULE_CONDITION_LEFT_CLEAN : AllGuiTextures.SCHEDULE_CONDITION_LEFT; @@ -621,7 +623,7 @@ protected int renderInput(GuiGraphics graphics, Pair pair, AllGuiTextures item = AllGuiTextures.SCHEDULE_CONDITION_ITEM; AllGuiTextures right = AllGuiTextures.SCHEDULE_CONDITION_RIGHT; - matrixStack.translate(x, y, 0); + matrixStack.translate(x, y); UIRenderHelper.drawStretched(graphics, 0, 0, fieldSize, 16, 0, middle); left.render(graphics, clean ? 0 : -3, 0); right.render(graphics, fieldSize - 2, 0); @@ -636,10 +638,10 @@ protected int renderInput(GuiGraphics graphics, Pair pair, } if (text != null) - graphics.drawString(font, font.substrByWidth(text, 120) + graphics.text(font, font.substrByWidth(text, 120) .getString(), hasItem ? 28 : 8, 4, 0xff_f2f2ee); - matrixStack.popPose(); + matrixStack.popMatrix(); return fieldSize; } @@ -648,7 +650,7 @@ protected int renderInput(GuiGraphics graphics, Pair pair, private Component rClickToDelete = CreateLang.translateDirect("gui.schedule.rmb_remove") .withStyle(ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC); - public boolean action(@Nullable GuiGraphics graphics, double mouseX, double mouseY, int click) { + public boolean action(@Nullable GuiGraphicsExtractor graphics, double mouseX, double mouseY, int click) { if (editingCondition != null || editingDestination != null) return false; @@ -854,9 +856,9 @@ public boolean action(@Nullable GuiGraphics graphics, double mouseX, double mous return true; } - private void renderActionTooltip(@Nullable GuiGraphics graphics, List tooltip, int mx, int my) { + private void renderActionTooltip(@Nullable GuiGraphicsExtractor graphics, List tooltip, int mx, int my) { if (graphics != null) - graphics.renderTooltip(font, tooltip, Optional.empty(), mx, my); + graphics.setTooltipForNextFrame(font, tooltip, Optional.empty(), mx, my); } private int getFieldSize(int minSize, Pair pair) { @@ -869,7 +871,7 @@ private int getFieldSize(int minSize, Pair pair) { @Override public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { if (destinationSuggestions != null - && destinationSuggestions.mouseClicked((int) pMouseX, (int) pMouseY, pButton)) + && destinationSuggestions.mouseClicked(new MouseButtonEvent(pMouseX, pMouseY, new MouseButtonInfo(pButton, 0)))) return true; if (editorConfirm != null && editorConfirm.isMouseOver(pMouseX, pMouseY) && onEditorClose != null) { onEditorClose.accept(true); @@ -889,11 +891,12 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { @Override public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { - if (destinationSuggestions != null && destinationSuggestions.keyPressed(pKeyCode, pScanCode, pModifiers)) + KeyEvent event = new KeyEvent(pKeyCode, pScanCode, pModifiers); + if (destinationSuggestions != null && destinationSuggestions.keyPressed(event)) return true; if (editingCondition == null && editingDestination == null) return super.keyPressed(pKeyCode, pScanCode, pModifiers); - InputConstants.Key mouseKey = InputConstants.getKey(pKeyCode, pScanCode); + InputConstants.Key mouseKey = InputConstants.getKey(event); boolean hitEnter = getFocused() instanceof EditBox && (pKeyCode == 257 || pKeyCode == 335); boolean hitE = getFocused() == null || minecraft.options.keyInventory.isActiveAndMatches(mouseKey); if (hitEnter) { @@ -973,13 +976,12 @@ public boolean mouseScrolled(double pMouseX, double pMouseY, double pScrollX, do } @Override - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - PoseStack matrixStack = graphics.pose(); + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + Matrix3x2fStack matrixStack = graphics.pose(); if (destinationSuggestions != null) { - matrixStack.pushPose(); - matrixStack.translate(0, 0, 500); - destinationSuggestions.render(graphics, mouseX, mouseY); - matrixStack.popPose(); + matrixStack.pushMatrix(); + destinationSuggestions.extractRenderState(graphics, mouseX, mouseY); + matrixStack.popMatrix(); } super.renderForeground(graphics, mouseX, mouseY, partialTicks); @@ -1018,32 +1020,31 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl } @Override - protected void renderBg(GuiGraphics graphics, float pPartialTick, int pMouseX, int pMouseY) { + protected void renderBg(GuiGraphicsExtractor graphics, float pPartialTick, int pMouseX, int pMouseY) { AllGuiTextures.SCHEDULE.render(graphics, leftPos, topPos); FormattedCharSequence formattedcharsequence = title.getVisualOrderText(); int center = leftPos + (AllGuiTextures.SCHEDULE.getWidth() - 8) / 2; - graphics.drawString(font, formattedcharsequence, (float) (center - font.width(formattedcharsequence) / 2), - (float) topPos + 4, 0x505050, false); + graphics.text(font, formattedcharsequence, center - font.width(formattedcharsequence) / 2, topPos + 4, + 0x505050, false); renderSchedule(graphics, pMouseX, pMouseY, pPartialTick); if (editingCondition == null && editingDestination == null) return; - PoseStack matrices = graphics.pose(); - matrices.pushPose(); - matrices.translate(0, 0, 200); + Matrix3x2fStack matrices = graphics.pose(); + matrices.pushMatrix(); graphics.fillGradient(0, 0, this.width, this.height, -1072689136, -804253680); AllGuiTextures.SCHEDULE_EDITOR.render(graphics, leftPos - 2, topPos + 40); AllGuiTextures.PLAYER_INVENTORY.render(graphics, leftPos + 38, topPos + 122); - graphics.drawString(font, playerInventoryTitle, leftPos + 46, topPos + 128, 0x505050, false); + graphics.text(font, playerInventoryTitle, leftPos + 46, topPos + 128, 0x505050, false); formattedcharsequence = editingCondition == null ? CreateLang.translateDirect("schedule.instruction.editor") .getVisualOrderText() : CreateLang.translateDirect("schedule.condition.editor") .getVisualOrderText(); - graphics.drawString(font, formattedcharsequence, (float) (center - font.width(formattedcharsequence) / 2), - (float) topPos + 44, 0x505050, false); + graphics.text(font, formattedcharsequence, center - font.width(formattedcharsequence) / 2, topPos + 44, + 0x505050, false); IScheduleInput rendered = editingCondition == null ? editingDestination : editingCondition; @@ -1063,18 +1064,18 @@ protected void renderBg(GuiGraphics graphics, float pPartialTick, int pMouseX, i .render(graphics); } - matrices.pushPose(); - matrices.translate(0, getGuiTop() + 87, 0); + matrices.pushMatrix(); + matrices.translate(0, getGuiTop() + 87); editorSubWidgets.renderBg(getGuiLeft() + 77, graphics); - matrices.popPose(); + matrices.popMatrix(); - matrices.popPose(); + matrices.popMatrix(); } @Override public void removed() { super.removed(); - CatnipServices.NETWORK.sendToServer(new ScheduleEditPacket(schedule)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ScheduleEditPacket(schedule)); } @Override @@ -1121,7 +1122,7 @@ protected ModularGuiLineBuilder newLineBuilder(Font font, int x, int y) { return new ModularGuiLineBuilder(font, this.line, x, y); } - protected void renderBg(int guiLeft, GuiGraphics graphics) { + protected void renderBg(int guiLeft, GuiGraphicsExtractor graphics) { this.line.renderWidgetBG(guiLeft, graphics); } } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java index 10b89e21d0..d7f80fa40c 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/CargoThresholdCondition.java @@ -9,15 +9,14 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class CargoThresholdCondition extends LazyTickedScheduleCondition { public static enum Ops { @@ -52,7 +51,7 @@ public CargoThresholdCondition() { @Override public boolean lazyTickCompletion(Level level, Train train, CompoundTag context) { - int lastChecked = context.contains("LastChecked") ? context.getInt("LastChecked") : -1; + int lastChecked = context.getIntOr("LastChecked", -1); int status = 0; for (Carriage carriage : train.carriages) status += carriage.storage.getVersion(); @@ -70,7 +69,7 @@ protected void requestStatusToUpdate(int amount, CompoundTag context) { protected int getLastDisplaySnapshot(CompoundTag context) { if (!context.contains("CurrentDisplay")) return -1; - return context.getInt("CurrentDisplay"); + return context.getIntOr("CurrentDisplay", -1); } protected abstract boolean test(Level level, Train train, CompoundTag context); @@ -116,7 +115,6 @@ public List getSecondLineTooltip(int slot) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(0, 24, (i, l) -> { i.forOptions(Ops.translatedOptions()) diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdCondition.java index e4acb9ed05..558e61ec47 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdCondition.java @@ -10,18 +10,16 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.ChatFormatting; -import net.minecraft.client.Minecraft; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; @@ -69,7 +67,7 @@ protected void writeAdditional(HolderLookup.Provider registries, CompoundTag tag protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) { super.readAdditional(registries, tag); if (tag.contains("Bucket")) - compareStack = FilterItemStack.of(registries, tag.getCompound("Bucket")); + compareStack = FilterItemStack.of(registries, tag.getCompoundOrEmpty("Bucket")); } @Override @@ -77,11 +75,6 @@ public boolean tickCompletion(Level level, Train train, CompoundTag context) { return super.tickCompletion(level, train, context); } - @OnlyIn(Dist.CLIENT) - private FluidStack loadFluid() { - return compareStack.fluid(Minecraft.getInstance().level); - } - @Override public List getTitleAs(String type) { return ImmutableList.of( @@ -92,7 +85,7 @@ public List getTitleAs(String type) { compareStack.isEmpty() ? CreateLang.translateDirect("schedule.condition.threshold.anything") : compareStack.isFilterItem() ? CreateLang.translateDirect("schedule.condition.threshold.matching_content") - : loadFluid().getHoverName()) + : FluidThresholdConditionClient.loadFluid(compareStack).getHoverName()) .withStyle(ChatFormatting.DARK_AQUA)); } @@ -107,12 +100,11 @@ public ItemStack getItem(int slot) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("fluid_threshold"); } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { super.initConfigurationWidgets(builder); builder.addSelectionScrollInput(71, 50, (i, l) -> { diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdConditionClient.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdConditionClient.java new file mode 100644 index 0000000000..a087927743 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/FluidThresholdConditionClient.java @@ -0,0 +1,14 @@ +package com.simibubi.create.content.trains.schedule.condition; + +import com.simibubi.create.content.logistics.filter.FilterItemStack; + +import net.minecraft.client.Minecraft; +import net.neoforged.neoforge.fluids.FluidStack; + +public class FluidThresholdConditionClient { + + public static FluidStack loadFluid(FilterItemStack stack) { + return stack.fluid(Minecraft.getInstance().level); + } + +} diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/IdleCargoCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/IdleCargoCondition.java index 0ed6eef95a..8561f4110a 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/IdleCargoCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/IdleCargoCondition.java @@ -5,10 +5,10 @@ import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -20,7 +20,7 @@ public Pair getSummary() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("idle"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ItemThresholdCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ItemThresholdCondition.java index 7488ee7b46..6d3819e725 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ItemThresholdCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ItemThresholdCondition.java @@ -10,18 +10,17 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.ChatFormatting; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.IItemHandlerModifiable; public class ItemThresholdCondition extends CargoThresholdCondition { @@ -73,7 +72,7 @@ protected void writeAdditional(HolderLookup.Provider registries, CompoundTag tag protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) { super.readAdditional(registries, tag); if (tag.contains("Item")) - stack = FilterItemStack.of(registries, tag.getCompound("Item")); + stack = FilterItemStack.of(registries, tag.getCompoundOrEmpty("Item")); } @Override @@ -110,12 +109,11 @@ private boolean inStacks() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("item_threshold"); } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { super.initConfigurationWidgets(builder); builder.addSelectionScrollInput(71, 50, (i, l) -> { diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/LazyTickedScheduleCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/LazyTickedScheduleCondition.java index 6d2bce1812..fa83fdc4da 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/LazyTickedScheduleCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/LazyTickedScheduleCondition.java @@ -15,7 +15,7 @@ public LazyTickedScheduleCondition(int tickRate) { @Override public boolean tickCompletion(Level level, Train train, CompoundTag context) { - int time = context.getInt("Time"); + int time = context.getIntOr("Time", 0); if (time % tickRate == 0) { if (lazyTickCompletion(level, train, context)) return true; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/PlayerPassengerCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/PlayerPassengerCondition.java index 8503924133..820b67b5da 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/PlayerPassengerCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/PlayerPassengerCondition.java @@ -9,17 +9,16 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class PlayerPassengerCondition extends ScheduleWaitCondition { @@ -32,7 +31,7 @@ public Pair getSummary() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("player_count"); } @@ -53,7 +52,6 @@ public List getTitleAs(String type) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addScrollInput(0, 31, (i, l) -> { i.titled(CreateLang.translateDirect("schedule.condition.player_count.players")) @@ -69,7 +67,7 @@ public void initConfigurationWidgets(ModularGuiLineBuilder builder) { @Override public boolean tickCompletion(Level level, Train train, CompoundTag context) { - int prev = context.getInt("PrevPlayerCount"); + int prev = context.getIntOr("PrevPlayerCount", -1); int present = train.countPlayerPassengers(); int target = getTarget(); context.putInt("PrevPlayerCount", present); diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/RedstoneLinkCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/RedstoneLinkCondition.java index ff42965cb8..b222bc53ca 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/RedstoneLinkCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/RedstoneLinkCondition.java @@ -9,20 +9,20 @@ import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class RedstoneLinkCondition extends ScheduleWaitCondition { @@ -70,7 +70,7 @@ public List getTitleAs(String type) { @Override public boolean tickCompletion(Level level, Train train, CompoundTag context) { - int lastChecked = context.contains("LastChecked") ? context.getInt("LastChecked") : -1; + int lastChecked = context.getIntOr("LastChecked", -1); int status = Create.REDSTONE_LINK_NETWORK_HANDLER.globalPowerVersion.get(); if (status == lastChecked) return false; @@ -91,13 +91,13 @@ public ItemStack getItem(int slot) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("redstone_link"); } @Override protected void writeAdditional(HolderLookup.Provider registries, CompoundTag tag) { - tag.put("Frequency", freq.serializeEach(f -> (CompoundTag) f.getStack().saveOptional(registries))); + tag.put("Frequency", freq.serializeEach(f -> LegacyItemStackNbtBridge.saveOptionalCompound(f.getStack(), registries))); } public boolean lowActivation() { @@ -107,11 +107,11 @@ public boolean lowActivation() { @Override protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) { if (tag.contains("Frequency")) - freq = Couple.deserializeEach(tag.getList("Frequency", Tag.TAG_COMPOUND), c -> Frequency.of(ItemStack.parseOptional(registries, c))); + freq = Couple.deserializeEach(tag.getListOrEmpty("Frequency"), + c -> Frequency.of(LegacyItemStackNbtBridge.parseOptional(registries, c))); } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addSelectionScrollInput(20, 101, (i, l) -> i.forOptions(CreateLang.translatedOptions("schedule.condition.redstone_link", "powered", "unpowered")) diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduleWaitCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduleWaitCondition.java index 01651cbb26..3265127edf 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduleWaitCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduleWaitCondition.java @@ -8,13 +8,13 @@ import com.simibubi.create.content.trains.schedule.ScheduleDataEntry; import com.simibubi.create.foundation.codec.CreateStreamCodecs; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.Level; public abstract class ScheduleWaitCondition extends ScheduleDataEntry { @@ -25,7 +25,7 @@ public abstract class ScheduleWaitCondition extends ScheduleDataEntry { public abstract boolean tickCompletion(Level level, Train train, CompoundTag context); protected void requestStatusToUpdate(CompoundTag context) { - context.putInt("StatusVersion", context.getInt("StatusVersion") + 1); + context.putInt("StatusVersion", context.getIntOr("StatusVersion", 0) + 1); } public final CompoundTag write(HolderLookup.Provider registries) { @@ -38,9 +38,9 @@ public final CompoundTag write(HolderLookup.Provider registries) { } public static ScheduleWaitCondition fromTag(HolderLookup.Provider registries, CompoundTag tag) { - ResourceLocation location = ResourceLocation.parse(tag.getString("Id")); + Identifier location = Identifier.parse(tag.getStringOr("Id", "create:delay")); Supplier supplier = null; - for (Pair> pair : Schedule.CONDITION_TYPES) + for (Pair> pair : Schedule.CONDITION_TYPES) if (pair.getFirst() .equals(location)) supplier = pair.getSecond(); @@ -53,7 +53,7 @@ public static ScheduleWaitCondition fromTag(HolderLookup.Provider registries, Co ScheduleWaitCondition condition = supplier.get(); // Left around for migration purposes. Data added in writeAdditional has moved into the "Data" tag condition.readAdditional(registries, tag); - CompoundTag data = tag.getCompound("Data"); + CompoundTag data = tag.getCompoundOrEmpty("Data"); condition.readAdditional(registries, data); condition.data = data; return condition; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduledDelay.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduledDelay.java index 8d26748e7b..e2793ec058 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduledDelay.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/ScheduledDelay.java @@ -4,10 +4,10 @@ import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -20,7 +20,7 @@ public Pair getSummary() { @Override public boolean tickCompletion(Level level, Train train, CompoundTag context) { - int time = context.getInt("Time"); + int time = context.getIntOr("Time", 0); if (time >= totalWaitTicks()) return true; @@ -30,7 +30,7 @@ public boolean tickCompletion(Level level, Train train, CompoundTag context) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("delay"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationPoweredCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationPoweredCondition.java index fecc4627ca..38664ba84b 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationPoweredCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationPoweredCondition.java @@ -5,14 +5,14 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; @@ -47,7 +47,7 @@ protected void writeAdditional(HolderLookup.Provider registries, CompoundTag tag protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) {} @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("powered"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationUnloadedCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationUnloadedCondition.java index f0988263d3..bb75e85b1f 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationUnloadedCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/StationUnloadedCondition.java @@ -5,13 +5,13 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; @@ -46,7 +46,7 @@ protected void writeAdditional(HolderLookup.Provider registries, CompoundTag tag protected void readAdditional(HolderLookup.Provider registries, CompoundTag tag) {} @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("unloaded"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimeOfDayCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimeOfDayCondition.java index d553e64201..3a8c656c5e 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimeOfDayCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimeOfDayCondition.java @@ -12,19 +12,19 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TimeOfDayCondition extends ScheduleWaitCondition { @@ -38,7 +38,7 @@ public boolean tickCompletion(Level level, Train train, CompoundTag context) { int maxTickDiff = 40; int targetHour = intData("Hour"); int targetMinute = intData("Minute"); - int dayTime = (int) (level.getDayTime() % getRotation()); + int dayTime = (int) (level.getOverworldClockTime() % getRotation()); int targetTicks = (int) ((((targetHour + 18) % 24) * 1000 + Math.ceil(targetMinute / 60f * 1000)) % getRotation()); int diff = dayTime - targetTicks; @@ -93,23 +93,21 @@ public String twoDigits(int t) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("time_of_day"); } @Override - @OnlyIn(Dist.CLIENT) - public boolean renderSpecialIcon(GuiGraphics graphics, int x, int y) { + public boolean renderSpecialIcon(GuiGraphicsExtractor graphics, int x, int y) { int displayHr = (intData("Hour") + 12) % 24; float progress = (displayHr * 60f + intData("Minute")) / (24 * 60); - ResourceLocation location = - ResourceLocation.withDefaultNamespace("textures/item/clock_" + twoDigits(Mth.clamp((int) (progress * 64), 0, 63)) + ".png"); - graphics.blit(location, x, y, 0, 0, 0, 16, 16, 16, 16); + Identifier location = + Identifier.withDefaultNamespace("textures/item/clock_" + twoDigits(Mth.clamp((int) (progress * 64), 0, 63)) + ".png"); + graphics.blit(RenderPipelines.GUI_TEXTURED, location, x, y, 0, 0, 16, 16, 16, 16); return true; } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { MutableObject minuteInput = new MutableObject<>(); MutableObject hourInput = new MutableObject<>(); @@ -170,7 +168,7 @@ public void initConfigurationWidgets(ModularGuiLineBuilder builder) { public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { int targetHour = intData("Hour"); int targetMinute = intData("Minute"); - int dayTime = (int) (level.getDayTime() % getRotation()); + int dayTime = (int) (level.getOverworldClockTime() % getRotation()); int targetTicks = (int) ((((targetHour + 18) % 24) * 1000 + Math.ceil(targetMinute / 60f * 1000)) % getRotation()); int diff = targetTicks - dayTime; @@ -178,7 +176,7 @@ public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag t if (diff < 0) diff += getRotation(); - int departureTime = (int) (level.getDayTime() + diff) % 24000; + int departureTime = (int) (level.getOverworldClockTime() + diff) % 24000; int departingHour = (departureTime / 1000 + 6) % 24; int departingMinute = (departureTime % 1000) * 60 / 1000; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimedWaitCondition.java b/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimedWaitCondition.java index 36029aed14..f9bf739d11 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimedWaitCondition.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/condition/TimedWaitCondition.java @@ -15,7 +15,6 @@ import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class TimedWaitCondition extends ScheduleWaitCondition { @@ -90,7 +89,6 @@ public TimeUnit getUnit() { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addScrollInput(0, 31, (i, l) -> { i.titled(CreateLang.translateDirect("generic.duration")) @@ -108,7 +106,7 @@ public void initConfigurationWidgets(ModularGuiLineBuilder builder) { @Override public MutableComponent getWaitingStatus(Level level, Train train, CompoundTag tag) { - int time = tag.getInt("Time"); + int time = tag.getIntOr("Time", 0); int ticksUntilDeparture = totalWaitTicks() - time; boolean showInMinutes = ticksUntilDeparture >= 20 * 60; int num = diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeThrottleInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeThrottleInstruction.java index 3f22d073fb..34c38ca7c1 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeThrottleInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeThrottleInstruction.java @@ -13,15 +13,14 @@ import com.simibubi.create.foundation.gui.ModularGuiLineBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ChangeThrottleInstruction extends ScheduleInstruction { @@ -40,7 +39,7 @@ private MutableComponent formatted() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("throttle"); } @@ -63,7 +62,6 @@ public List getTitleAs(String type) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addScrollInput(0, 50, (si, l) -> { si.withRange(5, 101) diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeTitleInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeTitleInstruction.java index e6716538ca..f136b3c1f0 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeTitleInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ChangeTitleInstruction.java @@ -11,10 +11,10 @@ import com.simibubi.create.content.trains.schedule.ScheduleRuntime.State; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; @@ -27,7 +27,7 @@ public Pair getSummary() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("rename"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/DeliverPackagesInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/DeliverPackagesInstruction.java index 5f5d76595c..6a6d7876f2 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/DeliverPackagesInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/DeliverPackagesInstruction.java @@ -20,11 +20,11 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -56,7 +56,7 @@ public List getTitleAs(String type) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("package_delivery"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/DestinationInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/DestinationInstruction.java index 502440b7c2..0bb11cd5c4 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/DestinationInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/DestinationInstruction.java @@ -17,16 +17,15 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Glob; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Glob; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class DestinationInstruction extends TextScheduleInstruction { @@ -41,7 +40,7 @@ public boolean supportsConditions() { } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("destination"); } @@ -70,7 +69,6 @@ public List getSecondLineTooltip(int slot) { } @Override - @OnlyIn(Dist.CLIENT) protected void modifyEditBox(EditBox box) { box.setFilter(s -> StringUtils.countMatches(s, '*') <= 3); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/FetchPackagesInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/FetchPackagesInstruction.java index 779f921926..afbc7c0489 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/FetchPackagesInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/FetchPackagesInstruction.java @@ -21,20 +21,19 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Glob; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Glob; +import net.createmod.catnip.api.data.Pair; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.items.IItemHandlerModifiable; public class FetchPackagesInstruction extends TextScheduleInstruction { @@ -82,13 +81,12 @@ public List getSecondLineTooltip(int slot) { } @Override - @OnlyIn(Dist.CLIENT) protected void modifyEditBox(EditBox box) { box.setFilter(s -> StringUtils.countMatches(s, '*') <= 3); } @Override - public ResourceLocation getId() { + public Identifier getId() { return Create.asResource("package_retrieval"); } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ScheduleInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ScheduleInstruction.java index 13c0b6c0ff..16aac39c0d 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/ScheduleInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/ScheduleInstruction.java @@ -11,12 +11,12 @@ import com.simibubi.create.content.trains.schedule.ScheduleRuntime; import com.simibubi.create.foundation.codec.CreateStreamCodecs; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.Level; public abstract class ScheduleInstruction extends ScheduleDataEntry { @@ -39,9 +39,9 @@ public final CompoundTag write(HolderLookup.Provider registries) { } public static ScheduleInstruction fromTag(HolderLookup.Provider registries, CompoundTag tag) { - ResourceLocation location = ResourceLocation.parse(tag.getString("Id")); + Identifier location = Identifier.parse(tag.getStringOr("Id", "create:destination")); Supplier supplier = null; - for (Pair> pair : Schedule.INSTRUCTION_TYPES) + for (Pair> pair : Schedule.INSTRUCTION_TYPES) if (pair.getFirst() .equals(location)) supplier = pair.getSecond(); @@ -54,7 +54,7 @@ public static ScheduleInstruction fromTag(HolderLookup.Provider registries, Comp ScheduleInstruction scheduleDestination = supplier.get(); // Left around for migration purposes. Data added in writeAdditional has moved into the "Data" tag scheduleDestination.readAdditional(registries, tag); - CompoundTag data = tag.getCompound("Data"); + CompoundTag data = tag.getCompoundOrEmpty("Data"); scheduleDestination.readAdditional(registries, data); scheduleDestination.data = data; return scheduleDestination; diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/destination/TextScheduleInstruction.java b/src/main/java/com/simibubi/create/content/trains/schedule/destination/TextScheduleInstruction.java index 9a9a5591c4..ac9b9bc221 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/destination/TextScheduleInstruction.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/destination/TextScheduleInstruction.java @@ -10,7 +10,6 @@ import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class TextScheduleInstruction extends ScheduleInstruction { @@ -25,12 +24,10 @@ public List getTitleAs(String type) { } @Override - @OnlyIn(Dist.CLIENT) public void initConfigurationWidgets(ModularGuiLineBuilder builder) { builder.addTextInput(0, 121, (e, t) -> modifyEditBox(e), "Text"); } - @OnlyIn(Dist.CLIENT) protected void modifyEditBox(EditBox box) {} } diff --git a/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatInfoReloadListener.java b/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatInfoReloadListener.java index 224a334e7d..779d21c522 100644 --- a/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatInfoReloadListener.java +++ b/src/main/java/com/simibubi/create/content/trains/schedule/hat/TrainHatInfoReloadListener.java @@ -10,13 +10,13 @@ import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.FileToIdConverter; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.util.GsonHelper; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.animal.SnowGolem; +import net.minecraft.world.entity.animal.golem.SnowGolem; import net.minecraft.world.phys.Vec3; public class TrainHatInfoReloadListener { @@ -32,7 +32,7 @@ private static void registerOffsetOverrides(ResourceManager manager) { FileToIdConverter converter = FileToIdConverter.json(HAT_INFO_DIRECTORY); converter.listMatchingResources(manager).forEach((location, resource) -> { String[] splitPath = location.getPath().split("/"); - ResourceLocation entityName = ResourceLocation.fromNamespaceAndPath(location.getNamespace(), splitPath[splitPath.length - 1].replace(".json", "")); + Identifier entityName = Identifier.fromNamespaceAndPath(location.getNamespace(), splitPath[splitPath.length - 1].replace(".json", "")); if (!BuiltInRegistries.ENTITY_TYPE.containsKey(entityName)) { Create.LOGGER.error("Failed to load train hat info for entity {} as it does not exist.", entityName); return; @@ -40,7 +40,11 @@ private static void registerOffsetOverrides(ResourceManager manager) { try (BufferedReader reader = resource.openAsReader()) { JsonObject json = GsonHelper.parse(reader); - ENTITY_INFO_MAP.put(BuiltInRegistries.ENTITY_TYPE.get(entityName), TrainHatInfo.CODEC.parse(JsonOps.INSTANCE, json).resultOrPartial(Create.LOGGER::error).orElseThrow()); + BuiltInRegistries.ENTITY_TYPE.get(entityName) + .ifPresent(entityType -> ENTITY_INFO_MAP.put(entityType.value(), + TrainHatInfo.CODEC.parse(JsonOps.INSTANCE, json) + .resultOrPartial(Create.LOGGER::error) + .orElseThrow())); } catch (Exception e) { Create.LOGGER.error("Failed to read train hat info for entity {}!", entityName, e); } diff --git a/src/main/java/com/simibubi/create/content/trains/signal/EdgeGroupColor.java b/src/main/java/com/simibubi/create/content/trains/signal/EdgeGroupColor.java index 735128663d..2236156343 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/EdgeGroupColor.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/EdgeGroupColor.java @@ -1,8 +1,8 @@ package com.simibubi.create.content.trains.signal; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.theme.Color; import net.minecraft.network.codec.StreamCodec; public enum EdgeGroupColor { diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlock.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlock.java index fe9c34c8d1..40b0d1c321 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlock.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -20,14 +20,15 @@ import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; -import net.minecraft.world.level.SignalGetter; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; public class SignalBlock extends Block implements IBE, IWrenchable { @@ -59,11 +60,6 @@ protected void createBlockStateDefinition(Builder pBuilder) { super.createBlockStateDefinition(pBuilder.add(TYPE, POWERED)); } - @Override - public boolean shouldCheckWeakPower(BlockState state, SignalGetter level, BlockPos pos, Direction side) { - return false; - } - @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext pContext) { @@ -73,9 +69,9 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - public void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, BlockPos pFromPos, + protected void neighborChanged(BlockState pState, Level pLevel, BlockPos pPos, Block pBlock, Orientation orientation, boolean pIsMoving) { - if (pLevel.isClientSide) + if (pLevel.isClientSide()) return; boolean powered = pState.getValue(POWERED); Optional ste = getBlockEntityOptional(pLevel, pPos); @@ -100,8 +96,9 @@ public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSou } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); + protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); + super.affectNeighborsAfterRemoval(state, worldIn, pos, isMoving); } @Override @@ -113,23 +110,23 @@ public BlockEntityType getBlockEntityType() { public InteractionResult onWrenched(BlockState state, UseOnContext context) { Level level = context.getLevel(); BlockPos pos = context.getClickedPos(); - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; withBlockEntityDo(level, pos, ste -> { Player player = context.getPlayer(); if (ste.computerBehaviour.hasAttachedComputer()) { if (player != null) - player.displayClientMessage(CreateLang.translateDirect("track_signal.mode_controlled_by_computer"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_signal.mode_controlled_by_computer")); return; } SignalBoundary signal = ste.getSignal(); if (signal != null) { signal.cycleSignalType(pos); if (player != null) - player.displayClientMessage(CreateLang.translateDirect("track_signal.mode_change." + signal.getTypeFor(pos) - .getSerializedName()), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_signal.mode_change." + signal.getTypeFor(pos) + .getSerializedName())); } else if (player != null) - player.displayClientMessage(CreateLang.translateDirect("track_signal.cannot_change_mode"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_signal.cannot_change_mode")); }); return InteractionResult.SUCCESS; } @@ -140,7 +137,7 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level blockAccess, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level blockAccess, BlockPos pPos, Direction direction) { return getBlockEntityOptional(blockAccess, pPos).filter(SignalBlockEntity::isPowered) .map($ -> 15) .orElse(0); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java index 4ab9d93a44..b523c240ba 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalBlockEntity.java @@ -18,7 +18,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -91,7 +91,7 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c super.read(tag, registries, clientPacket); state = NBTHelper.readEnum(tag, "State", SignalState.class); overlay = NBTHelper.readEnum(tag, "Overlay", OverlayState.class); - lastReportedPower = tag.getBoolean("Power"); + lastReportedPower = tag.getBooleanOr("Power", false); invalidateRenderBoundingBox(); } @@ -114,7 +114,7 @@ public void addBehaviours(List behaviours) { @Override public void tick() { super.tick(); - if (level.isClientSide) + if (level.isClientSide()) return; SignalBoundary boundary = getSignal(); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalBoundary.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalBoundary.java index a1dd66c3c5..d00bbb84c7 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalBoundary.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalBoundary.java @@ -16,9 +16,9 @@ import com.simibubi.create.content.trains.signal.SignalBlockEntity.OverlayState; import com.simibubi.create.content.trains.signal.SignalBlockEntity.SignalState; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -272,13 +272,13 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean migr for (int i = 1; i <= 2; i++) if (nbt.contains("Tiles" + i)) { boolean first = i == 1; - NBTHelper.iterateCompoundList(nbt.getList("Tiles" + i, Tag.TAG_COMPOUND), c -> blockEntities.get(first) - .put(NBTHelper.readBlockPos(c, "Pos"), c.getBoolean("Power"))); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Tiles" + i), c -> blockEntities.get(first) + .put(NBTHelper.readBlockPos(c, "Pos"), c.getBooleanOr("Power", false))); } for (int i = 1; i <= 2; i++) if (nbt.contains("Group" + i)) - groups.set(i == 1, nbt.getUUID("Group" + i)); + groups.set(i == 1, com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.getUUID(nbt, "Group" + i)); for (int i = 1; i <= 2; i++) sidesToUpdate.set(i == 1, nbt.contains("Update" + i)); for (int i = 1; i <= 2; i++) @@ -305,13 +305,13 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, DimensionPa nbt.put("Tiles" + i, NBTHelper.writeCompoundList(blockEntities.get(i == 1) .entrySet(), e -> { CompoundTag c = new CompoundTag(); - c.put("Pos", NbtUtils.writeBlockPos(e.getKey())); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(e.getKey())); c.putBoolean("Power", e.getValue()); return c; })); for (int i = 1; i <= 2; i++) if (groups.get(i == 1) != null) - nbt.putUUID("Group" + i, groups.get(i == 1)); + com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.putUUID(nbt, "Group" + i, groups.get(i == 1)); for (int i = 1; i <= 2; i++) if (sidesToUpdate.get(i == 1)) nbt.putBoolean("Update" + i, true); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroup.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroup.java index 1f6bb55679..3da6fd3d95 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroup.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroup.java @@ -12,9 +12,10 @@ import com.google.common.base.Predicates; import com.simibubi.create.Create; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.content.trains.entity.Train; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; @@ -132,22 +133,23 @@ private void walkIntersectingRec(Set visited, Consumer group.intersecting.put(nbt.getUUID("Key"), nbt.getUUID("Value"))); - group.fallbackGroup = tag.getBoolean("Fallback"); + NBTHelper.iterateCompoundList(tag.getListOrEmpty("Connected"), + nbt -> group.intersecting.put(LegacyNbtUtilsBridge.getUUID(nbt, "Key"), + LegacyNbtUtilsBridge.getUUID(nbt, "Value"))); + group.fallbackGroup = tag.getBooleanOr("Fallback", false); return group; } public CompoundTag write() { CompoundTag tag = new CompoundTag(); - tag.putUUID("Id", id); + LegacyNbtUtilsBridge.putUUID(tag, "Id", id); NBTHelper.writeEnum(tag, "Color", color); tag.put("Connected", NBTHelper.writeCompoundList(intersecting.entrySet(), e -> { CompoundTag nbt = new CompoundTag(); - nbt.putUUID("Key", e.getKey()); - nbt.putUUID("Value", e.getValue()); + LegacyNbtUtilsBridge.putUUID(nbt, "Key", e.getKey()); + LegacyNbtUtilsBridge.putUUID(nbt, "Value", e.getValue()); return nbt; })); tag.putBoolean("Fallback", fallbackGroup); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroupPacket.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroupPacket.java index 032a265827..e8d25882d7 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroupPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalEdgeGroupPacket.java @@ -8,16 +8,15 @@ import com.simibubi.create.AllPackets; import com.simibubi.create.CreateClient; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record SignalEdgeGroupPacket(List ids, List colors, boolean add) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -32,8 +31,7 @@ public SignalEdgeGroupPacket(UUID id, EdgeGroupColor color) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { Map signalEdgeGroups = CreateClient.RAILWAYS.signalEdgeGroups; for (int i = 0; i < ids.size(); i++) { UUID id = ids.get(i); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalPropagator.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalPropagator.java index 751d40849c..e320e5cafa 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalPropagator.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalPropagator.java @@ -21,9 +21,9 @@ import com.simibubi.create.content.trains.graph.TrackNode; import com.simibubi.create.content.trains.graph.TrackNodeLocation; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; public class SignalPropagator { diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalRenderer.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalRenderer.java index a06ae47f8f..8d278c0599 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalRenderer.java @@ -11,11 +11,11 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.render.CachedBuffers; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; @@ -37,15 +37,15 @@ protected void renderSafe(SignalBlockEntity be, float partialTicks, PoseStack ms SignalState signalState = be.getState(); OverlayState overlayState = be.getOverlay(); - float renderTime = AnimationTickHolder.getRenderTime(be.getLevel()); + float renderTime = AnimationTickHolder.getRenderTime(); if (signalState.isRedLight(renderTime)) CachedBuffers.partial(AllPartialModels.SIGNAL_ON, blockState) - .light(LightTexture.FULL_BLOCK) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .light(LightCoordsUtil.pack(15, 0)) + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); else CachedBuffers.partial(AllPartialModels.SIGNAL_OFF, blockState) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.solid())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); BlockPos pos = be.getBlockPos(); TrackTargetingBehaviour target = be.edgePoint; diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SignalVisual.java b/src/main/java/com/simibubi/create/content/trains/signal/SignalVisual.java index 464a7c3693..bd602251ad 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SignalVisual.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SignalVisual.java @@ -19,8 +19,8 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.visual.AbstractBlockEntityVisual; import dev.engine_room.flywheel.lib.visual.SimpleTickableVisual; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.renderer.LightTexture; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -72,7 +72,7 @@ private void setupVisual() { { SignalState signalState = blockEntity.getState(); - float renderTime = AnimationTickHolder.getRenderTime(blockEntity.getLevel()); + float renderTime = AnimationTickHolder.getRenderTime(); boolean isRedLight = signalState.isRedLight(renderTime); if (isRedLight != previousIsRedLight) { @@ -86,7 +86,7 @@ private void setupVisual() { .translate(getVisualPosition()); if (isRedLight) - signalLight.light(LightTexture.FULL_BLOCK); + signalLight.light(LightCoordsUtil.pack(15, 0)); signalLight.setChanged(); diff --git a/src/main/java/com/simibubi/create/content/trains/signal/SingleBlockEntityEdgePoint.java b/src/main/java/com/simibubi/create/content/trains/signal/SingleBlockEntityEdgePoint.java index a051afdf95..081dd9b81b 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/SingleBlockEntityEdgePoint.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/SingleBlockEntityEdgePoint.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.trains.graph.DimensionPalette; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -53,13 +53,13 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean migr if (migration) return; blockEntityPos = NBTHelper.readBlockPos(nbt, "BlockEntityPos"); - blockEntityDimension = dimensions.decode(nbt.contains("BlockEntityDimension") ? nbt.getInt("BlockEntityDimension") : -1); + blockEntityDimension = dimensions.decode(nbt.getIntOr("BlockEntityDimension", -1)); } @Override public void write(CompoundTag nbt, HolderLookup.Provider registries, DimensionPalette dimensions) { super.write(nbt, registries, dimensions); - nbt.put("BlockEntityPos", NbtUtils.writeBlockPos(blockEntityPos)); + nbt.put("BlockEntityPos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(blockEntityPos)); nbt.putInt("BlockEntityDimension", dimensions.encode(blockEntityDimension)); } diff --git a/src/main/java/com/simibubi/create/content/trains/signal/TrackEdgePoint.java b/src/main/java/com/simibubi/create/content/trains/signal/TrackEdgePoint.java index a805d5731c..54b5365e25 100644 --- a/src/main/java/com/simibubi/create/content/trains/signal/TrackEdgePoint.java +++ b/src/main/java/com/simibubi/create/content/trains/signal/TrackEdgePoint.java @@ -11,8 +11,9 @@ import com.simibubi.create.content.trains.graph.TrackNodeLocation; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -91,9 +92,9 @@ public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean migr if (migration) return; - id = nbt.getUUID("Id"); - position = nbt.getDouble("Position"); - edgeLocation = Couple.deserializeEach(nbt.getList("Edge", Tag.TAG_COMPOUND), + id = LegacyNbtUtilsBridge.getUUID(nbt, "Id"); + position = nbt.getDoubleOr("Position", 0); + edgeLocation = Couple.deserializeEach(nbt.getListOrEmpty("Edge"), tag -> TrackNodeLocation.read(tag, dimensions)); } @@ -104,13 +105,13 @@ public void read(FriendlyByteBuf buffer, DimensionPalette dimensions) { } public void write(CompoundTag nbt, HolderLookup.Provider registries, DimensionPalette dimensions) { - nbt.putUUID("Id", id); + LegacyNbtUtilsBridge.putUUID(nbt, "Id", id); nbt.putDouble("Position", position); nbt.put("Edge", edgeLocation.serializeEach(loc -> loc.write(dimensions))); } public void write(FriendlyByteBuf buffer, DimensionPalette dimensions) { - buffer.writeResourceLocation(type.getId()); + buffer.writeIdentifier(type.getId()); buffer.writeUUID(id); edgeLocation.forEach(loc -> loc.send(buffer, dimensions)); buffer.writeDouble(position); diff --git a/src/main/java/com/simibubi/create/content/trains/station/AbstractStationScreen.java b/src/main/java/com/simibubi/create/content/trains/station/AbstractStationScreen.java index 238f567689..e90ef50ff2 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/AbstractStationScreen.java +++ b/src/main/java/com/simibubi/create/content/trains/station/AbstractStationScreen.java @@ -3,7 +3,6 @@ import java.lang.ref.WeakReference; import java.util.List; -import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.CreateClient; import com.simibubi.create.compat.computercraft.ComputerScreen; import com.simibubi.create.content.trains.entity.Carriage; @@ -14,12 +13,9 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; public abstract class AbstractStationScreen extends AbstractSimiScreen { @@ -43,7 +39,7 @@ public AbstractStationScreen(StationBlockEntity be, GlobalStation station) { @Override protected void init() { if (blockEntity.computerBehaviour.hasAttachedComputer()) - minecraft.setScreen(new ComputerScreen(title, () -> + minecraft.gui.setScreen(new ComputerScreen(title, () -> Component.literal(station.name), this::renderAdditional, this, blockEntity.computerBehaviour::hasAttachedComputer)); @@ -84,13 +80,13 @@ public void tick() { super.tick(); if (blockEntity.computerBehaviour.hasAttachedComputer()) - minecraft.setScreen(new ComputerScreen(title, () -> + minecraft.gui.setScreen(new ComputerScreen(title, () -> Component.literal(station.name), this::renderAdditional, this, blockEntity.computerBehaviour::hasAttachedComputer)); } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; @@ -98,27 +94,8 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float renderAdditional(graphics, mouseX, mouseY, partialTicks, x, y, background); } - private void renderAdditional(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, AllGuiTextures background) { - PoseStack ms = graphics.pose(); - ms.pushPose(); - var msr = TransformStack.of(ms); - msr.pushPose() - .translate(guiLeft + background.getWidth() + 4, guiTop + background.getHeight() + 4, 100) - .scale(40) - .rotateXDegrees(-22) - .rotateYDegrees(63); - GuiGameElement.of(blockEntity.getBlockState() - .setValue(BlockStateProperties.WATERLOGGED, false)) - .render(graphics); - - if (blockEntity.resolveFlagAngle()) { - msr.translate(1 / 16f, -19 / 16f, -12 / 16f); - StationRenderer.transformFlag(msr, blockEntity, partialTicks, 180, false); - GuiGameElement.of(getFlag(partialTicks)) - .render(graphics); - } - - ms.popPose(); + private void renderAdditional(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks, int guiLeft, int guiTop, AllGuiTextures background) { + // TODO 26.2: restore the decorative station block preview on the new GUI render-state pipeline. } protected abstract PartialModel getFlag(float partialTicks); diff --git a/src/main/java/com/simibubi/create/content/trains/station/AssemblyScreen.java b/src/main/java/com/simibubi/create/content/trains/station/AssemblyScreen.java index 4a4cd254d2..a87ccb0403 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/AssemblyScreen.java +++ b/src/main/java/com/simibubi/create/content/trains/station/AssemblyScreen.java @@ -13,20 +13,20 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.ScrollInput; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Renderable; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class AssemblyScreen extends AbstractStationScreen { private IconButton quitAssembly; private IconButton toggleAssemblyButton; - private List iconTypes; + private List iconTypes; private ScrollInput iconTypeScroll; public AssemblyScreen(StationBlockEntity be, GlobalStation station) { @@ -66,15 +66,15 @@ protected void init() { toggleAssemblyButton.active = false; toggleAssemblyButton.setToolTip(CreateLang.translateDirect("station.assemble_train")); toggleAssemblyButton.withCallback(() -> { - CatnipServices.NETWORK.sendToServer(StationEditPacket.tryAssemble(blockEntity.getBlockPos())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.tryAssemble(blockEntity.getBlockPos())); }); quitAssembly = new IconButton(x + 73, by, AllIcons.I_DISABLE); quitAssembly.active = true; quitAssembly.setToolTip(CreateLang.translateDirect("station.cancel")); quitAssembly.withCallback(() -> { - CatnipServices.NETWORK.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); - minecraft.setScreen(new StationScreen(blockEntity, station)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); + minecraft.gui.setScreen(new StationScreen(blockEntity, station)); }); addRenderableWidget(toggleAssemblyButton); @@ -91,8 +91,8 @@ public void tick() { toggleAssemblyButton.active = blockEntity.bogeyCount > 0 || train != null; if (train != null) { - CatnipServices.NETWORK.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); - minecraft.setScreen(new StationScreen(blockEntity, station)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); + minecraft.gui.setScreen(new StationScreen(blockEntity, station)); for (Carriage carriage : train.carriages) carriage.updateConductors(); } @@ -106,37 +106,37 @@ private void tickTrainDisplay() { toggleAssemblyButton.setToolTip(CreateLang.translateDirect("station.assemble_train")); toggleAssemblyButton.setIcon(AllGuiTextures.I_ASSEMBLE_TRAIN); toggleAssemblyButton.withCallback(() -> { - CatnipServices.NETWORK.sendToServer(StationEditPacket.tryAssemble(blockEntity.getBlockPos())); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.tryAssemble(blockEntity.getBlockPos())); }); } else { - CatnipServices.NETWORK.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); - minecraft.setScreen(new StationScreen(blockEntity, station)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), false, station.name, null)); + minecraft.gui.setScreen(new StationScreen(blockEntity, station)); } } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderWindow(graphics, mouseX, mouseY, partialTicks); int x = guiLeft; int y = guiTop; MutableComponent header = CreateLang.translateDirect("station.assembly_title"); - graphics.drawString(font, header, x + background.getWidth() / 2 - font.width(header) / 2, y + 4, 0x0E2233, false); + graphics.text(font, header, x + background.getWidth() / 2 - font.width(header) / 2, y + 4, 0x0E2233, false); AssemblyException lastAssemblyException = blockEntity.lastException; if (lastAssemblyException != null) { MutableComponent text = CreateLang.translateDirect("station.failed"); - graphics.drawString(font, text, x + 97 - font.width(text) / 2, y + 47, 0x775B5B, false); + graphics.text(font, text, x + 97 - font.width(text) / 2, y + 47, 0x775B5B, false); int offset = 0; if (blockEntity.failedCarriageIndex != -1) { - graphics.drawString(font, CreateLang.translateDirect("station.carriage_number", blockEntity.failedCarriageIndex), x + 30, + graphics.text(font, CreateLang.translateDirect("station.carriage_number", blockEntity.failedCarriageIndex), x + 30, y + 67, 0x7A7A7A, false); offset += 10; } - graphics.drawWordWrap(font, lastAssemblyException.component, x + 30, y + 67 + offset, 134, 0x775B5B); + graphics.textWithWordWrap(font, lastAssemblyException.component, x + 30, y + 67 + offset, 134, 0x775B5B); offset += font.split(lastAssemblyException.component, 134) .size() * 9 + 5; - graphics.drawWordWrap(font, CreateLang.translateDirect("station.retry"), x + 30, y + 67 + offset, 134, 0x7A7A7A); + graphics.textWithWordWrap(font, CreateLang.translateDirect("station.retry"), x + 30, y + 67 + offset, 134, 0x7A7A7A); return; } @@ -145,11 +145,11 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float MutableComponent text = CreateLang.translateDirect( bogeyCount == 0 ? "station.no_bogeys" : bogeyCount == 1 ? "station.one_bogey" : "station.more_bogeys", bogeyCount); - graphics.drawString(font, text, x + 97 - font.width(text) / 2, y + 47, 0x7A7A7A, false); + graphics.text(font, text, x + 97 - font.width(text) / 2, y + 47, 0x7A7A7A, false); - graphics.drawWordWrap(font, CreateLang.translateDirect("station.how_to"), x + 28, y + 62, 134, 0x7A7A7A); - graphics.drawWordWrap(font, CreateLang.translateDirect("station.how_to_1"), x + 28, y + 94, 134, 0x7A7A7A); - graphics.drawWordWrap(font, CreateLang.translateDirect("station.how_to_2"), x + 28, y + 117, 138, 0x7A7A7A); + graphics.textWithWordWrap(font, CreateLang.translateDirect("station.how_to"), x + 28, y + 62, 134, 0x7A7A7A); + graphics.textWithWordWrap(font, CreateLang.translateDirect("station.how_to_1"), x + 28, y + 94, 134, 0x7A7A7A); + graphics.textWithWordWrap(font, CreateLang.translateDirect("station.how_to_2"), x + 28, y + 117, 138, 0x7A7A7A); } @Override @@ -157,9 +157,9 @@ public void removed() { super.removed(); Train train = displayedTrain.get(); if (train != null) { - ResourceLocation iconId = iconTypes.get(iconTypeScroll.getState()); + Identifier iconId = iconTypes.get(iconTypeScroll.getState()); train.icon = TrainIconType.byId(iconId); - CatnipServices.NETWORK.sendToServer(new TrainEditPacket.Serverbound(train.id, "", iconId, train.mapColorIndex)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrainEditPacket.Serverbound(train.id, "", iconId, train.mapColorIndex)); } } diff --git a/src/main/java/com/simibubi/create/content/trains/station/GlobalStation.java b/src/main/java/com/simibubi/create/content/trains/station/GlobalStation.java index 5a7b43b1d5..cedefd1d0c 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/GlobalStation.java +++ b/src/main/java/com/simibubi/create/content/trains/station/GlobalStation.java @@ -17,7 +17,7 @@ import com.simibubi.create.content.trains.graph.TrackNode; import com.simibubi.create.content.trains.signal.SingleBlockEntityEdgePoint; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -61,17 +61,18 @@ public void blockEntityAdded(BlockEntity blockEntity, boolean front) { @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean migration, DimensionPalette dimensions) { super.read(nbt, registries, migration, dimensions); - name = nbt.getString("Name"); - assembling = nbt.getBoolean("Assembling"); + name = nbt.getStringOr("Name", "Track Station"); + assembling = nbt.getBooleanOr("Assembling", false); nearestTrain = new WeakReference<>(null); connectedPorts.clear(); - ListTag portList = nbt.getList("Ports", Tag.TAG_COMPOUND); + ListTag portList = nbt.getListOrEmpty("Ports"); NBTHelper.iterateCompoundList(portList, c -> { GlobalPackagePort port = new GlobalPackagePort(); - port.address = c.getString("Address"); - port.offlineBuffer.deserializeNBT(registries, c.getCompound("OfflineBuffer")); - port.primed = c.getBoolean("Primed"); + port.address = c.getStringOr("Address", ""); + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.deserializeHandler(port.offlineBuffer, + registries, c.getCompoundOrEmpty("OfflineBuffer")); + port.primed = c.getBooleanOr("Primed", false); connectedPorts.put(NBTHelper.readBlockPos(c, "Pos"), port); }); } @@ -94,9 +95,10 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, DimensionPa nbt.put("Ports", NBTHelper.writeCompoundList(connectedPorts.entrySet(), e -> { CompoundTag c = new CompoundTag(); c.putString("Address", e.getValue().address); - c.put("OfflineBuffer", e.getValue().offlineBuffer.serializeNBT(registries)); + c.put("OfflineBuffer", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge + .serializeHandler(e.getValue().offlineBuffer, registries)); c.putBoolean("Primed", e.getValue().primed); - c.put("Pos", NbtUtils.writeBlockPos(e.getKey())); + c.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(e.getKey())); return c; })); } diff --git a/src/main/java/com/simibubi/create/content/trains/station/NoShadowFontWrapper.java b/src/main/java/com/simibubi/create/content/trains/station/NoShadowFontWrapper.java index 41704724f1..4d9eee9b84 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/NoShadowFontWrapper.java +++ b/src/main/java/com/simibubi/create/content/trains/station/NoShadowFontWrapper.java @@ -1,114 +1,6 @@ package com.simibubi.create.content.trains.station; -import java.util.List; - -import org.joml.Matrix4f; - -import com.simibubi.create.foundation.mixin.accessor.FontAccessor; - -import net.minecraft.client.StringSplitter; -import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.FormattedText; -import net.minecraft.util.FormattedCharSequence; - -public class NoShadowFontWrapper extends Font { - - private Font wrapped; - - public NoShadowFontWrapper(Font wrapped) { - super(((FontAccessor) wrapped).create$getFonts(), false); - this.wrapped = wrapped; - } - - @Override - public int drawInBatch(Component pText, float pX, float pY, int pColor, boolean pDropShadow, Matrix4f pMatrix, - MultiBufferSource pBuffer, DisplayMode pDisplayMode, int pBackgroundColor, int pPackedLightCoords) { - return wrapped.drawInBatch(pText, pX, pY, pColor, false, pMatrix, pBuffer, pDisplayMode, pBackgroundColor, - pPackedLightCoords); - } - - @Override - public int drawInBatch(FormattedCharSequence pText, float pX, float pY, int pColor, boolean pDropShadow, - Matrix4f pMatrix, MultiBufferSource pBuffer, DisplayMode pDisplayMode, int pBackgroundColor, - int pPackedLightCoords) { - return wrapped.drawInBatch(pText, pX, pY, pColor, false, pMatrix, pBuffer, pDisplayMode, pBackgroundColor, - pPackedLightCoords); - } - - @Override - public int drawInBatch(String pText, float pX, float pY, int pColor, boolean pDropShadow, Matrix4f pMatrix, - MultiBufferSource pBuffer, DisplayMode pDisplayMode, int pBackgroundColor, int pPackedLightCoords) { - return wrapped.drawInBatch(pText, pX, pY, pColor, false, pMatrix, pBuffer, pDisplayMode, pBackgroundColor, - pPackedLightCoords); - } - - @Override - public int drawInBatch(String pText, float pX, float pY, int pColor, boolean pDropShadow, Matrix4f pMatrix, - MultiBufferSource pBuffer, DisplayMode pDisplayMode, int pBackgroundColor, int pPackedLightCoords, - boolean pBidirectional) { - return wrapped.drawInBatch(pText, pX, pY, pColor, false, pMatrix, pBuffer, pDisplayMode, pBackgroundColor, - pPackedLightCoords, pBidirectional); - } - - @Override - public FormattedText ellipsize(FormattedText text, int maxWidth) { - return wrapped.ellipsize(text, maxWidth); - } - - @Override - public int wordWrapHeight(FormattedText pText, int pMaxWidth) { - return wrapped.wordWrapHeight(pText, pMaxWidth); - } - - public String bidirectionalShaping(String pText) { - return wrapped.bidirectionalShaping(pText); - } - - public void drawInBatch8xOutline(FormattedCharSequence pText, float pX, float pY, int pColor, int pBackgroundColor, - Matrix4f pMatrix, MultiBufferSource pBuffer, int pPackedLightCoords) { - wrapped.drawInBatch8xOutline(pText, pX, pY, pColor, pBackgroundColor, pMatrix, pBuffer, pPackedLightCoords); +public final class NoShadowFontWrapper { + private NoShadowFontWrapper() { } - - public int width(String pText) { - return wrapped.width(pText); - } - - public int width(FormattedText pText) { - return wrapped.width(pText); - } - - public int width(FormattedCharSequence pText) { - return wrapped.width(pText); - } - - public String plainSubstrByWidth(String p_92838_, int p_92839_, boolean p_92840_) { - return wrapped.plainSubstrByWidth(p_92838_, p_92839_, p_92840_); - } - - public String plainSubstrByWidth(String pText, int pMaxWidth) { - return wrapped.plainSubstrByWidth(pText, pMaxWidth); - } - - public FormattedText substrByWidth(FormattedText pText, int pMaxWidth) { - return wrapped.substrByWidth(pText, pMaxWidth); - } - - public int wordWrapHeight(String pStr, int pMaxWidth) { - return wrapped.wordWrapHeight(pStr, pMaxWidth); - } - - public List split(FormattedText pText, int pMaxWidth) { - return wrapped.split(pText, pMaxWidth); - } - - public boolean isBidirectional() { - return wrapped.isBidirectional(); - } - - public StringSplitter getSplitter() { - return wrapped.getSplitter(); - } - } diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationBlock.java b/src/main/java/com/simibubi/create/content/trains/station/StationBlock.java index 44428cc828..8e7caa35e0 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationBlock.java @@ -10,14 +10,14 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -28,7 +28,10 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition.Builder; @@ -39,8 +42,6 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class StationBlock extends Block implements IBE, IWrenchable, ProperWaterloggedBlock { @@ -63,9 +64,8 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } @@ -86,45 +86,45 @@ public boolean hasAnalogOutputSignal(BlockState pState) { } @Override - public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) { + public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos, Direction direction) { return getBlockEntityOptional(pLevel, pPos).map(ste -> ste.trainPresent ? 15 : 0) .orElse(0); } @Override - public void onRemove(BlockState state, Level worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - IBE.onRemove(state, worldIn, pos, newState); +protected void affectNeighborsAfterRemoval(BlockState state, ServerLevel worldIn, BlockPos pos, boolean isMoving) { + IBE.onRemove(state, worldIn, pos, Blocks.AIR.defaultBlockState()); } @Override - public void updateEntityAfterFallOn(BlockGetter worldIn, Entity entityIn) { - super.updateEntityAfterFallOn(worldIn, entityIn); + public void fallOn(Level worldIn, BlockState state, BlockPos pos, Entity entityIn, double fallDistance) { + super.fallOn(worldIn, state, pos, entityIn, fallDistance); SharedDepotBlockMethods.onLanded(worldIn, entityIn); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { if (player == null || player.isShiftKeyDown()) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (AllItems.WRENCH.isIn(stack)) - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; if (stack.getItem() == Items.FILLED_MAP) { return onBlockEntityUseItemOn(level, pos, station -> { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + if (level.isClientSide()) + return InteractionResult.SUCCESS; if (station.getStation() == null || station.getStation().getId() == null) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; MapItemSavedData savedData = MapItem.getSavedData(stack, level); if (!(savedData instanceof StationMapData stationMapData)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; if (!stationMapData.toggleStation(level, pos, station)) - return ItemInteractionResult.FAIL; + return InteractionResult.FAIL; - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; }); } @@ -132,7 +132,7 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev ItemStack autoSchedule = station.getAutoSchedule(); if (autoSchedule.isEmpty()) return InteractionResult.PASS; - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; player.getInventory() .placeItemBackInInventory(autoSchedule.copy()); @@ -143,20 +143,8 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev }); if (result == InteractionResult.PASS) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> this.displayScreen(be, player))); - return ItemInteractionResult.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(StationBlockEntity be, Player player) { - if (!(player instanceof LocalPlayer)) - return; - GlobalStation station = be.getStation(); - BlockState blockState = be.getBlockState(); - if (station == null || blockState == null) - return; - boolean assembling = blockState.getBlock() == this && blockState.getValue(ASSEMBLING); - ScreenOpener.open(assembling ? new AssemblyScreen(be, station) : new StationScreen(be, station)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> withBlockEntityDo(level, pos, be -> StationClient.displayScreen(this, be, player))); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java index d694e5c4f3..79c3fc7b4a 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationBlockEntity.java @@ -56,17 +56,20 @@ import com.simibubi.create.foundation.block.ProperWaterloggedBlock; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.item.LegacyItemTransferAdapter; +import com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; import dan200.computercraft.api.peripheral.PeripheralCapability; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; @@ -95,7 +98,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; @@ -135,9 +137,9 @@ public StationBlockEntity(BlockEntityType type, BlockPos pos, BlockState stat public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerBlockEntity( - Capabilities.ItemHandler.BLOCK, + Capabilities.Item.BLOCK, AllBlockEntityTypes.TRACK_STATION.get(), - (be, context) -> be.depotBehaviour.itemHandler + (be, context) -> new LegacyItemTransferAdapter(be.depotBehaviour.itemHandler) ); if (Mods.COMPUTERCRAFT.isLoaded()) { @@ -164,15 +166,16 @@ public void addBehaviours(List behaviours) { @Override protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { lastException = AssemblyException.read(tag, registries); - failedCarriageIndex = tag.getInt("FailedCarriageIndex"); + failedCarriageIndex = tag.getIntOr("FailedCarriageIndex", 0); super.read(tag, registries, clientPacket); invalidateRenderBoundingBox(); if (tag.contains("ForceFlag")) - trainPresent = tag.getBoolean("ForceFlag"); + trainPresent = tag.getBooleanOr("ForceFlag", false); if (tag.contains("PrevTrainName")) - lastDisassembledTrainName = Component.Serializer.fromJson(tag.getString("PrevTrainName"), registries); - lastDisassembledMapColorIndex = tag.getInt("PrevTrainColor"); + lastDisassembledTrainName = + LegacyComponentSerializationBridge.fromJson(tag.getStringOr("PrevTrainName", ""), registries); + lastDisassembledMapColorIndex = tag.getIntOr("PrevTrainColor", 0); if (!clientPacket) return; @@ -184,7 +187,7 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c return; } - imminentTrain = tag.getUUID("ImminentTrain"); + imminentTrain = LegacyNbtUtilsBridge.getUUID(tag, "ImminentTrain"); trainPresent = tag.contains("TrainPresent"); trainCanDisassemble = tag.contains("TrainCanDisassemble"); trainBackwards = tag.contains("TrainBackwards"); @@ -198,7 +201,8 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean tag.putInt("FailedCarriageIndex", failedCarriageIndex); if (lastDisassembledTrainName != null) - tag.putString("PrevTrainName", Component.Serializer.toJson(lastDisassembledTrainName, registries)); + tag.putString("PrevTrainName", + LegacyComponentSerializationBridge.toJson(lastDisassembledTrainName, registries)); tag.putInt("PrevTrainColor", lastDisassembledMapColorIndex); super.write(tag, registries, clientPacket); @@ -208,7 +212,7 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean if (imminentTrain == null) return; - tag.putUUID("ImminentTrain", imminentTrain); + LegacyNbtUtilsBridge.putUUID(tag, "ImminentTrain", imminentTrain); if (trainPresent) NBTHelper.putMarker(tag, "TrainPresent"); @@ -240,18 +244,18 @@ public GlobalStation getStation() { @Override public void lazyTick() { - if (isAssembling() && !level.isClientSide) + if (isAssembling() && !level.isClientSide()) refreshAssemblyInfo(); super.lazyTick(); } @Override public void tick() { - if (isAssembling() && level.isClientSide) + if (isAssembling() && level.isClientSide()) refreshAssemblyInfo(); super.tick(); - if (level.isClientSide) { + if (level.isClientSide()) { float currentTarget = flag.getChaseTarget(); if (currentTarget == 0 || flag.settled()) { int target = trainPresent || isAssembling() ? 1 : 0; @@ -285,7 +289,7 @@ public void tick() { imminentTrain.runtime.displayLinkUpdateRequested = false; } - if (!level.isClientSide && computerBehaviour.hasAttachedComputer()) { + if (!level.isClientSide() && computerBehaviour.hasAttachedComputer()) { if (this.imminentTrain == null && imminentTrain != null) { computerBehaviour.prepareComputerEvent( new StationTrainPresenceEvent(StationTrainPresenceEvent.Type.IMMINENT, imminentTrain)); @@ -348,8 +352,8 @@ public boolean trackClicked(Player player, InteractionHand hand, ITrackBlock tra CompoundTag oldData = oldBE.getBogeyData(); BlockState newBlock = bogey.getNextSize(oldBE); if (newBlock.getBlock() == bogey) - player.displayClientMessage(CreateLang.translateDirect("bogey.style.no_other_sizes") - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect("bogey.style.no_other_sizes") + .withStyle(ChatFormatting.RED)); level.setBlock(bogeyPos, newBlock, Block.UPDATE_ALL); BlockEntity newEntity = level.getBlockEntity(bogeyPos); if (!(newEntity instanceof AbstractBogeyBlockEntity newBE)) @@ -365,7 +369,7 @@ public boolean trackClicked(Player player, InteractionHand hand, ITrackBlock tra ItemStack handItem = player.getItemInHand(hand); if (!player.isCreative() && !AllBlocks.RAILWAY_CASING.isIn(handItem)) { - player.displayClientMessage(CreateLang.translateDirect("train_assembly.requires_casing"), true); + player.sendOverlayMessage(CreateLang.translateDirect("train_assembly.requires_casing")); return false; } @@ -387,7 +391,7 @@ public boolean trackClicked(Player player, InteractionHand hand, ITrackBlock tra } bogeyAnchor = ProperWaterloggedBlock.withWater(level, bogeyAnchor, pos); level.setBlock(targetPos, bogeyAnchor, Block.UPDATE_ALL); - player.displayClientMessage(CreateLang.translateDirect("train_assembly.bogey_created"), true); + player.sendOverlayMessage(CreateLang.translateDirect("train_assembly.bogey_created")); SoundType soundtype = bogeyAnchor.getBlock() .getSoundType(state, level, pos, player); level.playSound(null, pos, soundtype.getPlaceSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, @@ -609,7 +613,7 @@ public void refreshAssemblyInfo() { bogeyCount = bogeyIndex; - if (level.isClientSide) + if (level.isClientSide()) return; if (prevLength == assemblyLength) return; @@ -655,7 +659,7 @@ public Direction getAssemblyDirection() { .get(0) .normalize() .scale(axisDirection.getStep()); - return assemblyDirection = Direction.getNearest(axis.x, axis.y, axis.z); + return assemblyDirection = Direction.getApproximateNearest(axis.x, axis.y, axis.z); } @Override @@ -689,7 +693,7 @@ public void assemble(UUID playerUUID) { Vec3 center = Vec3.atBottomCenterOf(trackPosition) .add(0, track.getElevationAtCenter(level, trackPosition, trackState), 0); Collection ends = track.getConnected(level, trackPosition, trackState, true, null); - Vec3 targetOffset = Vec3.atLowerCornerOf(assemblyDirection.getNormal()); + Vec3 targetOffset = Vec3.atLowerCornerOf(assemblyDirection.getUnitVec3i()); for (DiscoveredLocation end : ends) if (Mth.equal(0, targetOffset.distanceToSqr(end.getLocation() .subtract(center) @@ -718,7 +722,7 @@ public void assemble(UUID playerUUID) { } List points = new ArrayList<>(); - Vec3 directionVec = Vec3.atLowerCornerOf(assemblyDirection.getNormal()); + Vec3 directionVec = Vec3.atLowerCornerOf(assemblyDirection.getUnitVec3i()); TrackGraph graph = null; TrackNode secondNode = null; @@ -917,7 +921,6 @@ private void exception(AssemblyException exception, int carriage) { } @Override - @OnlyIn(Dist.CLIENT) public AABB getRenderBoundingBox() { if (isAssembling()) return AABB.INFINITE; @@ -981,7 +984,7 @@ public boolean resolveFlagAngle() { if (axis == null) return false; - Direction nearest = Direction.getNearest(axis.x, 0, axis.z); + Direction nearest = Direction.getApproximateNearest(axis.x, 0, axis.z); flagYRot = (int) (-nearest.toYRot() - 90); Vec3 diff = Vec3.atLowerCornerOf(trackPos.subtract(worldPosition)) @@ -990,7 +993,7 @@ public boolean resolveFlagAngle() { return true; flagFlipped = diff.dot(Vec3.atLowerCornerOf(nearest.getClockWise() - .getNormal())) > 0; + .getUnitVec3i())) > 0; return true; } @@ -1004,7 +1007,7 @@ public void transform(BlockEntity be, StructureTransform transform) { public void attachPackagePort(PackagePortBlockEntity ppbe) { GlobalStation station = getStation(); - if (station == null || level.isClientSide) + if (station == null || level.isClientSide()) return; if (ppbe instanceof PostboxBlockEntity pbe) diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationClient.java b/src/main/java/com/simibubi/create/content/trains/station/StationClient.java new file mode 100644 index 0000000000..813577cb3c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/trains/station/StationClient.java @@ -0,0 +1,21 @@ +package com.simibubi.create.content.trains.station; + +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; + +public class StationClient { + + public static void displayScreen(StationBlock block, StationBlockEntity be, Player player) { + if (!(player instanceof LocalPlayer)) + return; + GlobalStation station = be.getStation(); + BlockState blockState = be.getBlockState(); + if (station == null || blockState == null) + return; + boolean assembling = blockState.getBlock() == block && blockState.getValue(StationBlock.ASSEMBLING); + ScreenOpener.open(assembling ? new AssemblyScreen(be, station) : new StationScreen(be, station)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationEditPacket.java b/src/main/java/com/simibubi/create/content/trains/station/StationEditPacket.java index af9954f550..9bd73dee57 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationEditPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationEditPacket.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.decoration.slidingDoor.DoorControl; import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationMarker.java b/src/main/java/com/simibubi/create/content/trains/station/StationMarker.java index f8385bd1e4..eefa75c766 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationMarker.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationMarker.java @@ -8,7 +8,7 @@ import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -34,8 +34,10 @@ public StationMarker(BlockPos source, BlockPos target, Component name) { public static StationMarker load(CompoundTag tag, HolderLookup.Provider registries) { BlockPos source = NBTHelper.readBlockPos(tag, "source"); BlockPos target = NBTHelper.readBlockPos(tag, "target"); - Component name = Component.Serializer.fromJson(tag.getString("name"), registries); - if (name == null) name = CommonComponents.EMPTY; + Component name = Component.literal(tag.getStringOr("name", "")); + if (name.getString() + .isEmpty()) + name = CommonComponents.EMPTY; return new StationMarker(source, target, name); } @@ -54,9 +56,9 @@ public static StationMarker fromWorld(BlockGetter level, BlockPos pos) { public CompoundTag save(HolderLookup.Provider registries) { CompoundTag tag = new CompoundTag(); - tag.put("source", NbtUtils.writeBlockPos(source)); - tag.put("target", NbtUtils.writeBlockPos(target)); - tag.putString("name", Component.Serializer.toJson(name, registries)); + tag.put("source", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(source)); + tag.put("target", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(target)); + tag.putString("name", name.getString()); return tag; } diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationRenderer.java b/src/main/java/com/simibubi/create/content/trains/station/StationRenderer.java index 46f379add2..54e76b4d36 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationRenderer.java @@ -10,13 +10,12 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import dev.engine_room.flywheel.lib.transform.Transform; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.catnip.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.catnip.api.client.render.SuperByteBuffer; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; @@ -83,7 +82,7 @@ protected void renderSafe(StationBlockEntity be, float partialTicks, PoseStack m PartialModel assemblyOverlay = track.prepareAssemblyOverlay(level, targetPosition, trackState, direction, ms); int colorWhenValid = 0x96B5FF; int colorWhenCarriage = 0xCAFF96; - VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); currentPos.move(direction, 1); ms.translate(0, 0, 1); @@ -98,7 +97,7 @@ protected void renderSafe(StationBlockEntity be, float partialTicks, PoseStack m } if (valid != -1) { - int lightColor = LevelRenderer.getLightColor(level, currentPos); + int lightColor = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, currentPos); SuperByteBuffer sbb = CachedBuffers.partial(assemblyOverlay, trackState); sbb.color(valid); sbb.light(lightColor); @@ -121,10 +120,10 @@ public static void renderFlag(PartialModel flag, StationBlockEntity be, float pa .rotateYDegrees(be.flagFlipped ? 0 : 180) .translate(-0.5f / 16, 0, 0) .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + .renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped())); } - public static void transformFlag(Transform flag, StationBlockEntity be, float partialTicks, int yRot, + public static void transformFlag(SuperByteBuffer flag, StationBlockEntity be, float partialTicks, int yRot, boolean flipped) { float value = be.flag.getValue(partialTicks); float progress = (float) (Math.pow(Math.min(value * 5, 1), 2)); @@ -142,7 +141,7 @@ public static void transformFlag(Transform flag, StationBlockEntity be, float } @Override - public boolean shouldRenderOffScreen(StationBlockEntity pBlockEntity) { + public boolean shouldRenderOffScreen() { return true; } diff --git a/src/main/java/com/simibubi/create/content/trains/station/StationScreen.java b/src/main/java/com/simibubi/create/content/trains/station/StationScreen.java index 20fbad5ce5..e7a8500315 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/StationScreen.java +++ b/src/main/java/com/simibubi/create/content/trains/station/StationScreen.java @@ -5,8 +5,8 @@ import java.util.function.Consumer; import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; +import org.joml.Matrix3x2fStack; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllPartialModels; import com.simibubi.create.compat.Mods; @@ -19,17 +19,18 @@ import com.simibubi.create.foundation.gui.widget.IconButton; import com.simibubi.create.foundation.gui.widget.Label; import com.simibubi.create.foundation.gui.widget.ScrollInput; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.gui.UIRenderHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.client.gui.UIRenderHelper; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.EditBox; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -71,21 +72,20 @@ protected void init() { Consumer onTextChanged; onTextChanged = s -> nameBox.setX(nameBoxX(s, nameBox)); - nameBox = new EditBox(new NoShadowFontWrapper(font), x + 23, y + 4, background.getWidth() - 20, 10, + nameBox = new EditBox(font, x + 23, y + 4, background.getWidth() - 20, 10, Component.literal(station.name)); nameBox.setBordered(false); nameBox.setMaxLength(25); nameBox.setTextColor(0x592424); nameBox.setValue(station.name); nameBox.setFocused(false); - nameBox.mouseClicked(0, 0, 0); nameBox.setResponder(onTextChanged); nameBox.setX(nameBoxX(nameBox.getValue(), nameBox)); addRenderableWidget(nameBox); Runnable assemblyCallback = () -> { switchingToAssemblyMode = true; - minecraft.setScreen(new AssemblyScreen(blockEntity, station)); + minecraft.gui.setScreen(new AssemblyScreen(blockEntity, station)); }; newTrainButton = new WideIconButton(x + 84, y + 65, AllGuiTextures.I_NEW_TRAIN); @@ -102,7 +102,7 @@ protected void init() { dropScheduleButton.active = false; dropScheduleButton.visible = false; dropScheduleButton.withCallback(() -> - CatnipServices.NETWORK.sendToServer(StationEditPacket.dropSchedule(blockEntity.getBlockPos()))); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.dropSchedule(blockEntity.getBlockPos()))); addRenderableWidget(dropScheduleButton); colorTypeScroll = new ScrollInput(x + 166, y + 17, 22, 14).titled(CreateLang.translateDirect("station.train_map_color")); @@ -125,7 +125,6 @@ protected void init() { trainNameBox.setMaxLength(35); trainNameBox.setTextColor(0xC6C6C6); trainNameBox.setFocused(false); - trainNameBox.mouseClicked(0, 0, 0); trainNameBox.setResponder(onTextChanged); trainNameBox.active = false; @@ -274,7 +273,7 @@ private void updateAssemblyTooltip(String key) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderWindow(graphics, mouseX, mouseY, partialTicks); int x = guiLeft; int y = guiTop; @@ -284,55 +283,55 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (!nameBox.isFocused()) AllGuiTextures.STATION_EDIT_NAME.render(graphics, nameBoxX(text, nameBox) + font.width(text) + 5, y + 1); - graphics.renderItem(AllBlocks.TRAIN_DOOR.asStack(), x + 14, y + 103); + graphics.item(AllBlocks.TRAIN_DOOR.asStack(), x + 14, y + 103); Train train = displayedTrain.get(); if (train == null) { MutableComponent header = CreateLang.translateDirect("station.idle"); - graphics.drawString(font, header, x + 97 - font.width(header) / 2, y + 47, 0x7A7A7A, false); + graphics.text(font, header, x + 97 - font.width(header) / 2, y + 47, 0x7A7A7A, false); return; } float position = trainPosition.getValue(partialTicks); - PoseStack ms = graphics.pose(); - ms.pushPose(); - RenderSystem.enableBlend(); - ms.translate(position, 0, 0); + Matrix3x2fStack ms = graphics.pose(); + ms.pushMatrix(); + LegacyRenderSystemBridge.enableBlend(); + ms.translate(position, 0); TrainIconType icon = train.icon; int offset = 0; List carriages = train.carriages; for (int i = carriages.size() - 1; i > 0; i--) { - RenderSystem.setShaderColor(1, 1, 1, Math.min(1f, + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, Math.min(1f, Math.min((position + offset - 10) / 30f, (background.getWidth() - 40 - position - offset) / 30f))); Carriage carriage = carriages.get(blockEntity.trainBackwards ? carriages.size() - i - 1 : i); offset += icon.render(carriage.bogeySpacing, graphics, x + offset, y + 20) + 1; } - RenderSystem.setShaderColor(1, 1, 1, + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, Math.min(1f, Math.min((position + offset - 10) / 30f, (background.getWidth() - 40 - position - offset) / 30f))); offset += icon.render(TrainIconType.ENGINE, graphics, x + offset, y + 20); - RenderSystem.disableBlend(); - ms.popPose(); + LegacyRenderSystemBridge.disableBlend(); + ms.popMatrix(); - RenderSystem.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); AllGuiTextures.STATION_TEXTBOX_TOP.render(graphics, x + 21, y + 42); UIRenderHelper.drawStretched(graphics, x + 21, y + 60, 150, 26, 0, AllGuiTextures.STATION_TEXTBOX_MIDDLE); AllGuiTextures.STATION_TEXTBOX_BOTTOM.render(graphics, x + 21, y + 86); - ms.pushPose(); - ms.translate(Mth.clamp(position + offset - 13, 25, 159), 0, 0); + ms.pushMatrix(); + ms.translate(Mth.clamp(position + offset - 13, 25, 159), 0); AllGuiTextures.STATION_TEXTBOX_SPEECH.render(graphics, x, y + 38); - ms.popPose(); + ms.popMatrix(); text = trainNameBox.getValue(); if (!trainNameBox.isFocused()) { int buttonX = nameBoxX(text, trainNameBox) + font.width(text) + 5; AllGuiTextures.STATION_EDIT_TRAIN_NAME.render(graphics, Math.min(buttonX, guiLeft + 156), y + 44); if (font.width(text) > trainNameBox.getWidth()) - graphics.drawString(font, "...", guiLeft + 26, guiTop + 47, 0xa6a6a6); + graphics.text(font, "...", guiLeft + 26, guiTop + 47, 0xa6a6a6); } if (!mapModsPresent()) @@ -353,7 +352,8 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float int sheetX = col * 16 + colorCol * 128; int sheetY = row * 16 + colorRow * 64; - graphics.blit(sprite.location, positionX, positionY, sheetX, sheetY, 16, 16, sprite.getWidth(), sprite.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, sprite.location, positionX, positionY, sheetX, sheetY, 16, 16, + sprite.getWidth(), sprite.getHeight()); } } @@ -404,13 +404,13 @@ private void syncTrainNameAndColor() { Train train = displayedTrain.get(); if (train != null && !trainNameBox.getValue() .equals(train.name.getString())) - CatnipServices.NETWORK.sendToServer(new TrainEditPacket.Serverbound(train.id, trainNameBox.getValue(), train.icon.getId(), train.mapColorIndex)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new TrainEditPacket.Serverbound(train.id, trainNameBox.getValue(), train.icon.getId(), train.mapColorIndex)); } private void syncStationName() { if (!nameBox.getValue() .equals(station.name)) - CatnipServices.NETWORK.sendToServer( + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( StationEditPacket.configure(blockEntity.getBlockPos(), false, nameBox.getValue(), doorControl)); } @@ -419,13 +419,13 @@ public void removed() { super.removed(); if (nameBox == null || trainNameBox == null) return; - CatnipServices.NETWORK.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), switchingToAssemblyMode, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(StationEditPacket.configure(blockEntity.getBlockPos(), switchingToAssemblyMode, nameBox.getValue(), doorControl)); Train train = displayedTrain.get(); if (train == null) return; if (!switchingToAssemblyMode) - CatnipServices.NETWORK.sendToServer( + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer( new TrainEditPacket.Serverbound(train.id, trainNameBox.getValue(), train.icon.getId(), train.mapColorIndex)); else blockEntity.imminentTrain = null; diff --git a/src/main/java/com/simibubi/create/content/trains/station/TrainEditPacket.java b/src/main/java/com/simibubi/create/content/trains/station/TrainEditPacket.java index e48f08afca..f6c79063bf 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/TrainEditPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/station/TrainEditPacket.java @@ -11,38 +11,37 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.createmod.catnip.net.base.ServerboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.UUIDUtil; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class TrainEditPacket implements CustomPacketPayload { protected final UUID id; protected final String name; - protected final ResourceLocation iconType; + protected final Identifier iconType; protected final int mapColor; - protected TrainEditPacket(UUID id, String name, ResourceLocation iconType, int mapColor) { + protected TrainEditPacket(UUID id, String name, Identifier iconType, int mapColor) { this.id = id; this.name = name; this.iconType = iconType; this.mapColor = mapColor; } - private static StreamCodec codec(Function4 factory) { + private static StreamCodec codec(Function4 factory) { return StreamCodec.composite( UUIDUtil.STREAM_CODEC, packet -> packet.id, ByteBufCodecs.stringUtf8(256), packet -> packet.name, - ResourceLocation.STREAM_CODEC, packet -> packet.iconType, + Identifier.STREAM_CODEC, packet -> packet.iconType, ByteBufCodecs.INT, packet -> packet.mapColor, factory ); @@ -65,7 +64,7 @@ public void handleSided(Player sender) { public static class Serverbound extends TrainEditPacket implements ServerboundPacketPayload { public static final StreamCodec STREAM_CODEC = codec(Serverbound::new); - public Serverbound(UUID id, String name, ResourceLocation iconType, int mapColor) { + public Serverbound(UUID id, String name, Identifier iconType, int mapColor) { super(id, name, iconType, mapColor); } @@ -83,13 +82,12 @@ public PacketTypeProvider getTypeProvider() { public static class TrainEditReturnPacket extends TrainEditPacket implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = codec(TrainEditReturnPacket::new); - public TrainEditReturnPacket(UUID id, String name, ResourceLocation iconType, int mapColor) { + public TrainEditReturnPacket(UUID id, String name, Identifier iconType, int mapColor) { super(id, name, iconType, mapColor); } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { handleSided(null); } diff --git a/src/main/java/com/simibubi/create/content/trains/station/WideIconButton.java b/src/main/java/com/simibubi/create/content/trains/station/WideIconButton.java index 9edeec7f68..eeb300d1b2 100644 --- a/src/main/java/com/simibubi/create/content/trains/station/WideIconButton.java +++ b/src/main/java/com/simibubi/create/content/trains/station/WideIconButton.java @@ -3,8 +3,9 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; import com.simibubi.create.foundation.gui.widget.IconButton; -import net.createmod.catnip.gui.element.ScreenElement; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.ScreenElement; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; public class WideIconButton extends IconButton { @@ -13,9 +14,10 @@ public WideIconButton(int x, int y, ScreenElement icon) { } @Override - protected void drawBg(GuiGraphics graphics, AllGuiTextures button) { + protected void drawBg(GuiGraphicsExtractor graphics, AllGuiTextures button) { super.drawBg(graphics, button); - graphics.blit(button.location, getX() + 9, getY(), button.getStartX() + 1, button.getStartY(), button.getWidth() - 1, button.getHeight()); + graphics.blit(RenderPipelines.GUI_TEXTURED, button.location, getX() + 9, getY(), button.getStartX() + 1, + button.getStartY(), button.getWidth() - 1, button.getHeight(), 256, 256); } } diff --git a/src/main/java/com/simibubi/create/content/trains/track/AllPortalTracks.java b/src/main/java/com/simibubi/create/content/trains/track/AllPortalTracks.java index 8329ff484d..3df79f9f31 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/AllPortalTracks.java +++ b/src/main/java/com/simibubi/create/content/trains/track/AllPortalTracks.java @@ -5,13 +5,13 @@ import com.simibubi.create.compat.Mods; import com.simibubi.create.content.contraptions.glue.SuperGlueEntity; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; @@ -20,7 +20,7 @@ import net.minecraft.world.level.block.Portal; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.portal.DimensionTransition; +import net.minecraft.world.level.portal.TeleportTransition; import net.minecraft.world.phys.AABB; /** @@ -32,15 +32,15 @@ */ public class AllPortalTracks { /** - * Registers a portal track integration for a given block identified by its {@link ResourceLocation}, if it exists. + * Registers a portal track integration for a given block identified by its {@link Identifier}, if it exists. * If it does not, a warning will be logged. * * @param id The resource location of the portal block. * @param provider The portal track provider for the block. */ - public static void tryRegisterIntegration(ResourceLocation id, PortalTrackProvider provider) { + public static void tryRegisterIntegration(Identifier id, PortalTrackProvider provider) { if (BuiltInRegistries.BLOCK.containsKey(id)) { - Block block = BuiltInRegistries.BLOCK.get(id); + Block block = BuiltInRegistries.BLOCK.getValue(id); PortalTrackProvider.REGISTRY.register(block, provider); } else { Create.LOGGER.warn("Portal for integration wasn't found: {}. Compat outdated?", id); @@ -48,7 +48,7 @@ public static void tryRegisterIntegration(ResourceLocation id, PortalTrackProvid } /** - * Registers a simple portal track integration for a given block identified by its {@link ResourceLocation}, if it exists. + * Registers a simple portal track integration for a given block identified by its {@link Identifier}, if it exists. * If it does not, a warning will be logged. *

* Note: This only allows registering integrations that go from the Overworld to another dimension and vice versa. @@ -56,13 +56,13 @@ public static void tryRegisterIntegration(ResourceLocation id, PortalTrackProvid * @param portalBlockId The resource location of the portal block. * @param dimensionId The resource location of the dimension to travel to */ - private static void tryRegisterSimpleInteraction(ResourceLocation portalBlockId, ResourceLocation dimensionId) { + private static void tryRegisterSimpleInteraction(Identifier portalBlockId, Identifier dimensionId) { ResourceKey levelKey = ResourceKey.create(Registries.DIMENSION, dimensionId); tryRegisterSimpleInteraction(portalBlockId, levelKey); } /** - * Registers a simple portal track integration for a given block identified by its {@link ResourceLocation}, if it exists. + * Registers a simple portal track integration for a given block identified by its {@link Identifier}, if it exists. * If it does not, a warning will be logged. *

* Note: This only allows registering integrations that go from the Overworld to another dimension and vice versa. @@ -70,8 +70,11 @@ private static void tryRegisterSimpleInteraction(ResourceLocation portalBlockId, * @param portalBlockId The resource location of the portal block. * @param levelKey The resource key of the dimension to travel to */ - private static void tryRegisterSimpleInteraction(ResourceLocation portalBlockId, ResourceKey levelKey) { - tryRegisterSimpleInteraction(BuiltInRegistries.BLOCK.get(portalBlockId), levelKey); + private static void tryRegisterSimpleInteraction(Identifier portalBlockId, ResourceKey levelKey) { + if (BuiltInRegistries.BLOCK.containsKey(portalBlockId)) + tryRegisterSimpleInteraction(BuiltInRegistries.BLOCK.getValue(portalBlockId), levelKey); + else + Create.LOGGER.warn("Portal for integration wasn't found: {}. Compat outdated?", portalBlockId); } /** @@ -130,14 +133,14 @@ public static PortalTrackProvider.Exit fromPortal( SuperGlueEntity probe = new SuperGlueEntity(level, new AABB(portalPos)); probe.setYRot(inboundTrack.getFace().toYRot()); - DimensionTransition dimensiontransition = portal.getPortalDestination(level, probe, probe.blockPosition()); + TeleportTransition dimensiontransition = portal.getPortalDestination(level, probe, probe.blockPosition()); if (dimensiontransition == null) return null; - if (!minecraftServer.isLevelEnabled(dimensiontransition.newLevel())) + if (dimensiontransition.newLevel() == null) return null; - BlockPos otherPortalPos = BlockPos.containing(dimensiontransition.pos()); + BlockPos otherPortalPos = BlockPos.containing(dimensiontransition.position()); BlockState otherPortalState = otherLevel.getBlockState(otherPortalPos); if (!otherPortalState.is(portalState.getBlock())) return null; diff --git a/src/main/java/com/simibubi/create/content/trains/track/BezierConnection.java b/src/main/java/com/simibubi/create/content/trains/track/BezierConnection.java index ba1371c01a..bcf9058ca9 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/BezierConnection.java +++ b/src/main/java/com/simibubi/create/content/trains/track/BezierConnection.java @@ -13,11 +13,11 @@ import com.simibubi.create.AllBlocks; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.particles.BlockParticleOption; @@ -32,7 +32,7 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -100,18 +100,18 @@ && coupleEquals(this.starts, other.starts) && coupleEquals(this.axes, other.axes } public BezierConnection(CompoundTag compound, BlockPos localTo) { - this(Couple.deserializeEach(compound.getList("Positions", Tag.TAG_COMPOUND), t -> NBTHelper.readBlockPos(t, "Pos")) + this(Couple.deserializeEach(compound.getListOrEmpty("Positions"), t -> NBTHelper.readBlockPos(t, "Pos")) .map(b -> b.offset(localTo)), - Couple.deserializeEach(compound.getList("Starts", Tag.TAG_COMPOUND), VecHelper::readNBTCompound) + Couple.deserializeEach(compound.getListOrEmpty("Starts"), VecHelper::readNBTCompound) .map(v -> v.add(Vec3.atLowerCornerOf(localTo))), - Couple.deserializeEach(compound.getList("Axes", Tag.TAG_COMPOUND), VecHelper::readNBTCompound), - Couple.deserializeEach(compound.getList("Normals", Tag.TAG_COMPOUND), VecHelper::readNBTCompound), - compound.getBoolean("Primary"), compound.getBoolean("Girder"), - TrackMaterial.deserialize(compound.getString("Material"))); + Couple.deserializeEach(compound.getListOrEmpty("Axes"), VecHelper::readNBTCompound), + Couple.deserializeEach(compound.getListOrEmpty("Normals"), VecHelper::readNBTCompound), + compound.getBooleanOr("Primary", false), compound.getBooleanOr("Girder", false), + TrackMaterial.deserialize(compound.getStringOr("Material", TrackMaterial.ANDESITE.id.toString()))); if (compound.contains("Smoothing")) smoothing = - Couple.deserializeEach(compound.getList("Smoothing", Tag.TAG_COMPOUND), NBTHelper::intFromCompound); + Couple.deserializeEach(compound.getListOrEmpty("Smoothing"), NBTHelper::intFromCompound); } public CompoundTag write(BlockPos localTo) { @@ -123,7 +123,7 @@ public CompoundTag write(BlockPos localTo) { compound.putBoolean("Primary", primary); compound.put("Positions", tePositions.serializeEach(t -> { CompoundTag tag = new CompoundTag(); - tag.put("Pos", NbtUtils.writeBlockPos(t)); + tag.put("Pos", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(t)); return tag; })); compound.put("Starts", starts.serializeEach(VecHelper::writeNBTCompound)); @@ -280,14 +280,14 @@ public int getTrackItemCost() { } public void spawnItems(Level level) { - if (!level.getGameRules() - .getBoolean(GameRules.RULE_DOBLOCKDROPS)) + if (level instanceof ServerLevel serverLevel && !serverLevel.getGameRules() + .get(GameRules.BLOCK_DROPS)) return; Vec3 origin = Vec3.atLowerCornerOf(bePositions.getFirst()); for (Segment segment : this) { if (segment.index % 2 != 0 || segment.index == getSegmentCount()) continue; - Vec3 v = VecHelper.offsetRandomly(segment.position, level.random, .125f) + Vec3 v = VecHelper.offsetRandomly(segment.position, level.getRandom(), .125f) .add(origin); ItemEntity entity = new ItemEntity(level, v.x, v.y, v.z, getMaterial().asStack()); entity.setDefaultPickUpDelay(); diff --git a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackDestroyPacket.java b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackDestroyPacket.java index 4c0022d64d..a899682882 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackDestroyPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackDestroyPacket.java @@ -15,6 +15,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; public class CurvedTrackDestroyPacket extends BlockEntityConfigurationPacket { public static final StreamCodec STREAM_CODEC = StreamCodec.composite( @@ -39,7 +40,7 @@ public CurvedTrackDestroyPacket(BlockPos pos, BlockPos targetPos, BlockPos sound @Override protected void applySettings(ServerPlayer player, TrackBlockEntity be) { int verifyDistance = AllConfigs.server().trains.maxTrackPlacementLength.get() * 4; - if (!player.canInteractWithBlock(be.getBlockPos(), verifyDistance)) { + if (player.distanceToSqr(Vec3.atCenterOf(be.getBlockPos())) > verifyDistance * verifyDistance) { Create.LOGGER.warn("{} too far away from destroyed Curve track", player.getScoreboardName()); return; } @@ -57,7 +58,7 @@ protected void applySettings(ServerPlayer player, TrackBlockEntity be) { if (wrench) { AllSoundEvents.WRENCH_REMOVE.playOnServer(player.level(), soundSource, 1, - level.random.nextFloat() * .5f + .5f); + level.getRandom().nextFloat() * .5f + .5f); if (!player.isCreative() && bezierConnection != null) bezierConnection.addItemsToPlayer(player); } else if (!player.isCreative() && bezierConnection != null) diff --git a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackInteraction.java b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackInteraction.java index b2648ff81a..3b3ec220cf 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackInteraction.java +++ b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackInteraction.java @@ -3,10 +3,10 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllTags; import com.simibubi.create.content.trains.track.TrackBlockOutline.BezierPointSelection; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -56,7 +56,7 @@ public static void clientTick() { mc.getSoundManager() .play(new SimpleSoundInstance(soundtype.getHitSound(), SoundSource.BLOCKS, (soundtype.getVolume() + 1.0F) / 8.0F, soundtype.getPitch() * 0.5F, - level.random, BlockPos.containing(result.vec()))); + level.getRandom(), BlockPos.containing(result.vec()))); } boolean creative = player.getAbilities().instabuild; @@ -65,7 +65,7 @@ public static void clientTick() { breakTimeout = 2; breakProgress += creative ? 0.125f : blockState.getDestroyProgress(player, level, breakPos) / 8f; - Vec3 vec = VecHelper.offsetRandomly(result.vec(), level.random, 0.25f); + Vec3 vec = VecHelper.offsetRandomly(result.vec(), level.getRandom(), 0.25f); level.addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockState), vec.x, vec.y, vec.z, 0, 0, 0); int progress = (int) (breakProgress * 10.0F) - 1; @@ -73,7 +73,7 @@ public static void clientTick() { player.swing(InteractionHand.MAIN_HAND); if (breakProgress >= 1) { - CatnipServices.NETWORK.sendToServer(new CurvedTrackDestroyPacket(breakPos, result.loc() + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new CurvedTrackDestroyPacket(breakPos, result.loc() .curveTarget(), BlockPos.containing(result.vec()), false)); resetBreakProgress(); } @@ -117,8 +117,8 @@ public static boolean onClickInput(InputEvent.InteractionKeyMappingTriggered eve ItemStack heldItem = player.getMainHandItem(); Item item = heldItem.getItem(); if (AllTags.AllBlockTags.TRACKS.matches(heldItem)) { - player.displayClientMessage(CreateLang.translateDirect("track.turn_start") - .withStyle(ChatFormatting.RED), true); + player.sendSystemMessage(CreateLang.translateDirect("track.turn_start") + .withStyle(ChatFormatting.RED)); player.swing(InteractionHand.MAIN_HAND); return true; } @@ -127,7 +127,7 @@ public static boolean onClickInput(InputEvent.InteractionKeyMappingTriggered eve return true; } if (AllItems.WRENCH.isIn(heldItem) && player.isShiftKeyDown()) { - CatnipServices.NETWORK.sendToServer(new CurvedTrackDestroyPacket(result.blockEntity() + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new CurvedTrackDestroyPacket(result.blockEntity() .getBlockPos(), result.loc() .curveTarget(), diff --git a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackSelectionPacket.java b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackSelectionPacket.java index 2e213086ae..e75cd2ab0c 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackSelectionPacket.java +++ b/src/main/java/com/simibubi/create/content/trains/track/CurvedTrackSelectionPacket.java @@ -45,14 +45,14 @@ public CurvedTrackSelectionPacket(BlockPos pos, BlockPos targetPos, boolean fron @Override protected void applySettings(ServerPlayer player, TrackBlockEntity be) { - if (player.getInventory().selected != slot) + if (player.getInventory().getSelectedSlot() != slot) return; ItemStack stack = player.getInventory() .getItem(slot); if (!(stack.getItem() instanceof TrackTargetingBlockItem)) return; if (player.isShiftKeyDown() && stack.has(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS)) { - player.displayClientMessage(CreateLang.translateDirect("track_target.clear"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.clear")); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); @@ -67,8 +67,8 @@ protected void applySettings(ServerPlayer player, TrackBlockEntity be) { bezierTrackPointLocation, type, (overlap, location) -> result.setValue(overlap)); if (result.getValue().feedback != null) { - player.displayClientMessage(CreateLang.translateDirect(result.getValue().feedback) - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect(result.getValue().feedback) + .withStyle(ChatFormatting.RED)); AllSoundEvents.DENY.play(player.level(), null, pos, .5f, 1); return; } @@ -77,7 +77,7 @@ protected void applySettings(ServerPlayer player, TrackBlockEntity be) { stack.set(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION, front); stack.set(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER, bezierTrackPointLocation); - player.displayClientMessage(CreateLang.translateDirect("track_target.set"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.set")); AllSoundEvents.CONTROLLER_CLICK.play(player.level(), null, pos, 1, 1); } diff --git a/src/main/java/com/simibubi/create/content/trains/track/FakeTrackBlock.java b/src/main/java/com/simibubi/create/content/trains/track/FakeTrackBlock.java index 9553ea7b8a..6b88f79326 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/FakeTrackBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/track/FakeTrackBlock.java @@ -18,6 +18,8 @@ import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.RenderShape; @@ -33,7 +35,7 @@ public class FakeTrackBlock extends Block implements EntityBlock, ProperWaterlog public FakeTrackBlock(Properties p_49795_) { super(p_49795_.randomTicks() - .noCollission() + .noCollision() .noOcclusion()); registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); } @@ -45,13 +47,13 @@ public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, @Override public RenderShape getRenderShape(BlockState pState) { - return RenderShape.ENTITYBLOCK_ANIMATED; + return RenderShape.MODEL; } @Override public @Nullable PathType getBlockPathType(BlockState state, BlockGetter level, BlockPos pos, @Nullable Mob mob) { - return PathType.DAMAGE_OTHER; + return PathType.DAMAGE_CAUTIOUS; } @Override @@ -65,9 +67,8 @@ public BlockState getStateForPlacement(BlockPlaceContext pContext) { } @Override - public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState, - LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(pLevel, pState, pCurrentPos); + public BlockState updateShape(BlockState pState, LevelReader pLevel, ScheduledTickAccess ticks, BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, BlockState pNeighborState, RandomSource random) { + updateWater(ticks, pLevel, pState, pCurrentPos); return pState; } diff --git a/src/main/java/com/simibubi/create/content/trains/track/ITrackBlock.java b/src/main/java/com/simibubi/create/content/trains/track/ITrackBlock.java index 87a101643f..676d4bb50c 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/ITrackBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/track/ITrackBlock.java @@ -15,8 +15,8 @@ import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.Affine; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; @@ -29,7 +29,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public interface ITrackBlock { @@ -159,12 +158,10 @@ public static void addToListIfConnected(@Nullable TrackNodeLocation fromEnd, Col list.add(secondLocation); } - @OnlyIn(Dist.CLIENT) public > PartialModel prepareTrackOverlay(Affine affine, BlockGetter world, BlockPos pos, BlockState state, BezierTrackPointLocation bezierPoint, AxisDirection direction, RenderedTrackOverlayType type); - @OnlyIn(Dist.CLIENT) public PartialModel prepareAssemblyOverlay(BlockGetter world, BlockPos pos, BlockState state, Direction direction, PoseStack ms); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java index b90af708c3..890b65ae09 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlock.java @@ -50,10 +50,10 @@ import dev.engine_room.flywheel.lib.transform.TransformStack; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.BlockFace; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.BlockFace; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; @@ -68,7 +68,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; @@ -79,6 +79,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Mirror; @@ -102,7 +103,6 @@ import net.minecraft.world.ticks.LevelTickAccess; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrackBlock extends Block implements IBE, IWrenchable, ITrackBlock, SpecialBlockItemRequirement, ProperWaterloggedBlock, IHaveBigOutline { @@ -214,7 +214,7 @@ public BlockState playerWillDestroy(Level pLevel, BlockPos pPos, BlockState pSta public void onPlace(BlockState pState, Level pLevel, BlockPos pPos, BlockState pOldState, boolean pIsMoving) { if (pOldState.getBlock() == this && pState.setValue(HAS_BE, true) == pOldState.setValue(HAS_BE, true)) return; - if (pLevel.isClientSide) + if (pLevel.isClientSide()) return; LevelTickAccess blockTicks = pLevel.getBlockTicks(); if (!blockTicks.hasScheduledTick(pPos, this)) @@ -296,24 +296,27 @@ protected void connectToPortal(ServerLevel level, BlockPos pos, BlockState state Player player = level.getNearestPlayer(pos.getX(), pos.getY(), pos.getZ(), 10, Predicates.alwaysTrue()); if (player == null) return; - player.displayClientMessage(Component.literal(" ") + player.sendSystemMessage(Component.literal(" ") .append(CreateLang.translateDirect("portal_track.failed")) - .withStyle(ChatFormatting.GOLD), false); + .withStyle(ChatFormatting.GOLD)); MutableComponent component = failPos != null ? CreateLang.translateDirect("portal_track." + fail, failPos.getX(), failPos.getY(), failPos.getZ()) : CreateLang.translateDirect("portal_track." + fail); - player.displayClientMessage(Component.literal(" - ") + player.sendSystemMessage(Component.literal(" - ") .withStyle(ChatFormatting.GRAY) - .append(component.withStyle(st -> st.withColor(0xFFD3B4))), false); + .append(component.withStyle(st -> st.withColor(0xFFD3B4)))); } @Override - public BlockState updateShape(BlockState state, Direction pDirection, BlockState pNeighborState, - LevelAccessor level, BlockPos pCurrentPos, BlockPos pNeighborPos) { - updateWater(level, state, pCurrentPos); + public BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess scheduledTickAccess, + BlockPos pCurrentPos, Direction pDirection, BlockPos pNeighborPos, + BlockState pNeighborState, RandomSource random) { + if (level instanceof LevelAccessor levelAccessor) + updateWater(levelAccessor, state, pCurrentPos); TrackShape shape = state.getValue(SHAPE); if (!shape.isPortal()) - return state; + return super.updateShape(state, level, scheduledTickAccess, pCurrentPos, pDirection, pNeighborPos, + pNeighborState, random); for (Direction d : Iterate.horizontalDirections) { if (TrackShape.asPortal(d) != state.getValue(SHAPE)) @@ -327,7 +330,8 @@ public BlockState updateShape(BlockState state, Direction pDirection, BlockState return Blocks.AIR.defaultBlockState(); } - return state; + return super.updateShape(state, level, scheduledTickAccess, pCurrentPos, pDirection, pNeighborPos, + pNeighborState, random); } @Override @@ -417,29 +421,24 @@ public void animateTick(BlockState pState, Level pLevel, BlockPos pPos, Random p } @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - boolean removeBE = false; - if (pState.getValue(HAS_BE) && (!pState.is(pNewState.getBlock()) || !pNewState.getValue(HAS_BE))) { + protected void affectNeighborsAfterRemoval(BlockState pState, ServerLevel pLevel, BlockPos pPos, + boolean pMovedByPiston) { + if (pState.getValue(HAS_BE)) { BlockEntity blockEntity = pLevel.getBlockEntity(pPos); - if (blockEntity instanceof TrackBlockEntity tbe && !pLevel.isClientSide) { - tbe.cancelDrops |= pNewState.getBlock() == this; + if (blockEntity instanceof TrackBlockEntity tbe) tbe.removeInboundConnections(true); - } - removeBE = true; + pLevel.removeBlockEntity(pPos); } - if (pNewState.getBlock() != this || pState.setValue(HAS_BE, true) != pNewState.setValue(HAS_BE, true)) - TrackPropagator.onRailRemoved(pLevel, pPos, pState); - if (removeBE) - pLevel.removeBlockEntity(pPos); - if (!pLevel.isClientSide) - updateGirders(pState, pLevel, pPos, pLevel.getBlockTicks()); + TrackPropagator.onRailRemoved(pLevel, pPos, pState); + updateGirders(pState, pLevel, pPos, pLevel.getBlockTicks()); + super.affectNeighborsAfterRemoval(pState, pLevel, pPos, pMovedByPiston); } @Override - protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { - if (level.isClientSide) - return ItemInteractionResult.SUCCESS; + protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) { + if (level.isClientSide()) + return InteractionResult.SUCCESS; for (Entry entry : StationBlockEntity.assemblyAreas.get(level) .entrySet()) { if (!entry.getValue() @@ -447,10 +446,10 @@ protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Lev continue; if (level.getBlockEntity(entry.getKey()) instanceof StationBlockEntity station) if (station.trackClicked(player, hand, this, state, pos)) - return ItemInteractionResult.SUCCESS; + return InteractionResult.SUCCESS; } - return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + return InteractionResult.TRY_WITH_EMPTY_HAND; } private void updateGirders(BlockState pState, Level pLevel, BlockPos pPos, LevelTickAccess blockTicks) { @@ -585,7 +584,7 @@ public InteractionResult onWrenched(BlockState state, UseOnContext context) { public InteractionResult onSneakWrenched(BlockState state, UseOnContext context) { Player player = context.getPlayer(); Level level = context.getLevel(); - if (!level.isClientSide && !player.isCreative() && state.getValue(HAS_BE)) { + if (!level.isClientSide() && !player.isCreative() && state.getValue(HAS_BE)) { BlockEntity blockEntity = level.getBlockEntity(context.getClickedPos()); if (blockEntity instanceof TrackBlockEntity trackBE) { trackBE.cancelDrops = true; @@ -647,7 +646,6 @@ public BlockState getBogeyAnchor(BlockGetter world, BlockPos pos, BlockState sta } @Override - @OnlyIn(Dist.CLIENT) public PartialModel prepareAssemblyOverlay(BlockGetter world, BlockPos pos, BlockState state, Direction direction, PoseStack ms) { TransformStack.of(ms) @@ -656,7 +654,6 @@ public PartialModel prepareAssemblyOverlay(BlockGetter world, BlockPos pos, Bloc } @Override - @OnlyIn(Dist.CLIENT) public > PartialModel prepareTrackOverlay(Affine affine, BlockGetter world, BlockPos pos, BlockState state, BezierTrackPointLocation bezierPoint, AxisDirection direction, RenderedTrackOverlayType type) { Vec3 axis = null; diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java index 6e5f48111a..336fcbc6be 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntity.java @@ -20,9 +20,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.HolderLookup; @@ -32,7 +32,7 @@ import net.minecraft.nbt.NbtUtils; import net.minecraft.nbt.Tag; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.Mth; import net.minecraft.world.level.ChunkPos; @@ -47,8 +47,7 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class TrackBlockEntity extends SmartBlockEntity implements TransformableBlockEntity, IMergeableBE { @@ -72,7 +71,7 @@ public Map getConnections() { @Override public void initialize() { super.initialize(); - if (!level.isClientSide && hasInteractableConnections()) + if (!level.isClientSide() && hasInteractableConnections()) registerToCurveInteraction(); } @@ -156,7 +155,7 @@ public void removeConnection(BlockPos target) { if (blockState.hasProperty(TrackBlock.HAS_BE)) level.setBlockAndUpdate(worldPosition, blockState.setValue(TrackBlock.HAS_BE, false)); if (level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new RemoveBlockEntityPacket(worldPosition)); + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new RemoveBlockEntityPacket(worldPosition)); } public void removeInboundConnections(boolean dropAndDiscard) { @@ -171,7 +170,7 @@ public void removeInboundConnections(boolean dropAndDiscard) { bezierConnection.spawnDestroyParticles(level); } if (dropAndDiscard && level instanceof ServerLevel serverLevel) - CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, new ChunkPos(worldPosition), new RemoveBlockEntityPacket(worldPosition)); + CatnipServices.NETWORK.sendToClientsTrackingChunk(serverLevel, ChunkPos.containing(worldPosition), new RemoveBlockEntityPacket(worldPosition)); } public void bind(ResourceKey boundDimension, BlockPos boundLocation) { @@ -197,9 +196,9 @@ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean tag.putDouble("Smoothing", tilt.smoothingAngle.get()); if (boundLocation == null) return; - tag.put("BoundLocation", NbtUtils.writeBlockPos(boundLocation.getSecond())); + tag.put("BoundLocation", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(boundLocation.getSecond())); tag.putString("BoundDimension", boundLocation.getFirst() - .location() + .identifier() .toString()); } @@ -215,7 +214,7 @@ private void writeTurns(CompoundTag tag, boolean restored) { protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { super.read(tag, registries, clientPacket); connections.clear(); - for (Tag t : tag.getList("Connections", Tag.TAG_COMPOUND)) { + for (Tag t : tag.getListOrEmpty("Connections")) { if (!(t instanceof CompoundTag)) return; BezierConnection connection = new BezierConnection((CompoundTag) t, worldPosition); @@ -223,7 +222,8 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c } boolean smoothingPreviously = tilt.smoothingAngle.isPresent(); - tilt.smoothingAngle = Optional.ofNullable(tag.contains("Smoothing") ? tag.getDouble("Smoothing") : null); + tilt.smoothingAngle = + tag.contains("Smoothing") ? Optional.of(tag.getDoubleOr("Smoothing", 0)) : Optional.empty(); if (smoothingPreviously != tilt.smoothingAngle.isPresent() && clientPacket) { requestModelDataUpdate(); level.sendBlockUpdated(worldPosition, getBlockState(), getBlockState(), 16); @@ -238,12 +238,12 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c if (tag.contains("BoundLocation")) boundLocation = Pair.of( - ResourceKey.create(Registries.DIMENSION, ResourceLocation.parse(tag.getString("BoundDimension"))), + ResourceKey.create(Registries.DIMENSION, + Identifier.parse(tag.getStringOr("BoundDimension", "minecraft:overworld"))), NBTHelper.readBlockPos(tag, "BoundLocation")); } @Override - @OnlyIn(Dist.CLIENT) public AABB getRenderBoundingBox() { return AABB.INFINITE; } @@ -316,7 +316,7 @@ public void transform(BlockEntity be, StructureTransform transform) { @Override public void invalidate() { super.invalidate(); - if (level.isClientSide) + if (level.isClientSide()) removeFromCurveInteraction(); } @@ -354,13 +354,11 @@ public ModelData getModelData() { .build(); } - @OnlyIn(Dist.CLIENT) private void registerToCurveInteractionUnsafe() { TrackBlockOutline.TRACKS_WITH_TURNS.get(level) .put(worldPosition, this); } - @OnlyIn(Dist.CLIENT) private void removeFromCurveInteractionUnsafe() { TrackBlockOutline.TRACKS_WITH_TURNS.get(level) .remove(worldPosition); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntityTilt.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntityTilt.java index 201f3844d1..10e875818f 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntityTilt.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockEntityTilt.java @@ -7,15 +7,15 @@ import com.simibubi.create.content.trains.graph.TrackNodeLocation; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; import net.minecraft.util.Mth; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelProperty; public class TrackBlockEntityTilt { diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockItem.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockItem.java index d35041df68..e09b5e66a7 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockItem.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockItem.java @@ -7,8 +7,8 @@ import com.simibubi.create.content.trains.track.TrackPlacement.PlacementInfo; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; @@ -17,7 +17,6 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; @@ -31,7 +30,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @@ -44,7 +42,7 @@ public TrackBlockItem(Block pBlock, Properties pProperties) { } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { + public InteractionResult use(Level level, Player player, InteractionHand usedHand) { ItemStack stack = player.getItemInHand(usedHand); if (player.isShiftKeyDown() && isFoil(stack)) { return clearSelection(stack, level, player); @@ -71,16 +69,16 @@ public InteractionResult useOn(UseOnContext pContext) { if (!isFoil(stack)) { if (state.getBlock() instanceof TrackBlock track && track.getTrackAxes(level, pos, state) .size() > 1) { - if (!level.isClientSide) - player.displayClientMessage(CreateLang.translateDirect("track.junction_start") - .withStyle(ChatFormatting.RED), true); + if (!level.isClientSide()) + player.sendSystemMessage(CreateLang.translateDirect("track.junction_start") + .withStyle(ChatFormatting.RED)); return InteractionResult.SUCCESS; } if (level.getBlockEntity(pos) instanceof TrackBlockEntity tbe && tbe.isTilted()) { - if (!level.isClientSide) - player.displayClientMessage(CreateLang.translateDirect("track.turn_start") - .withStyle(ChatFormatting.RED), true); + if (!level.isClientSide()) + player.sendSystemMessage(CreateLang.translateDirect("track.turn_start") + .withStyle(ChatFormatting.RED)); return InteractionResult.SUCCESS; } @@ -90,7 +88,7 @@ public InteractionResult useOn(UseOnContext pContext) { } return super.useOn(pContext); } else if (player.isShiftKeyDown()) { - return clearSelection(stack, level, player).getResult(); + return clearSelection(stack, level, player); } boolean placing = !(state.getBlock() instanceof ITrackBlock); @@ -109,14 +107,14 @@ public InteractionResult useOn(UseOnContext pContext) { boolean hasGirder = AllBlocks.METAL_GIRDER.isIn(offhandItem); PlacementInfo info = TrackPlacement.tryConnect(level, player, pos, state, stack, hasGirder, extend); - if (info.message != null && !level.isClientSide) - player.displayClientMessage(CreateLang.translateDirect(info.message), true); + if (info.message != null && !level.isClientSide()) + player.sendSystemMessage(CreateLang.translateDirect(info.message)); if (!info.valid) { AllSoundEvents.DENY.playFrom(player, 1, 1); return InteractionResult.FAIL; } - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; stack = player.getMainHandItem(); @@ -134,14 +132,14 @@ public InteractionResult useOn(UseOnContext pContext) { return InteractionResult.SUCCESS; } - public static InteractionResultHolder clearSelection(ItemStack stack, Level level, Player player) { - if (level.isClientSide) { + public static InteractionResult clearSelection(ItemStack stack, Level level, Player player) { + if (level.isClientSide()) { level.playSound(player, player.blockPosition(), SoundEvents.ITEM_FRAME_REMOVE_ITEM, SoundSource.BLOCKS, 0.75f, 1.0f); } else { - player.displayClientMessage(CreateLang.translateDirect("track.selection_cleared"), true); + player.sendSystemMessage(CreateLang.translateDirect("track.selection_cleared")); stack.remove(AllDataComponents.TRACK_CONNECTING_FROM); } - return InteractionResultHolder.sidedSuccess(stack, level.isClientSide); + return InteractionResult.SUCCESS.heldItemTransformedTo(stack); } public BlockState getPlacementState(UseOnContext pContext) { @@ -166,15 +164,14 @@ public static boolean select(LevelAccessor world, BlockPos pos, Vec3 lookVec, It } @SubscribeEvent - @OnlyIn(Dist.CLIENT) public static void sendExtenderPacket(PlayerInteractEvent.RightClickBlock event) { ItemStack stack = event.getItemStack(); - if (!event.getLevel().isClientSide) + if (!event.getLevel().isClientSide()) return; if (!AllTags.AllBlockTags.TRACKS.matches(stack)) return; if (Minecraft.getInstance().options.keySprint.isDown()) - CatnipServices.NETWORK.sendToServer(new PlaceExtendedCurvePacket(event.getHand() == InteractionHand.MAIN_HAND, true)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new PlaceExtendedCurvePacket(event.getHand() == InteractionHand.MAIN_HAND, true)); } @Override diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockOutline.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockOutline.java index d872cf9c9e..08c270f855 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockOutline.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockOutline.java @@ -12,20 +12,20 @@ import com.simibubi.create.foundation.utility.RaycastHelper; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.data.WorldAttached; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.data.WorldAttached; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; @@ -37,7 +37,7 @@ import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.RenderHighlightEvent; +import net.neoforged.neoforge.client.event.ExtractBlockOutlineRenderStateEvent; @EventBusSubscriber(Dist.CLIENT) public class TrackBlockOutline { @@ -49,12 +49,12 @@ public class TrackBlockOutline { public static void pickCurves() { Minecraft mc = Minecraft.getInstance(); - if (!(mc.cameraEntity instanceof LocalPlayer player)) + if (!(mc.getCameraEntity() instanceof Player player)) return; if (mc.level == null) return; - Vec3 origin = player.getEyePosition(AnimationTickHolder.getPartialTicks(mc.level)); + Vec3 origin = player.getEyePosition(AnimationTickHolder.getPartialTicks()); double maxRange = mc.hitResult == null ? Double.MAX_VALUE : mc.hitResult.getLocation() @@ -142,14 +142,14 @@ public static void pickCurves() { public static void drawCurveSelection(PoseStack ms, MultiBufferSource buffer, Vec3 camera) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; BezierPointSelection result = TrackBlockOutline.result; if (result == null) return; - VertexConsumer vb = buffer.getBuffer(RenderType.lines()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.lines()); Vec3 vec = result.vec() .subtract(camera); Vec3 angles = result.angles(); @@ -166,11 +166,11 @@ public static void drawCurveSelection(PoseStack ms, MultiBufferSource buffer, Ve } @SubscribeEvent - public static void drawCustomBlockSelection(RenderHighlightEvent.Block event) { + public static void drawCustomBlockSelection(ExtractBlockOutlineRenderStateEvent event) { Minecraft mc = Minecraft.getInstance(); - BlockHitResult target = event.getTarget(); - BlockPos pos = target.getBlockPos(); - BlockState blockstate = mc.level.getBlockState(pos); + BlockHitResult target = event.getHitResult(); + BlockPos pos = event.getBlockPos(); + BlockState blockstate = event.getBlockState(); if (!(blockstate.getBlock() instanceof TrackBlock)) return; @@ -178,27 +178,14 @@ public static void drawCustomBlockSelection(RenderHighlightEvent.Block event) { .isWithinBounds(pos)) return; - VertexConsumer vb = event.getMultiBufferSource() - .getBuffer(RenderType.lines()); - Vec3 camPos = event.getCamera() - .getPosition(); - - PoseStack ms = event.getPoseStack(); - - ms.pushPose(); - ms.translate(pos.getX() - camPos.x, pos.getY() - camPos.y, pos.getZ() - camPos.z); - boolean holdingTrack = AllTags.AllBlockTags.TRACKS.matches(Minecraft.getInstance().player.getMainHandItem()); TrackShape shape = blockstate.getValue(TrackBlock.SHAPE); boolean canConnectFrom = !shape.isJunction() && !(mc.level.getBlockEntity(pos)instanceof TrackBlockEntity tbe && tbe.isTilted()); - walkShapes(shape, TransformStack.of(ms), s -> { - renderShape(s, ms, vb, holdingTrack ? canConnectFrom : null); + if (holdingTrack && canConnectFrom) event.setCanceled(true); - }); - - ms.popPose(); + // TODO 26.2: Rebuild the custom track outline through CustomBlockOutlineRenderer. } public static void renderShape(VoxelShape s, PoseStack ms, VertexConsumer vb, Boolean valid) { diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockStateGenerator.java b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockStateGenerator.java index 8f50fc29b4..c3a92e50b3 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackBlockStateGenerator.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackBlockStateGenerator.java @@ -3,11 +3,11 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.SpecialBlockStateGen; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class TrackBlockStateGenerator extends SpecialBlockStateGen { @@ -23,7 +23,7 @@ protected int getYRotation(BlockState state) { } @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { TrackShape value = state.getValue(TrackBlock.SHAPE); if (value == TrackShape.NONE) diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackMaterial.java b/src/main/java/com/simibubi/create/content/trains/track/TrackMaterial.java index 83f1f22361..3e92dbf0dc 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackMaterial.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackMaterial.java @@ -9,7 +9,7 @@ import java.util.function.Supplier; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import org.jetbrains.annotations.Nullable; @@ -19,7 +19,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -27,10 +27,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrackMaterial { - public static final Map ALL = new HashMap<>(); + public static final Map ALL = new HashMap<>(); public static final TrackMaterial ANDESITE = make(Create.asResource("andesite")) .lang("Andesite") @@ -39,33 +38,31 @@ public class TrackMaterial { .defaultModels() .build(); - public final ResourceLocation id; + public final Identifier id; public final String langName; public final NonNullSupplier> trackBlock; public final Ingredient sleeperIngredient; public final Ingredient railsIngredient; - public final ResourceLocation particle; + public final Identifier particle; public final TrackType trackType; @Nullable private final TrackMaterial.TrackType.TrackBlockFactory customFactory; - @OnlyIn(Dist.CLIENT) protected TrackModelHolder modelHolder; - @OnlyIn(Dist.CLIENT) public TrackModelHolder getModelHolder() { return modelHolder; } - public TrackMaterial(ResourceLocation id, String langName, NonNullSupplier> trackBlock, - ResourceLocation particle, Ingredient sleeperIngredient, Ingredient railsIngredient, + public TrackMaterial(Identifier id, String langName, NonNullSupplier> trackBlock, + Identifier particle, Ingredient sleeperIngredient, Ingredient railsIngredient, TrackType trackType, Supplier> modelHolder) { this(id, langName, trackBlock, particle, sleeperIngredient, railsIngredient, trackType, modelHolder, null); } - public TrackMaterial(ResourceLocation id, String langName, NonNullSupplier> trackBlock, - ResourceLocation particle, Ingredient sleeperIngredient, Ingredient railsIngredient, + public TrackMaterial(Identifier id, String langName, NonNullSupplier> trackBlock, + Identifier particle, Ingredient sleeperIngredient, Ingredient railsIngredient, TrackType trackType, Supplier> modelHolder, @Nullable TrackType.TrackBlockFactory customFactory) { this.id = id; @@ -134,7 +131,7 @@ public static TrackMaterial deserialize(String serializedName) { if (serializedName.isBlank()) // Data migrating from 0.5 return ANDESITE; - ResourceLocation id = ResourceLocation.tryParse(serializedName); + Identifier id = Identifier.tryParse(serializedName); if (ALL.containsKey(id)) return ALL.get(id); @@ -150,10 +147,10 @@ public interface TrackBlockFactory { public static final TrackType STANDARD = new TrackType(Create.asResource("standard"), TrackBlock::new); - public final ResourceLocation id; + public final Identifier id; protected final TrackBlockFactory factory; - public TrackType(ResourceLocation id, TrackBlockFactory factory) { + public TrackType(Identifier id, TrackBlockFactory factory) { this.id = id; this.factory = factory; } @@ -165,7 +162,6 @@ public static TrackMaterial fromItem(Item item) { return TrackMaterial.ANDESITE; } - @OnlyIn(Dist.CLIENT) public record TrackModelHolder(PartialModel tie, PartialModel leftSegment, PartialModel rightSegment) { static final TrackModelHolder DEFAULT = new TrackModelHolder(AllPartialModels.TRACK_TIE, AllPartialModels.TRACK_SEGMENT_LEFT, AllPartialModels.TRACK_SEGMENT_RIGHT); diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackMaterialFactory.java b/src/main/java/com/simibubi/create/content/trains/track/TrackMaterialFactory.java index 809e0508ba..3bce8e7359 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackMaterialFactory.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackMaterialFactory.java @@ -5,48 +5,81 @@ import org.jetbrains.annotations.Nullable; -import com.simibubi.create.foundation.data.recipe.CommonMetal; import com.tterrag.registrate.util.nullness.NonNullSupplier; import dev.engine_room.flywheel.lib.model.baked.PartialModel; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Holder; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.display.SlotDisplay; import net.minecraft.world.level.ItemLike; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.common.Tags.Items; +import net.neoforged.neoforge.common.crafting.ICustomIngredient; +import net.neoforged.neoforge.common.crafting.IngredientType; public class TrackMaterialFactory { - private final ResourceLocation id; + private final Identifier id; private String langName; private NonNullSupplier> trackBlock; - private Ingredient sleeperIngredient = Ingredient.EMPTY; - private Ingredient railsIngredient = Ingredient.fromValues(Stream.of(new Ingredient.TagValue(Items.NUGGETS_IRON), new Ingredient.TagValue(CommonMetal.ZINC.nuggets))); - private ResourceLocation particle; + private Ingredient sleeperIngredient = emptyIngredient(); + private Ingredient railsIngredient = Ingredient.of(Items.IRON_NUGGET); + private Identifier particle; private TrackMaterial.TrackType trackType = TrackMaterial.TrackType.STANDARD; @Nullable private TrackMaterial.TrackType.TrackBlockFactory customFactory = null; - @OnlyIn(Dist.CLIENT) private TrackMaterial.TrackModelHolder modelHolder; - @OnlyIn(Dist.CLIENT) private PartialModel tieModel; - @OnlyIn(Dist.CLIENT) private PartialModel leftSegmentModel; - @OnlyIn(Dist.CLIENT) private PartialModel rightSegmentModel; - public TrackMaterialFactory(ResourceLocation id) { + public TrackMaterialFactory(Identifier id) { this.id = id; } - public static TrackMaterialFactory make(ResourceLocation id) { // Convenience function for static import + public static TrackMaterialFactory make(Identifier id) { // Convenience function for static import return new TrackMaterialFactory(id); } + private static Ingredient emptyIngredient() { + return new Ingredient(EmptyTrackIngredient.INSTANCE); + } + + private enum EmptyTrackIngredient implements ICustomIngredient { + INSTANCE; + + @Override + public boolean test(ItemStack stack) { + return false; + } + + @Override + public Stream> items() { + return Stream.empty(); + } + + @Override + public boolean isSimple() { + return true; + } + + @Override + public IngredientType getType() { + throw new UnsupportedOperationException("Empty track ingredients are recipe-generation sentinels and cannot be serialized"); + } + + @Override + public SlotDisplay display() { + return SlotDisplay.Empty.INSTANCE; + } + } + public TrackMaterialFactory lang(String langName) { this.langName = langName; return this; @@ -83,12 +116,12 @@ public TrackMaterialFactory rails(ItemLike... items) { } public TrackMaterialFactory noRecipeGen() { - this.railsIngredient = Ingredient.EMPTY; - this.sleeperIngredient = Ingredient.EMPTY; + this.railsIngredient = emptyIngredient(); + this.sleeperIngredient = emptyIngredient(); return this; } - public TrackMaterialFactory particle(ResourceLocation particle) { + public TrackMaterialFactory particle(Identifier particle) { this.particle = particle; return this; } @@ -102,9 +135,9 @@ public TrackMaterialFactory standardModels() { // was defaultModels CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { String namespace = id.getNamespace(); String prefix = "block/track/" + id.getPath() + "/"; - tieModel = PartialModel.of(ResourceLocation.fromNamespaceAndPath(namespace, prefix + "tie")); - leftSegmentModel = PartialModel.of(ResourceLocation.fromNamespaceAndPath(namespace, prefix + "segment_left")); - rightSegmentModel = PartialModel.of(ResourceLocation.fromNamespaceAndPath(namespace, prefix + "segment_right")); + tieModel = PartialModel.of(Identifier.fromNamespaceAndPath(namespace, prefix + "tie")); + leftSegmentModel = PartialModel.of(Identifier.fromNamespaceAndPath(namespace, prefix + "segment_left")); + rightSegmentModel = PartialModel.of(Identifier.fromNamespaceAndPath(namespace, prefix + "segment_right")); }); return this; } diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackModel.java b/src/main/java/com/simibubi/create/content/trains/track/TrackModel.java index a8c49ff8b0..1e54378a27 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackModel.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackModel.java @@ -8,11 +8,12 @@ import org.jetbrains.annotations.Nullable; import com.simibubi.create.foundation.model.BakedQuadHelper; +import com.simibubi.create.foundation.model.BakedModelWrapper; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; @@ -20,8 +21,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.BakedModelWrapper; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class TrackModel extends BakedModelWrapper { diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackPaver.java b/src/main/java/com/simibubi/create/content/trains/track/TrackPaver.java index 8d794908df..7d8c1a6826 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackPaver.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackPaver.java @@ -10,9 +10,9 @@ import com.simibubi.create.content.decoration.girder.GirderBlock; import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -40,7 +40,7 @@ public static int paveStraight(Level level, BlockPos startPos, Vec3 direction, i if (defaultBlockState.getBlock() instanceof GirderBlock) for (Direction d : Iterate.horizontalDirections) - if (Vec3.atLowerCornerOf(d.getNormal()) + if (Vec3.atLowerCornerOf(d.getUnitVec3i()) .equals(direction)) defaultBlockState = defaultBlockState.setValue(GirderBlock.TOP, false) .setValue(GirderBlock.BOTTOM, false) diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java index 97f14d688e..3b0610ea48 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacement.java @@ -19,16 +19,16 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import io.netty.buffer.ByteBuf; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -56,7 +56,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrackPlacement { public record ConnectingFrom(BlockPos pos, Vec3 axis, Vec3 normal, Vec3 end) { @@ -131,7 +130,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 int lookAngle = (int) (22.5 + AngleHelper.deg(Mth.atan2(lookVec.z, lookVec.x)) % 360) / 8; int maxLength = AllConfigs.server().trains.maxTrackPlacementLength.get(); - if (level.isClientSide && cached != null && pos2.equals(hoveringPos) && stack.equals(lastItem) + if (level.isClientSide() && cached != null && pos2.equals(hoveringPos) && stack.equals(lastItem) && hoveringMaxed == maximiseTurn && lookAngle == hoveringAngle) return cached; @@ -160,7 +159,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 Vec3 normal1 = connectingFrom.normal(); BlockState state1 = level.getBlockState(pos1); - if (level.isClientSide) { + if (level.isClientSide()) { info.end1 = end1; info.end2 = end2; info.normal1 = normal1; @@ -183,7 +182,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 axis1 = axis1.scale(-1); normedAxis1 = normedAxis1.scale(-1); end1 = track.getCurveStart(level, pos1, state1, axis1); - if (level.isClientSide) { + if (level.isClientSide()) { info.end1 = end1; info.axis1 = axis1; } @@ -197,7 +196,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 axis2 = axis2.scale(-1); normedAxis2 = normedAxis2.scale(-1); end2 = track.getCurveStart(level, pos2, state2, axis2); - if (level.isClientSide) { + if (level.isClientSide()) { info.end2 = end2; info.axis2 = axis2; } @@ -212,7 +211,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 double absAscend = Math.abs(ascend); boolean slope = !normal1.equals(normal2); - if (level.isClientSide) { + if (level.isClientSide()) { Vec3 offset1 = axis1.scale(info.end1Extent); Vec3 offset2 = axis2.scale(info.end2Extent); BlockPos targetPos1 = pos1.offset(BlockPos.containing(offset1)); @@ -403,7 +402,7 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 if (!player.isCreative()) { for (boolean simulate : Iterate.trueAndFalse) { - if (level.isClientSide && !simulate) + if (level.isClientSide() && !simulate) break; int tracks = info.requiredTracks; @@ -412,18 +411,20 @@ public static PlacementInfo tryConnect(Level level, Player player, BlockPos pos2 int foundPavement = 0; Inventory inv = player.getInventory(); - int size = inv.items.size(); + List items = inv.getNonEquipmentItems(); + int selectedSlot = inv.getSelectedSlot(); + int size = items.size(); for (int j = 0; j <= size + 1; j++) { int i = j; boolean offhand = j == size + 1; if (j == size) - i = inv.selected; + i = selectedSlot; else if (offhand) i = 0; - else if (j == inv.selected) + else if (j == selectedSlot) continue; - ItemStack stackInSlot = (offhand ? inv.offhand : inv.items).get(i); + ItemStack stackInSlot = offhand ? player.getOffhandItem() : items.get(i); boolean isTrack = AllTags.AllBlockTags.TRACKS.matches(stackInSlot) && stackInSlot.is(stack.getItem()); if (!isTrack && (!shouldPave || offhandItem.getItem() != stackInSlot.getItem())) continue; @@ -435,7 +436,7 @@ else if (j == inv.selected) if (!simulate) { int remainingItems = count - Math.min(isTrack ? tracks - foundTracks : pavement - foundPavement, count); - if (i == inv.selected) + if (i == selectedSlot) stackInSlot.remove(AllDataComponents.TRACK_CONNECTING_FROM); ItemStack newItem = stackInSlot.copyWithCount(remainingItems); if (offhand) @@ -590,7 +591,6 @@ private static PlacementInfo placeTracks(Level level, PlacementInfo info, BlockS static int hintAngle; static Couple> hints; - @OnlyIn(Dist.CLIENT) public static void clientTick() { LocalPlayer player = Minecraft.getInstance().player; ItemStack stack = player.getMainHandItem(); @@ -641,12 +641,11 @@ public static void clientTick() { BlueprintOverlayRenderer.displayTrackRequirements(info, player.getOffhandItem()); if (info.valid) - player.displayClientMessage(CreateLang.translateDirect("track.valid_connection") - .withStyle(ChatFormatting.GREEN), true); + player.sendOverlayMessage(CreateLang.translateDirect("track.valid_connection") + .withStyle(ChatFormatting.GREEN)); else if (info.message != null) - player.displayClientMessage(CreateLang.translateDirect(info.message) - .withStyle(info.message.equals("track.second_point") ? ChatFormatting.WHITE : ChatFormatting.RED), - true); + player.sendOverlayMessage(CreateLang.translateDirect(info.message) + .withStyle(info.message.equals("track.second_point") ? ChatFormatting.WHITE : ChatFormatting.RED)); if (bhr.getDirection() == Direction.UP) { Vec3 lookVec = player.getLookAngle(); @@ -778,7 +777,6 @@ else if (info.message != null) lastLineCount = segCount; } - @OnlyIn(Dist.CLIENT) private static void line(int id, Vec3 v1, Vec3 o1, Vec3 ex) { int color = Color.mixColors(0xEA5C2B, 0x95CD41, animation.getValue()); Outliner.getInstance().showLine(Pair.of("start", id), v1.subtract(o1), v1.add(ex)) diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacementOverlay.java b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacementOverlay.java index 77e3aa5a40..b0b5467a2c 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackPlacementOverlay.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackPlacementOverlay.java @@ -1,27 +1,27 @@ package com.simibubi.create.content.trains.track; import com.mojang.blaze3d.platform.Window; -import com.simibubi.create.foundation.mixin.accessor.GuiAccessor; +import com.simibubi.create.foundation.mixin.accessor.HudAccessor; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.theme.Color; import net.minecraft.ChatFormatting; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.util.Mth; import net.minecraft.world.level.GameType; -public class TrackPlacementOverlay implements LayeredDraw.Layer { +public class TrackPlacementOverlay implements GuiLayer { public static final TrackPlacementOverlay INSTANCE = new TrackPlacementOverlay(); @Override - public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public void render(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || mc.gameMode.getPlayerMode() == GameType.SPECTATOR) + if (mc.gameMode.getPlayerMode() == GameType.SPECTATOR) return; if (TrackPlacement.hoveringPos == null) return; @@ -30,7 +30,7 @@ public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { if (TrackPlacement.extraTipWarmup < 4) return; - if (((GuiAccessor) mc.gui).create$getToolHighlightTimer() > 0) + if (((HudAccessor) mc.gui.hud).create$getToolHighlightTimer() > 0) return; boolean active = mc.options.keySprint.isDown(); @@ -41,7 +41,7 @@ public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { int x = (window.getGuiScaledWidth() - mc.font.width(text)) / 2; int y = window.getGuiScaledHeight() - 61; Color color = new Color(0x4ADB4A).setAlpha(Mth.clamp((TrackPlacement.extraTipWarmup - 4) / 3f, 0.1f, 1)); - guiGraphics.drawString(mc.font, text, x, y, color.getRGB(), false); + GuiGraphicsExtractor.text(mc.font, text, x, y, color.getRGB(), false); } diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackRenderer.java b/src/main/java/com/simibubi/create/content/trains/track/TrackRenderer.java index 1defbcbf0d..c66aa247c0 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackRenderer.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackRenderer.java @@ -12,13 +12,13 @@ import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.render.CachedBuffers; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; @@ -38,7 +38,7 @@ protected void renderSafe(TrackBlockEntity be, float partialTicks, PoseStack ms, Level level = be.getLevel(); if (VisualizationManager.supportsVisualization(level)) return; - VertexConsumer vb = buffer.getBuffer(RenderType.cutoutMipped()); + VertexConsumer vb = buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.cutoutMipped()); be.connections.values() .forEach(bc -> renderBezierTurn(level, bc, ms, vb)); } @@ -55,7 +55,7 @@ public static void renderBezierTurn(Level level, BezierConnection bc, PoseStack renderGirder(level, bc, ms, vb, bePosition); for (int i = 1; i < segment.length; i++) { - int light = LevelRenderer.getLightColor(level, segment.lightPosition[i].offset(bePosition)); + int light = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, segment.lightPosition[i].offset(bePosition)); TrackMaterial.TrackModelHolder modelHolder = bc.getMaterial().getModelHolder(); @@ -87,7 +87,7 @@ private static void renderGirder(Level level, BezierConnection bc, PoseStack ms, GirderAngles segment = bc.getBakedGirders(); for (int i = 1; i < segment.length; i++) { - int light = LevelRenderer.getLightColor(level, segment.lightPosition[i].offset(tePosition)); + int light = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, segment.lightPosition[i].offset(tePosition)); for (boolean first : Iterate.trueAndFalse) { Pose beamTransform = segment.beams[i].get(first); @@ -132,7 +132,7 @@ public static Vec3 getModelAngles(Vec3 normal, Vec3 diff) { } @Override - public boolean shouldRenderOffScreen(TrackBlockEntity pBlockEntity) { + public boolean shouldRenderOffScreen() { return true; } diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackShape.java b/src/main/java/com/simibubi/create/content/trains/track/TrackShape.java index dfb23cddaf..aacacfa493 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackShape.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackShape.java @@ -6,7 +6,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.Direction; import net.minecraft.util.StringRepresentable; import net.minecraft.world.level.block.Mirror; diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java index da51d2fc81..6fbfe15e19 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBehaviour.java @@ -21,20 +21,21 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import dev.engine_room.flywheel.lib.model.baked.PartialModel; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.levelWrappers.SchematicLevel; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.render.CachedBuffers; -import net.createmod.ponder.api.level.PonderLevel; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.level.wrapper.SchematicLevel; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.client.render.CachedBuffers; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; @@ -51,7 +52,6 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrackTargetingBehaviour extends BlockEntityBehaviour { @@ -87,8 +87,8 @@ public boolean isSafeNBT() { @Override public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - nbt.putUUID("Id", id); - nbt.put("TargetTrack", NbtUtils.writeBlockPos(targetTrack)); + LegacyNbtUtilsBridge.putUUID(nbt, "Id", id); + nbt.put("TargetTrack", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(targetTrack)); nbt.putBoolean("Ortho", orthogonal); nbt.putBoolean("TargetDirection", targetDirection == AxisDirection.POSITIVE); if (rotatedDirection != null) @@ -100,7 +100,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli if (targetBezier != null) { CompoundTag bezierNbt = new CompoundTag(); bezierNbt.putInt("Segment", targetBezier.segment()); - bezierNbt.put("Key", NbtUtils.writeBlockPos(targetBezier.curveTarget() + bezierNbt.put("Key", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(targetBezier.curveTarget() .subtract(getPos()))); nbt.put("Bezier", bezierNbt); } @@ -109,23 +109,23 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - id = nbt.contains("Id") ? nbt.getUUID("Id") : UUID.randomUUID(); + id = nbt.contains("Id") ? LegacyNbtUtilsBridge.getUUID(nbt, "Id") : UUID.randomUUID(); targetTrack = NBTHelper.readBlockPos(nbt, "TargetTrack"); - targetDirection = nbt.getBoolean("TargetDirection") ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; - orthogonal = nbt.getBoolean("Ortho"); + targetDirection = nbt.getBooleanOr("TargetDirection", true) ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; + orthogonal = nbt.getBooleanOr("Ortho", false); if (nbt.contains("PrevAxis")) - prevDirection = VecHelper.readNBT(nbt.getList("PrevAxis", Tag.TAG_DOUBLE)); + prevDirection = VecHelper.readNBT(nbt.getListOrEmpty("PrevAxis")); if (nbt.contains("RotatedAxis")) - rotatedDirection = VecHelper.readNBT(nbt.getList("RotatedAxis", Tag.TAG_DOUBLE)); + rotatedDirection = VecHelper.readNBT(nbt.getListOrEmpty("RotatedAxis")); if (nbt.contains("Migrate")) - migrationData = nbt.getCompound("Migrate"); + migrationData = nbt.getCompoundOrEmpty("Migrate"); if (clientPacket) edgePoint = null; if (nbt.contains("Bezier")) { - CompoundTag bezierNbt = nbt.getCompound("Bezier"); + CompoundTag bezierNbt = nbt.getCompoundOrEmpty("Bezier"); BlockPos key = NBTHelper.readBlockPos(bezierNbt, "Key"); targetBezier = new BezierTrackPointLocation(key.offset(getPos()), - bezierNbt.getInt("Segment")); + bezierNbt.getIntOr("Segment", 0)); } super.read(nbt, registries, clientPacket); } @@ -151,7 +151,7 @@ public void tick() { @SuppressWarnings("unchecked") public T createEdgePoint() { Level level = getWorld(); - boolean isClientSide = level.isClientSide; + boolean isClientSide = level.isClientSide(); if (migrationData == null || isClientSide) for (TrackGraph trackGraph : Create.RAILWAYS.sided(level).trackNetworks.values()) { T point = trackGraph.getPoint(edgePointType, id); @@ -241,7 +241,7 @@ public T createEdgePoint() { @Override public void destroy() { super.destroy(); - if (edgePoint != null && !getWorld().isClientSide) + if (edgePoint != null && !getWorld().isClientSide()) edgePoint.blockEntityRemoved(getPos(), getTargetDirection() == AxisDirection.POSITIVE); } @@ -314,7 +314,6 @@ public static enum RenderedTrackOverlayType { STATION, SIGNAL, DUAL_SIGNAL, OBSERVER; } - @OnlyIn(Dist.CLIENT) public static void render(LevelAccessor level, BlockPos pos, AxisDirection direction, BezierTrackPointLocation bezier, PoseStack ms, MultiBufferSource buffer, int light, int overlay, RenderedTrackOverlayType type, float scale) { @@ -329,13 +328,18 @@ public static void render(LevelAccessor level, BlockPos pos, AxisDirection direc ms.pushPose(); var msr = TransformStack.of(ms); PartialModel partial = track.prepareTrackOverlay(msr, level, pos, trackState, bezier, direction, type); - if (partial != null) - CachedBuffers.partial(partial, trackState) - .translate(.5, 0, .5) - .scale(scale) - .translate(-.5, 0, -.5) - .light(LevelRenderer.getLightColor(level, pos)) - .renderInto(ms, buffer.getBuffer(RenderType.cutoutMipped())); + if (partial != null) { + var sbb = CachedBuffers.block(trackState); + sbb.getTransforms() + .translate(.5, 0, .5); + sbb.getTransforms() + .scale(scale, scale, scale); + sbb.getTransforms() + .translate(-.5, 0, -.5); + sbb + .light(light) + .renderInto(ms, buffer.getBuffer(RenderTypes.entityCutout(TextureAtlas.LOCATION_BLOCKS))); + } ms.popPose(); } diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBlockItem.java b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBlockItem.java index b4ec29aab0..d1732751c1 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBlockItem.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingBlockItem.java @@ -18,35 +18,31 @@ import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyBlockEntityDataComponentBridge; import com.simibubi.create.infrastructure.config.AllConfigs; import com.tterrag.registrate.util.nullness.NonNullBiFunction; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.component.DataComponents; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtUtils; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class TrackTargetingBlockItem extends BlockItem { @@ -74,9 +70,9 @@ public InteractionResult useOn(UseOnContext pContext) { return InteractionResult.FAIL; if (player.isShiftKeyDown() && stack.has(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS)) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; - player.displayClientMessage(CreateLang.translateDirect("track_target.clear"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.clear")); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); @@ -85,7 +81,7 @@ public InteractionResult useOn(UseOnContext pContext) { } if (state.getBlock() instanceof ITrackBlock track) { - if (level.isClientSide) + if (level.isClientSide()) return InteractionResult.SUCCESS; Vec3 lookAngle = player.getLookAngle(); @@ -97,8 +93,8 @@ public InteractionResult useOn(UseOnContext pContext) { withGraphLocation(level, pos, front, null, type, (overlap, location) -> result.setValue(overlap)); if (result.getValue().feedback != null) { - player.displayClientMessage(CreateLang.translateDirect(result.getValue().feedback) - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect(result.getValue().feedback) + .withStyle(ChatFormatting.RED)); AllSoundEvents.DENY.play(level, null, pos, .5f, 1); return InteractionResult.FAIL; } @@ -106,14 +102,14 @@ public InteractionResult useOn(UseOnContext pContext) { stack.set(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS, pos); stack.set(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION, front); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); - player.displayClientMessage(CreateLang.translateDirect("track_target.set"), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.set")); AllSoundEvents.CONTROLLER_CLICK.play(level, null, pos, 1, 1); return InteractionResult.SUCCESS; } if (!stack.has(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS)) { - player.displayClientMessage(CreateLang.translateDirect("track_target.missing") - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.missing") + .withStyle(ChatFormatting.RED)); return InteractionResult.FAIL; } @@ -126,8 +122,8 @@ public InteractionResult useOn(UseOnContext pContext) { boolean bezier = stack.has(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); if (!selectedPos.closerThan(placedPos, bezier ? AllConfigs.server().trains.maxTrackPlacementLength.get() + 16 : 16)) { - player.displayClientMessage(CreateLang.translateDirect("track_target.too_far") - .withStyle(ChatFormatting.RED), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.too_far") + .withStyle(ChatFormatting.RED)); return InteractionResult.FAIL; } @@ -136,16 +132,14 @@ public InteractionResult useOn(UseOnContext pContext) { stack.get(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); CompoundTag bezierNbt = new CompoundTag(); bezierNbt.putInt("Segment", bezierTrackPointLocation.segment()); - bezierNbt.put("Key", NbtUtils.writeBlockPos(bezierTrackPointLocation.curveTarget() + bezierNbt.put("Key", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(bezierTrackPointLocation.curveTarget() .subtract(placedPos))); blockEntityData.put("Bezier", bezierNbt); } - blockEntityData.put("TargetTrack", NbtUtils.writeBlockPos(selectedPos.subtract(placedPos))); - blockEntityData.putString("id", BuiltInRegistries.ITEM.getKey(stack.getItem()).toString()); - BlockEntity.addEntityType(blockEntityData, ((IBE) this.getBlock()).getBlockEntityType()); + blockEntityData.put("TargetTrack", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(selectedPos.subtract(placedPos))); - stack.set(DataComponents.BLOCK_ENTITY_DATA, CustomData.of(blockEntityData)); + LegacyBlockEntityDataComponentBridge.set(stack, ((IBE) this.getBlock()).getBlockEntityType(), blockEntityData); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_POS); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION); stack.remove(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); @@ -153,7 +147,7 @@ public InteractionResult useOn(UseOnContext pContext) { InteractionResult useOn = super.useOn(pContext); stack.remove(DataComponents.BLOCK_ENTITY_DATA); - if (level.isClientSide || useOn == InteractionResult.FAIL) + if (level.isClientSide() || useOn == InteractionResult.FAIL) return useOn; ItemStack itemInHand = player.getItemInHand(pContext.getHand()); @@ -162,8 +156,8 @@ public InteractionResult useOn(UseOnContext pContext) { itemInHand.remove(AllDataComponents.TRACK_TARGETING_ITEM_SELECTED_DIRECTION); itemInHand.remove(AllDataComponents.TRACK_TARGETING_ITEM_BEZIER); } - player.displayClientMessage(CreateLang.translateDirect("track_target.success") - .withStyle(ChatFormatting.GREEN), true); + player.sendOverlayMessage(CreateLang.translateDirect("track_target.success") + .withStyle(ChatFormatting.GREEN)); if (type == EdgePointType.SIGNAL) AllAdvancements.SIGNAL.awardTo(player); @@ -175,7 +169,6 @@ public EdgePointType getType(ItemStack stack) { return type; } - @OnlyIn(Dist.CLIENT) public boolean useOnCurve(BezierPointSelection selection, ItemStack stack) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; @@ -184,8 +177,8 @@ public boolean useOnCurve(BezierPointSelection selection, ItemStack stack) { boolean front = player.getLookAngle() .dot(selection.direction()) < 0; - CatnipServices.NETWORK.sendToServer(new CurvedTrackSelectionPacket(be.getBlockPos(), loc.curveTarget(), - front, loc.segment(), player.getInventory().selected)); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new CurvedTrackSelectionPacket(be.getBlockPos(), loc.curveTarget(), + front, loc.segment(), player.getInventory().getSelectedSlot())); return true; } diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingClient.java b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingClient.java index 63ec4db4be..2cc72c8114 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingClient.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackTargetingClient.java @@ -11,7 +11,7 @@ import com.simibubi.create.content.trains.track.TrackTargetingBlockItem.OverlapResult; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.LevelRenderer; @@ -116,7 +116,7 @@ public static void render(PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 camer Minecraft mc = Minecraft.getInstance(); BlockPos pos = lastHovered; - int light = LevelRenderer.getLightColor(mc.level, pos); + int light = com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(mc.level, pos); AxisDirection direction = lastDirection ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; RenderedTrackOverlayType type = lastType == EdgePointType.SIGNAL ? RenderedTrackOverlayType.SIGNAL diff --git a/src/main/java/com/simibubi/create/content/trains/track/TrackVisual.java b/src/main/java/com/simibubi/create/content/trains/track/TrackVisual.java index da11fbd08c..7a0b2bc426 100644 --- a/src/main/java/com/simibubi/create/content/trains/track/TrackVisual.java +++ b/src/main/java/com/simibubi/create/content/trains/track/TrackVisual.java @@ -25,8 +25,8 @@ import dev.engine_room.flywheel.lib.visual.AbstractVisual; import it.unimi.dsi.fastutil.longs.LongArraySet; import it.unimi.dsi.fastutil.longs.LongSet; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/foundation/CreateNBTProcessors.java b/src/main/java/com/simibubi/create/foundation/CreateNBTProcessors.java index 6a7fd622b5..e136a020a2 100644 --- a/src/main/java/com/simibubi/create/foundation/CreateNBTProcessors.java +++ b/src/main/java/com/simibubi/create/foundation/CreateNBTProcessors.java @@ -7,14 +7,13 @@ import com.simibubi.create.content.equipment.clipboard.ClipboardContent; import com.simibubi.create.content.equipment.clipboard.ClipboardEntry; -import net.createmod.catnip.codecs.CatnipCodecUtils; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; +import net.createmod.catnip.api.nbt.NBTProcessors; import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.network.Filterable; import net.minecraft.world.item.Items; import net.minecraft.world.item.component.WrittenBookContent; @@ -22,14 +21,15 @@ public class CreateNBTProcessors { public static void register() { - NBTProcessors.addProcessor(BlockEntityType.LECTERN, data -> { - if (!data.contains("Book", Tag.TAG_COMPOUND)) + BlockEntityType lectern = BuiltInRegistries.BLOCK_ENTITY_TYPE.getValue(Identifier.parse("minecraft:lectern")); + NBTProcessors.addProcessor(lectern, data -> { + if (!data.contains("Book")) return data; - CompoundTag book = data.getCompound("Book"); + CompoundTag book = data.getCompoundOrEmpty("Book"); // Writable books can't have click events, so they're safe to keep - ResourceLocation writableBookResource = BuiltInRegistries.ITEM.getKey(Items.WRITABLE_BOOK); - if (writableBookResource != BuiltInRegistries.ITEM.getDefaultKey() && book.getString("id").equals(writableBookResource.toString())) + Identifier writableBookResource = BuiltInRegistries.ITEM.getKey(Items.WRITABLE_BOOK); + if (writableBookResource != BuiltInRegistries.ITEM.getDefaultKey() && book.getStringOr("id", "").equals(writableBookResource.toString())) return data; WrittenBookContent bookContent = CatnipCodecUtils.decodeOrNull(WrittenBookContent.CODEC, book); @@ -50,7 +50,7 @@ public static void register() { } public static CompoundTag clipboardProcessor(CompoundTag data) { - DataComponentMap components = CatnipCodecUtils.decodeOrNull(DataComponentMap.CODEC, data.getCompound("components")); + DataComponentMap components = CatnipCodecUtils.decodeOrNull(DataComponentMap.CODEC, data.getCompoundOrEmpty("components")); if (components == null) return data; diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java b/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java index 5d494bd107..a1d515603b 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AdvancementBehaviour.java @@ -8,6 +8,7 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; @@ -99,14 +100,14 @@ private Player getPlayer() { public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { super.write(nbt, registries, clientPacket); if (playerId != null) - nbt.putUUID("Owner", playerId); + LegacyNbtUtilsBridge.putUUID(nbt, "Owner", playerId); } @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { super.read(nbt, registries, clientPacket); if (nbt.contains("Owner")) - playerId = nbt.getUUID("Owner"); + playerId = LegacyNbtUtilsBridge.getUUID(nbt, "Owner"); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java index 221a356a38..9fdefd3bd1 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllAdvancements.java @@ -31,15 +31,15 @@ import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput.PathProvider; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.armortrim.ArmorTrim; -import net.minecraft.world.item.armortrim.TrimMaterial; -import net.minecraft.world.item.armortrim.TrimMaterials; -import net.minecraft.world.item.armortrim.TrimPattern; -import net.minecraft.world.item.armortrim.TrimPatterns; +import net.minecraft.world.item.equipment.trim.ArmorTrim; +import net.minecraft.world.item.equipment.trim.TrimMaterial; +import net.minecraft.world.item.equipment.trim.TrimMaterials; +import net.minecraft.world.item.equipment.trim.TrimPattern; +import net.minecraft.world.item.equipment.trim.TrimPatterns; import net.minecraft.world.level.block.Blocks; public class AllAdvancements implements DataProvider { @@ -282,7 +282,7 @@ public class AllAdvancements implements DataProvider { // Logistics - Secret - PACKAGE_CHUTE_THROW = create("package_chute_throw", b -> b.icon(PackageStyles.getDefaultBox()) + PACKAGE_CHUTE_THROW = create("package_chute_throw", b -> b.icon($ -> PackageStyles.getDefaultBox()) .title("Nothing but net") .description("Land your cardboard package throw in an item chute") .after(CARDBOARD_ARMOR) @@ -702,9 +702,9 @@ public CompletableFuture run(CachedOutput cache) { PathProvider pathProvider = output.createPathProvider(PackOutput.Target.DATA_PACK, "advancement"); List> futures = new ArrayList<>(); - Set set = Sets.newHashSet(); + Set set = Sets.newHashSet(); Consumer consumer = (advancement) -> { - ResourceLocation id = advancement.id(); + Identifier id = advancement.id(); if (!set.add(id)) throw new IllegalStateException("Duplicate advancement " + id); Path path = pathProvider.json(id); diff --git a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java index a8c008d7c8..99a852609a 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/AllTriggers.java @@ -5,7 +5,7 @@ import com.simibubi.create.Create; -import net.minecraft.advancements.CriterionTrigger; +import net.minecraft.advancements.triggers.CriterionTrigger; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.neoforged.neoforge.registries.DeferredRegister; diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java index 13e26f9bef..55e21a0f54 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/CreateAdvancement.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.advancement; +import java.util.ArrayList; +import java.util.List; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; @@ -11,25 +13,27 @@ import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementType; -import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.ItemUsedOnLocationTrigger; +import net.minecraft.advancements.triggers.Criterion; +import net.minecraft.advancements.triggers.InventoryChangeTrigger; +import net.minecraft.advancements.predicates.ItemPredicate; +import net.minecraft.advancements.triggers.ItemUsedOnLocationTrigger; import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup.Provider; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; public class CreateAdvancement { - static final ResourceLocation BACKGROUND = Create.asResource("textures/gui/advancements.png"); + static final Identifier BACKGROUND = Create.asResource("textures/gui/advancements.png"); static final String LANG = "advancement." + Create.ID + "."; static final String SECRET_SUFFIX = "\n\u00A77(Hidden Advancement)"; @@ -71,7 +75,8 @@ private String descriptionKey() { public boolean isAlreadyAwardedTo(Player player) { if (!(player instanceof ServerPlayer sp)) return true; - AdvancementHolder advancement = sp.getServer() + AdvancementHolder advancement = sp.level() + .getServer() .getAdvancements() .get(Create.asResource(id)); if (advancement == null) @@ -94,10 +99,12 @@ void save(Consumer t, HolderLookup.Provider registries) { if (parent != null) mcBuilder.parent(parent.datagenResult); + createBuilder.addDeferredTriggers(registries); + if (createBuilder.func != null) createBuilder.icon(createBuilder.func.apply(registries)); - mcBuilder.display(createBuilder.icon, Component.translatable(titleKey()), + mcBuilder.display(ItemStackTemplate.fromStack(createBuilder.icon), Component.translatable(titleKey()), Component.translatable(descriptionKey()).withStyle(s -> s.withColor(0xDBA213)), id.equals("root") ? BACKGROUND : null, createBuilder.type.advancementType, createBuilder.type.toast, createBuilder.type.announce, createBuilder.type.hide); @@ -140,7 +147,9 @@ class Builder { private boolean externalTrigger; private int keyIndex; private ItemStack icon; + private ItemLike iconItem; private Function func; + private List>> deferredTriggers = new ArrayList<>(); Builder special(TaskType type) { this.type = type; @@ -153,15 +162,18 @@ Builder after(CreateAdvancement other) { } Builder icon(ItemProviderEntry item) { - return icon(item.asStack()); + return icon((ItemLike) item); } Builder icon(ItemLike item) { - return icon(new ItemStack(item)); + iconItem = item; + func = $ -> new ItemStack(item); + return this; } Builder icon(ItemStack stack) { icon = stack; + iconItem = stack.getItem(); return this; } @@ -185,21 +197,20 @@ Builder whenBlockPlaced(Block block) { } Builder whenIconCollected() { - return externalTrigger(InventoryChangeTrigger.TriggerInstance.hasItems(icon.getItem())); + return whenItemCollected(iconItem); } Builder whenItemCollected(ItemProviderEntry item) { - return whenItemCollected(item.asStack() - .getItem()); + return whenItemCollected((ItemLike) item); } Builder whenItemCollected(ItemLike itemProvider) { - return externalTrigger(InventoryChangeTrigger.TriggerInstance.hasItems(itemProvider)); + return externalTrigger($ -> InventoryChangeTrigger.TriggerInstance.hasItems(itemProvider)); } Builder whenItemCollected(TagKey tag) { - return externalTrigger(InventoryChangeTrigger.TriggerInstance - .hasItems(ItemPredicate.Builder.item().of(tag).build())); + return externalTrigger(registries -> InventoryChangeTrigger.TriggerInstance + .hasItems(ItemPredicate.Builder.item().of(registries.lookupOrThrow(Registries.ITEM), tag).build())); } Builder awardedForFree() { @@ -213,6 +224,20 @@ Builder externalTrigger(Criterion trigger) { return this; } + Builder externalTrigger(Function> trigger) { + deferredTriggers.add(trigger); + externalTrigger = true; + return this; + } + + void addDeferredTriggers(Provider registries) { + for (Function> trigger : deferredTriggers) { + mcBuilder.addCriterion(String.valueOf(keyIndex), trigger.apply(registries)); + keyIndex++; + } + deferredTriggers.clear(); + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java b/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java index 92cbe0f38a..b025d08b28 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/CriterionTriggerBase.java @@ -1,79 +1,33 @@ package com.simibubi.create.foundation.advancement; -import java.util.HashSet; -import java.util.LinkedList; import java.util.List; -import java.util.Map; -import java.util.Set; import java.util.function.Supplier; import javax.annotation.ParametersAreNonnullByDefault; import org.jetbrains.annotations.Nullable; -import com.google.common.collect.Maps; import com.simibubi.create.Create; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.advancements.CriterionTrigger; -import net.minecraft.advancements.critereon.SimpleCriterionTrigger; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.PlayerAdvancements; +import net.minecraft.advancements.triggers.SimpleCriterionTrigger; +import net.minecraft.resources.Identifier; import net.minecraft.server.level.ServerPlayer; @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public abstract class CriterionTriggerBase implements CriterionTrigger { +public abstract class CriterionTriggerBase extends SimpleCriterionTrigger { public CriterionTriggerBase(String id) { this.id = Create.asResource(id); } - private final ResourceLocation id; - protected final Map>> listeners = Maps.newHashMap(); + private final Identifier id; - @Override - public void addPlayerListener(PlayerAdvancements playerAdvancementsIn, Listener listener) { - Set> playerListeners = this.listeners.computeIfAbsent(playerAdvancementsIn, k -> new HashSet<>()); - - playerListeners.add(listener); - } - - @Override - public void removePlayerListener(PlayerAdvancements playerAdvancementsIn, Listener listener) { - Set> playerListeners = this.listeners.get(playerAdvancementsIn); - if (playerListeners != null) { - playerListeners.remove(listener); - if (playerListeners.isEmpty()) { - this.listeners.remove(playerAdvancementsIn); - } - } - } - - @Override - public void removePlayerListeners(PlayerAdvancements playerAdvancementsIn) { - this.listeners.remove(playerAdvancementsIn); - } - - public ResourceLocation getId() { + public Identifier getId() { return id; } protected void trigger(ServerPlayer player, @Nullable List> suppliers) { - PlayerAdvancements playerAdvancements = player.getAdvancements(); - Set> playerListeners = this.listeners.get(playerAdvancements); - if (playerListeners != null) { - List> list = new LinkedList<>(); - - for (Listener listener : playerListeners) { - if (listener.trigger().test(suppliers)) { - list.add(listener); - } - } - - list.forEach(listener -> listener.run(playerAdvancements)); - - } + trigger(player, instance -> instance.test(suppliers)); } public abstract static class Instance implements SimpleCriterionTrigger.SimpleInstance { diff --git a/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java b/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java index f5e759337b..00d8070b3f 100644 --- a/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java +++ b/src/main/java/com/simibubi/create/foundation/advancement/SimpleCreateTrigger.java @@ -10,12 +10,10 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.advancements.critereon.ContextAwarePredicate; -import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.predicates.ContextAwarePredicate; +import net.minecraft.advancements.predicates.entity.EntityPredicate; import net.minecraft.server.level.ServerPlayer; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public class SimpleCreateTrigger extends CriterionTriggerBase { public SimpleCreateTrigger(String id) { @@ -23,7 +21,7 @@ public SimpleCreateTrigger(String id) { } public void trigger(ServerPlayer player) { - super.trigger(player, null); + super.trigger(player, (List>) null); } public SimpleCreateTrigger.Instance instance() { diff --git a/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java b/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java index 8313ca5c71..8b2c037d5e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java +++ b/src/main/java/com/simibubi/create/foundation/block/BigOutlines.java @@ -2,8 +2,8 @@ import com.simibubi.create.foundation.utility.RaycastHelper; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -25,14 +25,14 @@ public class BigOutlines { public static void pick() { Minecraft mc = Minecraft.getInstance(); - if (!(mc.cameraEntity instanceof LocalPlayer player)) + if (!(mc.getCameraEntity() instanceof LocalPlayer player)) return; if (mc.level == null) return; result = null; - Vec3 origin = player.getEyePosition(AnimationTickHolder.getPartialTicks(mc.level)); + Vec3 origin = player.getEyePosition(AnimationTickHolder.getPartialTicks()); double maxRange = mc.hitResult == null ? Double.MAX_VALUE : mc.hitResult.getLocation() diff --git a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java index f83deb6323..a75ce7435e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java +++ b/src/main/java/com/simibubi/create/foundation/block/CopperBlockSet.java @@ -9,24 +9,26 @@ import org.apache.commons.lang3.ArrayUtils; +import com.simibubi.create.foundation.data.DatagenModels; import com.simibubi.create.foundation.data.TagGen; import com.tterrag.registrate.AbstractRegistrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateRecipeProvider; import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.minecraft.client.resources.model.sprite.Material; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -38,7 +40,7 @@ import net.minecraft.world.level.block.WeatheringCopperSlabBlock; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; -import net.neoforged.neoforge.client.model.generators.ModelProvider; +import com.tterrag.registrate.providers.generators.ModelProvider; public class CopperBlockSet { protected static final WeatherState[] WEATHER_STATES = WeatherState.values(); @@ -47,10 +49,8 @@ public class CopperBlockSet { protected static final Map> BASE_BLOCKS = new EnumMap<>(WeatherState.class); static { - BASE_BLOCKS.put(WeatherState.UNAFFECTED, () -> Blocks.COPPER_BLOCK); - BASE_BLOCKS.put(WeatherState.EXPOSED, () -> Blocks.EXPOSED_COPPER); - BASE_BLOCKS.put(WeatherState.WEATHERED, () -> Blocks.WEATHERED_COPPER); - BASE_BLOCKS.put(WeatherState.OXIDIZED, () -> Blocks.OXIDIZED_COPPER); + for (WeatherState state : WEATHER_STATES) + BASE_BLOCKS.put(state, () -> Blocks.COPPER_BLOCK.weathering().pick(state)); } public static final Variant[] DEFAULT_VARIANTS = @@ -129,7 +129,7 @@ protected BlockEntry createEntry(AbstractRegistrate regi BlockBuilder builder = registrate.block(name, variant.getFactory(this, state, waxed)) .initialProperties(() -> baseBlock.get()) .loot((lt, block) -> variant.generateLootTable(lt, block, this, state, waxed)) - .blockstate((ctx, prov) -> variant.generateBlockState(ctx, prov, this, state, waxed)) + .blockstate(() -> (ctx, prov) -> variant.generateBlockState(ctx, prov, this, state, waxed)) .transform(TagGen.pickaxeOnly()) .onRegister(block -> onRegister.accept(state, block)) .tag(BlockTags.NEEDS_STONE_TOOL) @@ -141,12 +141,12 @@ protected BlockEntry createEntry(AbstractRegistrate regi builder.recipe((ctx, prov) -> { if (waxed) { Block unwaxed = get(variant, state, false).get(); - ShapelessRecipeBuilder.shapeless(RecipeCategory.BUILDING_BLOCKS, ctx.get()) + ShapelessRecipeBuilder.shapeless(prov.itemLookup(), RecipeCategory.BUILDING_BLOCKS, ctx.get()) .requires(unwaxed) .requires(Items.HONEYCOMB) - .unlockedBy("has_unwaxed", RegistrateRecipeProvider.has(unwaxed)) - .save(prov, ResourceLocation.fromNamespaceAndPath(ctx.getId() - .getNamespace(), "crafting/" + generalDirectory + ctx.getName() + "_from_honeycomb")); + .unlockedBy("has_unwaxed", prov.has(unwaxed)) + .save(prov, Identifier.fromNamespaceAndPath(ctx.getId() + .getNamespace(), "crafting/" + generalDirectory + ctx.getName() + "_from_honeycomb").toString()); } variant.generateRecipes(get(BlockVariant.INSTANCE, state, waxed), ctx, prov); @@ -214,7 +214,7 @@ default void generateLootTable(RegistrateBlockLootTables lootTable, T block, Cop void generateRecipes(BlockEntry blockVariant, DataGenContext ctx, RegistrateRecipeProvider prov); - void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, CopperBlockSet blocks, + void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, CopperBlockSet blocks, WeatherState state, boolean waxed); } @@ -239,20 +239,20 @@ public NonNullFunction getFactory(CopperBlockSet blocks, Weat } @Override - public void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + public void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, CopperBlockSet blocks, WeatherState state, boolean waxed) { Block block = ctx.get(); String path = RegisteredObjectsHelper.getKeyOrThrow(block) .getPath(); String baseLoc = ModelProvider.BLOCK_FOLDER + "/" + blocks.generalDirectory + getWeatherStatePrefix(state); - ResourceLocation texture = prov.modLoc(baseLoc + blocks.getName()); + Identifier texture = prov.modLoc(baseLoc + blocks.getName()); if (Objects.equals(blocks.getName(), blocks.getEndTextureName())) { // End texture and base texture are equal, so we should use cube_all. prov.simpleBlock(block, prov.models().cubeAll(path, texture)); } else { // End texture and base texture aren't equal, so we should use cube_column. - ResourceLocation endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); + Identifier endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); prov.simpleBlock(block, prov.models() .cubeColumn(path, texture, endTexture)); } @@ -294,16 +294,17 @@ public void generateLootTable(RegistrateBlockLootTables lootTable, SlabBlock blo } @Override - public void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + public void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, CopperBlockSet blocks, WeatherState state, boolean waxed) { - ResourceLocation fullModel = + Identifier fullModel = prov.modLoc(ModelProvider.BLOCK_FOLDER + "/" + getWeatherStatePrefix(state) + blocks.getName()); String baseLoc = ModelProvider.BLOCK_FOLDER + "/" + blocks.generalDirectory + getWeatherStatePrefix(state); - ResourceLocation texture = prov.modLoc(baseLoc + blocks.getName()); - ResourceLocation endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); + Identifier texture = prov.modLoc(baseLoc + blocks.getName()); + Identifier endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); - prov.slabBlock(ctx.get(), fullModel, texture, endTexture, endTexture); + DatagenModels.generateSlabBlock(prov, ctx.get(), fullModel, new Material(texture), new Material(endTexture), + new Material(endTexture)); } @Override @@ -342,12 +343,12 @@ public NonNullFunction getFactory(CopperBlockSet blocks, } @Override - public void generateBlockState(DataGenContext ctx, RegistrateBlockstateProvider prov, + public void generateBlockState(DataGenContext ctx, RegistrateBlockModelGenerator prov, CopperBlockSet blocks, WeatherState state, boolean waxed) { String baseLoc = ModelProvider.BLOCK_FOLDER + "/" + blocks.generalDirectory + getWeatherStatePrefix(state); - ResourceLocation texture = prov.modLoc(baseLoc + blocks.getName()); - ResourceLocation endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); - prov.stairsBlock(ctx.get(), texture, endTexture, endTexture); + Identifier texture = prov.modLoc(baseLoc + blocks.getName()); + Identifier endTexture = prov.modLoc(baseLoc + blocks.getEndTextureName()); + prov.generateStairsBlock(ctx.get(), new Material(texture), new Material(endTexture), new Material(endTexture)); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/block/IBE.java b/src/main/java/com/simibubi/create/foundation/block/IBE.java index 4b23299ea2..8ef6d177b8 100644 --- a/src/main/java/com/simibubi/create/foundation/block/IBE.java +++ b/src/main/java/com/simibubi/create/foundation/block/IBE.java @@ -11,7 +11,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.EntityBlock; @@ -35,9 +35,9 @@ default InteractionResult onBlockEntityUse(BlockGetter world, BlockPos pos, Func .orElse(InteractionResult.PASS); } - default ItemInteractionResult onBlockEntityUseItemOn(BlockGetter world, BlockPos pos, Function action) { + default InteractionResult onBlockEntityUseItemOn(BlockGetter world, BlockPos pos, Function action) { return getBlockEntityOptional(world, pos).map(action) - .orElse(ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION); + .orElse(InteractionResult.TRY_WITH_EMPTY_HAND); } /** diff --git a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java index 293e8d767f..c3f7a40598 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java +++ b/src/main/java/com/simibubi/create/foundation/block/ItemUseOverrides.java @@ -6,11 +6,11 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.utility.BlockHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -25,7 +25,7 @@ @EventBusSubscriber public class ItemUseOverrides { - private static final Set OVERRIDES = new HashSet<>(); + private static final Set OVERRIDES = new HashSet<>(); public static void addBlock(Block block) { OVERRIDES.add(RegisteredObjectsHelper.getKeyOrThrow(block)); @@ -43,7 +43,7 @@ public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { InteractionHand hand = event.getHand(); BlockState state = level.getBlockState(pos); - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(state.getBlock()); + Identifier id = RegisteredObjectsHelper.getKeyOrThrow(state.getBlock()); if (!OVERRIDES.contains(id)) return; diff --git a/src/main/java/com/simibubi/create/foundation/block/ProperWaterloggedBlock.java b/src/main/java/com/simibubi/create/foundation/block/ProperWaterloggedBlock.java index b455f1656c..63e03ba68f 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ProperWaterloggedBlock.java +++ b/src/main/java/com/simibubi/create/foundation/block/ProperWaterloggedBlock.java @@ -3,6 +3,8 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.ScheduledTickAccess; import net.minecraft.world.level.block.SimpleWaterloggedBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -31,6 +33,11 @@ default void updateWater(LevelAccessor level, BlockState state, BlockPos pos) { level.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); } + default void updateWater(ScheduledTickAccess ticks, LevelReader level, BlockState state, BlockPos pos) { + if (state.getValue(BlockStateProperties.WATERLOGGED)) + ticks.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + } + default BlockState withWater(BlockState placementState, BlockPlaceContext ctx) { return withWater(ctx.getLevel(), placementState, ctx.getClickedPos()); } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/AllCTTypes.java b/src/main/java/com/simibubi/create/foundation/block/connected/AllCTTypes.java index b8246c7f5b..4f24d16e9f 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/AllCTTypes.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/AllCTTypes.java @@ -4,8 +4,8 @@ import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.CTContext; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.ContextRequirement; -import net.createmod.catnip.lang.Lang; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.lang.Lang; +import net.minecraft.resources.Identifier; public enum AllCTTypes implements CTType { HORIZONTAL(2, ContextRequirement.builder().horizontal().build()) { @@ -169,7 +169,7 @@ public int getTextureIndex(CTContext context) { } }; - private final ResourceLocation id; + private final Identifier id; private final int sheetSize; private final ContextRequirement contextRequirement; @@ -182,7 +182,7 @@ public int getTextureIndex(CTContext context) { } @Override - public ResourceLocation getId() { + public Identifier getId() { return id; } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java index 756dd29f9d..30b12afc0c 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java @@ -9,20 +9,20 @@ import com.simibubi.create.foundation.model.BakedModelWrapperWithData; import com.simibubi.create.foundation.model.BakedQuadHelper; -import net.createmod.catnip.data.Iterate; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.data.Iterate; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; -import net.neoforged.neoforge.client.model.data.ModelProperty; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelProperty; public class CTModel extends BakedModelWrapperWithData { @@ -47,7 +47,7 @@ protected CTData createCTData(BlockAndTintGetter world, BlockPos pos, BlockState for (Direction face : Iterate.directions) { BlockState actualState = world.getBlockState(pos); if (!behaviour.buildContextForOccludedDirections() - && !Block.shouldRenderFace(state, world, pos, face, mutablePos.setWithOffset(pos, face)) + && !Block.shouldRenderFace(world, pos, state, world.getBlockState(mutablePos.setWithOffset(pos, face)), face) && !(actualState.getBlock()instanceof CopycatBlock ufb && !ufb.canFaceBeOccluded(actualState, face))) continue; diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java index c92a1f07aa..6435dbb3de 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.block.connected; -import net.createmod.catnip.render.SpriteShiftEntry; +import net.createmod.catnip.api.client.render.SpriteShiftEntry; public class CTSpriteShiftEntry extends SpriteShiftEntry { diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java index eba164c84c..1621e5aebe 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java @@ -3,14 +3,14 @@ import java.util.HashMap; import java.util.Map; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.resources.Identifier; public class CTSpriteShifter { private static final Map ENTRY_CACHE = new HashMap<>(); - public static CTSpriteShiftEntry getCT(CTType type, ResourceLocation blockTexture, ResourceLocation connectedTexture) { + public static CTSpriteShiftEntry getCT(CTType type, Identifier blockTexture, Identifier connectedTexture) { String key = blockTexture + "->" + connectedTexture + "+" + type.getId(); if (ENTRY_CACHE.containsKey(key)) return ENTRY_CACHE.get(key); diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTType.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTType.java index b51a7ad289..702474024e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTType.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTType.java @@ -3,10 +3,10 @@ import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.CTContext; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.ContextRequirement; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public interface CTType { - ResourceLocation getId(); + Identifier getId(); int getSheetSize(); diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTTypeRegistry.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTTypeRegistry.java index ad89dd61d9..e1b6745e45 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/CTTypeRegistry.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTTypeRegistry.java @@ -5,20 +5,20 @@ import org.jetbrains.annotations.Nullable; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class CTTypeRegistry { - private static final Map TYPES = new HashMap<>(); + private static final Map TYPES = new HashMap<>(); public static void register(CTType type) { - ResourceLocation id = type.getId(); + Identifier id = type.getId(); if (TYPES.containsKey(id)) throw new IllegalArgumentException("Tried to override CTType registration for id '" + id + "'. This is not supported!"); TYPES.put(id, type); } @Nullable - public static CTType get(ResourceLocation id) { + public static CTType get(Identifier id) { return TYPES.get(id); } } diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java index d6ca27b432..7d2f754914 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java @@ -9,7 +9,7 @@ import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.util.RandomSource; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/GlassPaneCTBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/GlassPaneCTBehaviour.java index 5593aad724..3152d731eb 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/GlassPaneCTBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/GlassPaneCTBehaviour.java @@ -3,7 +3,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class GlassPaneCTBehaviour extends SimpleCTBehaviour { diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/RotatedPillarCTBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/RotatedPillarCTBehaviour.java index b6e5e70ae7..c9a0c1fe58 100644 --- a/src/main/java/com/simibubi/create/foundation/block/connected/RotatedPillarCTBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/RotatedPillarCTBehaviour.java @@ -9,7 +9,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; public class RotatedPillarCTBehaviour extends HorizontalCTBehaviour { diff --git a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java index 064b20522d..5c7b654d00 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomBlockModels.java @@ -8,19 +8,19 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; public class CustomBlockModels { - private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); private final Map> finalModelFuncs = new IdentityHashMap<>(); private boolean funcsLoaded = false; - public void register(ResourceLocation block, NonNullFunction func) { + public void register(Identifier block, NonNullFunction func) { modelFuncs.put(block, func); } @@ -39,7 +39,7 @@ private void loadEntriesIfMissing() { private void loadEntries() { finalModelFuncs.clear(); modelFuncs.asMap().forEach((location, funcList) -> { - Block block = BuiltInRegistries.BLOCK.get(location); + Block block = BuiltInRegistries.BLOCK.getValue(location); if (block == Blocks.AIR) { return; } diff --git a/src/main/java/com/simibubi/create/foundation/block/render/ReducedDestroyEffects.java b/src/main/java/com/simibubi/create/foundation/block/render/ReducedDestroyEffects.java index bb3065febd..cbd422f52c 100644 --- a/src/main/java/com/simibubi/create/foundation/block/render/ReducedDestroyEffects.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/ReducedDestroyEffects.java @@ -38,7 +38,8 @@ public boolean addDestroyEffects(BlockState state, Level worldIn, BlockPos pos, for (int xIndex = 0; xIndex < xParts; ++xIndex) { for (int yIndex = 0; yIndex < yParts; ++yIndex) { for (int zIndex = 0; zIndex < zParts; ++zIndex) { - if (world.random.nextDouble() > chance) + if (world.getRandom() + .nextDouble() > chance) continue; double d4 = (xIndex + .5) / xParts; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/CachedRenderBBBlockEntity.java b/src/main/java/com/simibubi/create/foundation/blockEntity/CachedRenderBBBlockEntity.java index 440405ba70..b961585380 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/CachedRenderBBBlockEntity.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/CachedRenderBBBlockEntity.java @@ -5,7 +5,6 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class CachedRenderBBBlockEntity extends SyncedBlockEntity { @@ -15,7 +14,6 @@ public CachedRenderBBBlockEntity(BlockEntityType type, BlockPos pos, BlockSta super(type, pos, state); } - @OnlyIn(Dist.CLIENT) public AABB getRenderBoundingBox() { if (renderBoundingBox == null) { renderBoundingBox = createRenderBoundingBox(); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/ItemHandlerContainer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/ItemHandlerContainer.java index 29ccc9312a..66537756be 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/ItemHandlerContainer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/ItemHandlerContainer.java @@ -94,11 +94,9 @@ public boolean stillValid(Player player) { return false; } - @Override public void startOpen(Player player) { } - @Override public void stopOpen(Player player) { } } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java b/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java index 4203fa58df..02ac80d888 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/SmartBlockEntity.java @@ -16,10 +16,11 @@ import com.simibubi.create.foundation.advancement.CreateAdvancement; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; import com.simibubi.create.foundation.utility.IInteractionChecker; import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap; -import net.createmod.ponder.api.VirtualBlockEntity; +import net.createmod.ponder.api.client.VirtualBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -27,6 +28,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; import net.neoforged.neoforge.common.NeoForge; @@ -91,13 +94,11 @@ public void lazyTick() {} * Hook only these in future subclasses of STE */ protected void write(CompoundTag tag, HolderLookup.Provider registries, boolean clientPacket) { - super.saveAdditional(tag, registries); forEachBehaviour(tb -> tb.write(tag, registries, clientPacket)); } @Override public void writeSafe(CompoundTag tag, HolderLookup.Provider registries) { - super.saveAdditional(tag, registries); forEachBehaviour(tb -> { if (tb.isSafeNBT()) tb.writeSafe(tag, registries); @@ -115,13 +116,13 @@ protected void read(CompoundTag tag, HolderLookup.Provider registries, boolean c list.forEach(b -> behaviours.put(b.getType(), b)); NeoForge.EVENT_BUS.post(new BlockEntityBehaviourEvent(this, behaviours)); } - super.loadAdditional(tag, registries); forEachBehaviour(tb -> tb.read(tag, registries, clientPacket)); } @Override - protected void loadAdditional(@NotNull CompoundTag tag, HolderLookup.@NotNull Provider registries) { - read(tag, registries, false); + protected void loadAdditional(@NotNull ValueInput input) { + super.loadAdditional(input); + read(LegacyBlockEntityTagBridge.read(input), input.lookup(), false); } @Override @@ -158,8 +159,11 @@ public void destroy() { } @Override - public final void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { - write(tag, registries, false); + protected final void saveAdditional(ValueOutput output) { + super.saveAdditional(output); + CompoundTag tag = new CompoundTag(); + write(tag, LegacyBlockEntityTagBridge.registries(level), false); + LegacyBlockEntityTagBridge.store(output, tag); } @Override @@ -224,7 +228,8 @@ public boolean isChunkUnloaded() { @Override public boolean canPlayerUse(Player player) { if (level != null && level.getBlockEntity(worldPosition) == this) { - return player.canInteractWithBlock(worldPosition, 8); + return player.distanceToSqr(worldPosition.getX() + 0.5, worldPosition.getY() + 0.5, + worldPosition.getZ() + 0.5) <= 64; } return false; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java b/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java index 45af3318ab..dfb8beedf5 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/SyncedBlockEntity.java @@ -2,7 +2,6 @@ import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderGetter; import net.minecraft.core.HolderLookup; @@ -16,8 +15,10 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.ValueInput; + +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; -@MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault public abstract class SyncedBlockEntity extends BlockEntity { public SyncedBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { @@ -35,24 +36,23 @@ public ClientboundBlockEntityDataPacket getUpdatePacket() { } @Override - public void handleUpdateTag(CompoundTag tag, HolderLookup.Provider registries) { - readClient(tag, registries); + public void handleUpdateTag(ValueInput input) { + readClient(LegacyBlockEntityTagBridge.read(input), input.lookup()); } @Override - public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt, HolderLookup.Provider registries) { - CompoundTag tag = pkt.getTag(); - readClient(tag == null ? new CompoundTag() : tag, registries); + public void onDataPacket(Connection net, ValueInput input) { + readClient(LegacyBlockEntityTagBridge.read(input), input.lookup()); } // Special handling for client update packets public void readClient(CompoundTag tag, HolderLookup.Provider registries) { - loadAdditional(tag, registries); + loadAdditional(LegacyBlockEntityTagBridge.input(tag, registries)); } // Special handling for client update packets public CompoundTag writeClient(CompoundTag tag, HolderLookup.Provider registries) { - saveAdditional(tag, registries); + tag.merge(LegacyBlockEntityTagBridge.output(registries, this::saveAdditional)); return tag; } @@ -67,6 +67,6 @@ public void notifyUpdate() { } public HolderGetter blockHolderGetter() { - return level != null ? level.holderLookup(Registries.BLOCK) : BuiltInRegistries.BLOCK.asLookup(); + return level != null ? level.registryAccess().lookupOrThrow(Registries.BLOCK) : BuiltInRegistries.BLOCK; } } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/CenteredSideValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/CenteredSideValueBoxTransform.java index 8133079fe0..015cbdf5fe 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/CenteredSideValueBoxTransform.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/CenteredSideValueBoxTransform.java @@ -2,7 +2,7 @@ import java.util.function.BiPredicate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.core.Direction; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBox.java index b8227655ce..ffe0e54695 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBox.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBox.java @@ -8,14 +8,14 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.INamedIconOptions; import com.simibubi.create.foundation.gui.AllIcons; -import net.createmod.catnip.outliner.ChasingAABBOutline; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.outliner.ChasingAABBOutline; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import com.simibubi.create.foundation.render.ItemRenderer; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -137,8 +137,7 @@ public void renderContents(PoseStack ms, MultiBufferSource buffer) { boolean isFilter = stack.getItem() instanceof FilterItem; boolean isEmpty = stack.isEmpty(); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); BakedModel modelWithOverrides = itemRenderer.getModel(stack, null, null, 0); boolean blockItem = modelWithOverrides.isGui3d(); @@ -226,14 +225,12 @@ public void renderContents(PoseStack ms, MultiBufferSource buffer) { private static void drawString(PoseStack ms, MultiBufferSource buffer, Component text, float x, float y, int color) { - Minecraft.getInstance().font.drawInBatch(text, x, y, color, false, ms.last() - .pose(), buffer, Font.DisplayMode.NORMAL, 0, LightTexture.FULL_BRIGHT); + // TODO 26.2: submit in-world value text through the new Font PreparedText render-state path. } private static void drawString8x(PoseStack ms, MultiBufferSource buffer, Component text, float x, float y, int color) { - Minecraft.getInstance().font.drawInBatch8xOutline(text.getVisualOrderText(), x, y, color, 0xff333333, ms.last() - .pose(), buffer, LightTexture.FULL_BRIGHT); + // TODO 26.2: submit in-world outlined value text through the new Font PreparedText render-state path. } } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxRenderer.java index 33d65c4c5b..be68160a8b 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxRenderer.java @@ -7,10 +7,10 @@ import dev.engine_room.flywheel.lib.transform.TransformStack; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import com.simibubi.create.foundation.render.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; import net.minecraft.world.item.BlockItem; @@ -26,7 +26,7 @@ public class ValueBoxRenderer { public static void renderItemIntoValueBox(ItemStack filter, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { Minecraft mc = Minecraft.getInstance(); - ItemRenderer itemRenderer = mc.getItemRenderer(); + ItemRenderer itemRenderer = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer(); BakedModel modelWithOverrides = itemRenderer.getModel(filter, null, null, 0); boolean blockItem = modelWithOverrides.isGui3d(); float scale = (!blockItem ? .5f : 1f) + 1 / 64f; @@ -68,7 +68,7 @@ public static void renderFlatItemIntoValueBox(ItemStack filter, PoseStack ms, Mu .normal() .set(copy); Minecraft mc = Minecraft.getInstance(); - mc.getItemRenderer() + com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .renderStatic(filter, ItemDisplayContext.GUI, itemLight, OverlayTexture.NO_OVERLAY, squashedMS, buffer, mc.level, 0); ms.popPose(); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxTransform.java index 988bafcea0..f7cedf1aee 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxTransform.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueBoxTransform.java @@ -7,8 +7,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsBehaviour.java index 979944fc57..2164940f8f 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsBehaviour.java @@ -71,7 +71,7 @@ default boolean readFromClipboard(HolderLookup.@NotNull Provider registries, Com return false; if (simulate) return true; - setValueSettings(player, new ValueSettings(tag.getInt("Row"), tag.getInt("Value")), false); + setValueSettings(player, new ValueSettings(tag.getIntOr("Row", 0), tag.getIntOr("Value", 0)), false); return true; } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsClient.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsClient.java index 646b3deceb..0578bbce1e 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsClient.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsClient.java @@ -4,13 +4,13 @@ import com.simibubi.create.AllBlocks; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.theme.Color; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.theme.Color; import net.minecraft.client.DeltaTracker; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.LayeredDraw; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.neoforged.neoforge.client.gui.GuiLayer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.MutableComponent; @@ -21,7 +21,7 @@ import net.minecraft.world.phys.HitResult; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; -public class ValueSettingsClient implements LayeredDraw.Layer { +public class ValueSettingsClient implements GuiLayer { private Minecraft mc; public int interactHeldTicks = -1; @@ -46,6 +46,10 @@ public void cancelIfWarmupAlreadyStarted(PlayerInteractEvent.RightClickBlock eve } } + public static void cancelWarmupIfStarted(PlayerInteractEvent.RightClickBlock event) { + com.simibubi.create.CreateClient.VALUE_SETTINGS_HANDLER.cancelIfWarmupAlreadyStarted(event); + } + public void startInteractionWith(BlockPos pos, BehaviourType behaviourType, InteractionHand hand, Direction side) { interactHeldTicks = 0; @@ -55,6 +59,11 @@ public void startInteractionWith(BlockPos pos, BehaviourType behaviourType, I interactHeldFace = side; } + public static void startValueSettingsInteraction(BlockPos pos, BehaviourType behaviourType, InteractionHand hand, + Direction side) { + com.simibubi.create.CreateClient.VALUE_SETTINGS_HANDLER.startInteractionWith(pos, behaviourType, hand, side); + } + public void cancelInteraction() { interactHeldTicks = -1; } @@ -86,7 +95,7 @@ public void tick() { return; } if (!mc.options.keyUse.isDown()) { - CatnipServices.NETWORK.sendToServer(new ValueSettingsPacket(interactHeldPos, 0, 0, interactHeldHand, blockHitResult, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ValueSettingsPacket(interactHeldPos, 0, 0, interactHeldHand, blockHitResult, interactHeldFace, false, valueSettingBehaviour.netId())); valueSettingBehaviour.onShortInteract(player, interactHeldHand, interactHeldFace, blockHitResult); cancelInteraction(); @@ -104,7 +113,7 @@ public void tick() { } public void showHoverTip(List tip) { - if (mc.screen != null) + if (mc.gui.screen() != null) return; if (hoverWarmup < 6) { hoverWarmup += 2; @@ -116,15 +125,15 @@ public void showHoverTip(List tip) { } @Override - public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { + public void render(GuiGraphicsExtractor GuiGraphicsExtractor, DeltaTracker deltaTracker) { Minecraft mc = Minecraft.getInstance(); - if (mc.options.hideGui || !ValueSettingsInputHandler.canInteract(mc.player)) + if (!ValueSettingsInputHandler.canInteract(mc.player)) return; if (hoverTicks == 0 || lastHoverTip == null) return; - int x = guiGraphics.guiWidth() / 2; - int y = guiGraphics.guiHeight() - 75 - lastHoverTip.size() * 12; + int x = GuiGraphicsExtractor.guiWidth() / 2; + int y = GuiGraphicsExtractor.guiHeight() - 75 - lastHoverTip.size() * 12; float alpha = hoverTicks > 5 ? (11 - hoverTicks) / 5f : Math.min(1, hoverTicks / 5f); Color color = new Color(0xffffff); @@ -134,7 +143,7 @@ public void render(GuiGraphics guiGraphics, DeltaTracker deltaTracker) { for (int i = 0; i < lastHoverTip.size(); i++) { MutableComponent mutableComponent = lastHoverTip.get(i); - guiGraphics.drawString(mc.font, mutableComponent, x - mc.font.width(mutableComponent) / 2, y, + GuiGraphicsExtractor.text(mc.font, mutableComponent, x - mc.font.width(mutableComponent) / 2, y, (i == 0 ? titleColor : color).getRGB()); y += 12; } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsInputHandler.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsInputHandler.java index 9dd14cf0e8..745e377b30 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsInputHandler.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsInputHandler.java @@ -1,12 +1,11 @@ package com.simibubi.create.foundation.blockEntity.behaviour; import com.simibubi.create.AllBlocks; -import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.SidedFilteringBehaviour; import com.simibubi.create.foundation.utility.AdventureUtil; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -39,7 +38,7 @@ public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { return; if (event.getSide() == LogicalSide.CLIENT) - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateClient.VALUE_SETTINGS_HANDLER.cancelIfWarmupAlreadyStarted(event)); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ValueSettingsClient.cancelWarmupIfStarted(event)); if (event.isCanceled()) return; @@ -86,8 +85,7 @@ public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { if (event.getSide() == LogicalSide.CLIENT) { BehaviourType type = behaviour.getType(); - CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateClient.VALUE_SETTINGS_HANDLER - .startInteractionWith(pos, type, hand, ray.getDirection())); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> ValueSettingsClient.startValueSettingsInteraction(pos, type, hand, ray.getDirection())); } return; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsPacket.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsPacket.java index b8b3003763..21de0a9948 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsPacket.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsPacket.java @@ -7,9 +7,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsBehaviour.ValueSettings; import com.simibubi.create.foundation.networking.BlockEntityConfigurationPacket; -import net.createmod.catnip.codecs.stream.CatnipLargerStreamCodecs; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecBuilders; -import net.createmod.catnip.codecs.stream.CatnipStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipLargerStreamCodecs; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecBuilders; +import net.createmod.catnip.api.data.codec.stream.CatnipStreamCodecs; import io.netty.buffer.ByteBuf; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsScreen.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsScreen.java index 99939c8100..dc84736783 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsScreen.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/ValueSettingsScreen.java @@ -6,7 +6,7 @@ import org.lwjgl.glfw.GLFW; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllKeys; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsBehaviour.ValueSettings; @@ -16,11 +16,14 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.UIRenderHelper; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.MouseButtonInfo; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -82,7 +85,7 @@ private void setCursor(Vec2 coordinateOfValue) { double guiScale = minecraft.getWindow() .getGuiScale(); GLFW.glfwSetCursorPos(minecraft.getWindow() - .getWindow(), coordinateOfValue.x * guiScale, coordinateOfValue.y * guiScale); + .handle(), coordinateOfValue.x * guiScale, coordinateOfValue.y * guiScale); } public ValueSettings getClosestCoordinate(int mouseX, int mouseY) { @@ -131,7 +134,7 @@ public Vec2 getCoordinateOfValue(int row, int column) { } @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { int x = guiLeft; int y = guiTop; int milestoneCount = board.maxValue() / board.milestoneInterval() + 1; @@ -164,8 +167,8 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (fadeInWidth > fattestLabel) { int textX = x - 11 - fatTipOffset + bgWidth / 2; - graphics.drawString(font, title, textX - font.width(title) / 2, y - 14, 0xdddddd, false); - graphics.drawString(font, tip, textX - font.width(tip) / 2, y + windowHeight + additionalHeight - 27, + graphics.text(font, title, textX - font.width(title) / 2, y - 14, 0xdddddd, false); + graphics.text(font, tip, textX - font.width(tip) / 2, y + windowHeight + additionalHeight - 27, 0xdddddd, false); } @@ -185,7 +188,7 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float UIRenderHelper.drawCropped(graphics, valueBarX + w, y + 1, Math.min(AllGuiTextures.VALUE_SETTINGS_BAR.getWidth() - 1, valueBarWidth - w), 8, zLevel, AllGuiTextures.VALUE_SETTINGS_BAR); - graphics.drawString(font, component, x, y + 1, 0x442000, false); + graphics.text(font, component, x, y + 1, 0x442000, false); } int milestoneX = valueBarX; @@ -236,11 +239,11 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float if (cursorIcon != null) { AllGuiTextures.VALUE_SETTINGS_CURSOR_ICON.render(graphics, cursorX - 2, cursorY - 3); - RenderSystem.setShaderColor(0.265625f, 0.125f, 0, 1); + LegacyRenderSystemBridge.setShaderColor(0.265625f, 0.125f, 0, 1); cursorIcon.render(graphics, cursorX + 1, cursorY - 1); - RenderSystem.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); if (fadeInWidth > fattestLabel) - graphics.drawString(font, cursorText, x - 11 - fatTipOffset + (bgWidth - font.width(cursorText)) / 2, + graphics.text(font, cursorText, x - 11 - fatTipOffset + (bgWidth - font.width(cursorText)) / 2, originalY + windowHeight + additionalHeight - 40, 0xFBDC7D, false); return; } @@ -250,10 +253,10 @@ protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float AllGuiTextures.VALUE_SETTINGS_CURSOR); AllGuiTextures.VALUE_SETTINGS_CURSOR_RIGHT.render(graphics, cursorX + cursorWidth, cursorY); - graphics.drawString(font, cursorText, cursorX + 2, cursorY + 3, 0x442000, false); + graphics.text(font, cursorText, cursorX + 2, cursorY + 3, 0x442000, false); } - protected void renderBrassFrame(GuiGraphics graphics, int x, int y, int w, int h) { + protected void renderBrassFrame(GuiGraphicsExtractor graphics, int x, int y, int w, int h) { AllGuiTextures.BRASS_FRAME_TL.render(graphics, x, y); AllGuiTextures.BRASS_FRAME_TR.render(graphics, x + w - 4, y); AllGuiTextures.BRASS_FRAME_BL.render(graphics, x, y + h - 4); @@ -274,7 +277,7 @@ protected void renderBrassFrame(GuiGraphics graphics, int x, int y, int w, int h } @Override - public void renderBackground(@NotNull GuiGraphics graphics, int pMouseX, int pMouseY, float pPartialTick) { + public void renderBackground(@NotNull GuiGraphicsExtractor graphics, int pMouseX, int pMouseY, float pPartialTick) { int a = ((int) (0x50 * Math.min(1, (ticksOpen + AnimationTickHolder.getPartialTicks()) / 20f))) << 24; graphics.fillGradient(0, 0, this.width, this.height, 0x101010 | a, 0x101010 | a); } @@ -300,7 +303,7 @@ public boolean mouseScrolled(double pMouseX, double pMouseY, double pScrollX, do @Override public boolean keyReleased(int pKeyCode, int pScanCode, int pModifiers) { - if (minecraft.options.keyUse.matches(pKeyCode, pScanCode)) { + if (minecraft.options.keyUse.matches(new KeyEvent(pKeyCode, pScanCode, pModifiers))) { Window window = minecraft.getWindow(); double x = minecraft.mouseHandler.xpos() * window.getGuiScaledWidth() / window.getScreenWidth(); double y = minecraft.mouseHandler.ypos() * window.getGuiScaledHeight() / window.getScreenHeight(); @@ -312,7 +315,7 @@ public boolean keyReleased(int pKeyCode, int pScanCode, int pModifiers) { @Override public boolean mouseReleased(double pMouseX, double pMouseY, int pButton) { - if (minecraft.options.keyUse.matchesMouse(pButton)) { + if (minecraft.options.keyUse.matchesMouse(new MouseButtonEvent(pMouseX, pMouseY, new MouseButtonInfo(pButton, 0)))) { saveAndClose(pMouseX, pMouseY); return true; } @@ -322,7 +325,7 @@ public boolean mouseReleased(double pMouseX, double pMouseY, int pButton) { protected void saveAndClose(double pMouseX, double pMouseY) { ValueSettings closest = getClosestCoordinate((int) pMouseX, (int) pMouseY); // FIXME: value settings may be face-sensitive on future components - CatnipServices.NETWORK.sendToServer(new ValueSettingsPacket(pos, closest.row(), closest.value(), null, null, Direction.UP, + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(new ValueSettingsPacket(pos, closest.row(), closest.value(), null, null, Direction.UP, AllKeys.ctrlDown(), netId)); onClose(); } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/animatedContainer/AnimatedContainerBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/animatedContainer/AnimatedContainerBehaviour.java index d7e188f5d1..65e00734ab 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/animatedContainer/AnimatedContainerBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/animatedContainer/AnimatedContainerBehaviour.java @@ -36,7 +36,7 @@ public void onOpenChanged(Consumer openChanged) { public void read(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { super.read(compound, registries, clientPacket); if (clientPacket) - openCount = compound.getInt("OpenCount"); + openCount = compound.getIntOr("OpenCount", 0); } @Override @@ -54,7 +54,7 @@ public void lazyTick() { void updateOpenCount() { Level level = getWorld(); - if (level.isClientSide) + if (level.isClientSide()) return; if (openCount == 0) return; @@ -79,7 +79,7 @@ void updateOpenCount() { public void startOpen(Player player) { if (player.isSpectator()) return; - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; if (openCount < 0) openCount = 0; @@ -92,7 +92,7 @@ public void startOpen(Player player) { public void stopOpen(Player player) { if (player.isSpectator()) return; - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; openCount--; if (openCount == 0 && openChanged != null) diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java index 3a7f993491..8b5dcf9275 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java @@ -7,7 +7,7 @@ import com.simibubi.create.foundation.utility.BlockHelper; import com.simibubi.create.foundation.utility.RaycastHelper; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Vec3i; @@ -93,7 +93,7 @@ public static Direction getActivatedDirection(Level world, BlockPos pos, Directi static AABB getBB(BlockPos pos, Direction direction) { AABB bb = new AABB(pos); - Vec3i vec = direction.getNormal(); + Vec3i vec = direction.getUnitVec3i(); int x = vec.getX(); int y = vec.getY(); int z = vec.getZ(); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java index fc4f011f5d..c02b8ecaa6 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java @@ -11,10 +11,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.CommonComponents; @@ -58,7 +59,7 @@ public static void tick() { double bestDistance = Double.MAX_VALUE; Vec3 center = VecHelper.getCenterOf(pos); for (Direction direction : connectiveSides) { - double distance = Vec3.atLowerCornerOf(direction.getNormal()) + double distance = Vec3.atLowerCornerOf(direction.getUnitVec3i()) .subtract(target.getLocation() .subtract(center)) .length(); @@ -70,9 +71,9 @@ public static void tick() { AABB bb = EdgeInteractionHandler.getBB(pos, closestEdge); boolean hit = bb.contains(target.getLocation()); - Vec3 offset = Vec3.atLowerCornerOf(closestEdge.getNormal()) + Vec3 offset = Vec3.atLowerCornerOf(closestEdge.getUnitVec3i()) .scale(.5) - .add(Vec3.atLowerCornerOf(face.getNormal()) + .add(Vec3.atLowerCornerOf(face.getUnitVec3i()) .scale(.469)) .add(VecHelper.CENTER_OF_ORIGIN); @@ -87,7 +88,7 @@ public static void tick() { List tip = new ArrayList<>(); tip.add(CreateLang.translateDirect("logistics.crafter.connected")); - tip.add(CreateLang.translateDirect(CrafterHelper.areCraftersConnected(world, pos, pos.relative(closestEdge)) + tip.add(CreateLang.translateDirect(CrafterHelper.areCraftersConnected((BlockAndTintGetter) world, pos, pos.relative(closestEdge)) ? "logistics.crafter.click_to_separate" : "logistics.crafter.click_to_merge")); CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java index 9cc015c6f2..697eb793f0 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java @@ -21,10 +21,11 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueSettingsFormatter; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.utility.CreateLang; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -88,7 +89,7 @@ public boolean isSafeNBT() { @Override public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - nbt.put("Filter", getFilter().saveOptional(registries)); + nbt.put("Filter", LegacyItemStackNbtBridge.saveOptional(getFilter(), registries)); nbt.putInt("FilterAmount", count); nbt.putBoolean("UpTo", upTo); super.write(nbt, registries, clientPacket); @@ -96,9 +97,9 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - filter = FilterItemStack.of(registries, nbt.getCompound("Filter")); - count = nbt.getInt("FilterAmount"); - upTo = nbt.getBoolean("UpTo"); + filter = FilterItemStack.of(registries, nbt.getCompoundOrEmpty("Filter")); + count = nbt.getIntOr("FilterAmount", 0); + upTo = nbt.getBooleanOr("UpTo", false); // Migrate from previous behaviour if (count == 0) { @@ -307,7 +308,7 @@ public void onShortInteract(Player player, InteractionHand hand, Direction side, toApply.setCount(1); if (!setFilter(side, toApply)) { - player.displayClientMessage(CreateLang.translateDirect("logistics.filter.invalid_item"), true); + player.sendOverlayMessage(CreateLang.translateDirect("logistics.filter.invalid_item")); AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); return; } @@ -362,7 +363,8 @@ public String getClipboardKey() { public boolean writeToClipboard(HolderLookup.@NotNull Provider registries, CompoundTag tag, Direction side) { ValueSettingsBehaviour.super.writeToClipboard(registries, tag, side); ItemStack filter = getFilter(side); - tag.put("Filter", filter.saveOptional(registries)); + tag.put("Filter", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(filter, + registries)); return true; } @@ -375,14 +377,16 @@ public boolean readFromClipboard(HolderLookup.@NotNull Provider registries, Comp return upstreamResult; if (simulate) return true; - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return true; ItemStack refund = ItemStack.EMPTY; if (getFilter(side).getItem() instanceof FilterItem && !player.isCreative()) refund = getFilter(side).copy(); - ItemStack copied = ItemStack.parseOptional(registries, tag.getCompound("Filter")); + ItemStack copied = + com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.parseOptional(registries, + tag.getCompound("Filter")); if (copied.getItem() instanceof FilterItem filterType && !player.isCreative()) { InvWrapper inv = new InvWrapper(player.getInventory()); @@ -402,12 +406,12 @@ public boolean readFromClipboard(HolderLookup.@NotNull Provider registries, Comp return true; } - player.displayClientMessage(CreateLang + player.sendOverlayMessage(CreateLang .translate("logistics.filter.requires_item_in_inventory", copied.getHoverName() .copy() .withStyle(ChatFormatting.WHITE)) .style(ChatFormatting.RED) - .component(), true); + .component()); AllSoundEvents.DENY.playOnServer(player.level(), player.blockPosition(), 1, 1); return false; } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringRenderer.java index 7cab418739..d432edde26 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringRenderer.java @@ -16,13 +16,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform.Sided; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.data.Pair; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.data.Pair; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -120,7 +120,7 @@ public static void renderOnBlockEntity(SmartBlockEntity be, float partialTicks, continue; if (!be.isVirtual()) { - Entity cameraEntity = Minecraft.getInstance().cameraEntity; + Entity cameraEntity = Minecraft.getInstance().getCameraEntity(); if (cameraEntity != null && level == cameraEntity.level()) { float max = behaviour.getRenderDistance(); if (cameraEntity.position() diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/SidedFilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/SidedFilteringBehaviour.java index d62a92a62e..48bc8aef33 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/SidedFilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/SidedFilteringBehaviour.java @@ -12,8 +12,8 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform.Sided; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; @@ -77,8 +77,8 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - NBTHelper.iterateCompoundList(nbt.getList("Filters", Tag.TAG_COMPOUND), compound -> { - Direction face = Direction.from3DDataValue(compound.getInt("Side")); + NBTHelper.iterateCompoundList(nbt.getListOrEmpty("Filters"), compound -> { + Direction face = Direction.from3DDataValue(compound.getIntOr("Side", 0)); if (sidedFilters.containsKey(face)) sidedFilters.get(face) .read(compound, registries, clientPacket); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/fluid/SmartFluidTankBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/fluid/SmartFluidTankBehaviour.java index 6e27a26e2b..ce722e7579 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/fluid/SmartFluidTankBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/fluid/SmartFluidTankBehaviour.java @@ -10,9 +10,9 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper; import com.simibubi.create.foundation.fluid.SmartFluidTank; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -88,7 +88,7 @@ public SmartFluidTankBehaviour forbidExtraction() { @Override public void initialize() { super.initialize(); - if (getWorld().isClientSide) + if (getWorld().isClientSide()) return; forEach(ts -> { ts.fluidLevel.forceNextSync(); @@ -181,7 +181,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { super.read(nbt, registries, clientPacket); MutableInt index = new MutableInt(0); - NBTHelper.iterateCompoundList(nbt.getList(getType().getName() + "Tanks", Tag.TAG_COMPOUND), c -> { + NBTHelper.iterateCompoundList(nbt.getListOrEmpty(getType().getName() + "Tanks"), c -> { if (index.intValue() >= tanks.length) return; tanks[index.intValue()].readNBT(c, registries, clientPacket); @@ -242,7 +242,7 @@ public void onFluidStackChanged() { if (!blockEntity.hasLevel()) return; fluidLevel.chase(tank.getFluidAmount() / (float) tank.getCapacity(), .25, Chaser.EXP); - if (!getWorld().isClientSide) + if (!getWorld().isClientSide()) sendDataLazily(); if (blockEntity.isVirtual() && !tank.getFluid() .isEmpty()) @@ -263,14 +263,14 @@ public float getTotalUnits(float partialTicks) { public CompoundTag writeNBT(HolderLookup.Provider registries) { CompoundTag compound = new CompoundTag(); - compound.put("TankContent", tank.writeToNBT(registries, new CompoundTag())); + compound.put("TankContent", com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.serializeTank(tank, registries)); compound.put("Level", fluidLevel.writeNBT()); return compound; } public void readNBT(CompoundTag compound, HolderLookup.Provider registries, boolean clientPacket) { - tank.readFromNBT(registries, compound.getCompound("TankContent")); - fluidLevel.readNBT(compound.getCompound("Level"), clientPacket); + com.simibubi.create.foundation.utility.LegacyFluidNbtBridge.deserializeTank(tank, registries, compound.getCompoundOrEmpty("TankContent")); + fluidLevel.readNBT(compound.getCompoundOrEmpty("Level"), clientPacket); if (!tank.getFluid() .isEmpty()) renderedFluid = tank.getFluid(); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java index 967b12f24a..28a3791f1b 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/CapManipulationBehaviourBase.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; -import net.createmod.catnip.math.BlockFace; +import net.createmod.catnip.api.math.BlockFace; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -38,7 +38,12 @@ public CapManipulationBehaviourBase(SmartBlockEntity be, InterfaceProvider targe filter = Predicates.alwaysTrue(); } - protected abstract BlockCapability capability(); + protected abstract BlockCapability capability(); + + @SuppressWarnings("unchecked") + protected T adaptCapability(Object capability) { + return (T) capability; + } @Override public void initialize() { @@ -143,8 +148,8 @@ public void findNewCapability() { BlockEntity invBE = world.getBlockEntity(pos); if (!filter.test(invBE)) return; - BlockCapability capability = capability(); - targetCapability = world.getCapability(capability, pos, bypassSided ? null : targetBlockFace.getFace()); + BlockCapability capability = capability(); + targetCapability = adaptCapability(world.getCapability(capability, pos, bypassSided ? null : targetBlockFace.getFace())); } @FunctionalInterface diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/InvManipulationBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/InvManipulationBehaviour.java index 3501fa6c05..1385f23014 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/InvManipulationBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/inventory/InvManipulationBehaviour.java @@ -10,6 +10,7 @@ import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import com.simibubi.create.foundation.item.ItemHelper; import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; @@ -19,6 +20,8 @@ import net.neoforged.neoforge.capabilities.Capabilities; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.item.ItemResource; public class InvManipulationBehaviour extends CapManipulationBehaviourBase { @@ -58,8 +61,14 @@ public IdentifiedInventory getIdentifiedInventory() { } @Override - protected BlockCapability capability() { - return Capabilities.ItemHandler.BLOCK; + protected BlockCapability capability() { + return Capabilities.Item.BLOCK; + } + + @Override + @SuppressWarnings("unchecked") + protected IItemHandler adaptCapability(Object capability) { + return LegacyItemHandlerAdapter.of((ResourceHandler) capability); } public ItemStack extract() { @@ -74,7 +83,7 @@ public ItemStack extract(ExtractionCountMode mode, int amount, Predicate { @@ -57,8 +61,14 @@ protected Predicate getFilterTest(Predicate customFilter } @Override - protected BlockCapability capability() { - return Capabilities.FluidHandler.BLOCK; + protected BlockCapability capability() { + return Capabilities.Fluid.BLOCK; + } + + @Override + @SuppressWarnings("unchecked") + protected IFluidHandler adaptCapability(Object capability) { + return LegacyFluidHandlerAdapter.of((ResourceHandler) capability); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueBehaviour.java index a5746f60aa..67d104c534 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueBehaviour.java @@ -68,7 +68,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - value = nbt.getInt("ScrollValue"); + value = nbt.getIntOr("ScrollValue", 0); super.read(nbt, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueHandler.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueHandler.java index 5353634a3d..9fb7834221 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueHandler.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueHandler.java @@ -1,11 +1,10 @@ package com.simibubi.create.foundation.blockEntity.behaviour.scrollValue; -import net.createmod.catnip.animation.PhysicalFloat; +import net.createmod.catnip.api.animation.PhysicalFloat; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ScrollValueHandler { @@ -19,7 +18,6 @@ public static float getScroll(float partialTicks) { return wrenchCog.getValue(partialTicks) + Mth.lerp(partialTicks, lastPassiveScroll, passiveScroll); } - @OnlyIn(Dist.CLIENT) public static void tick() { if (!Minecraft.getInstance() .isPaused()) { diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueRenderer.java index 77b33fa463..dc85c2fdca 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/scrollValue/ScrollValueRenderer.java @@ -13,7 +13,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.ValueBox.TextValueBox; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.outliner.Outliner; +import net.createmod.catnip.api.client.outliner.Outliner; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/simple/DeferralBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/simple/DeferralBehaviour.java index 284c989aaa..7fd64c9ce1 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/simple/DeferralBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/simple/DeferralBehaviour.java @@ -32,7 +32,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean cli @Override public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { - needsUpdate = nbt.getBoolean("NeedsUpdate"); + needsUpdate = nbt.getBooleanOr("NeedsUpdate", false); super.read(nbt, registries, clientPacket); } diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/ColoredOverlayBlockEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/ColoredOverlayBlockEntityRenderer.java index fadf164279..ef4cc2b18e 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/ColoredOverlayBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/ColoredOverlayBlockEntityRenderer.java @@ -3,9 +3,9 @@ import com.mojang.blaze3d.vertex.PoseStack; import dev.engine_room.flywheel.api.visualization.VisualizationManager; -import net.createmod.catnip.render.SuperByteBuffer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.SuperByteBuffer; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.world.level.block.entity.BlockEntity; @@ -21,7 +21,7 @@ protected void renderSafe(T be, float partialTicks, PoseStack ms, MultiBufferSou if (VisualizationManager.supportsVisualization(be.getLevel())) return; SuperByteBuffer render = render(getOverlayBuffer(be), getColor(be, partialTicks), light); - render.renderInto(ms, buffer.getBuffer(RenderType.solid())); + render.renderInto(ms, buffer.getBuffer(com.simibubi.create.foundation.render.LegacyRenderTypes.solid())); } protected abstract int getColor(T be, float partialTicks); diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java index e727d488a1..3575312603 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SafeBlockEntityRenderer.java @@ -4,28 +4,50 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.foundation.blockEntity.CachedRenderBBBlockEntity; -import com.simibubi.create.foundation.mixin.accessor.LevelRendererAccessor; -import com.simibubi.create.foundation.mixin.accessor.LevelRendererAccessor; - -import net.createmod.ponder.api.level.PonderLevel; +import net.createmod.ponder.api.client.level.PonderLevel; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.Camera; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.state.level.CameraRenderState; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public abstract class SafeBlockEntityRenderer implements BlockEntityRenderer { +public abstract class SafeBlockEntityRenderer implements BlockEntityRenderer> { + public static class SafeBlockEntityRenderState extends BlockEntityRenderState { + T blockEntity; + float partialTicks; + int light; + int overlay; + } + + @Override + public SafeBlockEntityRenderState createRenderState() { + return new SafeBlockEntityRenderState<>(); + } + + @Override + public void extractRenderState(T blockEntity, SafeBlockEntityRenderState state, float partialTicks, + Vec3 cameraPosition, ModelFeatureRenderer.CrumblingOverlay breakProgress) { + BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTicks, cameraPosition, breakProgress); + state.blockEntity = blockEntity; + state.partialTicks = partialTicks; + state.light = state.lightCoords; + state.overlay = 0; + } + @Override - public final void render(T be, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, - int overlay) { - if (isInvalid(be)) - return; - renderSafe(be, partialTicks, ms, bufferSource, light, overlay); + public final void submit(SafeBlockEntityRenderState state, PoseStack ms, SubmitNodeCollector submitNodeCollector, + CameraRenderState camera) { + // TODO 26.2: Port the old MultiBufferSource renderers to SubmitNodeCollector. } protected abstract void renderSafe(T be, float partialTicks, PoseStack ms, MultiBufferSource bufferSource, int light, @@ -40,10 +62,11 @@ public boolean shouldCullItem(Vec3 itemPos, Level level) { if (level instanceof PonderLevel) return false; - LevelRendererAccessor accessor = (LevelRendererAccessor) Minecraft.getInstance().levelRenderer; - Frustum frustum = accessor.create$getCapturedFrustum() != null ? - accessor.create$getCapturedFrustum() : - accessor.create$getCullingFrustum(); + Camera camera = Minecraft.getInstance() + .gameRenderer + .mainCamera(); + Frustum capturedFrustum = camera.getCapturedFrustum(); + Frustum frustum = capturedFrustum != null ? capturedFrustum : camera.getCullFrustum(); AABB itemBB = new AABB( itemPos.x - 0.25, diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SmartBlockEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SmartBlockEntityRenderer.java index 8bddba0912..890bef8a33 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SmartBlockEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/renderer/SmartBlockEntityRenderer.java @@ -1,15 +1,12 @@ package com.simibubi.create.foundation.blockEntity.renderer; -import org.joml.Matrix4f; - import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.redstone.link.LinkRenderer; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringRenderer; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.network.chat.Component; import net.minecraft.world.phys.BlockHitResult; @@ -41,22 +38,8 @@ protected void renderNameplateOnHover(T blockEntity, Component tag, float yOffse .equals(blockEntity.getBlockPos())) return; - float f = yOffset + 0.25f; - ms.pushPose(); - ms.translate(0.5, f, 0.5); - ms.mulPose(mc.getEntityRenderDispatcher() - .cameraOrientation()); - ms.scale(0.025F, -0.025F, 0.025F); - Matrix4f matrix4f = ms.last() - .pose(); - float f2 = Minecraft.getInstance().options.getBackgroundOpacity(0.25F); - int j = (int) (f2 * 255.0F) << 24; - Font font = mc.font; - float f1 = (float) (-font.width(tag) / 2); - font.drawInBatch(tag, f1, (float) 0, 553648127, false, matrix4f, buffer, Font.DisplayMode.SEE_THROUGH, j, - light); - font.drawInBatch(tag, f1, (float) 0, -1, false, matrix4f, buffer, Font.DisplayMode.NORMAL, 0, light); - ms.popPose(); + // 26.2 moved world text rendering away from the old immediate Font.drawInBatch path. + // Keep the hover/nameplate gate intact until this is ported to the new render-state API. } } diff --git a/src/main/java/com/simibubi/create/foundation/codec/CreateCodecs.java b/src/main/java/com/simibubi/create/foundation/codec/CreateCodecs.java index 032aa5ff65..dce408a8d3 100644 --- a/src/main/java/com/simibubi/create/foundation/codec/CreateCodecs.java +++ b/src/main/java/com/simibubi/create/foundation/codec/CreateCodecs.java @@ -53,7 +53,7 @@ private static Codec doubleRangeWithMessage(double min, double max, Func public static Codec FLAT_SIZED_FLUID_INGREDIENT_WITH_TYPE = RecordCodecBuilder.create(instance -> instance.group( NeoForgeRegistries.FLUID_INGREDIENT_TYPES.byNameCodec().fieldOf("type").forGetter(i -> i.ingredient().getType()), - FluidIngredient.MAP_CODEC_NONEMPTY.forGetter(SizedFluidIngredient::ingredient), + FluidIngredient.CODEC.fieldOf("ingredient").forGetter(SizedFluidIngredient::ingredient), NeoForgeExtraCodecs.optionalFieldAlwaysWrite(ExtraCodecs.POSITIVE_INT, "amount", 1000).forGetter(SizedFluidIngredient::amount) ).apply(instance, (type, ingredient, amount) -> new SizedFluidIngredient(ingredient, amount))); diff --git a/src/main/java/com/simibubi/create/foundation/collision/ContinuousOBBCollider.java b/src/main/java/com/simibubi/create/foundation/collision/ContinuousOBBCollider.java index fa3ab4fa2e..2bb5674216 100644 --- a/src/main/java/com/simibubi/create/foundation/collision/ContinuousOBBCollider.java +++ b/src/main/java/com/simibubi/create/foundation/collision/ContinuousOBBCollider.java @@ -5,7 +5,7 @@ import com.simibubi.create.foundation.collision.CollisionList.Populate; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.world.phys.Vec3; public class ContinuousOBBCollider { diff --git a/src/main/java/com/simibubi/create/foundation/damageTypes/CreateDamageSources.java b/src/main/java/com/simibubi/create/foundation/damageTypes/CreateDamageSources.java index ba5ae7f4e5..a27651ac11 100644 --- a/src/main/java/com/simibubi/create/foundation/damageTypes/CreateDamageSources.java +++ b/src/main/java/com/simibubi/create/foundation/damageTypes/CreateDamageSources.java @@ -51,17 +51,17 @@ public static DamageSource runOver(Level level, Entity entity) { } private static DamageSource source(ResourceKey key, LevelReader level) { - Registry registry = level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE); - return new DamageSource(registry.getHolderOrThrow(key)); + Registry registry = level.registryAccess().lookupOrThrow(Registries.DAMAGE_TYPE); + return new DamageSource(registry.getOrThrow(key)); } private static DamageSource source(ResourceKey key, LevelReader level, @Nullable Entity entity) { - Registry registry = level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE); - return new DamageSource(registry.getHolderOrThrow(key), entity); + Registry registry = level.registryAccess().lookupOrThrow(Registries.DAMAGE_TYPE); + return new DamageSource(registry.getOrThrow(key), entity); } private static DamageSource source(ResourceKey key, LevelReader level, @Nullable Entity causingEntity, @Nullable Entity directEntity) { - Registry registry = level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE); - return new DamageSource(registry.getHolderOrThrow(key), causingEntity, directEntity); + Registry registry = level.registryAccess().lookupOrThrow(Registries.DAMAGE_TYPE); + return new DamageSource(registry.getOrThrow(key), causingEntity, directEntity); } } diff --git a/src/main/java/com/simibubi/create/foundation/damageTypes/DamageTypeBuilder.java b/src/main/java/com/simibubi/create/foundation/damageTypes/DamageTypeBuilder.java index 7e166e8f9b..928c54a6e7 100644 --- a/src/main/java/com/simibubi/create/foundation/damageTypes/DamageTypeBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/damageTypes/DamageTypeBuilder.java @@ -35,7 +35,7 @@ public DamageTypeBuilder msgId(String msgId) { } public DamageTypeBuilder simpleMsgId() { - return msgId(key.location().getNamespace() + "." + key.location().getPath()); + return msgId(key.identifier().getNamespace() + "." + key.identifier().getPath()); } /** diff --git a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java index eb6907454a..fda9d37841 100644 --- a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java +++ b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java @@ -3,18 +3,18 @@ import java.util.function.Function; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateItemModelGenerator; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.neoforged.neoforge.client.model.generators.ItemModelBuilder; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ItemModelBuilder; +import com.tterrag.registrate.providers.generators.ModelFile; public class AssetLookup { @@ -24,7 +24,7 @@ public class AssetLookup { *
* Adding "powered", "vertical" will look for /block_powered_vertical.json */ - public static ModelFile partialBaseModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static ModelFile partialBaseModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, String... suffix) { String string = "/block"; for (String suf : suffix) @@ -38,7 +38,7 @@ public static ModelFile partialBaseModel(DataGenContext ctx, RegistrateBlo /** * Custom block model from models/block/x.json */ - public static ModelFile standardModel(DataGenContext ctx, RegistrateBlockstateProvider prov) { + public static ModelFile standardModel(DataGenContext ctx, RegistrateBlockModelGenerator prov) { return prov.models() .getExistingFile(prov.modLoc("block/" + ctx.getName())); } @@ -48,7 +48,7 @@ public static ModelFile standardModel(DataGenContext ctx, RegistrateBlocks * models/block/x/item.json */ public static ItemModelBuilder customItemModel(DataGenContext ctx, - RegistrateItemModelProvider prov) { + RegistrateItemModelGenerator prov) { return prov.blockItem(() -> ctx.getEntry() .getBlock(), "/item"); } @@ -58,43 +58,45 @@ public static ItemModelBuilder customItemModel(DataGenCont * models/block/folders[0]/folders[1]/.../item.json "_" will be replaced by the * item name */ - public static NonNullBiConsumer, RegistrateItemModelProvider> customBlockItemModel( + public static NonNullBiConsumer, RegistrateItemModelGenerator> customBlockItemModel( String... folders) { return (c, p) -> { String path = "block"; for (String string : folders) path += "/" + ("_".equals(string) ? c.getName() : string); - p.withExistingParent(c.getName(), p.modLoc(path)); + ItemModelBuilder model = p.withExistingParent(c.getName(), p.modLoc(path)); + p.createWithExistingModel(c.get(), model.getLocation()); }; } - public static NonNullBiConsumer, RegistrateItemModelProvider> customGenericItemModel( + public static NonNullBiConsumer, RegistrateItemModelGenerator> customGenericItemModel( String... folders) { return (c, p) -> { String path = "block"; for (String string : folders) path += "/" + ("_".equals(string) ? c.getName() : string); - p.withExistingParent(c.getName(), p.modLoc(path)); + ItemModelBuilder model = p.withExistingParent(c.getName(), p.modLoc(path)); + p.createWithExistingModel(c.get(), model.getLocation()); }; } public static Function forPowered(DataGenContext ctx, - RegistrateBlockstateProvider prov) { + RegistrateBlockModelGenerator prov) { return state -> state.getValue(BlockStateProperties.POWERED) ? partialBaseModel(ctx, prov, "powered") : partialBaseModel(ctx, prov); } public static Function forPowered(DataGenContext ctx, - RegistrateBlockstateProvider prov, String path) { + RegistrateBlockModelGenerator prov, String path) { return state -> prov.models() .getExistingFile( prov.modLoc("block/" + path + (state.getValue(BlockStateProperties.POWERED) ? "_powered" : ""))); } public static Function withIndicator(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function baseModelFunc, IntegerProperty property) { + RegistrateBlockModelGenerator prov, Function baseModelFunc, IntegerProperty property) { return state -> { - ResourceLocation baseModel = baseModelFunc.apply(state) + Identifier baseModel = baseModelFunc.apply(state) .getLocation(); Integer integer = state.getValue(property); return prov.models() @@ -103,16 +105,19 @@ public static Function withIndicator(DataGenContext }; } - public static NonNullBiConsumer, RegistrateItemModelProvider> existingItemModel() { - return (c, p) -> p.getExistingFile(p.modLoc("item/" + c.getName())); + public static NonNullBiConsumer, RegistrateItemModelGenerator> existingItemModel() { + return (c, p) -> p.createWithExistingModel(c.get(), p.modLoc("item/" + c.getName())); } - public static NonNullBiConsumer, RegistrateItemModelProvider> itemModel(String name) { - return (c, p) -> p.getExistingFile(p.modLoc("item/" + name)); + public static NonNullBiConsumer, RegistrateItemModelGenerator> itemModel(String name) { + return (c, p) -> p.createWithExistingModel(c.get(), p.modLoc("item/" + name)); } - public static NonNullBiConsumer, RegistrateItemModelProvider> itemModelWithPartials() { - return (c, p) -> p.withExistingParent("item/" + c.getName(), p.modLoc("item/" + c.getName() + "/item")); + public static NonNullBiConsumer, RegistrateItemModelGenerator> itemModelWithPartials() { + return (c, p) -> { + ItemModelBuilder model = p.withExistingParent("item/" + c.getName(), p.modLoc("item/" + c.getName() + "/item")); + p.createWithExistingModel(c.get(), model.getLocation()); + }; } } diff --git a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java index 3483e63223..47bb94e99b 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java @@ -26,16 +26,15 @@ import com.simibubi.create.content.kinetics.base.DirectionalAxisKineticBlock; import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonnullType; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.TrapDoorBlock; import net.minecraft.world.level.block.state.BlockState; @@ -43,53 +42,53 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.RailShape; -import net.neoforged.neoforge.client.model.generators.BlockModelProvider; -import net.neoforged.neoforge.client.model.generators.ConfiguredModel; -import net.neoforged.neoforge.client.model.generators.ModelFile; -import net.neoforged.neoforge.client.model.generators.ModelFile.ExistingModelFile; -import net.neoforged.neoforge.client.model.generators.MultiPartBlockStateBuilder; +import com.tterrag.registrate.providers.generators.BlockModelProvider; +import com.tterrag.registrate.providers.generators.ConfiguredModel; +import com.tterrag.registrate.providers.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile.ExistingModelFile; +import com.tterrag.registrate.providers.generators.MultiPartBlockStateBuilder; public class BlockStateGen { // Functions - public static NonNullBiConsumer, RegistrateBlockstateProvider> axisBlockProvider( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> axisBlockProvider( boolean customItem) { return (c, p) -> axisBlock(c, p, getBlockModel(customItem, c, p)); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalBlockProvider( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> directionalBlockProvider( boolean customItem) { return (c, p) -> p.directionalBlock(c.get(), getBlockModel(customItem, c, p)); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalBlockProviderIgnoresWaterlogged( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> directionalBlockProviderIgnoresWaterlogged( boolean customItem) { return (c, p) -> directionalBlockIgnoresWaterlogged(c, p, getBlockModel(customItem, c, p)); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalBlockProvider( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> horizontalBlockProvider( boolean customItem) { return (c, p) -> p.horizontalBlock(c.get(), getBlockModel(customItem, c, p)); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalAxisBlockProvider( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> horizontalAxisBlockProvider( boolean customItem) { return (c, p) -> horizontalAxisBlock(c, p, getBlockModel(customItem, c, p)); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> simpleCubeAll( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> simpleCubeAll( String path) { return (c, p) -> p.simpleBlock(c.get(), p.models() .cubeAll(c.getName(), p.modLoc("block/" + path))); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalAxisBlockProvider() { + public static NonNullBiConsumer, RegistrateBlockModelGenerator> directionalAxisBlockProvider() { return (c, p) -> directionalAxisBlock(c, p, ($, vertical) -> p.models() .getExistingFile(p.modLoc("block/" + c.getName() + "/" + (vertical ? "vertical" : "horizontal")))); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalWheelProvider( + public static NonNullBiConsumer, RegistrateBlockModelGenerator> horizontalWheelProvider( boolean customItem) { return (c, p) -> horizontalWheel(c, p, getBlockModel(customItem, c, p)); } @@ -97,14 +96,14 @@ public static NonNullBiConsumer, Regi // Utility private static Function getBlockModel(boolean customItem, - DataGenContext c, RegistrateBlockstateProvider p) { + DataGenContext c, RegistrateBlockModelGenerator p) { return $ -> customItem ? AssetLookup.partialBaseModel(c, p) : AssetLookup.standardModel(c, p); } // Generators public static void directionalBlockIgnoresWaterlogged(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { + RegistrateBlockModelGenerator prov, Function modelFunc) { prov.getVariantBuilder(ctx.getEntry()) .forAllStatesExcept(state -> { Direction dir = state.getValue(BlockStateProperties.FACING); @@ -119,12 +118,12 @@ public static void directionalBlockIgnoresWaterlogged(DataGenC }, BlockStateProperties.WATERLOGGED); } - public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static void axisBlock(DataGenContext ctx, RegistrateBlockModelGenerator prov, Function modelFunc) { axisBlock(ctx, prov, modelFunc, false); } - public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static void axisBlock(DataGenContext ctx, RegistrateBlockModelGenerator prov, Function modelFunc, boolean uvLock) { prov.getVariantBuilder(ctx.getEntry()) .forAllStatesExcept(state -> { @@ -138,7 +137,7 @@ public static void axisBlock(DataGenContext ctx, Reg }, BlockStateProperties.WATERLOGGED); } - public static void simpleBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static void simpleBlock(DataGenContext ctx, RegistrateBlockModelGenerator prov, Function modelFunc) { prov.getVariantBuilder(ctx.getEntry()) .forAllStatesExcept(state -> { @@ -149,7 +148,7 @@ public static void simpleBlock(DataGenContext ctx, R } public static void horizontalAxisBlock(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { + RegistrateBlockModelGenerator prov, Function modelFunc) { prov.getVariantBuilder(ctx.getEntry()) .forAllStates(state -> { Axis axis = state.getValue(BlockStateProperties.HORIZONTAL_AXIS); @@ -161,7 +160,7 @@ public static void horizontalAxisBlock(DataGenContext void directionalAxisBlock(DataGenContext ctx, - RegistrateBlockstateProvider prov, BiFunction modelFunc) { + RegistrateBlockModelGenerator prov, BiFunction modelFunc) { prov.getVariantBuilder(ctx.getEntry()) .forAllStates(state -> { @@ -182,7 +181,7 @@ public static void directionalAxisBlock( } public static void horizontalWheel(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { + RegistrateBlockModelGenerator prov, Function modelFunc) { prov.getVariantBuilder(ctx.get()) .forAllStates(state -> ConfiguredModel.builder() .modelFile(modelFunc.apply(state)) @@ -192,19 +191,19 @@ public static void horizontalWheel(DataGenContext ct .build()); } - public static void cubeAll(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static void cubeAll(DataGenContext ctx, RegistrateBlockModelGenerator prov, String textureSubDir) { cubeAll(ctx, prov, textureSubDir, ctx.getName()); } - public static void cubeAll(DataGenContext ctx, RegistrateBlockstateProvider prov, + public static void cubeAll(DataGenContext ctx, RegistrateBlockModelGenerator prov, String textureSubDir, String name) { String texturePath = "block/" + textureSubDir + name; prov.simpleBlock(ctx.get(), prov.models() .cubeAll(ctx.getName(), prov.modLoc(texturePath))); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> cartAssembler() { + public static NonNullBiConsumer, RegistrateBlockModelGenerator> cartAssembler() { return (c, p) -> p.getVariantBuilder(c.get()) .forAllStates(state -> { CartAssembleRailType type = state.getValue(CartAssemblerBlock.RAIL_TYPE); @@ -225,18 +224,18 @@ public static NonNullBiConsumer, Regis }); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> blazeHeater() { + public static NonNullBiConsumer, RegistrateBlockModelGenerator> blazeHeater() { return (c, p) -> ConfiguredModel.builder() .modelFile(p.models() .getExistingFile(p.modLoc("block/" + c.getName() + "/block"))) .build(); } - public static NonNullBiConsumer, RegistrateBlockstateProvider> linearChassis() { + public static NonNullBiConsumer, RegistrateBlockModelGenerator> linearChassis() { return (c, p) -> { - ResourceLocation side = p.modLoc("block/" + c.getName() + "_side"); - ResourceLocation top = p.modLoc("block/linear_chassis_end"); - ResourceLocation top_sticky = p.modLoc("block/linear_chassis_end_sticky"); + Identifier side = p.modLoc("block/" + c.getName() + "_side"); + Identifier top = p.modLoc("block/linear_chassis_end"); + Identifier top_sticky = p.modLoc("block/linear_chassis_end_sticky"); List models = new ArrayList<>(4); for (boolean isTopSticky : Iterate.trueAndFalse) @@ -255,11 +254,11 @@ public static NonNullBiConsumer NonNullBiConsumer, RegistrateBlockstateProvider> radialChassis() { + public static NonNullBiConsumer, RegistrateBlockModelGenerator> radialChassis() { return (c, p) -> { String path = "block/" + c.getName(); - ResourceLocation side = p.modLoc(path + "_side"); - ResourceLocation side_sticky = p.modLoc(path + "_side_sticky"); + Identifier side = p.modLoc(path + "_side"); + Identifier side_sticky = p.modLoc(path + "_side_sticky"); String templateModelPath = "block/radial_chassis"; ModelFile base = p.models() @@ -334,7 +333,7 @@ public static NonNullBiConsumer NonNullBiConsumer, RegistrateBlockstateProvider> naturalStoneTypeBlock( + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> naturalStoneTypeBlock( String type) { return (c, p) -> { ConfiguredModel[] variants = new ConfiguredModel[4]; @@ -349,7 +348,7 @@ public static

NonNullBiConsumer, Regi }; } - public static

NonNullBiConsumer, RegistrateBlockstateProvider> encasedPipe() { + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> encasedPipe() { return (c, p) -> { ModelFile open = AssetLookup.partialBaseModel(c, p, "open"); ModelFile flat = AssetLookup.partialBaseModel(c, p, "flat"); @@ -369,7 +368,7 @@ public static

NonNullBiConsumer NonNullBiConsumer, RegistrateBlockstateProvider> uvLockedTrapdoorBlock( + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> uvLockedTrapdoorBlock( P block, ModelFile bottom, ModelFile top, ModelFile open) { return (c, p) -> { p.getVariantBuilder(block) @@ -391,7 +390,7 @@ public static

NonNullBiConsumer NonNullBiConsumer, RegistrateBlockstateProvider> whistleExtender() { + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> whistleExtender() { return (c, p) -> { BlockModelProvider models = p.models(); String basePath = "block/steam_whistle/extension/"; @@ -426,7 +425,7 @@ public static

NonNullBiConsumer NonNullBiConsumer, RegistrateBlockstateProvider> pipe() { + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> pipe() { return (c, p) -> { String path = "block/" + c.getName(); @@ -455,14 +454,14 @@ public static

NonNullBiConsumer coreTemplates = new IdentityHashMap<>(); + Map coreTemplates = new IdentityHashMap<>(); Map, ModelFile> coreModels = new HashMap<>(); for (Axis axis : Iterate.axes) coreTemplates.put(axis, p.modLoc(path + "/core_" + axis.getSerializedName())); for (Axis axis : Iterate.axes) { - ResourceLocation parent = coreTemplates.get(axis); + Identifier parent = coreTemplates.get(axis); for (String s : orientations) { Pair key = Pair.of(s, axis); String modelName = path + "/" + s + "_" + axis.getSerializedName(); @@ -538,7 +537,7 @@ private static void putPart(Map, ModelFile> coreModels, Multi .end(); } - public static Function mapToAir(@NonnullType RegistrateBlockstateProvider p) { + public static Function mapToAir(RegistrateBlockModelGenerator p) { return state -> ConfiguredModel.builder() .modelFile(p.models() .getExistingFile(p.mcLoc("block/air"))) diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 8038a37d2f..254e7cfa5a 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -54,19 +54,20 @@ import com.simibubi.create.infrastructure.config.CStress; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.providers.generators.RegistrateRecipeProvider; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.nullness.NonNullSupplier; import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import com.tterrag.registrate.providers.generators.ItemModelBuilder; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.Direction.Axis; import net.minecraft.core.Direction.AxisDirection; import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -84,14 +85,15 @@ import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.LootTable.Builder; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.level.storage.loot.entries.LootItem; import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.neoforged.neoforge.client.model.generators.ConfiguredModel; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ConfiguredModel; +import com.tterrag.registrate.providers.generators.ModelFile; import net.neoforged.neoforge.common.Tags; @SuppressWarnings("removal") // addLayer is staying... for now @@ -102,10 +104,10 @@ public static NonNullUnaryOperator new EncasedCTBehaviour(casingShift.get()))) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() != s.getValue(EncasedShaftBlock.AXIS)))) - .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() + .blockstate(() -> (c, p) -> axisBlock(c, p, blockState -> p.models() .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) .item() - .model(AssetLookup.customBlockItemModel("encased_shaft", "item_" + casing)) + .model(() -> AssetLookup.customBlockItemModel("encased_shaft", "item_" + casing)) .build(); } @@ -114,7 +116,7 @@ public static NonNullUnaryOperator p.sound(SoundType.NETHERITE_BLOCK)) .properties(p -> p.noOcclusion()) .transform(pickaxeOnly()) - .blockstate((c, p) -> BlockStateGen.horizontalAxisBlock(c, p, s -> p.models() + .blockstate(() -> (c, p) -> BlockStateGen.horizontalAxisBlock(c, p, s -> p.models() .getExistingFile(p.modLoc("block/track/bogey/top")))) .loot((p, l) -> p.dropOther(l, AllBlocks.RAILWAY_CASING.get())) .onRegister( @@ -123,36 +125,30 @@ public static NonNullUnaryOperator NonNullUnaryOperator> copycat() { return b -> b.initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .getExistingFile(p.mcLoc("air")))) .initialProperties(SharedProperties::softMetal) .properties(p -> p.noOcclusion() .mapColor(MapColor.NONE) .isValidSpawn((state, level, pos, type) -> false)) - .addLayer(() -> RenderType::solid) - .addLayer(() -> RenderType::cutout) - .addLayer(() -> RenderType::cutoutMipped) - .addLayer(() -> RenderType::translucent) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::solid) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::translucent) .color(() -> CopycatBlock::wrappedColor) .transform(TagGen.axeOrPickaxe()); } public static NonNullUnaryOperator> trapdoor(boolean orientable) { - return b -> b.blockstate((c, p) -> { - ModelFile bottom = AssetLookup.partialBaseModel(c, p, "bottom"); - ModelFile top = AssetLookup.partialBaseModel(c, p, "top"); - ModelFile open = AssetLookup.partialBaseModel(c, p, "open"); - if (orientable) - p.trapdoorBlock(c.get(), bottom, top, open, orientable); - else - BlockStateGen.uvLockedTrapdoorBlock(c.get(), bottom, top, open) - .accept(c, p); + return b -> b.blockstate(() -> (c, p) -> { + // TODO 26.2: restore orientable trapdoor blockstate generation against the new Registrate model API. + p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)); }) .transform(pickaxeOnly()) .tag(BlockTags.TRAPDOORS) .onRegister(interactionBehaviour(new TrapdoorMovingInteraction())) .item() - .tag(ItemTags.TRAPDOORS) + .tag(ItemTags.WOODEN_TRAPDOORS) .build(); } @@ -160,12 +156,11 @@ public static NonNullUnaryOperator b.initialProperties(() -> Blocks.IRON_DOOR) .properties(p -> p.requiresCorrectToolForDrops() .strength(3.0F, 6.0F)) - .blockstate((c, p) -> { - ModelFile bottom = AssetLookup.partialBaseModel(c, p, "bottom"); - ModelFile top = AssetLookup.partialBaseModel(c, p, "top"); - p.doorBlock(c.get(), bottom, bottom, bottom, bottom, top, top, top, top); + .blockstate(() -> (c, p) -> { + // TODO 26.2: restore sliding door blockstate generation against the new Registrate model API. + p.simpleBlock(c.get(), AssetLookup.partialBaseModel(c, p)); }) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(pickaxeOnly()) .onRegister(interactionBehaviour(new DoorMovingInteraction())) .onRegister(movementBehaviour(new SlidingDoorMovementBehaviour())) @@ -174,9 +169,9 @@ public static NonNullUnaryOperator lr.add(block, lr.createDoorTable(block))) .item() - .tag(ItemTags.DOORS) + .tag(ItemTags.WOODEN_DOORS) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) - .model((c, p) -> p.blockSprite(c, p.modLoc("item/" + type + "_door"))) + .model(() -> (c, p) -> p.blockSprite(c, p.modLoc("item/" + type + "_door"))) .build(); } @@ -197,28 +192,30 @@ private static BlockBuilder encasedCog String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel"; String wood = casing.equals("brass") ? "dark_oak" : "spruce"; String gearbox = casing.equals("brass") ? "brass_gearbox" : "gearbox"; - return encasedBase(b, drop).addLayer(() -> RenderType::cutoutMipped) + return encasedBase(b, drop).addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift.get(), (s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS) && !s.getValue(f.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT : EncasedCogwheelBlock.BOTTOM_SHAFT)))) - .blockstate((c, p) -> axisBlock(c, p, blockState -> { - String suffix = (blockState.getValue(EncasedCogwheelBlock.TOP_SHAFT) ? "_top" : "") - + (blockState.getValue(EncasedCogwheelBlock.BOTTOM_SHAFT) ? "_bottom" : ""); - String modelName = c.getName() + suffix; - return p.models() - .withExistingParent(modelName, p.modLoc("block/" + blockFolder + "/block" + suffix)) - .texture("casing", Create.asResource("block/" + casing + "_casing")) - .texture("particle", Create.asResource("block/" + casing + "_casing")) - .texture("4", Create.asResource("block/" + gearbox)) - .texture("1", ResourceLocation.withDefaultNamespace("block/stripped_" + wood + "_log_top")) - .texture("side", Create.asResource("block/" + casing + encasedSuffix)); - }, false)) + .blockstate(() -> (c, p) -> { + Map models = new HashMap<>(); + axisBlock(c, p, blockState -> { + String suffix = (blockState.getValue(EncasedCogwheelBlock.TOP_SHAFT) ? "_top" : "") + + (blockState.getValue(EncasedCogwheelBlock.BOTTOM_SHAFT) ? "_bottom" : ""); + return models.computeIfAbsent(suffix, key -> p.models() + .withExistingParent(c.getName() + key, p.modLoc("block/" + blockFolder + "/block" + key)) + .texture("casing", Create.asResource("block/" + casing + "_casing")) + .texture("particle", Create.asResource("block/" + casing + "_casing")) + .texture("4", Create.asResource("block/" + gearbox)) + .texture("1", Identifier.withDefaultNamespace("block/stripped_" + wood + "_log_top")) + .texture("side", Create.asResource("block/" + casing + encasedSuffix))); + }, false); + }) .item() - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + blockFolder + "/item")) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + blockFolder + "/item")) .texture("casing", Create.asResource("block/" + casing + "_casing")) .texture("particle", Create.asResource("block/" + casing + "_casing")) - .texture("1", ResourceLocation.withDefaultNamespace("block/stripped_" + wood + "_log_top")) + .texture("1", Identifier.withDefaultNamespace("block/stripped_" + wood + "_log_top")) .texture("side", Create.asResource("block/" + casing + encasedSuffix))) .build(); } @@ -233,9 +230,9 @@ private static BlockBuilder encas public static NonNullUnaryOperator> cuckooClock() { return b -> b.initialProperties(SharedProperties::wooden) - .blockstate((c, p) -> p.horizontalBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), p.models() .getExistingFile(p.modLoc("block/cuckoo_clock/block")))) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setImpact(1)) .item() .transform(ModelGen.customItemModel("cuckoo_clock", "item")); @@ -245,8 +242,8 @@ public static NonNullUnaryOperator> ladd Supplier ingredient, MapColor color) { return b -> b.initialProperties(() -> Blocks.LADDER) .properties(p -> p.mapColor(color)) - .addLayer(() -> RenderType::cutout) - .blockstate((c, p) -> p.horizontalBlock(c.get(), p.models() + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout) + .blockstate(() -> (c, p) -> p.horizontalBlock(c.get(), p.models() .withExistingParent(c.getName(), p.modLoc("block/ladder")) .texture("0", p.modLoc("block/ladder_" + name + "_hoop")) .texture("1", p.modLoc("block/ladder_" + name)) @@ -256,7 +253,7 @@ public static NonNullUnaryOperator> ladd .tag(BlockTags.CLIMBABLE) .item() .recipe((c, p) -> p.stonecutting(ingredient.get(), RecipeCategory.DECORATIONS, c::get, 2)) - .model((c, p) -> p.blockSprite(c::get, p.modLoc("block/ladder_" + name))) + .model(() -> (c, p) -> p.blockSprite(c::get, p.modLoc("block/ladder_" + name))) .build(); } @@ -266,34 +263,37 @@ public static NonNullUnaryOperator> scaf return b -> b.initialProperties(() -> Blocks.SCAFFOLDING) .properties(p -> p.sound(SoundType.COPPER) .mapColor(color)) - .addLayer(() -> RenderType::cutout) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStatesExcept(s -> { - String suffix = s.getValue(MetalScaffoldingBlock.BOTTOM) ? "_horizontal" : ""; - return ConfiguredModel.builder() - .modelFile(p.models() - .withExistingParent(c.getName() + suffix, p.modLoc("block/scaffold/block" + suffix)) - .texture("top", p.modLoc("block/funnel/" + name + "_funnel_frame")) - .texture("inside", p.modLoc("block/scaffold/" + name + "_scaffold_inside")) - .texture("side", p.modLoc("block/scaffold/" + name + "_scaffold")) - .texture("casing", p.modLoc("block/" + name + "_casing")) - .texture("particle", p.modLoc("block/scaffold/" + name + "_scaffold"))) - .build(); - }, MetalScaffoldingBlock.WATERLOGGED, MetalScaffoldingBlock.DISTANCE)) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout) + .blockstate(() -> (c, p) -> { + Map models = new HashMap<>(); + p.getVariantBuilder(c.get()) + .forAllStatesExcept(s -> { + String suffix = s.getValue(MetalScaffoldingBlock.BOTTOM) ? "_horizontal" : ""; + return ConfiguredModel.builder() + .modelFile(models.computeIfAbsent(suffix, key -> p.models() + .withExistingParent(c.getName() + key, p.modLoc("block/scaffold/block" + key)) + .texture("top", p.modLoc("block/funnel/" + name + "_funnel_frame")) + .texture("inside", p.modLoc("block/scaffold/" + name + "_scaffold_inside")) + .texture("side", p.modLoc("block/scaffold/" + name + "_scaffold")) + .texture("casing", p.modLoc("block/" + name + "_casing")) + .texture("particle", p.modLoc("block/scaffold/" + name + "_scaffold")))) + .build(); + }, MetalScaffoldingBlock.WATERLOGGED, MetalScaffoldingBlock.DISTANCE); + }) .onRegister(connectedTextures( () -> new MetalScaffoldingCTBehaviour(scaffoldShift, scaffoldInsideShift, casingShift))) .transform(pickaxeOnly()) .tag(BlockTags.CLIMBABLE) .item(MetalScaffoldingBlockItem::new) .recipe((c, p) -> p.stonecutting(ingredient.get(), RecipeCategory.DECORATIONS, c::get, 2)) - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + c.getName()))) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + c.getName()))) .build(); } public static NonNullUnaryOperator> valveHandle( @Nullable DyeColor color) { return b -> b.initialProperties(SharedProperties::copperMetal) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { String variant = color == null ? "copper" : color.getSerializedName(); p.directionalBlock(c.get(), p.models() .withExistingParent(variant + "_valve_handle", p.modLoc("block/valve_handle")) @@ -312,7 +312,7 @@ public static NonNullUnaryOperator b.initialProperties(SharedProperties::stone) .properties(p -> p.sound(SoundType.WOOD)) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.simpleBlock(c.get())) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get())) .onRegister(connectedTextures(() -> new EncasedCTBehaviour(ct.get()))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct.get()))) .tag(AllBlockTags.CASING.tag) @@ -325,11 +325,11 @@ public static NonNullUnaryOperator ct, Supplier ct2) { return b -> b.initialProperties(SharedProperties::stone) .transform(axeOrPickaxe()) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .cubeColumn(c.getName(), ct.get() - .getOriginalResourceLocation(), + .getOriginalIdentifier(), ct2.get() - .getOriginalResourceLocation()))) + .getOriginalIdentifier()))) .onRegister(connectedTextures(() -> new HorizontalCTBehaviour(ct.get(), ct2.get()))) .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct.get()))) .tag(AllBlockTags.CASING.tag) @@ -339,33 +339,37 @@ public static NonNullUnaryOperator NonNullUnaryOperator> beltTunnel( - String type, ResourceLocation particleTexture) { + String type, Identifier particleTexture) { String prefix = "block/tunnel/" + type + "_tunnel"; String funnel_prefix = "block/funnel/" + type + "_funnel"; return b -> b.initialProperties(SharedProperties::stone) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .properties(BlockBehaviour.Properties::noOcclusion) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> { + .blockstate(() -> (c, p) -> { + Map models = new HashMap<>(); + p.getVariantBuilder(c.get()) + .forAllStates(state -> { Shape shape = state.getValue(BeltTunnelBlock.SHAPE); String window = shape == Shape.WINDOW ? "_window" : ""; if (shape == BeltTunnelBlock.Shape.CLOSED) shape = BeltTunnelBlock.Shape.STRAIGHT; String shapeName = shape.getSerializedName(); + String modelName = prefix + "/" + shapeName; return ConfiguredModel.builder() - .modelFile(p.models() - .withExistingParent(prefix + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) + .modelFile(models.computeIfAbsent(modelName, $ -> p.models() + .withExistingParent(modelName, p.modLoc("block/belt_tunnel/" + shapeName)) .texture("top", p.modLoc(prefix + "_top" + window)) .texture("tunnel", p.modLoc(prefix)) .texture("direction", p.modLoc(funnel_prefix + "_neutral")) .texture("frame", p.modLoc(funnel_prefix + "_frame")) - .texture("particle", particleTexture)) + .texture("particle", particleTexture))) .rotationY(state.getValue(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) .build(); - })) + }); + }) .item(BeltTunnelItem::new) - .model((c, p) -> { + .model(() -> (c, p) -> { p.withExistingParent("item/" + type + "_tunnel", p.modLoc("block/belt_tunnel/item")) .texture("top", p.modLoc(prefix + "_top")) .texture("tunnel", p.modLoc(prefix)) @@ -379,8 +383,8 @@ public static NonNullUnaryOperator NonNullUnaryOperator> mechanicalPiston(PistonType type) { return b -> b.initialProperties(SharedProperties::stone) .properties(p -> p.noOcclusion()) - .blockstate(new MechanicalPistonGenerator(type)::generate) - .addLayer(() -> RenderType::cutoutMipped) + .blockstate(() -> new MechanicalPistonGenerator(type)::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setImpact(4.0)) .item() .transform(ModelGen.customItemModel("mechanical_piston", type.getSerializedName(), "item")); @@ -388,19 +392,19 @@ public static NonNullUnaryOperator> mech public static NonNullUnaryOperator> bearing(String prefix, String backTexture) { - ResourceLocation baseBlockModelLocation = Create.asResource("block/bearing/block"); - ResourceLocation baseItemModelLocation = Create.asResource("block/bearing/item"); - ResourceLocation topTextureLocation = Create.asResource("block/bearing_top"); - ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side"); - ResourceLocation backTextureLocation = Create.asResource("block/" + backTexture); + Identifier baseBlockModelLocation = Create.asResource("block/bearing/block"); + Identifier baseItemModelLocation = Create.asResource("block/bearing/item"); + Identifier topTextureLocation = Create.asResource("block/bearing_top"); + Identifier sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side"); + Identifier backTextureLocation = Create.asResource("block/" + backTexture); return b -> b.initialProperties(SharedProperties::stone) .properties(p -> p.noOcclusion()) - .blockstate((c, p) -> p.directionalBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.directionalBlock(c.get(), p.models() .withExistingParent(c.getName(), baseBlockModelLocation) .texture("side", sideTextureLocation) .texture("back", backTextureLocation))) .item() - .model((c, p) -> p.withExistingParent(c.getName(), baseItemModelLocation) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), baseItemModelLocation) .texture("top", topTextureLocation) .texture("side", sideTextureLocation) .texture("back", backTextureLocation)) @@ -410,13 +414,13 @@ public static NonNullUnaryOperator> bear public static NonNullUnaryOperator> crate(String type) { return b -> b.initialProperties(SharedProperties::stone) .transform(axeOrPickaxe()) - .blockstate((c, p) -> { + .blockstate(() -> (c, p) -> { String[] variants = {"single", "top", "bottom", "left", "right"}; Map models = new HashMap<>(); - ResourceLocation crate = p.modLoc("block/crate_" + type); - ResourceLocation side = p.modLoc("block/crate_" + type + "_side"); - ResourceLocation casing = p.modLoc("block/" + type + "_casing"); + Identifier crate = p.modLoc("block/crate_" + type); + Identifier side = p.modLoc("block/crate_" + type + "_side"); + Identifier casing = p.modLoc("block/" + type + "_casing"); for (String variant : variants) models.put(variant, p.models() @@ -439,9 +443,9 @@ public static NonNullUnaryOperator> crat } public static NonNullUnaryOperator> backtank(Supplier drop) { - return b -> b.blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + return b -> b.blockstate(() -> (c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .transform(CStress.setImpact(4.0)) .loot((lt, block) -> { Builder builder = LootTable.lootTable(); @@ -450,7 +454,7 @@ public static NonNullUnaryOperator> back .when(survivesExplosion) .setRolls(ConstantValue.exactly(1)) .add(LootItem.lootTableItem(drop.get()) - .apply(CopyComponentsFunction.copyComponents(CopyComponentsFunction.Source.BLOCK_ENTITY) + .apply(CopyComponentsFunction.copyComponentsFromBlockEntity(LootContextParams.BLOCK_ENTITY) .include(AllDataComponents.BACKTANK_AIR))))); }); } @@ -460,16 +464,19 @@ public static NonNullUnaryOperator> bell .properties(p -> p.noOcclusion() .sound(SoundType.ANVIL)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .tag(AllBlockTags.BRITTLE.tag) - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), state -> { - String variant = state.getValue(BlockStateProperties.BELL_ATTACHMENT) - .getSerializedName(); - return p.models() - .withExistingParent(c.getName() + "_" + variant, p.modLoc("block/bell_base/block_" + variant)); - })) + .blockstate(() -> (c, p) -> { + Map models = new HashMap<>(); + p.horizontalBlock(c.getEntry(), state -> { + String variant = state.getValue(BlockStateProperties.BELL_ATTACHMENT) + .getSerializedName(); + return models.computeIfAbsent(variant, key -> p.models() + .withExistingParent(c.getName() + "_" + key, p.modLoc("block/bell_base/block_" + key))); + }); + }) .item() - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + c.getName()))) + .model(() -> (c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + c.getName()))) .tag(AllItemTags.CONTRAPTION_CONTROLLED.tag) .build(); } @@ -480,12 +487,14 @@ public static ItemBuilder packageItem(PackageStyl .getPath(), p -> new PackageItem(p, style)) .properties(p -> p.stacksTo(1)) .tag(AllItemTags.PACKAGES.tag) - .model((c, p) -> { + .model(() -> (c, p) -> { + ItemModelBuilder model; if (style.rare()) - p.withExistingParent(c.getName(), p.modLoc("item/package/custom" + size)) + model = p.withExistingParent(c.getName(), p.modLoc("item/package/custom" + size)) .texture("2", p.modLoc("item/package/" + style.type())); else - p.withExistingParent(c.getName(), p.modLoc("item/package/" + style.type() + size)); + model = p.withExistingParent(c.getName(), p.modLoc("item/package/" + style.type() + size)); + p.createWithExistingModel(c.get(), model.getLocation()); }) .lang((style.rare() ? "Rare" : style.type() @@ -502,8 +511,8 @@ public static NonNullUnaryOperator> tabl TagKey soundTag = dyed ? BlockTags.COMBINATION_STEP_SOUND_BLOCKS : BlockTags.INSIDE_STEP_SOUND_BLOCKS; ItemBuilder> item = b.initialProperties(initialProps) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .withExistingParent(name + "_table_cloth", p.modLoc("block/table_cloth/block")) .texture("0", p.modLoc("block/table_cloth/" + name)))) .onRegister(CreateRegistrate.blockModel(() -> TableClothModel::new)) @@ -514,13 +523,13 @@ public static NonNullUnaryOperator> tabl if (dyed) item.tag(AllItemTags.DYED_TABLE_CLOTHS.tag); - return item.model((c, p) -> p.withExistingParent(name + "_table_cloth", p.modLoc("block/table_cloth/item")) + return item.model(() -> (c, p) -> p.withExistingParent(name + "_table_cloth", p.modLoc("block/table_cloth/item")) .texture("0", p.modLoc("block/table_cloth/" + name))) .tag(AllItemTags.TABLE_CLOTHS.tag) - .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, c.get()) + .recipe((c, p) -> ShapelessRecipeBuilder.shapeless(p.itemLookup(), RecipeCategory.MISC, c.get()) .requires(c.get()) - .unlockedBy("has_" + c.getName(), RegistrateRecipeProvider.has(c.get())) - .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_clear"))) + .unlockedBy("has_" + c.getName(), p.has(c.get())) + .save(p, Create.asResource("crafting/logistics/" + c.getName() + "_clear").toString())) .build(); }; } @@ -532,10 +541,10 @@ public static NonNullUnaryOperator> pack .properties(p -> p.mapColor(MapColor.TERRACOTTA_BLUE) .sound(SoundType.NETHERITE_BLOCK)) .transform(pickaxeOnly()) - .addLayer(() -> RenderType::cutoutMipped) - .blockstate(new PackagerGenerator()::generate) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) + .blockstate(() -> new PackagerGenerator()::generate) .item() - .model(AssetLookup::customItemModel) + .model(() -> AssetLookup::customItemModel) .build(); } @@ -545,7 +554,7 @@ public static NonNullUnaryOperator> pale .sound(SoundType.NETHERITE_BLOCK) .requiresCorrectToolForDrops()) .transform(pickaxeOnly()) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .cubeColumn(c.getName(), p.modLoc("block/" + c.getName()), p.modLoc("block/" + c.getName() + "_top")))) .tag(AllBlockTags.WRENCH_PICKUP.tag) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.INGOTS_IRON), RecipeCategory.BUILDING_BLOCKS, diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java index c3f5020287..154629d0ac 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateBlockEntityBuilder.java @@ -20,7 +20,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import dev.engine_room.flywheel.lib.visualization.SimpleBlockEntityVisualizer; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java index 4637d376d5..d2737aef35 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateEntityBuilder.java @@ -14,7 +14,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import dev.engine_room.flywheel.lib.visualization.SimpleEntityVisualizer; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java index 3c742831c1..9cdc1dcddb 100644 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java @@ -6,13 +6,11 @@ import java.util.IdentityHashMap; import java.util.Map; import java.util.function.BiConsumer; -import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; import org.jetbrains.annotations.Nullable; -import com.simibubi.create.CreateClient; import com.simibubi.create.api.behaviour.display.DisplaySource; import com.simibubi.create.api.behaviour.display.DisplayTarget; import com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType; @@ -22,7 +20,6 @@ import com.simibubi.create.api.registry.registrate.SimpleBuilder; import com.simibubi.create.content.decoration.encasing.CasingConnectivity; import com.simibubi.create.content.fluids.VirtualFluid; -import com.simibubi.create.foundation.block.connected.CTModel; import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; import com.simibubi.create.foundation.item.TooltipModifier; import com.tterrag.registrate.AbstractRegistrate; @@ -35,13 +32,11 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; @@ -53,9 +48,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.fluids.BaseFlowingFluid; import net.neoforged.neoforge.fluids.FluidType; import net.neoforged.neoforge.registries.DeferredHolder; @@ -115,10 +108,11 @@ protected RegistryEntry accept(String name, ResourceKey factory = currentTooltipModifierFactory; - this.addRegisterCallback(name, Registries.ITEM, item -> { - TooltipModifier modifier = factory.apply(item); - TooltipModifier.REGISTRY.register(item, modifier); - }); + CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> + this.addRegisterCallback(name, Registries.ITEM, item -> { + TooltipModifier modifier = factory.apply(item); + TooltipModifier.REGISTRY.register(item, modifier); + })); } if (currentTab != null) TAB_LOOKUP.put(entry, currentTab); @@ -186,7 +180,7 @@ public BlockBuilder paletteStoneBlock(Str boolean hasNaturalVariants) { BlockBuilder builder = super.block(name, factory).initialProperties(propertiesFrom) .transform(pickaxeOnly()) - .blockstate(hasNaturalVariants ? BlockStateGen.naturalStoneTypeBlock(name) : (c, p) -> { + .blockstate(() -> hasNaturalVariants ? BlockStateGen.naturalStoneTypeBlock(name) : (c, p) -> { final String location = "block/palettes/stone_types/" + c.getName(); p.simpleBlock(c.get(), p.models() .cubeAll(c.getName(), p.modLoc(location))); @@ -196,7 +190,7 @@ public BlockBuilder paletteStoneBlock(Str .tag(BlockTags.MOSS_REPLACEABLE) .tag(BlockTags.LUSH_GROUND_REPLACEABLE) .item() - .model((c, p) -> p.cubeAll(c.getName(), + .model(() -> (c, p) -> p.cubeAll(c.getName(), p.modLoc(hasNaturalVariants ? "block/palettes/stone_types/natural/" + name + "_1" : "block/palettes/stone_types/" + c.getName()))) .build(); @@ -214,12 +208,12 @@ public FluidBuilder virtualFlu FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction sourceFactory, NonNullFunction flowingFactory) { return entry(name, - c -> new VirtualFluidBuilder<>(self(), self(), name, c, ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), - ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), typeFactory, sourceFactory, flowingFactory)); + c -> new VirtualFluidBuilder<>(self(), self(), name, c, Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), + Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), typeFactory, sourceFactory, flowingFactory)); } public FluidBuilder virtualFluid(String name, - ResourceLocation still, ResourceLocation flow, FluidBuilder.FluidTypeFactory typeFactory, + Identifier still, Identifier flow, FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction sourceFactory, NonNullFunction flowingFactory) { return entry(name, c -> new VirtualFluidBuilder<>(self(), self(), name, c, still, flow, typeFactory, sourceFactory, flowingFactory)); } @@ -227,92 +221,52 @@ public FluidBuilder virtualFlu public FluidBuilder virtualFluid(String name) { return entry(name, c -> new VirtualFluidBuilder<>(self(), self(), name, c, - ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), - CreateRegistrate::defaultFluidType, VirtualFluid::createSource, VirtualFluid::createFlowing)); + Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), + properties -> defaultFluidType(properties, Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), + Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow")), + VirtualFluid::createSource, VirtualFluid::createFlowing)); } - public FluidBuilder virtualFluid(String name, ResourceLocation still, - ResourceLocation flow) { + public FluidBuilder virtualFluid(String name, Identifier still, + Identifier flow) { return entry(name, c -> new VirtualFluidBuilder<>(self(), self(), name, c, still, flow, - CreateRegistrate::defaultFluidType, VirtualFluid::createSource, VirtualFluid::createFlowing)); + properties -> defaultFluidType(properties, still, flow), VirtualFluid::createSource, VirtualFluid::createFlowing)); } public FluidBuilder standardFluid(String name) { - return fluid(name, ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow")); + return fluid(name, Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow")); } public FluidBuilder standardFluid(String name, FluidBuilder.FluidTypeFactory typeFactory) { - return fluid(name, ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), ResourceLocation.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), + return fluid(name, Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_still"), Identifier.fromNamespaceAndPath(getModid(), "fluid/" + name + "_flow"), typeFactory); } - public static FluidType defaultFluidType(FluidType.Properties properties, ResourceLocation stillTexture, - ResourceLocation flowingTexture) { - return new FluidType(properties) { - @Override - public void initializeClient(Consumer consumer) { - consumer.accept(new IClientFluidTypeExtensions() { - @Override - public ResourceLocation getStillTexture() { - return stillTexture; - } - - @Override - public ResourceLocation getFlowingTexture() { - return flowingTexture; - } - }); - } - }; + public static FluidType defaultFluidType(FluidType.Properties properties, Identifier stillTexture, + Identifier flowingTexture) { + return new FluidType(properties); } /* Util */ public static NonNullConsumer casingConnectivity( BiConsumer consumer) { - return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> registerCasingConnectivity(entry, consumer)); + return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateRegistrateClient.registerCasingConnectivity(entry, consumer)); } - public static NonNullConsumer blockModel( - Supplier> func) { - return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> registerBlockModel(entry, func)); + public static NonNullConsumer blockModel( + Supplier> func) { + return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateRegistrateClient.registerBlockModel(entry, func)); } - public static NonNullConsumer itemModel( - Supplier> func) { - return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> registerItemModel(entry, func)); + public static NonNullConsumer itemModel( + Supplier> func) { + return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateRegistrateClient.registerItemModel(entry, func)); } public static NonNullConsumer connectedTextures( Supplier behavior) { - return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> registerCTBehviour(entry, behavior)); - } - - @OnlyIn(Dist.CLIENT) - private static void registerCasingConnectivity(T entry, - BiConsumer consumer) { - consumer.accept(entry, CreateClient.CASING_CONNECTIVITY); - } - - @OnlyIn(Dist.CLIENT) - private static void registerBlockModel(Block entry, - Supplier> func) { - CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(RegisteredObjectsHelper.getKeyOrThrow(entry), func.get()); - } - - @OnlyIn(Dist.CLIENT) - private static void registerItemModel(Item entry, - Supplier> func) { - CreateClient.MODEL_SWAPPER.getCustomItemModels() - .register(RegisteredObjectsHelper.getKeyOrThrow(entry), func.get()); - } - - @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { - ConnectedTextureBehaviour behavior = behaviorSupplier.get(); - CreateClient.MODEL_SWAPPER.getCustomBlockModels() - .register(RegisteredObjectsHelper.getKeyOrThrow(entry), model -> new CTModel(model, behavior)); + return entry -> CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> CreateRegistrateClient.registerCTBehviour(entry, behavior)); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrateClient.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrateClient.java new file mode 100644 index 0000000000..4bf163bcb9 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrateClient.java @@ -0,0 +1,45 @@ +package com.simibubi.create.foundation.data; + +import java.util.function.BiConsumer; +import java.util.function.Supplier; + +import com.simibubi.create.CreateClient; +import com.simibubi.create.content.decoration.encasing.CasingConnectivity; +import com.simibubi.create.foundation.block.connected.CTModel; +import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; +import com.simibubi.create.foundation.model.BakedModel; +import com.tterrag.registrate.util.nullness.NonNullFunction; + +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +final class CreateRegistrateClient { + private CreateRegistrateClient() { + } + + static void registerCasingConnectivity(T entry, + BiConsumer consumer) { + consumer.accept(entry, CreateClient.CASING_CONNECTIVITY); + } + + @SuppressWarnings("unchecked") + static void registerBlockModel(Block entry, Supplier> func) { + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjectsHelper.getKeyOrThrow(entry), + (NonNullFunction) func.get()); + } + + @SuppressWarnings("unchecked") + static void registerItemModel(Item entry, Supplier> func) { + CreateClient.MODEL_SWAPPER.getCustomItemModels() + .register(RegisteredObjectsHelper.getKeyOrThrow(entry), + (NonNullFunction) func.get()); + } + + static void registerCTBehviour(Block entry, Supplier behaviorSupplier) { + ConnectedTextureBehaviour behavior = behaviorSupplier.get(); + CreateClient.MODEL_SWAPPER.getCustomBlockModels() + .register(RegisteredObjectsHelper.getKeyOrThrow(entry), model -> new CTModel(model, behavior)); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/data/DamageTypeTagGen.java b/src/main/java/com/simibubi/create/foundation/data/DamageTypeTagGen.java index b63abfadd7..f26a25335f 100644 --- a/src/main/java/com/simibubi/create/foundation/data/DamageTypeTagGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/DamageTypeTagGen.java @@ -2,8 +2,6 @@ import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Nullable; - import com.simibubi.create.AllDamageTypes; import com.simibubi.create.Create; @@ -13,11 +11,10 @@ import net.minecraft.data.tags.TagsProvider; import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.damagesource.DamageType; -import net.neoforged.neoforge.common.data.ExistingFileHelper; public class DamageTypeTagGen extends TagsProvider { - public DamageTypeTagGen(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, Registries.DAMAGE_TYPE, lookupProvider, Create.ID, existingFileHelper); + public DamageTypeTagGen(PackOutput output, CompletableFuture lookupProvider) { + super(output, Registries.DAMAGE_TYPE, lookupProvider, Create.ID); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/data/DatagenModels.java b/src/main/java/com/simibubi/create/foundation/data/DatagenModels.java new file mode 100644 index 0000000000..cae93d6bd6 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/data/DatagenModels.java @@ -0,0 +1,32 @@ +package com.simibubi.create.foundation.data; + +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; + +import net.minecraft.client.resources.model.sprite.Material; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.block.SlabBlock; + +public class DatagenModels { + private DatagenModels() { + } + + public static void generateSlabBlock(RegistrateBlockModelGenerator prov, SlabBlock block, Identifier doubleSlab, + Material side, Material bottom, Material top) { + try { + Class multiVariantClass = Class.forName(clientDataModelClass("MultiVariant")); + Object plainVariant = Class.forName(clientDataModelClass("BlockModelGenerators")) + .getMethod("plainVariant", Identifier.class) + .invoke(null, doubleSlab); + RegistrateBlockModelGenerator.class + .getMethod("generateSlabBlock", SlabBlock.class, multiVariantClass, Material.class, Material.class, + Material.class) + .invoke(prov, block, plainVariant, side, bottom, top); + } catch (ReflectiveOperationException e) { + throw new IllegalStateException("Could not generate slab block model variants", e); + } + } + + private static String clientDataModelClass(String simpleName) { + return String.join(".", "net", "minecraft", "client", "data", "models", simpleName); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java index 027b495895..6deb94cc16 100644 --- a/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java @@ -2,13 +2,13 @@ import com.simibubi.create.content.kinetics.gauge.GaugeBlock; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public abstract class DirectionalAxisBlockStateGen extends SpecialBlockStateGen { @@ -40,10 +40,10 @@ protected int getYRotation(BlockState state) { } public abstract String getModelPrefix(DataGenContext ctx, - RegistrateBlockstateProvider prov, BlockState state); + RegistrateBlockModelGenerator prov, BlockState state); @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + public ModelFile getModel(DataGenContext ctx, RegistrateBlockModelGenerator prov, BlockState state) { boolean vertical = state.getValue(GaugeBlock.FACING) .getAxis() diff --git a/src/main/java/com/simibubi/create/foundation/data/MetalBarsGen.java b/src/main/java/com/simibubi/create/foundation/data/MetalBarsGen.java index 2c6ac12ff6..6383b6a09d 100644 --- a/src/main/java/com/simibubi/create/foundation/data/MetalBarsGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/MetalBarsGen.java @@ -10,25 +10,25 @@ import com.simibubi.create.AllTags.AllBlockTags; import com.simibubi.create.Create; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.IronBarsBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.MapColor; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ModelFile; public class MetalBarsGen { - public static

NonNullBiConsumer, RegistrateBlockstateProvider> barsBlockState( + public static

NonNullBiConsumer, RegistrateBlockModelGenerator> barsBlockState( String name, boolean specialEdge) { return (c, p) -> { @@ -111,10 +111,10 @@ public static

NonNullBiConsumer createBars(String name, boolean specialEdge, Supplier ingredient, MapColor color) { return Create.registrate().block(name + "_bars", IronBarsBlock::new) - .addLayer(() -> RenderType::cutoutMipped) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped) .initialProperties(() -> Blocks.IRON_BARS) .properties(p -> p.sound(SoundType.COPPER) .mapColor(color)) .tag(AllBlockTags.WRENCH_PICKUP.tag) .tag(AllBlockTags.FAN_TRANSPARENT.tag) .transform(TagGen.pickaxeOnly()) - .blockstate(barsBlockState(name, specialEdge)) + .blockstate(() -> barsBlockState(name, specialEdge)) .item() - .model((c, p) -> { - ResourceLocation barsTexture = p.modLoc("block/bars/" + name + "_bars"); + .model(() -> (c, p) -> { + Identifier barsTexture = p.modLoc("block/bars/" + name + "_bars"); p.generated(c, barsTexture); }) .recipe((c, p) -> p.stonecutting(ingredient.get(), RecipeCategory.DECORATIONS, c::get, 4)) diff --git a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java index e7089548aa..fd9781ebf3 100644 --- a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java @@ -5,21 +5,21 @@ import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.util.nullness.NonNullFunction; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; -import net.neoforged.neoforge.client.model.generators.BlockStateProvider; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.BlockStateProvider; +import com.tterrag.registrate.providers.generators.ModelFile; public class ModelGen { public static ModelFile createOvergrown(DataGenContext ctx, BlockStateProvider prov, - ResourceLocation block, ResourceLocation overlay) { + Identifier block, Identifier overlay) { return createOvergrown(ctx, prov, block, block, block, overlay); } public static ModelFile createOvergrown(DataGenContext ctx, BlockStateProvider prov, - ResourceLocation side, ResourceLocation top, ResourceLocation bottom, ResourceLocation overlay) { + Identifier side, Identifier top, Identifier bottom, Identifier overlay) { return prov.models() .withExistingParent(ctx.getName(), Create.asResource("block/overgrown")) .texture("particle", side) @@ -30,12 +30,12 @@ public static ModelFile createOvergrown(DataGenContext c } public static NonNullFunction, P> customItemModel() { - return b -> b.model(AssetLookup::customItemModel) + return b -> b.model(() -> AssetLookup::customItemModel) .build(); } public static NonNullFunction, P> customItemModel(String... path) { - return b -> b.model(AssetLookup.customBlockItemModel(path)) + return b -> b.model(() -> AssetLookup.customBlockItemModel(path)) .build(); } diff --git a/src/main/java/com/simibubi/create/foundation/data/RuntimeDataGenerator.java b/src/main/java/com/simibubi/create/foundation/data/RuntimeDataGenerator.java index 631720eee8..c6f16c5f1d 100644 --- a/src/main/java/com/simibubi/create/foundation/data/RuntimeDataGenerator.java +++ b/src/main/java/com/simibubi/create/foundation/data/RuntimeDataGenerator.java @@ -24,10 +24,10 @@ import com.simibubi.create.foundation.recipe.IRecipeTypeInfo; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.createmod.catnip.codecs.CatnipCodecUtils; +import net.createmod.catnip.api.data.codec.CatnipCodecUtils; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagFile; import net.minecraft.tags.TagKey; @@ -46,16 +46,16 @@ public class RuntimeDataGenerator { private static final Pattern STRIPPED_WOOD_SUFFIX_REGEX = Pattern.compile("(\\w*)(_log|_wood|_stem|_hyphae|_block|(? TAGS = HashMultimap.create(); - private static final Object2ObjectOpenHashMap JSON_FILES = new Object2ObjectOpenHashMap<>(); - private static final Map MISMATCHED_WOOD_NAMES = ImmutableMap.builder() + private static final Multimap TAGS = HashMultimap.create(); + private static final Object2ObjectOpenHashMap JSON_FILES = new Object2ObjectOpenHashMap<>(); + private static final Map MISMATCHED_WOOD_NAMES = ImmutableMap.builder() .put(Mods.ARS_N.asResource("blue_archwood"), Mods.ARS_N.asResource("archwood")) // Generate recipes for planks -> everything else //.put(Mods.UUE.asResource("chorus_cane"), Mods.UUE.asResource("chorus_nest")) // Has a weird setup with both normal and stripped planks, that it already provides cutting recipes for .put(Mods.DD.asResource("blooming"), Mods.DD.asResource("bloom")) .build(); public static void insertIntoPack(DynamicPack dynamicPack) { - for (ResourceLocation itemId : BuiltInRegistries.ITEM.keySet()) { + for (Identifier itemId : BuiltInRegistries.ITEM.keySet()) { cuttingRecipes(itemId); washingRecipes(itemId); } @@ -64,7 +64,7 @@ public static void insertIntoPack(DynamicPack dynamicPack) { JSON_FILES.forEach(dynamicPack::put); Create.LOGGER.info("Created {} tags which will be injected into the game", TAGS.size()); - for (Map.Entry> tags : TAGS.asMap().entrySet()) { + for (Map.Entry> tags : TAGS.asMap().entrySet()) { TagFile tagFile = new TagFile(new ArrayList<>(tags.getValue()), false); dynamicPack.put(tags.getKey().withPrefix("tags/item/"), TagFile.CODEC.encodeStart(JsonOps.INSTANCE, tagFile).result().orElseThrow()); } @@ -77,7 +77,7 @@ public static void insertIntoPack(DynamicPack dynamicPack) { // logs/woods -> stripped variants // logs/woods both stripped and non stripped -> planks // planks -> stairs, slabs, fences, fence gates, doors, trapdoors, pressure plates, buttons and signs - private static void cuttingRecipes(ResourceLocation itemId) { + private static void cuttingRecipes(Identifier itemId) { String path = itemId.getPath(); Matcher match = STRIPPED_WOODS_PREFIX_REGEX.matcher(path); @@ -102,21 +102,21 @@ private static void cuttingRecipes(ResourceLocation itemId) { String prefix = strippedInPrefix && match.group(1) != null ? match.group(1) : ""; String suffix = !strippedInPrefix && !noStrippedVariant ? match.group(3) + match.group(4) : ""; String type = match.group(strippedInPrefix ? 3 : 2); - ResourceLocation matched_name = itemId.withPath(match.group(strippedInPrefix ? 2 : 1)); + Identifier matched_name = itemId.withPath(match.group(strippedInPrefix ? 2 : 1)); // re-add 'wood' to wood types such as Botania's livingwood - ResourceLocation base = matched_name.withSuffix(type.equals("wood") ? "wood" : ""); + Identifier base = matched_name.withSuffix(type.equals("wood") ? "wood" : ""); base = MISMATCHED_WOOD_NAMES.getOrDefault(base, base); - ResourceLocation nonStrippedId = matched_name.withSuffix(type).withPrefix(prefix).withSuffix(suffix); - ResourceLocation planksId = base.withSuffix("_planks"); - ResourceLocation stairsId = base.withSuffix(base.getNamespace().equals(Mods.BTN.getId()) ? "_planks_stairs" : "_stairs"); - ResourceLocation slabId = base.withSuffix(base.getNamespace().equals(Mods.BTN.getId()) ? "_planks_slab" : "_slab"); - ResourceLocation fenceId = base.withSuffix("_fence"); - ResourceLocation fenceGateId = base.withSuffix("_fence_gate"); - ResourceLocation doorId = base.withSuffix("_door"); - ResourceLocation trapdoorId = base.withSuffix("_trapdoor"); - ResourceLocation pressurePlateId = base.withSuffix("_pressure_plate"); - ResourceLocation buttonId = base.withSuffix("_button"); - ResourceLocation signId = base.withSuffix("_sign"); + Identifier nonStrippedId = matched_name.withSuffix(type).withPrefix(prefix).withSuffix(suffix); + Identifier planksId = base.withSuffix("_planks"); + Identifier stairsId = base.withSuffix(base.getNamespace().equals(Mods.BTN.getId()) ? "_planks_stairs" : "_stairs"); + Identifier slabId = base.withSuffix(base.getNamespace().equals(Mods.BTN.getId()) ? "_planks_slab" : "_slab"); + Identifier fenceId = base.withSuffix("_fence"); + Identifier fenceGateId = base.withSuffix("_fence_gate"); + Identifier doorId = base.withSuffix("_door"); + Identifier trapdoorId = base.withSuffix("_trapdoor"); + Identifier pressurePlateId = base.withSuffix("_pressure_plate"); + Identifier buttonId = base.withSuffix("_button"); + Identifier signId = base.withSuffix("_sign"); // Bamboo, GotD whistlecane int planksCount = type.contains("block") ? 3 : 6; @@ -127,7 +127,7 @@ private static void cuttingRecipes(ResourceLocation itemId) { } simpleWoodRecipe(itemId, planksId, planksCount); } else if (BuiltInRegistries.ITEM.containsKey(planksId)) { - ResourceLocation tag = Create.asResource("runtime_generated/compat/" + itemId.getNamespace() + "/" + base.getPath()); + Identifier tag = Create.asResource("runtime_generated/compat/" + itemId.getNamespace() + "/" + base.getPath()); insertIntoTag(tag, itemId); simpleWoodRecipe(TagKey.create(Registries.ITEM, tag), planksId, planksCount); @@ -147,47 +147,47 @@ private static void cuttingRecipes(ResourceLocation itemId) { } } - private static void washingRecipes(ResourceLocation itemId) { - Block block = BuiltInRegistries.BLOCK.get(itemId); + private static void washingRecipes(Identifier itemId) { + Block block = BuiltInRegistries.BLOCK.getValue(itemId); if (block instanceof ConcretePowderBlock concretePowderBlock) { Block concreteBlock = ((ConcretePowderBlockAccessor) concretePowderBlock).create$getConcrete(); simpleSplashingRecipe(itemId, BuiltInRegistries.BLOCK.getKey(concreteBlock)); } } - private static void insertIntoTag(ResourceLocation tag, ResourceLocation itemId) { + private static void insertIntoTag(Identifier tag, Identifier itemId) { if (BuiltInRegistries.ITEM.containsKey(itemId)) TAGS.put(tag, TagEntry.optionalElement(itemId)); } - private static void simpleWoodRecipe(ResourceLocation inputId, ResourceLocation outputId) { + private static void simpleWoodRecipe(Identifier inputId, Identifier outputId) { simpleWoodRecipe(inputId, outputId, 1); } - private static void simpleWoodRecipe(ResourceLocation inputId, ResourceLocation outputId, int amount) { + private static void simpleWoodRecipe(Identifier inputId, Identifier outputId, int amount) { if (BuiltInRegistries.ITEM.containsKey(outputId)) { new StandardBuilder<>(inputId.getNamespace(), CuttingRecipe::new, inputId.getPath(), outputId.getPath()) - .require(BuiltInRegistries.ITEM.get(inputId)) - .output(BuiltInRegistries.ITEM.get(outputId), amount) + .require(BuiltInRegistries.ITEM.getValue(inputId)) + .output(1, outputId, amount) .duration(50) .build(); } } - private static void simpleWoodRecipe(TagKey inputTag, ResourceLocation outputId, int amount) { + private static void simpleWoodRecipe(TagKey inputTag, Identifier outputId, int amount) { if (BuiltInRegistries.ITEM.containsKey(outputId)) { new StandardBuilder<>(inputTag.location().getNamespace(), CuttingRecipe::new, "tag_" + inputTag.location().getPath(), outputId.getPath()) .require(inputTag) - .output(BuiltInRegistries.ITEM.get(outputId), amount) + .output(1, outputId, amount) .duration(50) .build(); } } - private static void simpleSplashingRecipe(ResourceLocation first, ResourceLocation second) { + private static void simpleSplashingRecipe(Identifier first, Identifier second) { new StandardBuilder<>(first.getNamespace(), SplashingRecipe::new, first.getPath(), second.getPath()) - .require(BuiltInRegistries.BLOCK.get(first)) - .output(BuiltInRegistries.BLOCK.get(second)) + .require(BuiltInRegistries.BLOCK.getValue(first)) + .output(second) .build(); } @@ -201,12 +201,12 @@ public T build() { T recipe = super.build(); IRecipeTypeInfo recipeType = recipe.getTypeInfo(); - ResourceLocation typeId = recipeType.getId(); + Identifier typeId = recipeType.getId(); - if (!(recipeType.getSerializer() instanceof StandardProcessingRecipe.Serializer)) + if (!StandardProcessingRecipe.Serializer.hasFactory(recipeType.getSerializer())) throw new IllegalStateException("Cannot datagen ProcessingRecipe of type: " + typeId); - ResourceLocation id = ResourceLocation.fromNamespaceAndPath(recipeId.getNamespace(), + Identifier id = Identifier.fromNamespaceAndPath(recipeId.getNamespace(), typeId.getPath() + "/" + recipeId.getPath()); Optional serialized = CatnipCodecUtils.encode(Recipe.CONDITIONAL_CODEC, JsonOps.INSTANCE, Optional.of(new WithConditions<>(recipe))); diff --git a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java index d7cfcf46d1..78a72f7efa 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java +++ b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java @@ -1,10 +1,8 @@ package com.simibubi.create.foundation.data; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -@MethodsReturnNonnullByDefault public class SharedProperties { public static Block wooden() { @@ -20,7 +18,7 @@ public static Block softMetal() { } public static Block copperMetal() { - return Blocks.COPPER_BLOCK; + return Blocks.COPPER_BLOCK.weathering().unaffected(); } public static Block netheriteMetal() { diff --git a/src/main/java/com/simibubi/create/foundation/data/SimpleDatagenIngredient.java b/src/main/java/com/simibubi/create/foundation/data/SimpleDatagenIngredient.java index 5c0c52f278..0b8713ef92 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SimpleDatagenIngredient.java +++ b/src/main/java/com/simibubi/create/foundation/data/SimpleDatagenIngredient.java @@ -12,8 +12,10 @@ import com.simibubi.create.foundation.mixin.accessor.MappedRegistryAccessor; import net.minecraft.core.Holder; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.common.NeoForgeMod; @@ -30,7 +32,7 @@ public class SimpleDatagenIngredient implements ICustomIngredient { ] */ private static final MapCodec INTERNAL_CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - ResourceLocation.CODEC.fieldOf("item").forGetter(i -> i.mod.asResource(i.id)) + Identifier.CODEC.fieldOf("item").forGetter(i -> i.mod.asResource(i.id)) ).apply(instance, location -> { for (Mods mod : Mods.values()) { if (mod.getId().equals(location.getNamespace())) { @@ -59,12 +61,14 @@ public SimpleDatagenIngredient(DatagenMod mod, String id) { @Override public boolean test(@NotNull ItemStack stack) { - return stack.getItemHolder().getKey().location().equals(mod.asResource(id)); + return BuiltInRegistries.ITEM.getKey(stack.getItem()).equals(mod.asResource(id)); } @Override - public @NotNull Stream getItems() { - return Stream.empty(); + public @NotNull Stream> items() { + return BuiltInRegistries.ITEM.get(mod.asResource(id)) + .map(reference -> Stream.>of(reference)) + .orElseGet(Stream::empty); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java index 6c8f6a5bf1..62c2f66a88 100644 --- a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java @@ -1,14 +1,14 @@ package com.simibubi.create.foundation.data; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Property; -import net.neoforged.neoforge.client.model.generators.ConfiguredModel; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ConfiguredModel; +import com.tterrag.registrate.providers.generators.ModelFile; public abstract class SpecialBlockStateGen { @@ -16,7 +16,7 @@ protected Property[] getIgnoredProperties() { return new Property[0]; } - public final void generate(DataGenContext ctx, RegistrateBlockstateProvider prov) { + public final void generate(DataGenContext ctx, RegistrateBlockModelGenerator prov) { prov.getVariantBuilder(ctx.getEntry()) .forAllStatesExcept(state -> { return ConfiguredModel.builder() @@ -39,6 +39,6 @@ protected int horizontalAngle(Direction direction) { protected abstract int getYRotation(BlockState state); public abstract ModelFile getModel(DataGenContext ctx, - RegistrateBlockstateProvider prov, BlockState state); + RegistrateBlockModelGenerator prov, BlockState state); } diff --git a/src/main/java/com/simibubi/create/foundation/data/TagGen.java b/src/main/java/com/simibubi/create/foundation/data/TagGen.java index 65af8eb0f5..2463c8bef6 100644 --- a/src/main/java/com/simibubi/create/foundation/data/TagGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/TagGen.java @@ -13,11 +13,11 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import net.minecraft.core.Holder; -import net.minecraft.data.tags.TagsProvider; -import net.minecraft.data.tags.TagsProvider.TagAppender; +import net.minecraft.data.tags.TagAppender; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagBuilder; +import net.minecraft.tags.TagEntry; import net.minecraft.tags.TagKey; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -62,13 +62,13 @@ public static NonNullFunction, ItemBuild } public static > T addOptional(T appender, Mods mod, String id) { - appender.addOptional(mod.asResource(id)); + appender.add(TagEntry.optionalElement(mod.asResource(id))); return appender; } public static > T addOptional(T appender, Mods mod, List ids) { for (String id : ids) { - appender.addOptional(mod.asResource(id)); + addOptional(appender, mod, id); } return appender; } @@ -88,17 +88,18 @@ public CreateTagAppender tag(TagKey tag) { } public TagBuilder getOrCreateRawBuilder(TagKey tag) { - return provider.addTag(tag).getInternalBuilder(); + return provider.rawBuilder(tag); } } - public static class CreateTagAppender extends TagsProvider.TagAppender { + public static class CreateTagAppender implements TagAppender { private final Function> keyExtractor; + private final TagAppender delegate; public CreateTagAppender(TagBuilder pBuilder, Function> pKeyExtractor) { - super(pBuilder); this.keyExtractor = pKeyExtractor; + this.delegate = TagAppender.forBuilder(pBuilder); } public CreateTagAppender add(T entry) { @@ -114,5 +115,53 @@ public final CreateTagAppender add(T... entries) { return this; } + @Override + public CreateTagAppender add(ResourceKey element) { + delegate.add(element); + return this; + } + + @Override + public CreateTagAppender addOptional(ResourceKey element) { + delegate.addOptional(element); + return this; + } + + @Override + public CreateTagAppender addTag(TagKey tag) { + delegate.addTag(tag); + return this; + } + + @Override + public CreateTagAppender addOptionalTag(TagKey tag) { + delegate.addOptionalTag(tag); + return this; + } + + @Override + public CreateTagAppender add(TagEntry entry) { + delegate.add(entry); + return this; + } + + @Override + public CreateTagAppender replace(boolean value) { + delegate.replace(value); + return this; + } + + @Override + public CreateTagAppender remove(ResourceKey element) { + delegate.remove(element); + return this; + } + + @Override + public CreateTagAppender remove(TagKey tag) { + delegate.remove(tag); + return this; + } + } } diff --git a/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java b/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java index 8947ea7ebd..76daca4aa7 100644 --- a/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java @@ -6,7 +6,7 @@ import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.neoforged.neoforge.fluids.BaseFlowingFluid; import net.neoforged.neoforge.fluids.BaseFlowingFluid.Properties; @@ -16,11 +16,12 @@ public class VirtualFluidBuilder extends FluidBuilder { public VirtualFluidBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, - ResourceLocation stillTexture, ResourceLocation flowingTexture, FluidBuilder.FluidTypeFactory typeFactory, + Identifier stillTexture, Identifier flowingTexture, FluidBuilder.FluidTypeFactory typeFactory, NonNullFunction sourceFactory, NonNullFunction flowingFactory ) { - super(owner, parent, name, callback, stillTexture, flowingTexture, typeFactory, flowingFactory); + super(owner, parent, name, callback, typeFactory, flowingFactory::apply); + model(stillTexture, flowingTexture); source(sourceFactory); } diff --git a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java index faa77ad13a..ed81849ff1 100644 --- a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java @@ -18,19 +18,20 @@ import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; +import com.tterrag.registrate.providers.generators.RegistrateBlockModelGenerator; +import com.tterrag.registrate.providers.generators.RegistrateRecipeProvider; import com.tterrag.registrate.util.DataIngredient; import com.tterrag.registrate.util.entry.BlockEntry; import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; +import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.BlockTags; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.BlockItem; @@ -43,8 +44,8 @@ import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.level.material.MapColor; -import net.neoforged.neoforge.client.model.generators.ConfiguredModel; -import net.neoforged.neoforge.client.model.generators.ModelFile; +import com.tterrag.registrate.providers.generators.ConfiguredModel; +import com.tterrag.registrate.providers.generators.ModelFile; import net.neoforged.neoforge.common.Tags; public class WindowGen { @@ -67,17 +68,17 @@ private static Boolean never(BlockState p_235427_0_, BlockGetter p_235427_1_, Bl } public static BlockEntry woodenWindowBlock(WoodType woodType, Block planksBlock) { - return woodenWindowBlock(woodType, planksBlock, () -> RenderType::cutoutMipped, false); + return woodenWindowBlock(woodType, planksBlock, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped, false); } public static BlockBuilder randomisedWindowBlock(String name, Supplier ingredient, Supplier> renderType, boolean translucent, Supplier color) { - ResourceLocation end_texture = Create.asResource(palettesDir() + name + "_end"); - ResourceLocation side_texture = Create.asResource(palettesDir() + name); - Function ends = i -> Create.asResource(palettesDir() + name + "_" + i + "_end"); + Identifier end_texture = Create.asResource(palettesDir() + name + "_end"); + Identifier side_texture = Create.asResource(palettesDir() + name); + Function ends = i -> Create.asResource(palettesDir() + name + "_" + i + "_end"); return windowBlock(name, ingredient, null, renderType, translucent, n -> end_texture, n -> side_texture, color) - .blockstate((c, p) -> p.simpleBlock(c.get(), ConfiguredModel.builder() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), ConfiguredModel.builder() .modelFile(p.models() .cubeColumn(c.getName() + "_1", side_texture, ends.apply(1))) .nextModel() @@ -91,15 +92,15 @@ public static BlockBuilder randomisedWindowBlock( .cubeColumn(c.getName() + "_4", side_texture, ends.apply(4))) .build())) .item() - .model((c, p) -> p.cubeColumn(c.getName(), side_texture, ends.apply(1))) + .model(() -> (c, p) -> p.cubeColumn(c.getName(), side_texture, ends.apply(1))) .build(); } public static BlockEntry customWindowBlock(String name, Supplier ingredient, Supplier ct, Supplier> renderType, boolean translucent, Supplier color) { - NonNullFunction end_texture = n -> Create.asResource(palettesDir() + name + "_end"); - NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); + NonNullFunction end_texture = n -> Create.asResource(palettesDir() + name + "_end"); + NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); return windowBlock(name, ingredient, ct, renderType, translucent, end_texture, side_texture, color).register(); } @@ -107,9 +108,9 @@ public static BlockEntry woodenWindowBlock(WoodType woodType, Block Supplier> renderType, boolean translucent) { String woodName = woodType.name(); String name = woodName + "_window"; - NonNullFunction end_texture = - $ -> ResourceLocation.withDefaultNamespace("block/" + woodName + "_planks"); - NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); + NonNullFunction end_texture = + $ -> Identifier.withDefaultNamespace("block/" + woodName + "_planks"); + NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); return windowBlock(name, () -> planksBlock, () -> AllSpriteShifts.getWoodenWindow(woodType), renderType, translucent, end_texture, side_texture, planksBlock::defaultMapColor).register(); } @@ -117,24 +118,24 @@ public static BlockEntry woodenWindowBlock(WoodType woodType, Block public static BlockBuilder windowBlock(String name, Supplier ingredient, Supplier ct, Supplier> renderType, boolean translucent, - NonNullFunction endTexture, NonNullFunction sideTexture, + NonNullFunction endTexture, NonNullFunction sideTexture, Supplier color) { return REGISTRATE.block(name, p -> new WindowBlock(p, translucent)) .onRegister(ct == null ? $ -> { } : connectedTextures(() -> new HorizontalCTBehaviour(ct.get()))) .addLayer(renderType) - .recipe((c, p) -> ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, c.get(), 2) + .recipe((c, p) -> ShapedRecipeBuilder.shaped(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get(), 2) .pattern(" # ") .pattern("#X#") .define('#', ingredient.get()) .define('X', DataIngredient.tag(Tags.Items.GLASS_BLOCKS_COLORLESS).toVanilla()) - .unlockedBy("has_ingredient", RegistrateRecipeProvider.has(ingredient.get())) + .unlockedBy("has_ingredient", p.has(ingredient.get())) .save(p)) .initialProperties(() -> Blocks.GLASS) .properties(WindowGen::glassProperties) .properties(p -> p.mapColor(color.get())) .loot((t, g) -> t.dropWhenSilkTouch(g)) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() + .blockstate(() -> (c, p) -> p.simpleBlock(c.get(), p.models() .cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName())))) .tag(BlockTags.IMPERMEABLE) .simpleItem(); @@ -144,17 +145,17 @@ public static BlockEntry framedGlass(String name, Supplier behaviour) { return REGISTRATE.block(name, ConnectedGlassBlock::new) .onRegister(connectedTextures(behaviour)) - .addLayer(() -> RenderType::cutout) + .addLayer(() -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutout) .initialProperties(() -> Blocks.GLASS) .properties(WindowGen::glassProperties) .loot((t, g) -> t.dropWhenSilkTouch(g)) .recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_BLOCKS_COLORLESS), RecipeCategory.BUILDING_BLOCKS, c::get)) - .blockstate((c, p) -> BlockStateGen.cubeAll(c, p, "palettes/", "framed_glass")) + .blockstate(() -> (c, p) -> BlockStateGen.cubeAll(c, p, "palettes/", "framed_glass")) .tag(Tags.Blocks.GLASS_BLOCKS_COLORLESS, BlockTags.IMPERMEABLE) .item() .tag(Tags.Items.GLASS_BLOCKS_COLORLESS) - .model((c, p) -> p.cubeColumn(c.getName(), p.modLoc(palettesDir() + c.getName()), + .model(() -> (c, p) -> p.cubeColumn(c.getName(), p.modLoc(palettesDir() + c.getName()), p.modLoc("block/palettes/framed_glass"))) .build() .register(); @@ -162,10 +163,10 @@ public static BlockEntry framedGlass(String name, public static BlockEntry framedGlassPane(String name, Supplier parent, Supplier ctshift) { - ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass"); - ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name); - ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); - Supplier> renderType = () -> RenderType::cutoutMipped; + Identifier sideTexture = Create.asResource(palettesDir() + "framed_glass"); + Identifier itemSideTexture = Create.asResource(palettesDir() + name); + Identifier topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); + Supplier> renderType = () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped; return connectedGlassPane(name, parent, ctshift, sideTexture, itemSideTexture, topTexture, renderType, true) .register(); } @@ -173,59 +174,61 @@ public static BlockEntry framedGlassPane(String name, S public static BlockBuilder customWindowPane(String name, Supplier parent, Supplier ctshift, Supplier> renderType) { - ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top"); - ResourceLocation sideTexture = Create.asResource(palettesDir() + name); + Identifier topTexture = Create.asResource(palettesDir() + name + "_pane_top"); + Identifier sideTexture = Create.asResource(palettesDir() + name); return connectedGlassPane(name, parent, ctshift, sideTexture, sideTexture, topTexture, renderType, false); } public static BlockEntry woodenWindowPane(WoodType woodType, Supplier parent) { - return woodenWindowPane(woodType, parent, () -> RenderType::cutoutMipped); + return woodenWindowPane(woodType, parent, () -> com.simibubi.create.foundation.render.LegacyRenderTypes::cutoutMipped); } public static BlockEntry woodenWindowPane(WoodType woodType, Supplier parent, Supplier> renderType) { String woodName = woodType.name(); String name = woodName + "_window"; - ResourceLocation topTexture = ResourceLocation.withDefaultNamespace("block/" + woodName + "_planks"); - ResourceLocation sideTexture = Create.asResource(palettesDir() + name); + Identifier topTexture = Identifier.withDefaultNamespace("block/" + woodName + "_planks"); + Identifier sideTexture = Create.asResource(palettesDir() + name); return connectedGlassPane(name, parent, () -> AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, topTexture, renderType, false).register(); } public static BlockEntry standardGlassPane(String name, Supplier parent, - ResourceLocation sideTexture, ResourceLocation topTexture, Supplier> renderType) { - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider = - (c, p) -> p.paneBlock(c.get(), sideTexture, topTexture); + Identifier sideTexture, Identifier topTexture, Supplier> renderType) { + NonNullSupplier, RegistrateBlockModelGenerator>> stateProvider = + () -> (c, p) -> p.paneBlock(c.get(), sideTexture, topTexture); return glassPane(name, parent, sideTexture, topTexture, GlassPaneBlock::new, renderType, $ -> { }, stateProvider, true).register(); } private static BlockBuilder connectedGlassPane(String name, - Supplier parent, Supplier ctshift, ResourceLocation sideTexture, - ResourceLocation itemSideTexture, ResourceLocation topTexture, Supplier> renderType, boolean colorless) { + Supplier parent, Supplier ctshift, Identifier sideTexture, + Identifier itemSideTexture, Identifier topTexture, Supplier> renderType, boolean colorless) { NonNullConsumer connectedTextures = ctshift == null ? $ -> { } : connectedTextures(() -> new GlassPaneCTBehaviour(ctshift.get())); String CGPparents = "block/connected_glass_pane/"; String prefix = name + "_pane_"; - Function post = - getPaneModelProvider(CGPparents, prefix, "post", sideTexture, topTexture), - side = getPaneModelProvider(CGPparents, prefix, "side", sideTexture, topTexture), - sideAlt = getPaneModelProvider(CGPparents, prefix, "side_alt", sideTexture, topTexture), - noSide = getPaneModelProvider(CGPparents, prefix, "noside", sideTexture, topTexture), - noSideAlt = getPaneModelProvider(CGPparents, prefix, "noside_alt", sideTexture, topTexture); + NonNullSupplier, RegistrateBlockModelGenerator>> stateProvider = + () -> { + Function post = + getPaneModelProvider(CGPparents, prefix, "post", sideTexture, topTexture), + side = getPaneModelProvider(CGPparents, prefix, "side", sideTexture, topTexture), + sideAlt = getPaneModelProvider(CGPparents, prefix, "side_alt", sideTexture, topTexture), + noSide = getPaneModelProvider(CGPparents, prefix, "noside", sideTexture, topTexture), + noSideAlt = getPaneModelProvider(CGPparents, prefix, "noside_alt", sideTexture, topTexture); - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider = - (c, p) -> p.paneBlock(c.get(), post.apply(p), side.apply(p), sideAlt.apply(p), noSide.apply(p), - noSideAlt.apply(p)); + return (c, p) -> p.paneBlock(c.get(), post.apply(p), side.apply(p), sideAlt.apply(p), noSide.apply(p), + noSideAlt.apply(p)); + }; return glassPane(name, parent, itemSideTexture, topTexture, ConnectedGlassPaneBlock::new, renderType, connectedTextures, stateProvider, colorless); } - private static Function getPaneModelProvider(String CGPparents, - String prefix, String partial, ResourceLocation sideTexture, ResourceLocation topTexture) { + private static Function getPaneModelProvider(String CGPparents, + String prefix, String partial, Identifier sideTexture, Identifier topTexture) { return p -> p.models() .withExistingParent(prefix + partial, Create.asResource(CGPparents + partial)) .texture("pane", sideTexture) @@ -233,10 +236,10 @@ private static Function getPaneModelPro } private static BlockBuilder glassPane(String name, - Supplier parent, ResourceLocation sideTexture, ResourceLocation topTexture, + Supplier parent, Identifier sideTexture, Identifier topTexture, NonNullFunction factory, Supplier> renderType, NonNullConsumer connectedTextures, - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider, boolean colorless) { + NonNullSupplier, RegistrateBlockModelGenerator>> stateProvider, boolean colorless) { name += "_pane"; @@ -248,11 +251,11 @@ private static BlockBuilder glas .defaultMapColor())) .blockstate(stateProvider) .recipe((c, p) -> { - ShapedRecipeBuilder.shaped(RecipeCategory.BUILDING_BLOCKS, c.get(), 16) + ShapedRecipeBuilder.shaped(p.itemLookup(), RecipeCategory.BUILDING_BLOCKS, c.get(), 16) .pattern("###") .pattern("###") .define('#', parent.get()) - .unlockedBy("has_ingredient", RegistrateRecipeProvider.has(parent.get())) + .unlockedBy("has_ingredient", p.has(parent.get())) .save(p); if (colorless) p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_PANES_COLORLESS), RecipeCategory.BUILDING_BLOCKS, @@ -267,7 +270,7 @@ private static BlockBuilder glas itemBuilder.tag(Tags.Items.GLASS_PANES); BlockBuilder blockBuilder = itemBuilder - .model((c, p) -> p.generated(c, sideTexture)) + .model(() -> (c, p) -> p.generated(c, sideTexture)) .build(); if (colorless) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CommonMetal.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CommonMetal.java index 4081255525..6e6d1ee599 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CommonMetal.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CommonMetal.java @@ -16,10 +16,10 @@ import java.util.Map; import java.util.Set; -import net.createmod.catnip.lang.Lang; -import net.minecraft.Util; +import net.createmod.catnip.api.lang.Lang; +import net.minecraft.util.Util; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -127,11 +127,11 @@ public static Set of(Mods mod) { private static TagKey itemTag(String path) { - return TagKey.create(Registries.ITEM, ResourceLocation.fromNamespaceAndPath("c", path)); + return TagKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath("c", path)); } private static TagKey blockTag(String path) { - return TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath("c", path)); + return TagKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath("c", path)); } public record ItemLikeTag(TagKey items, TagKey blocks) { diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateCrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateCrushingRecipeGen.java index 4b962823f1..c1600dd509 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateCrushingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateCrushingRecipeGen.java @@ -23,7 +23,7 @@ import com.simibubi.create.content.kinetics.crusher.CrushingRecipe; import com.simibubi.create.content.processing.recipe.StandardProcessingRecipe; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateDeployingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateDeployingRecipeGen.java index 2f6345599d..7e522da7bf 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateDeployingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateDeployingRecipeGen.java @@ -10,7 +10,9 @@ import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.PackOutput; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.WeatheringCopperCollection; /** * Create's own Data Generation for Deploying recipes @@ -34,41 +36,31 @@ public final class CreateDeployingRecipeGen extends DeployingRecipeGen { GeneratedRecipe - COPPER_BLOCK = oxidizationChain( - List.of(() -> Blocks.COPPER_BLOCK, () -> Blocks.EXPOSED_COPPER, () -> Blocks.WEATHERED_COPPER, () -> Blocks.OXIDIZED_COPPER), - List.of(() -> Blocks.WAXED_COPPER_BLOCK, () -> Blocks.WAXED_EXPOSED_COPPER, () -> Blocks.WAXED_WEATHERED_COPPER, () -> Blocks.WAXED_OXIDIZED_COPPER)), + COPPER_BLOCK = oxidizationChain(Blocks.COPPER_BLOCK), - COPPER_BULB = oxidizationChain( - List.of(() -> Blocks.COPPER_BULB, () -> Blocks.EXPOSED_COPPER_BULB, () -> Blocks.WEATHERED_COPPER_BULB, () -> Blocks.OXIDIZED_COPPER_BULB), - List.of(() -> Blocks.WAXED_COPPER_BULB, () -> Blocks.WAXED_EXPOSED_COPPER_BULB, () -> Blocks.WAXED_WEATHERED_COPPER_BULB, () -> Blocks.WAXED_OXIDIZED_COPPER_BULB)), + COPPER_BULB = oxidizationChain(Blocks.COPPER_BULB), - CHISELED_COPPER = oxidizationChain( - List.of(() -> Blocks.CHISELED_COPPER, () -> Blocks.EXPOSED_CHISELED_COPPER, () -> Blocks.WEATHERED_CHISELED_COPPER, () -> Blocks.OXIDIZED_CHISELED_COPPER), - List.of(() -> Blocks.WAXED_CHISELED_COPPER, () -> Blocks.WAXED_EXPOSED_CHISELED_COPPER, () -> Blocks.WAXED_WEATHERED_CHISELED_COPPER, () -> Blocks.WAXED_OXIDIZED_CHISELED_COPPER)), + CHISELED_COPPER = oxidizationChain(Blocks.CHISELED_COPPER), - COPPER_GRATE = oxidizationChain( - List.of(() -> Blocks.COPPER_GRATE, () -> Blocks.EXPOSED_COPPER_GRATE, () -> Blocks.WEATHERED_COPPER_GRATE, () -> Blocks.OXIDIZED_COPPER_GRATE), - List.of(() -> Blocks.WAXED_COPPER_GRATE, () -> Blocks.WAXED_EXPOSED_COPPER_GRATE, () -> Blocks.WAXED_WEATHERED_COPPER_GRATE, () -> Blocks.WAXED_OXIDIZED_COPPER_GRATE)), + COPPER_GRATE = oxidizationChain(Blocks.COPPER_GRATE), - COPPER_DOOR = oxidizationChain( - List.of(() -> Blocks.COPPER_DOOR, () -> Blocks.EXPOSED_COPPER_DOOR, () -> Blocks.WEATHERED_COPPER_DOOR, () -> Blocks.OXIDIZED_COPPER_DOOR), - List.of(() -> Blocks.WAXED_COPPER_DOOR, () -> Blocks.WAXED_EXPOSED_COPPER_DOOR, () -> Blocks.WAXED_WEATHERED_COPPER_DOOR, () -> Blocks.WAXED_OXIDIZED_COPPER_DOOR)), + COPPER_DOOR = oxidizationChain(Blocks.COPPER_DOOR), - COPPER_TRAPDOOR = oxidizationChain( - List.of(() -> Blocks.COPPER_TRAPDOOR, () -> Blocks.EXPOSED_COPPER_TRAPDOOR, () -> Blocks.WEATHERED_COPPER_TRAPDOOR, () -> Blocks.OXIDIZED_COPPER_TRAPDOOR), - List.of(() -> Blocks.WAXED_COPPER_TRAPDOOR, () -> Blocks.WAXED_EXPOSED_COPPER_TRAPDOOR, () -> Blocks.WAXED_WEATHERED_COPPER_TRAPDOOR, () -> Blocks.WAXED_OXIDIZED_COPPER_TRAPDOOR)), + COPPER_TRAPDOOR = oxidizationChain(Blocks.COPPER_TRAPDOOR), - CUT_COPPER = oxidizationChain( - List.of(() -> Blocks.CUT_COPPER, () -> Blocks.EXPOSED_CUT_COPPER, () -> Blocks.WEATHERED_CUT_COPPER, () -> Blocks.OXIDIZED_CUT_COPPER), - List.of(() -> Blocks.WAXED_CUT_COPPER, () -> Blocks.WAXED_EXPOSED_CUT_COPPER, () -> Blocks.WAXED_WEATHERED_CUT_COPPER, () -> Blocks.WAXED_OXIDIZED_CUT_COPPER)), + CUT_COPPER = oxidizationChain(Blocks.CUT_COPPER), - CUT_COPPER_STAIRS = oxidizationChain( - List.of(() -> Blocks.CUT_COPPER_STAIRS, () -> Blocks.EXPOSED_CUT_COPPER_STAIRS, () -> Blocks.WEATHERED_CUT_COPPER_STAIRS, () -> Blocks.OXIDIZED_CUT_COPPER_STAIRS), - List.of(() -> Blocks.WAXED_CUT_COPPER_STAIRS, () -> Blocks.WAXED_EXPOSED_CUT_COPPER_STAIRS, () -> Blocks.WAXED_WEATHERED_CUT_COPPER_STAIRS, () -> Blocks.WAXED_OXIDIZED_CUT_COPPER_STAIRS)), + CUT_COPPER_STAIRS = oxidizationChain(Blocks.CUT_COPPER_STAIRS), - CUT_COPPER_SLAB = oxidizationChain( - List.of(() -> Blocks.CUT_COPPER_SLAB, () -> Blocks.EXPOSED_CUT_COPPER_SLAB, () -> Blocks.WEATHERED_CUT_COPPER_SLAB, () -> Blocks.OXIDIZED_CUT_COPPER_SLAB), - List.of(() -> Blocks.WAXED_CUT_COPPER_SLAB, () -> Blocks.WAXED_EXPOSED_CUT_COPPER_SLAB, () -> Blocks.WAXED_WEATHERED_CUT_COPPER_SLAB, () -> Blocks.WAXED_OXIDIZED_CUT_COPPER_SLAB)); + CUT_COPPER_SLAB = oxidizationChain(Blocks.CUT_COPPER_SLAB); + + private GeneratedRecipe oxidizationChain(WeatheringCopperCollection collection) { + return oxidizationChain( + List.of(collection.weathering()::unaffected, collection.weathering()::exposed, + collection.weathering()::weathered, collection.weathering()::oxidized), + List.of(collection.waxed()::unaffected, collection.waxed()::exposed, + collection.waxed()::weathered, collection.waxed()::oxidized)); + } public CreateDeployingRecipeGen(PackOutput output, CompletableFuture registries) { super(output, registries, Create.ID); diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateHauntingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateHauntingRecipeGen.java index ef924ec40b..7f1d5237c3 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateHauntingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateHauntingRecipeGen.java @@ -5,6 +5,7 @@ import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.api.data.recipe.HauntingRecipeGen; +import com.simibubi.create.foundation.data.recipe.CreateRecipeProvider.I; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; @@ -46,9 +47,9 @@ public final class CreateHauntingRecipeGen extends HauntingRecipeGen { .output(.75f, Items.PRISMARINE_SHARD) .output(.125f, Items.PRISMARINE_CRYSTALS)), - SOUL_SAND = convert(() -> Ingredient.of(ItemTags.SAND), () -> Blocks.SOUL_SAND), - SOUL_DIRT = convert(() -> Ingredient.of(ItemTags.DIRT), () -> Blocks.SOUL_SOIL), - BLACK_STONE = convert(() -> Ingredient.of(Tags.Items.COBBLESTONES), () -> Blocks.BLACKSTONE), + SOUL_SAND = convert(() -> I.tag(ItemTags.SAND), () -> Blocks.SOUL_SAND), + SOUL_DIRT = convert(() -> I.tag(ItemTags.DIRT), () -> Blocks.SOUL_SOIL), + BLACK_STONE = convert(() -> I.tag(Tags.Items.COBBLESTONES), () -> Blocks.BLACKSTONE), CRIMSON_FUNGUS = convert(Items.RED_MUSHROOM, Items.CRIMSON_FUNGUS), WARPED_FUNGUS = convert(Items.BROWN_MUSHROOM, Items.WARPED_FUNGUS), diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMechanicalCraftingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMechanicalCraftingRecipeGen.java index 4f7ec9123f..011b26f2b9 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMechanicalCraftingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMechanicalCraftingRecipeGen.java @@ -26,8 +26,8 @@ public final class CreateMechanicalCraftingRecipeGen extends MechanicalCraftingR GeneratedRecipe CRUSHING_WHEEL = create(AllBlocks.CRUSHING_WHEEL::get).returns(2) - .recipe(b -> b.key('P', Ingredient.of(ItemTags.PLANKS)) - .key('S', Ingredient.of(I.stone())) + .recipe(b -> b.key('P', I.tag(ItemTags.PLANKS)) + .key('S', I.tag(I.stone())) .key('A', I.andesiteAlloy()) .patternLine(" AAA ") .patternLine("AAPAA") @@ -37,11 +37,11 @@ public final class CreateMechanicalCraftingRecipeGen extends MechanicalCraftingR .disallowMirrored()), WAND_OF_SYMMETRY = - create(AllItems.WAND_OF_SYMMETRY::get).recipe(b -> b.key('E', Ingredient.of(Tags.Items.ENDER_PEARLS)) - .key('G', Ingredient.of(Items.GLASS_BLOCKS)) + create(AllItems.WAND_OF_SYMMETRY::get).recipe(b -> b.key('E', I.tag(Tags.Items.ENDER_PEARLS)) + .key('G', I.tag(Items.GLASS_BLOCKS)) .key('P', I.precisionMechanism()) - .key('O', Ingredient.of(Items.OBSIDIANS)) - .key('B', Ingredient.of(I.brass())) + .key('O', I.tag(Items.OBSIDIANS)) + .key('B', I.tag(I.brass())) .patternLine(" G ") .patternLine("GEG") .patternLine(" P ") @@ -49,10 +49,10 @@ public final class CreateMechanicalCraftingRecipeGen extends MechanicalCraftingR .patternLine(" O ")), EXTENDO_GRIP = create(AllItems.EXTENDO_GRIP::get).returns(1) - .recipe(b -> b.key('L', Ingredient.of(I.brass())) + .recipe(b -> b.key('L', I.tag(I.brass())) .key('R', I.precisionMechanism()) .key('H', AllItems.BRASS_HAND.get()) - .key('S', Ingredient.of(Tags.Items.RODS_WOODEN)) + .key('S', I.tag(Tags.Items.RODS_WOODEN)) .patternLine(" L ") .patternLine(" R ") .patternLine("SSS") @@ -64,7 +64,7 @@ public final class CreateMechanicalCraftingRecipeGen extends MechanicalCraftingR .recipe(b -> b.key('L', I.andesiteAlloy()) .key('R', I.precisionMechanism()) .key('S', AllBlocks.FLUID_PIPE.get()) - .key('C', Ingredient.of(I.copper())) + .key('C', I.tag(I.copper())) .patternLine("LRSSS") .patternLine("CC ")) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMillingRecipeGen.java index 7385d81338..baa7972ca1 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMillingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateMillingRecipeGen.java @@ -13,6 +13,7 @@ import net.minecraft.data.PackOutput; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -62,24 +63,24 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { BONE = create(() -> Items.BONE, b -> b.duration(100) .output(Items.BONE_MEAL, 3) - .output(.25f, Items.WHITE_DYE, 1) + .output(.25f, dye(DyeColor.WHITE), 1) .output(.25f, Items.BONE_MEAL, 3)), CACTUS = create(() -> Blocks.CACTUS, b -> b.duration(50) - .output(Items.GREEN_DYE, 2) - .output(.1f, Items.GREEN_DYE, 1)), + .output(dye(DyeColor.GREEN), 2) + .output(.1f, dye(DyeColor.GREEN), 1)), SEA_PICKLE = create(() -> Blocks.SEA_PICKLE, b -> b.duration(50) - .output(Items.LIME_DYE, 2) - .output(.1f, Items.GREEN_DYE)), + .output(dye(DyeColor.LIME), 2) + .output(.1f, dye(DyeColor.GREEN))), BONE_MEAL = create(() -> Items.BONE_MEAL, b -> b.duration(70) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIGHT_GRAY_DYE, 1)), + .output(dye(DyeColor.WHITE), 2) + .output(.1f, dye(DyeColor.LIGHT_GRAY), 1)), COCOA_BEANS = create(() -> Items.COCOA_BEANS, b -> b.duration(70) - .output(Items.BROWN_DYE, 2) - .output(.1f, Items.BROWN_DYE, 1)), + .output(dye(DyeColor.BROWN), 2) + .output(.1f, dye(DyeColor.BROWN), 1)), SADDLE = create(() -> Items.SADDLE, b -> b.duration(200) .output(Items.LEATHER, 2) @@ -90,119 +91,119 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { .output(.1f, Items.SUGAR)), BEETROOT = create(() -> Items.BEETROOT, b -> b.duration(70) - .output(Items.RED_DYE, 2) + .output(dye(DyeColor.RED), 2) .output(.1f, Items.BEETROOT_SEEDS)), INK_SAC = create(() -> Items.INK_SAC, b -> b.duration(100) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.GRAY_DYE)), + .output(dye(DyeColor.BLACK), 2) + .output(.1f, dye(DyeColor.GRAY))), CHARCOAL = create(() -> Items.CHARCOAL, b -> b.duration(100) - .output(Items.BLACK_DYE, 1) - .output(.1f, Items.GRAY_DYE, 2)), + .output(dye(DyeColor.BLACK), 1) + .output(.1f, dye(DyeColor.GRAY), 2)), COAL = create(() -> Items.COAL, b -> b.duration(100) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.GRAY_DYE, 1)), + .output(dye(DyeColor.BLACK), 2) + .output(.1f, dye(DyeColor.GRAY), 1)), LAPIS_LAZULI = create(() -> Items.LAPIS_LAZULI, b -> b.duration(100) - .output(Items.BLUE_DYE, 2) - .output(.1f, Items.BLUE_DYE)), + .output(dye(DyeColor.BLUE), 2) + .output(.1f, dye(DyeColor.BLUE))), AZURE_BLUET = create(() -> Blocks.AZURE_BLUET, b -> b.duration(50) - .output(Items.LIGHT_GRAY_DYE, 2) - .output(.1f, Items.WHITE_DYE, 2)), + .output(dye(DyeColor.LIGHT_GRAY), 2) + .output(.1f, dye(DyeColor.WHITE), 2)), BLUE_ORCHID = create(() -> Blocks.BLUE_ORCHID, b -> b.duration(50) - .output(Items.LIGHT_BLUE_DYE, 2) - .output(.05f, Items.LIGHT_GRAY_DYE, 1)), + .output(dye(DyeColor.LIGHT_BLUE), 2) + .output(.05f, dye(DyeColor.LIGHT_GRAY), 1)), FERN = create(() -> Blocks.FERN, b -> b.duration(50) - .output(Items.GREEN_DYE) + .output(dye(DyeColor.GREEN)) .output(.1f, Items.WHEAT_SEEDS)), LARGE_FERN = create(() -> Blocks.LARGE_FERN, b -> b.duration(50) - .output(Items.GREEN_DYE, 2) - .output(.5f, Items.GREEN_DYE) + .output(dye(DyeColor.GREEN), 2) + .output(.5f, dye(DyeColor.GREEN)) .output(.1f, Items.WHEAT_SEEDS)), LILAC = create(() -> Blocks.LILAC, b -> b.duration(100) - .output(Items.MAGENTA_DYE, 3) - .output(.25f, Items.MAGENTA_DYE) - .output(.25f, Items.PURPLE_DYE)), + .output(dye(DyeColor.MAGENTA), 3) + .output(.25f, dye(DyeColor.MAGENTA)) + .output(.25f, dye(DyeColor.PURPLE))), PEONY = create(() -> Blocks.PEONY, b -> b.duration(100) - .output(Items.PINK_DYE, 3) - .output(.25f, Items.MAGENTA_DYE) - .output(.25f, Items.PINK_DYE)), + .output(dye(DyeColor.PINK), 3) + .output(.25f, dye(DyeColor.MAGENTA)) + .output(.25f, dye(DyeColor.PINK))), ALLIUM = create(() -> Blocks.ALLIUM, b -> b.duration(50) - .output(Items.MAGENTA_DYE, 2) - .output(.1f, Items.PURPLE_DYE, 2) - .output(.1f, Items.PINK_DYE)), + .output(dye(DyeColor.MAGENTA), 2) + .output(.1f, dye(DyeColor.PURPLE), 2) + .output(.1f, dye(DyeColor.PINK))), LILY_OF_THE_VALLEY = create(() -> Blocks.LILY_OF_THE_VALLEY, b -> b.duration(50) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIME_DYE) - .output(.1f, Items.WHITE_DYE)), + .output(dye(DyeColor.WHITE), 2) + .output(.1f, dye(DyeColor.LIME)) + .output(.1f, dye(DyeColor.WHITE))), ROSE_BUSH = create(() -> Blocks.ROSE_BUSH, b -> b.duration(50) - .output(Items.RED_DYE, 3) - .output(.05f, Items.GREEN_DYE, 2) - .output(.25f, Items.RED_DYE, 2)), + .output(dye(DyeColor.RED), 3) + .output(.05f, dye(DyeColor.GREEN), 2) + .output(.25f, dye(DyeColor.RED), 2)), SUNFLOWER = create(() -> Blocks.SUNFLOWER, b -> b.duration(100) - .output(Items.YELLOW_DYE, 3) - .output(.25f, Items.ORANGE_DYE) - .output(.25f, Items.YELLOW_DYE)), + .output(dye(DyeColor.YELLOW), 3) + .output(.25f, dye(DyeColor.ORANGE)) + .output(.25f, dye(DyeColor.YELLOW))), OXEYE_DAISY = create(() -> Blocks.OXEYE_DAISY, b -> b.duration(50) - .output(Items.LIGHT_GRAY_DYE, 2) - .output(.2f, Items.WHITE_DYE) - .output(.05f, Items.YELLOW_DYE)), + .output(dye(DyeColor.LIGHT_GRAY), 2) + .output(.2f, dye(DyeColor.WHITE)) + .output(.05f, dye(DyeColor.YELLOW))), POPPY = create(() -> Blocks.POPPY, b -> b.duration(50) - .output(Items.RED_DYE, 2) - .output(.05f, Items.GREEN_DYE)), + .output(dye(DyeColor.RED), 2) + .output(.05f, dye(DyeColor.GREEN))), DANDELION = create(() -> Blocks.DANDELION, b -> b.duration(50) - .output(Items.YELLOW_DYE, 2) - .output(.05f, Items.YELLOW_DYE)), + .output(dye(DyeColor.YELLOW), 2) + .output(.05f, dye(DyeColor.YELLOW))), CORNFLOWER = create(() -> Blocks.CORNFLOWER, b -> b.duration(50) - .output(Items.BLUE_DYE, 2)), + .output(dye(DyeColor.BLUE), 2)), WITHER_ROSE = create(() -> Blocks.WITHER_ROSE, b -> b.duration(50) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.BLACK_DYE)), + .output(dye(DyeColor.BLACK), 2) + .output(.1f, dye(DyeColor.BLACK))), ORANGE_TULIP = create(() -> Blocks.ORANGE_TULIP, b -> b.duration(50) - .output(Items.ORANGE_DYE, 2) - .output(.1f, Items.LIME_DYE)), + .output(dye(DyeColor.ORANGE), 2) + .output(.1f, dye(DyeColor.LIME))), RED_TULIP = create(() -> Blocks.RED_TULIP, b -> b.duration(50) - .output(Items.RED_DYE, 2) - .output(.1f, Items.LIME_DYE)), + .output(dye(DyeColor.RED), 2) + .output(.1f, dye(DyeColor.LIME))), WHITE_TULIP = create(() -> Blocks.WHITE_TULIP, b -> b.duration(50) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIME_DYE)), + .output(dye(DyeColor.WHITE), 2) + .output(.1f, dye(DyeColor.LIME))), PINK_TULIP = create(() -> Blocks.PINK_TULIP, b -> b.duration(50) - .output(Items.PINK_DYE, 2) - .output(.1f, Items.LIME_DYE)), + .output(dye(DyeColor.PINK), 2) + .output(.1f, dye(DyeColor.LIME))), PINK_PETALS = create(() -> Blocks.PINK_PETALS, b -> b.duration(50) - .output(Items.PINK_DYE, 2) - .output(.1f, Items.LIME_DYE)), + .output(dye(DyeColor.PINK), 2) + .output(.1f, dye(DyeColor.LIME))), PITCHER_PLANT = create(() -> Blocks.PITCHER_PLANT, b -> b.duration(50) - .output(Items.CYAN_DYE, 4) - .output(.1f, Items.PURPLE_DYE)), + .output(dye(DyeColor.CYAN), 4) + .output(.1f, dye(DyeColor.PURPLE))), TORCHFLOWER = create(() -> Blocks.TORCHFLOWER, b -> b.duration(50) - .output(Items.ORANGE_DYE, 2) - .output(.1f, Items.GREEN_DYE)), + .output(dye(DyeColor.ORANGE), 2) + .output(.1f, dye(DyeColor.GREEN))), TALL_GRASS = create(() -> Blocks.TALL_GRASS, b -> b.duration(100) .output(.5f, Items.WHEAT_SEEDS)), @@ -235,70 +236,70 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { ATMO_GILIA = create(Mods.ATM.recipeId("gilia"), b -> b.duration(50) .require(Mods.ATM, "gilia") - .output(Items.PURPLE_DYE, 2) - .output(.1f, Items.MAGENTA_DYE, 2) - .output(.1f, Items.PINK_DYE) + .output(dye(DyeColor.PURPLE), 2) + .output(.1f, dye(DyeColor.MAGENTA), 2) + .output(.1f, dye(DyeColor.PINK)) .whenModLoaded(Mods.ATM.getId())), ATMO_HOT_BRUSH = create(Mods.ATM.recipeId("hot_monkey_brush"), b -> b.duration(50) .require(Mods.ATM, "hot_monkey_brush") - .output(Items.ORANGE_DYE, 2) - .output(.05f, Items.RED_DYE) - .output(.05f, Items.YELLOW_DYE) + .output(dye(DyeColor.ORANGE), 2) + .output(.05f, dye(DyeColor.RED)) + .output(.05f, dye(DyeColor.YELLOW)) .whenModLoaded(Mods.ATM.getId())), ATMO_SCALDING_BRUSH = create(Mods.ATM.recipeId("scalding_monkey_brush"), b -> b.duration(50) .require(Mods.ATM, "scalding_monkey_brush") - .output(Items.RED_DYE, 2) - .output(.1f, Items.RED_DYE, 2) - .output(.1f, Items.ORANGE_DYE) + .output(dye(DyeColor.RED), 2) + .output(.1f, dye(DyeColor.RED), 2) + .output(.1f, dye(DyeColor.ORANGE)) .whenModLoaded(Mods.ATM.getId())), ATMO_WARM_BRUSH = create(Mods.ATM.recipeId("warm_monkey_brush"), b -> b.duration(50) .require(Mods.ATM, "warm_monkey_brush") - .output(Items.YELLOW_DYE, 2) - .output(.1f, Items.YELLOW_DYE, 2) - .output(.1f, Items.ORANGE_DYE) + .output(dye(DyeColor.YELLOW), 2) + .output(.1f, dye(DyeColor.YELLOW), 2) + .output(.1f, dye(DyeColor.ORANGE)) .whenModLoaded(Mods.ATM.getId())), ATMO_YUCCA_FLOWER = create(Mods.ATM.recipeId("yucca_flower"), b -> b.duration(50) .require(Mods.ATM, "yucca_flower") - .output(Items.LIGHT_GRAY_DYE, 2) - .output(.05f, Items.WHITE_DYE) + .output(dye(DyeColor.LIGHT_GRAY), 2) + .output(.05f, dye(DyeColor.WHITE)) .whenModLoaded(Mods.ATM.getId())), ATMO_TALL_YUCCA_FLOWER = create(Mods.ATM.recipeId("tall_yucca_flower"), b -> b.duration(50) .require(Mods.ATM, "tall_yucca_flower") - .output(Items.LIGHT_GRAY_DYE, 3) - .output(0.25f, Items.LIGHT_GRAY_DYE, 2) - .output(.05f, Items.WHITE_DYE, 2) + .output(dye(DyeColor.LIGHT_GRAY), 3) + .output(0.25f, dye(DyeColor.LIGHT_GRAY), 2) + .output(.05f, dye(DyeColor.WHITE), 2) .whenModLoaded(Mods.ATM.getId())), ATMO_FIRETHORN = create(Mods.ATM.recipeId("firethorn"), b -> b.duration(50) .require(Mods.ATM, "firethorn") - .output(Items.RED_DYE, 2) - .output(.1f, Items.ORANGE_DYE, 2) - .output(.1f, Items.GREEN_DYE) + .output(dye(DyeColor.RED), 2) + .output(.1f, dye(DyeColor.ORANGE), 2) + .output(.1f, dye(DyeColor.GREEN)) .whenModLoaded(Mods.ATM.getId())), ATMO_FORSYTHIA = create(Mods.ATM.recipeId("forsythia"), b -> b.duration(50) .require(Mods.ATM, "forsythia") - .output(Items.YELLOW_DYE, 2) - .output(.1f, Items.LIME_DYE, 2) - .output(.1f, Items.YELLOW_DYE) + .output(dye(DyeColor.YELLOW), 2) + .output(.1f, dye(DyeColor.LIME), 2) + .output(.1f, dye(DyeColor.YELLOW)) .whenModLoaded(Mods.ATM.getId())), ATMO_CACTUS = create(Mods.ATM.recipeId("barrel_cactus"), b -> b.duration(50) .require(Mods.ATM, "barrel_cactus") - .output(Items.ORANGE_DYE, 2) - .output(.1f, Items.GREEN_DYE, 3) + .output(dye(DyeColor.ORANGE), 2) + .output(.1f, dye(DyeColor.GREEN), 3) .whenModLoaded(Mods.ATM.getId())), ATMO_HYACINTH = create(Mods.ATM.recipeId("water_hyacinth"), b -> b.duration(50) .require(Mods.ATM, "water_hyacinth") - .output(Items.PURPLE_DYE, 3) - .output(0.25f, Items.LIME_DYE, 2) - .output(.05f, Items.BROWN_DYE, 2) + .output(dye(DyeColor.PURPLE), 3) + .output(0.25f, dye(DyeColor.LIME), 2) + .output(.05f, dye(DyeColor.BROWN), 2) .whenModLoaded(Mods.ATM.getId())), ATMO_SAND_1 = moddedSandstone(Mods.ATM, "arid"), @@ -308,70 +309,70 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { AUTUM_CROCUS = create(Mods.AUTUM.recipeId("autumn_crocus"), b -> b.duration(50) .require(Mods.AUTUM, "autumn_crocus") - .output(Items.MAGENTA_DYE, 2) - .output(.1f, Items.PINK_DYE, 2) - .output(.1f, Items.PURPLE_DYE) + .output(dye(DyeColor.MAGENTA), 2) + .output(.1f, dye(DyeColor.PINK), 2) + .output(.1f, dye(DyeColor.PURPLE)) .whenModLoaded(Mods.AUTUM.getId())), // Biomes O' Plenty BOP_HYDRANGEA = bopFlower("blue_hydrangea", List.of(1f, .05f, .25f), - List.of(Items.LIGHT_BLUE_DYE, Items.GREEN_DYE, Items.LIGHT_BLUE_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.GREEN), dye(DyeColor.LIGHT_BLUE)), List.of(3, 2, 2)), BOP_GOLDENROD = bopFlower("goldenrod", List.of(1f, .05f, .25f), - List.of(Items.YELLOW_DYE, Items.YELLOW_DYE, Items.GREEN_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.YELLOW), dye(DyeColor.GREEN)), List.of(3, 2, 2)), BOP_BLOSSOM = bopFlower("burning_blossom", List.of(1f, .1f), - List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.LIME)), List.of(2, 1)), BOP_GLOWFLOWER = bopFlower("glowflower", List.of(1f, .1f), - List.of(Items.CYAN_DYE, Items.WHITE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.CYAN), dye(DyeColor.WHITE)), List.of(2, 1)), BOP_LAVENDER = bopFlower("lavender", List.of(1f, .05f), - List.of(Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.GREEN)), List.of(2, 1)), BOP_TALL_LAVENDER = bopFlower("tall_lavender", List.of(1f, 0.25f, .05f), - List.of(Items.PURPLE_DYE, Items.PURPLE_DYE, Items.GREEN_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.PURPLE), dye(DyeColor.GREEN)), List.of(3, 2, 2)), BOP_WHITE_LAVENDER = bopFlower("white_lavender", List.of(1f, .05f), - List.of(Items.WHITE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.GREEN)), List.of(2, 1)), BOP_TALL_WHITE_LAVENDER = bopFlower("tall_white_lavender", List.of(1f, 0.25f, .05f), - List.of(Items.WHITE_DYE, Items.LIGHT_BLUE_DYE, Items.GREEN_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.LIGHT_BLUE), dye(DyeColor.GREEN)), List.of(3, 2, 2)), BOP_COSMOS = bopFlower("orange_cosmos", List.of(1f, .1f), - List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.LIME)), List.of(2, 1)), BOP_DAFFODIL = bopFlower("pink_daffodil", List.of(1f, .25f, .05f), - List.of(Items.PINK_DYE, Items.MAGENTA_DYE, Items.CYAN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.MAGENTA), dye(DyeColor.CYAN)), List.of(2, 1, 1)), BOP_HIBISCUS = bopFlower("pink_hibiscus", List.of(1f, .25f, .1f), - List.of(Items.PINK_DYE, Items.YELLOW_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.YELLOW), dye(DyeColor.GREEN)), List.of(2, 1, 1)), BOP_ROSE = bopFlower("rose", List.of(1f, .05f), - List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1)), - BOP_VIOLET = bopFlower("violet", 1f, Items.PURPLE_DYE, 2), + BOP_VIOLET = bopFlower("violet", 1f, dye(DyeColor.PURPLE), 2), BOP_WILDFLOWER = bopFlower("wildflower", List.of(1f, .1f), - List.of(Items.MAGENTA_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.LIME)), List.of(2, 1)), - BOP_PETALS = bopFlower("white_petals", 1f, Items.WHITE_DYE, 2), + BOP_PETALS = bopFlower("white_petals", 1f, dye(DyeColor.WHITE), 2), BOP_IRIS = bopFlower("icy_iris", List.of(1f, .05f, .25f), - List.of(Items.LIGHT_BLUE_DYE, Items.LIGHT_GRAY_DYE, Items.LIGHT_BLUE_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.LIGHT_GRAY), dye(DyeColor.LIGHT_BLUE)), List.of(3, 2, 2)), - BOP_LILY = bopFlower("wilted_lily", 1f, Items.GRAY_DYE, 2), + BOP_LILY = bopFlower("wilted_lily", 1f, dye(DyeColor.GRAY), 2), - BOP_ENDBLOOM = bopFlower("endbloom", 1f, Items.LIGHT_GRAY_DYE, 2), + BOP_ENDBLOOM = bopFlower("endbloom", 1f, dye(DyeColor.LIGHT_GRAY), 2), BOP_WATERLILY = bopFlower("waterlily", List.of(1f, .05f), - List.of(Items.RED_DYE, Items.PINK_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.PINK)), List.of(2, 1)), BOP_CACTUS = bopFlower("tiny_cactus", List.of(1f, 0.1f), - List.of(Items.GREEN_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.GREEN), dye(DyeColor.GREEN)), List.of(2, 1)), BOP_CATTAIL = bopFlower("cattail", List.of(1f, .05f, .25f), - List.of(Items.BROWN_DYE, Items.GREEN_DYE, Items.BROWN_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.BROWN), dye(DyeColor.GREEN), dye(DyeColor.BROWN)), List.of(3, 2, 2)), BOP_SAND_1 = moddedSandstone(Mods.BOP, "white"), BOP_SAND_2 = moddedSandstone(Mods.BOP, "orange"), @@ -385,170 +386,170 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { BB_BUTTERCUP = create(Mods.BB.recipeId("buttercup"), b -> b.duration(50) .require(Mods.BB, "buttercup") - .output(Items.YELLOW_DYE, 2) - .output(.1f, Items.LIME_DYE) + .output(dye(DyeColor.YELLOW), 2) + .output(.1f, dye(DyeColor.LIME)) .whenModLoaded(Mods.BB.getId())), BB_PINK_CLOVER = create(Mods.BB.recipeId("pink_clover"), b -> b.duration(50) .require(Mods.BB, "pink_clover") - .output(Items.PINK_DYE, 2) - .output(.1f, Items.LIME_DYE) + .output(dye(DyeColor.PINK), 2) + .output(.1f, dye(DyeColor.LIME)) .whenModLoaded(Mods.BB.getId())), BB_WHITE_CLOVER = create(Mods.BB.recipeId("white_clover"), b -> b.duration(50) .require(Mods.BB, "white_clover") - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIME_DYE) + .output(dye(DyeColor.WHITE), 2) + .output(.1f, dye(DyeColor.LIME)) .whenModLoaded(Mods.BB.getId())), // Oh The Biomes We've Gone BWG_ALLIUM_BUSH = bwgFlower("allium_flower_bush", List.of(1f, .05f, .25f), - List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.GREEN), dye(DyeColor.MAGENTA)), List.of(3, 2, 2)), BWG_BELLFLOWER = bwgFlower("alpine_bellflower", List.of(1f, .1f, .1f), - List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.GREEN_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.BLUE), dye(DyeColor.GREEN)), List.of(2, 2, 1)), BWG_AMARANTH = bwgFlower("amaranth", List.of(1f, .05f, .25f), - List.of(Items.RED_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN), dye(DyeColor.RED)), List.of(3, 2, 2)), BWG_ANGELICA = bwgFlower("angelica", List.of(1f, .1f), - List.of(Items.WHITE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_BEGONIA = bwgFlower("begonia", List.of(1f, .1f), - List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_BISTORT = bwgFlower("bistort", List.of(1f, .1f, .1f), - List.of(Items.PINK_DYE, Items.RED_DYE, Items.GREEN_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 2, 1)), BWG_BLACK_ROSE = bwgFlower("black_rose", List.of(1f, .1f), - List.of(Items.BLACK_DYE, Items.BLACK_DYE), List.of(2, 1)), + List.of(dye(DyeColor.BLACK), dye(DyeColor.BLACK)), List.of(2, 1)), BWG_BLUE_SAGE = bwgFlower("blue_sage", List.of(1f, .1f), - List.of(Items.BLUE_DYE, Items.CYAN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.BLUE), dye(DyeColor.CYAN)), List.of(2, 1)), BWG_CALIFORNIA_POPPY = bwgFlower("california_poppy", List.of(1f, .05f), - List.of(Items.ORANGE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_CROCUS = bwgFlower("crocus", List.of(1f, .1f, .1f), - List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.GREEN_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.BLUE), dye(DyeColor.GREEN)), List.of(2, 2, 1)), BWG_CYAN_AMARANTH = bwgFlower("cyan_amaranth", List.of(1f, .05f, .25f), - List.of(Items.CYAN_DYE, Items.GREEN_DYE, Items.CYAN_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.CYAN), dye(DyeColor.GREEN), dye(DyeColor.CYAN)), List.of(3, 2, 2)), BWG_CYAN_ROSE = bwgFlower("cyan_rose", List.of(1f, .1f), - List.of(Items.CYAN_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.CYAN), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_CYAN_TULIP = bwgFlower("cyan_tulip", List.of(1f, .1f), - List.of(Items.CYAN_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.CYAN), dye(DyeColor.LIME)), List.of(2, 1)), BWG_DAFFODIL = bwgFlower("daffodil", List.of(1f, .1f, .1f), - List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN), dye(DyeColor.MAGENTA)), List.of(2, 1, 1)), BWG_DELPHINIUM = bwgFlower("delphinium", List.of(1f, .1f), - List.of(Items.BLUE_DYE, Items.BLUE_DYE), List.of(3, 1)), + List.of(dye(DyeColor.BLUE), dye(DyeColor.BLUE)), List.of(3, 1)), BWG_FAIRY_SLIPPER = bwgFlower("fairy_slipper", List.of(1f, .1f, .1f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK), dye(DyeColor.YELLOW)), List.of(2, 2, 1)), BWG_FIRECRACKER_BUSH = bwgFlower("firecracker_flower_bush", List.of(1f, .05f, .25f), - List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN), dye(DyeColor.RED)), List.of(3, 2, 2)), BWG_FOXGLOVE = bwgFlower("foxglove", List.of(1f, .25f, .25f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), BWG_GREEN_TULIP = bwgFlower("green_tulip", List.of(1f, .1f), - List.of(Items.LIME_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.LIME), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_GUZMANIA = bwgFlower("guzmania", List.of(1f, .25f, .25f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), BWG_HYDRANGEA = bwgFlower("hydrangea_bush", List.of(1f, .1f, .1f), - List.of(Items.PURPLE_DYE, Items.BLUE_DYE, Items.WHITE_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.BLUE), dye(DyeColor.WHITE)), List.of(2, 2, 1)), BWG_INCAN_LILY = bwgFlower("incan_lily", List.of(1f, .1f, .1f), - List.of(Items.ORANGE_DYE, Items.GREEN_DYE, Items.RED_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.GREEN), dye(DyeColor.RED)), List.of(2, 1, 1)), BWG_IRIS = bwgFlower("iris", List.of(1f, .05f), - List.of(Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_ORCHID = bwgFlower("japanese_orchid", List.of(1f, .05f), - List.of(Items.PINK_DYE, Items.WHITE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.WHITE)), List.of(2, 1)), BWG_PURPLE_SAGE = bwgFlower("purple_sage", List.of(1f, .1f), - List.of(Items.PURPLE_DYE, Items.MAGENTA_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.MAGENTA)), List.of(2, 1)), BWG_KOVAN = bwgFlower("kovan_flower", List.of(1f, .2f, .05f), - List.of(Items.RED_DYE, Items.LIME_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.LIME), dye(DyeColor.GREEN)), List.of(2, 1, 1)), BWG_LAZARUS_BELLFLOWER = bwgFlower("lazarus_bellflower", List.of(1f, .1f), - List.of(Items.MAGENTA_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_LOLLIPOP = bwgFlower("lollipop_flower", List.of(1f, .25f, .05f), - List.of(Items.YELLOW_DYE, Items.YELLOW_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.YELLOW), dye(DyeColor.GREEN)), List.of(2, 1, 1)), BWG_MAGENTA_AMARANTH = bwgFlower("magenta_amaranth", List.of(1f, .05f, .25f), - List.of(Items.MAGENTA_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.GREEN), dye(DyeColor.MAGENTA)), List.of(3, 2, 2)), BWG_MAGENTA_TULIP = bwgFlower("magenta_tulip", List.of(1f, .1f), - List.of(Items.MAGENTA_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.LIME)), List.of(2, 1)), BWG_ORANGE_AMARANTH = bwgFlower("orange_amaranth", List.of(1f, .05f, .25f), - List.of(Items.ORANGE_DYE, Items.GREEN_DYE, Items.ORANGE_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.GREEN), dye(DyeColor.ORANGE)), List.of(3, 2, 2)), BWG_DAISY = bwgFlower("orange_daisy", List.of(1f, .2f, .05f), - List.of(Items.ORANGE_DYE, Items.YELLOW_DYE, Items.LIME_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.YELLOW), dye(DyeColor.LIME)), List.of(2, 1, 1)), BWG_OSIRIA_ROSE = bwgFlower("osiria_rose", List.of(1f, .1f), - List.of(Items.PINK_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_PEACH_LEATHER = bwgFlower("peach_leather_flower", List.of(1f, .25f), - List.of(Items.PINK_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_PINK_ALLIUM = bwgFlower("pink_allium", List.of(1f, .1f, .1f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.PURPLE_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK), dye(DyeColor.PURPLE)), List.of(2, 2, 1)), BWG_PINK_ALLIUM_BUSH = bwgFlower("pink_allium_flower_bush", List.of(1f, .05f, .25f), - List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.MAGENTA_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.GREEN), dye(DyeColor.MAGENTA)), List.of(3, 2, 2)), BWG_PINK_ANEMONE = bwgFlower("pink_anemone", List.of(1f, .1f), - List.of(Items.PINK_DYE, Items.PURPLE_DYE), List.of(2, 2)), + List.of(dye(DyeColor.PINK), dye(DyeColor.PURPLE)), List.of(2, 2)), BWG_PINK_DAFODIL = bwgFlower("pink_daffodil", List.of(1f, .1f, .1f), - List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.WHITE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN), dye(DyeColor.WHITE)), List.of(2, 1, 1)), BWG_PROTEA = bwgFlower("protea_flower", List.of(1f, .1f, .05f), - List.of(Items.MAGENTA_DYE, Items.LIME_DYE, Items.PURPLE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.LIME), dye(DyeColor.PURPLE)), List.of(2, 1, 1)), BWG_PURPLE_AMARANTH = bwgFlower("purple_amaranth", List.of(1f, .05f, .25f), - List.of(Items.PURPLE_DYE, Items.GREEN_DYE, Items.PURPLE_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.GREEN), dye(DyeColor.PURPLE)), List.of(3, 2, 2)), BWG_PURPLE_TULIP = bwgFlower("purple_tulip", List.of(1f, .1f), - List.of(Items.PURPLE_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.LIME)), List.of(2, 1)), BWG_RICHEA = bwgFlower("richea", List.of(1f, .1f, .05f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), BWG_ROSE = bwgFlower("rose", List.of(1f, .1f), - List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_SILVER_VASE = bwgFlower("silver_vase_flower", List.of(1f, .1f, .05f), - List.of(Items.PINK_DYE, Items.GREEN_DYE, Items.WHITE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN), dye(DyeColor.WHITE)), List.of(2, 1, 1)), BWG_SNOWDROPS = bwgFlower("snowdrops", List.of(1f, .1f, .1f), - List.of(Items.WHITE_DYE, Items.LIME_DYE, Items.WHITE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.LIME), dye(DyeColor.WHITE)), List.of(2, 1, 1)), BWG_TALL_ALLIUM = bwgFlower("tall_allium", List.of(1f, .05f, .25f), - List.of(Items.PURPLE_DYE, Items.PURPLE_DYE, Items.MAGENTA_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.PURPLE), dye(DyeColor.MAGENTA)), List.of(3, 2, 2)), BWG_TALL_PINK_ALLIUM = bwgFlower("tall_pink_allium", List.of(1f, .05f, .25f), - List.of(Items.PINK_DYE, Items.PINK_DYE, Items.MAGENTA_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.PINK), dye(DyeColor.PINK), dye(DyeColor.MAGENTA)), List.of(3, 2, 2)), BWG_VIOLET_LEATHER = bwgFlower("violet_leather_flower", List.of(1f, .25f), - List.of(Items.BLUE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.BLUE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_WHITE_ANEMONE = bwgFlower("white_anemone", List.of(1f, .1f), - List.of(Items.WHITE_DYE, Items.LIGHT_GRAY_DYE), List.of(2, 2)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.LIGHT_GRAY)), List.of(2, 2)), BWG_PUFFBALL = create(Mods.BWG.recipeId("white_puffball_cap"), b -> b.duration(150) .require(Mods.BWG, "white_puffball_cap") @@ -556,49 +557,49 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { .whenModLoaded(Mods.BWG.getId())), BWG_WHITE_SAGE = bwgFlower("white_sage", List.of(1f, .1f), - List.of(Items.WHITE_DYE, Items.GRAY_DYE), List.of(2, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.GRAY)), List.of(2, 1)), BWG_WINTER_CYCLAMEN = bwgFlower("winter_cyclamen", List.of(1f, .1f), - List.of(Items.CYAN_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.CYAN), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_WINTER_ROSE = bwgFlower("winter_rose", List.of(1f, .1f), - List.of(Items.WHITE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_WINTER_SCILLA = bwgFlower("winter_scilla", List.of(1f, .1f), - List.of(Items.LIGHT_BLUE_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_YELLOW_DAFFODIL = bwgFlower("yellow_daffodil", List.of(1f, .1f, .1f), - List.of(Items.YELLOW_DYE, Items.GREEN_DYE, Items.PINK_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.GREEN), dye(DyeColor.PINK)), List.of(2, 1, 1)), BWG_YELLOW_TULIP = bwgFlower("yellow_tulip", List.of(1f, .1f), - List.of(Items.YELLOW_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.LIME)), List.of(2, 1)), BWG_WHITE_ALLIUM = bwgFlower("white_allium", List.of(1f, .1f, .1f), - List.of(Items.WHITE_DYE, Items.LIGHT_GRAY_DYE, Items.GRAY_DYE), List.of(2, 2, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.LIGHT_GRAY), dye(DyeColor.GRAY)), List.of(2, 2, 1)), BWG_TALL_WHITE_ALLIUM = bwgFlower("tall_white_allium", List.of(1f, .05f, .25f), - List.of(Items.WHITE_DYE, Items.WHITE_DYE, Items.LIGHT_GRAY_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.WHITE), dye(DyeColor.LIGHT_GRAY)), List.of(3, 2, 2)), BWG_WHITE_ALLIUM_BUSH = bwgFlower("white_allium_flower_bush", List.of(1f, .05f, .25f), - List.of(Items.WHITE_DYE, Items.GREEN_DYE, Items.LIGHT_GRAY_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.GREEN), dye(DyeColor.LIGHT_GRAY)), List.of(3, 2, 2)), BWG_BLUE_ROSE_BUSH = bwgFlower("blue_rose_bush", List.of(1f, .05f, .25f), - List.of(Items.BLUE_DYE, Items.GREEN_DYE, Items.BLUE_DYE), List.of(3, 2, 2)), + List.of(dye(DyeColor.BLUE), dye(DyeColor.GREEN), dye(DyeColor.BLUE)), List.of(3, 2, 2)), BWG_HORSEWEED = bwgFlower("horseweed", List.of(1f, 0.25f), - List.of(Items.GREEN_DYE, Items.BROWN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.GREEN), dye(DyeColor.BROWN)), List.of(2, 1)), BWG_WINTER_SUCCULENT = bwgFlower("winter_succulent", List.of(1f, 0.25f), - List.of(Items.GREEN_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.GREEN), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_MINI_CACTUS = bwgFlower("mini_cactus", List.of(1f), - List.of(Items.GREEN_DYE), List.of(2)), + List.of(dye(DyeColor.GREEN)), List.of(2)), BWG_PRICKLY_PEAR_CACTUS = bwgFlower("prickly_pear_cactus", List.of(1f, 0.25f), - List.of(Items.GREEN_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.GREEN), dye(DyeColor.GREEN)), List.of(2, 1)), BWG_GOLDEN_SPINED_CACTUS = bwgFlower("golden_spined_cactus", List.of(1f, 0.25f), - List.of(Items.GREEN_DYE, Items.YELLOW_DYE), List.of(2, 1)), + List.of(dye(DyeColor.GREEN), dye(DyeColor.YELLOW)), List.of(2, 1)), BWG_SAND_1 = moddedSandstone(Mods.BWG, "black"), BWG_SAND_2 = moddedSandstone(Mods.BWG, "white"), @@ -610,64 +611,64 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { // Environmental ENV_BIRD_OF_PARADISE = envFlower("bird_of_paradise", List.of(1f, .25f, .25f), - List.of(Items.ORANGE_DYE, Items.BLUE_DYE, Items.RED_DYE), List.of(3, 1, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.BLUE), dye(DyeColor.RED)), List.of(3, 1, 1)), ENV_BLUE_DELPHINIUM = envFlower("blue_delphinium", List.of(1f,.1f), - List.of(Items.LIGHT_BLUE_DYE, Items.LIGHT_BLUE_DYE), List.of(3,1)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.LIGHT_BLUE)), List.of(3,1)), ENV_BLUEBELL = envFlower("bluebell", List.of(1f), - List.of(Items.BLUE_DYE), List.of(2)), + List.of(dye(DyeColor.BLUE)), List.of(2)), ENV_CARTWHEEL = envFlower("cartwheel", List.of(1f, .1f), - List.of(Items.PINK_DYE, Items.ORANGE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.ORANGE)), List.of(2, 1)), ENV_DIANTHUS = envFlower("dianthus", List.of(1f,.1f), - List.of(Items.LIME_DYE, Items.LIME_DYE), List.of(2,1)), + List.of(dye(DyeColor.LIME), dye(DyeColor.LIME)), List.of(2,1)), ENV_MAGENTA_HIBISCUS = envFlower("magenta_hibiscus", List.of(1f, .1f), - List.of(Items.MAGENTA_DYE, Items.MAGENTA_DYE), List.of(2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.MAGENTA)), List.of(2, 1)), ENV_ORANGE_HIBISCUS = envFlower("orange_hibiscus", List.of(1f, .1f), - List.of(Items.ORANGE_DYE, Items.ORANGE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.ORANGE)), List.of(2, 1)), ENV_PINK_DELPHINIUM = envFlower("pink_delphinium", List.of(1f, .1f), - List.of(Items.PINK_DYE, Items.PINK_DYE), List.of(3, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.PINK)), List.of(3, 1)), ENV_PINK_HIBISCUS = envFlower("pink_hibiscus", List.of(1f, .1f), - List.of(Items.PINK_DYE, Items.PINK_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.PINK)), List.of(2, 1)), ENV_PURPLE_DELPHINIUM = envFlower("purple_delphinium", List.of(1f, .1f), - List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(3, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.PURPLE)), List.of(3, 1)), ENV_PURPLE_HIBISCUS = envFlower("purple_hibiscus", List.of(1f, .1f), - List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.PURPLE)), List.of(2, 1)), ENV_RED_HIBISCUS = envFlower("red_hibiscus", List.of(1f, .1f), - List.of(Items.RED_DYE, Items.RED_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.RED)), List.of(2, 1)), ENV_RED_LOTUS = envFlower("red_lotus_flower", List.of(1f, .1f), - List.of(Items.RED_DYE, Items.RED_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.RED)), List.of(2, 1)), ENV_VIOLET = envFlower("violet", List.of(1f, .1f), - List.of(Items.PURPLE_DYE, Items.PURPLE_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.PURPLE)), List.of(2, 1)), ENV_WHITE_DELPHINIUM = envFlower("white_delphinium", List.of(1f, .1f), - List.of(Items.WHITE_DYE, Items.WHITE_DYE), List.of(3, 1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.WHITE)), List.of(3, 1)), ENV_WHITE_LOTUS_FLOWER = envFlower("white_lotus_flower", List.of(1f,.1f), - List.of(Items.WHITE_DYE, Items.WHITE_DYE), List.of(2,1)), + List.of(dye(DyeColor.WHITE), dye(DyeColor.WHITE)), List.of(2,1)), ENV_YELLOW_HIBISCUS = envFlower("yellow_hibiscus", List.of(1f, .1f), - List.of(Items.YELLOW_DYE, Items.YELLOW_DYE), List.of(2, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.YELLOW)), List.of(2, 1)), ENV_TASSELFLOWER = envFlower("tasselflower", List.of(1f, .1f), - List.of(Items.ORANGE_DYE, Items.GREEN_DYE), List.of(2,1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.GREEN)), List.of(2,1)), // Duidcraft DC_LAVENDER = create(Mods.DRUIDCRAFT.recipeId("lavender"), b -> b.duration(50) .require(Mods.DRUIDCRAFT, "lavender") - .output(Items.PURPLE_DYE, 2) - .output(.1f, Items.PURPLE_DYE) + .output(dye(DyeColor.PURPLE), 2) + .output(.1f, dye(DyeColor.PURPLE)) .whenModLoaded(Mods.DRUIDCRAFT.getId())), // Supplementaries @@ -682,7 +683,7 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { TIC_NERCOTIC_BONE = create(Mods.TIC.recipeId("nercotic_bone"), b -> b.duration(100) .require(Mods.TIC, "necrotic_bone") .output(Items.BONE_MEAL, 3) - .output(.25f, Items.BLACK_DYE) + .output(.25f, dye(DyeColor.BLACK)) .output(.25f, Items.BONE_MEAL, 3) .whenModLoaded(Mods.TIC.getId())), @@ -690,155 +691,155 @@ public final class CreateMillingRecipeGen extends MillingRecipeGen { UA_FLOWERING_RUSH = create(Mods.UA.recipeId("flowering_rush"), b -> b.duration(50) .require(Mods.UA, "flowering_rush") - .output(Items.PINK_DYE, 3) - .output(.25f, Items.PINK_DYE, 2) + .output(dye(DyeColor.PINK), 3) + .output(.25f, dye(DyeColor.PINK), 2) .whenModLoaded(Mods.UA.getId())), UA_PINK_SEAROCKET = create(Mods.UA.recipeId("pink_searocket"), b -> b.duration(50) .require(Mods.UA, "pink_searocket") - .output(Items.PINK_DYE, 2) - .output(.1f, Items.GREEN_DYE) + .output(dye(DyeColor.PINK), 2) + .output(.1f, dye(DyeColor.GREEN)) .whenModLoaded(Mods.UA.getId())), UA_WHITE_SEAROCKET = create(Mods.UA.recipeId("white_searocket"), b -> b.duration(50) .require(Mods.UA, "white_searocket") - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.GREEN_DYE) + .output(dye(DyeColor.WHITE), 2) + .output(.1f, dye(DyeColor.GREEN)) .whenModLoaded(Mods.UA.getId())), // Regions Unexplored RU_ALPHA_DANDELION = ruFlower("alpha_dandelion", List.of(1f, 0.05f), - List.of(Items.YELLOW_DYE, Items.YELLOW_DYE), List.of(2, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.YELLOW)), List.of(2, 1)), RU_ALPHA_ROSE = ruFlower("alpha_rose", List.of(1f, 0.05f), - List.of(Items.RED_DYE, Items.RED_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.RED)), List.of(2, 1)), RU_ASTER = ruFlower("aster", List.of(1f, 0.2f, 0.05f), - List.of(Items.LIGHT_BLUE_DYE, Items.WHITE_DYE, Items.LIGHT_GRAY_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.WHITE), dye(DyeColor.LIGHT_GRAY)), List.of(2, 1, 1)), RU_BLACK_SNOWBELLE = ruFlower("black_snowbelle", List.of(1f), - List.of(Items.BLACK_DYE), List.of(2)), + List.of(dye(DyeColor.BLACK)), List.of(2)), RU_BLEEDING_HEART = ruFlower("bleeding_heart", List.of(1f, 0.1f), - List.of(Items.MAGENTA_DYE, Items.PINK_DYE), List.of(2, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PINK)), List.of(2, 1)), RU_BLUE_LUPINE = ruFlower("blue_lupine", List.of(1f), - List.of(Items.BLUE_DYE), List.of(2)), + List.of(dye(DyeColor.BLUE)), List.of(2)), RU_BLUE_SNOWBELLE = ruFlower("blue_snowbelle", List.of(1f), - List.of(Items.BLUE_DYE), List.of(2)), + List.of(dye(DyeColor.BLUE)), List.of(2)), RU_BROWN_SNOWBELLE = ruFlower("brown_snowbelle", List.of(1f), - List.of(Items.BROWN_DYE), List.of(2)), + List.of(dye(DyeColor.BROWN)), List.of(2)), RU_CACTUS_FLOWER = ruFlower("cactus_flower", List.of(1f, 0.2f, 0.1f), - List.of(Items.MAGENTA_DYE, Items.PURPLE_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.MAGENTA), dye(DyeColor.PURPLE), dye(DyeColor.GREEN)), List.of(2, 1, 1)), RU_CYAN_SNOWBELLE = ruFlower("cyan_snowbelle", List.of(1f), - List.of(Items.CYAN_DYE), List.of(2)), + List.of(dye(DyeColor.CYAN)), List.of(2)), RU_DAISY = ruFlower("daisy", List.of(1f, 0.2f, 0.05f), - List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.LIGHT_GRAY), dye(DyeColor.WHITE), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), RU_DAY_LILY = ruFlower("day_lily", List.of(1f, 0.1f, 0.1f), - List.of(Items.ORANGE_DYE, Items.LIME_DYE, Items.RED_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.LIME), dye(DyeColor.RED)), List.of(2, 1, 1)), RU_DORCEL = ruFlower("dorcel", List.of(1f, 0.1f), - List.of(Items.BLACK_DYE, Items.BROWN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.BLACK), dye(DyeColor.BROWN)), List.of(2, 1)), RU_FELICIA_DAISY = ruFlower("felicia_daisy", List.of(1f, 0.2f, 0.05f), - List.of(Items.LIGHT_BLUE_DYE, Items.BLUE_DYE, Items.WHITE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.LIGHT_BLUE), dye(DyeColor.BLUE), dye(DyeColor.WHITE)), List.of(2, 1, 1)), RU_FIREWEED = ruFlower("fireweed", List.of(1f), - List.of(Items.MAGENTA_DYE), List.of(2)), + List.of(dye(DyeColor.MAGENTA)), List.of(2)), RU_GLITERING_BLOOM = ruFlower("glistering_bloom", List.of(1f, 0.25f, 0.25f), - List.of(Items.PINK_DYE, Items.MAGENTA_DYE, Items.LIGHT_BLUE_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.MAGENTA), dye(DyeColor.LIGHT_BLUE)), List.of(2, 1, 1)), RU_GRAY_SNOWBELLE = ruFlower("gray_snowbelle", List.of(1f), - List.of(Items.GRAY_DYE), List.of(2)), + List.of(dye(DyeColor.GRAY)), List.of(2)), RU_GREEN_SNOWBELLE = ruFlower("green_snowbelle", List.of(1f), - List.of(Items.GREEN_DYE), List.of(2)), + List.of(dye(DyeColor.GREEN)), List.of(2)), RU_HIBISCUS = ruFlower("hibiscus", List.of(1f, 0.2f), - List.of(Items.YELLOW_DYE, Items.RED_DYE), List.of(2, 1)), + List.of(dye(DyeColor.YELLOW), dye(DyeColor.RED)), List.of(2, 1)), RU_HYSSOP = ruFlower("hyssop", List.of(1f, 0.1f, 0.1f), - List.of(Items.PURPLE_DYE, Items.MAGENTA_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.PURPLE), dye(DyeColor.MAGENTA), dye(DyeColor.GREEN)), List.of(2, 1, 1)), RU_LIGHT_BLUE_SNOWBELLE = ruFlower("light_blue_snowbelle", List.of(1f), - List.of(Items.LIGHT_BLUE_DYE), List.of(2)), + List.of(dye(DyeColor.LIGHT_BLUE)), List.of(2)), RU_LIGHT_GRAY_SNOWBELLE = ruFlower("light_gray_snowbelle", List.of(1f), - List.of(Items.LIGHT_GRAY_DYE), List.of(2)), + List.of(dye(DyeColor.LIGHT_GRAY)), List.of(2)), RU_LIME_SNOWBELLE = ruFlower("lime_snowbelle", List.of(1f), - List.of(Items.LIME_DYE), List.of(2)), + List.of(dye(DyeColor.LIME)), List.of(2)), RU_MAGENTA_SNOWBELLE = ruFlower("magenta_snowbelle", List.of(1f), - List.of(Items.MAGENTA_DYE), List.of(2)), + List.of(dye(DyeColor.MAGENTA)), List.of(2)), RU_MALLOW = ruFlower("mallow", List.of(1f, 0.1f), - List.of(Items.ORANGE_DYE, Items.LIME_DYE), List.of(2, 1)), + List.of(dye(DyeColor.ORANGE), dye(DyeColor.LIME)), List.of(2, 1)), RU_ORANGE_CONEFLOWER = ruFlower("orange_coneflower", List.of(1f), - List.of(Items.ORANGE_DYE), List.of(2)), + List.of(dye(DyeColor.ORANGE)), List.of(2)), RU_ORANGE_SNOWBELLE = ruFlower("orange_snowbelle", List.of(1f), - List.of(Items.ORANGE_DYE), List.of(2)), + List.of(dye(DyeColor.ORANGE)), List.of(2)), RU_PINK_LUPINE = ruFlower("pink_lupine", List.of(1f), - List.of(Items.PINK_DYE), List.of(2)), + List.of(dye(DyeColor.PINK)), List.of(2)), RU_PINK_SNOWBELLE = ruFlower("pink_snowbelle", List.of(1f), - List.of(Items.PINK_DYE), List.of(2)), + List.of(dye(DyeColor.PINK)), List.of(2)), RU_POPPY_BUSH = ruFlower("poppy_bush", List.of(1f, 0.1f), - List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1)), RU_PURPLE_CONEFLOWER = ruFlower("purple_coneflower", List.of(1f), - List.of(Items.PURPLE_DYE), List.of(2)), + List.of(dye(DyeColor.PURPLE)), List.of(2)), RU_PURPLE_LUPINE = ruFlower("purple_lupine", List.of(1f), - List.of(Items.PURPLE_DYE), List.of(2)), + List.of(dye(DyeColor.PURPLE)), List.of(2)), RU_PURPLE_SNOWBELLE = ruFlower("purple_snowbelle", List.of(1f), - List.of(Items.PURPLE_DYE), List.of(2)), + List.of(dye(DyeColor.PURPLE)), List.of(2)), RU_RED_LUPINE = ruFlower("red_lupine", List.of(1f), - List.of(Items.RED_DYE), List.of(2)), + List.of(dye(DyeColor.RED)), List.of(2)), RU_RED_SNOWBELLE = ruFlower("red_snowbelle", List.of(1f), - List.of(Items.RED_DYE), List.of(2)), + List.of(dye(DyeColor.RED)), List.of(2)), RU_SALMON_POPPY_BUSH = ruFlower("salmon_poppy_bush", List.of(1f, 0.1f), - List.of(Items.PINK_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.PINK), dye(DyeColor.GREEN)), List.of(2, 1)), RU_TASSEL = ruFlower("tassel", List.of(1f, 0.2f, 0.05f), - List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.LIGHT_GRAY), dye(DyeColor.WHITE), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), RU_TSUBAKI = ruFlower("tsubaki", List.of(1f, 0.1f), - List.of(Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1)), RU_WARATAH = ruFlower("waratah", List.of(1f, 0.2f, 0.1f), - List.of(Items.RED_DYE, Items.RED_DYE, Items.GREEN_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.RED), dye(DyeColor.RED), dye(DyeColor.GREEN)), List.of(2, 1, 1)), RU_WHITE_SNOWBELLE = ruFlower("white_snowbelle", List.of(1f), - List.of(Items.WHITE_DYE), List.of(2)), + List.of(dye(DyeColor.WHITE)), List.of(2)), RU_WHITE_TRILLIUM = ruFlower("white_trillium", List.of(1f, 0.2f, 0.05f), - List.of(Items.LIGHT_GRAY_DYE, Items.WHITE_DYE, Items.YELLOW_DYE), List.of(2, 1, 1)), + List.of(dye(DyeColor.LIGHT_GRAY), dye(DyeColor.WHITE), dye(DyeColor.YELLOW)), List.of(2, 1, 1)), RU_WILTING_TRILLIUM = ruFlower("wilting_trillium", List.of(1f, 0.1f), - List.of(Items.BROWN_DYE, Items.LIGHT_GRAY_DYE), List.of(2, 1)), + List.of(dye(DyeColor.BROWN), dye(DyeColor.LIGHT_GRAY)), List.of(2, 1)), RU_YELLOW_LUPINE = ruFlower("yellow_lupine", List.of(1f), - List.of(Items.YELLOW_DYE), List.of(2)), + List.of(dye(DyeColor.YELLOW)), List.of(2)), RU_YELLOW_SNOWBELLE = ruFlower("yellow_snowbelle", List.of(1f), - List.of(Items.YELLOW_DYE), List.of(2)); + List.of(dye(DyeColor.YELLOW)), List.of(2)); GeneratedRecipe bopFlower(String input, List chances, List dyes, List amounts) { @@ -960,4 +961,8 @@ GeneratedRecipe ruFlower(String input, List chances, public CreateMillingRecipeGen(PackOutput output, CompletableFuture registries) { super(output, registries, Create.ID); } + + private static Item dye(DyeColor color) { + return Items.DYE.pick(color); + } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java index 9a124625ed..8a705dea72 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java @@ -8,6 +8,7 @@ import com.simibubi.create.AllItems; import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.api.data.recipe.ProcessingRecipeGen; +import com.tterrag.registrate.util.DataIngredient; import net.minecraft.core.HolderLookup; import net.minecraft.data.CachedOutput; @@ -31,7 +32,7 @@ * * @see com.simibubi.create.infrastructure.data.CreateDatagen */ -public final class CreateRecipeProvider extends RecipeProvider { +public final class CreateRecipeProvider extends RecipeProvider.Runner { static final List> GENERATORS = new ArrayList<>(); static final int BUCKET = FluidType.BUCKET_VOLUME; @@ -42,7 +43,16 @@ public CreateRecipeProvider(PackOutput output, CompletableFuture registries) { @@ -227,7 +237,12 @@ static ItemLike shadowSteel() { } static Ingredient netherite() { - return Ingredient.of(Tags.Items.INGOTS_NETHERITE); + return tag(Tags.Items.INGOTS_NETHERITE); + } + + static Ingredient tag(TagKey tag) { + return DataIngredient.tag(tag) + .toVanilla(); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateSequencedAssemblyRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateSequencedAssemblyRecipeGen.java index 6ab75d9865..eb7618cda9 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateSequencedAssemblyRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateSequencedAssemblyRecipeGen.java @@ -1,7 +1,6 @@ package com.simibubi.create.foundation.data.recipe; import java.util.concurrent.CompletableFuture; -import java.util.stream.Stream; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllItems; @@ -14,10 +13,13 @@ import com.simibubi.create.foundation.data.recipe.CreateRecipeProvider.I; import net.minecraft.core.HolderLookup; +import net.minecraft.core.HolderSet; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.material.Fluids; +import net.neoforged.neoforge.common.crafting.CompoundIngredient; /** * Create's own Data Generation for Sequenced Assembly recipes @@ -57,15 +59,20 @@ public final class CreateSequencedAssemblyRecipeGen extends SequencedAssemblyRec .addOutput(AllBlocks.TRACK.get(), 1) .loops(1) .addStep(DeployerApplicationRecipe::new, - rb -> rb.require(Ingredient.fromValues( - Stream.of(new Ingredient.TagValue(I.ironNugget()), new Ingredient.TagValue(I.zincNugget()))))) + rb -> rb.require(trackRailsIngredient())) .addStep(DeployerApplicationRecipe::new, - rb -> rb.require(Ingredient.fromValues( - Stream.of(new Ingredient.TagValue(I.ironNugget()), new Ingredient.TagValue(I.zincNugget()))))) + rb -> rb.require(trackRailsIngredient())) .addStep(PressingRecipe::new, rb -> rb)) ; + private static Ingredient trackRailsIngredient() { + return CompoundIngredient.of( + Ingredient.of(HolderSet.emptyNamed(BuiltInRegistries.ITEM, I.ironNugget())), + Ingredient.of(HolderSet.emptyNamed(BuiltInRegistries.ITEM, I.zincNugget())) + ); + } + public CreateSequencedAssemblyRecipeGen(PackOutput output, CompletableFuture registries) { super(output, registries, Create.ID); } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateStandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateStandardRecipeGen.java index 68b0f851b6..b74db3ee4a 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateStandardRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateStandardRecipeGen.java @@ -16,13 +16,11 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import java.util.function.Supplier; import java.util.function.UnaryOperator; import javax.annotation.ParametersAreNonnullByDefault; -import org.jetbrains.annotations.Nullable; - -import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; @@ -42,13 +40,14 @@ import com.tterrag.registrate.util.entry.ItemEntry; import com.tterrag.registrate.util.entry.ItemProviderEntry; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementHolder; -import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.predicates.ItemPredicate; +import net.minecraft.advancements.triggers.InventoryChangeTrigger; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeCategory; @@ -61,7 +60,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.DyeColor; @@ -72,8 +71,11 @@ import net.minecraft.world.item.crafting.BlastingRecipe; import net.minecraft.world.item.crafting.CampfireCookingRecipe; import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CookingBookCategory; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.PlacementInfo; import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeBookCategory; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; @@ -206,7 +208,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { TRANSMITTER = create(AllItems.TRANSMITTER).unlockedByTag(I::copper) .viaShaped(b -> b.define('L', I.copperSheet()) - .define('N', Items.LIGHTNING_ROD) + .define('N', Items.LIGHTNING_ROD.weathering().unaffected()) .define('R', I.redstone()) .pattern(" N ") .pattern("LLL") @@ -214,7 +216,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { ROSE_QUARTZ = create(AllItems.ROSE_QUARTZ).unlockedBy(() -> Items.REDSTONE) .viaShapeless(b -> b.requires(Tags.Items.GEMS_QUARTZ) - .requires(Ingredient.of(I.redstone()), 8)), + .requires(I.tag(I.redstone()), 8)), SAND_PAPER = create(AllItems.SAND_PAPER).unlockedBy(() -> Items.PAPER) .viaShapeless(b -> b.requires(Items.PAPER) @@ -307,7 +309,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { .pattern(" B ")), SUPER_GLUE = create(AllItems.SUPER_GLUE).unlockedByTag(I::ironSheet) - .viaShaped(b -> b.define('A', Tags.Items.SLIMEBALLS) + .viaShaped(b -> b.define('A', Tags.Items.SLIME_BALLS) .define('S', I.ironSheet()) .define('N', Tags.Items.NUGGETS_IRON) .pattern("AS") @@ -376,7 +378,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { .pattern("I")), STICKY_MECHANICAL_PISTON = create(AllBlocks.STICKY_MECHANICAL_PISTON).unlockedBy(I::andesiteAlloy) - .viaShaped(b -> b.define('S', Tags.Items.SLIMEBALLS) + .viaShaped(b -> b.define('S', Tags.Items.SLIME_BALLS) .define('P', AllBlocks.MECHANICAL_PISTON.get()) .pattern("S") .pattern("P")), @@ -749,7 +751,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { .pattern("I")), CONTRAPTION_CONTROLS = create(AllBlocks.CONTRAPTION_CONTROLS).unlockedBy(I::andesiteAlloy) - .viaShaped(b -> b.define('B', ItemTags.BUTTONS) + .viaShaped(b -> b.define('B', ItemTags.WOODEN_BUTTONS) .define('C', I.andesiteCasing()) .define('I', I.electronTube()) .pattern("B") @@ -853,7 +855,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { .viaShaped(b -> b.define('I', I.andesiteAlloy()) .define('C', Tags.Items.COBBLESTONES) .define('R', I.redstone()) - .define('S', Tags.Items.SLIMEBALLS) + .define('S', Tags.Items.SLIME_BALLS) .pattern("ISI") .pattern("CRC")), @@ -1105,7 +1107,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { PACKAGE_FROGPORT = create(AllBlocks.PACKAGE_FROGPORT).unlockedBy(I::cardboard) .viaShaped(b -> b.define('C', I.andesiteAlloy()) - .define('B', Tags.Items.SLIMEBALLS) + .define('B', Tags.Items.SLIME_BALLS) .define('A', I.vault()) .pattern("B") .pattern("A") @@ -1201,7 +1203,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { .viaShapeless(b -> b.requires(I.wheatFlour()) .requires(Items.WATER_BUCKET)), - CHAIN_FROM_ZINC = create(() -> Items.CHAIN).withSuffix("_from_zinc") + CHAIN_FROM_ZINC = create(() -> Items.IRON_CHAIN).withSuffix("_from_zinc") .unlockedByTag(I::zinc) .viaShaped(b -> b.define('C', I.zinc()) .define('S', I.zincNugget()) @@ -1307,7 +1309,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { TREE_FERTILIZER = create(AllItems.TREE_FERTILIZER).returns(2) .unlockedBy(() -> Items.BONE_MEAL) - .viaShapeless(b -> b.requires(Ingredient.of(ItemTags.SMALL_FLOWERS), 2) + .viaShapeless(b -> b.requires(I.tag(Tags.Items.FLOWERS_SMALL), 2) .requires(Ingredient.of(Items.HORN_CORAL, Items.BRAIN_CORAL, Items.TUBE_CORAL, Items.BUBBLE_CORAL, Items.FIRE_CORAL)) .requires(Items.BONE_MEAL)), @@ -1375,7 +1377,7 @@ public final class CreateStandardRecipeGen extends BaseRecipeProvider { UA_TREE_FERTILIZER = create(AllItems.TREE_FERTILIZER::get).returns(2) .unlockedBy(() -> Items.BONE_MEAL) .whenModLoaded(Mods.UA.getId()) - .viaShapeless(b -> b.requires(Ingredient.of(ItemTags.SMALL_FLOWERS), 2) + .viaShapeless(b -> b.requires(I.tag(Tags.Items.FLOWERS_SMALL), 2) .requires(AllItemTags.UA_CORAL.tag) .requires(Items.BONE_MEAL)); @@ -1397,7 +1399,7 @@ GeneratedRecipeBuilder create(Supplier result) { return new GeneratedRecipeBuilder(currentFolder, result); } - GeneratedRecipeBuilder create(ResourceLocation result) { + GeneratedRecipeBuilder create(Identifier result) { return new GeneratedRecipeBuilder(currentFolder, result); } @@ -1407,9 +1409,9 @@ GeneratedRecipeBuilder create(ItemProviderEntry> builder, String recipeType, String path) { - ResourceLocation location = Create.asResource(recipeType + "/" + currentFolder + "/" + path); + Identifier location = Create.asResource(recipeType + "/" + currentFolder + "/" + path); return register(consumer -> { - SpecialRecipeBuilder b = SpecialRecipeBuilder.special(builder); + SpecialRecipeBuilder b = SpecialRecipeBuilder.special(() -> builder.apply(CraftingBookCategory.MISC)); b.save(consumer, location.toString()); }); } @@ -1424,7 +1426,7 @@ GeneratedRecipe blastCrushedMetal(Supplier result, Supplier< GeneratedRecipe blastModdedCrushedMetal(ItemEntry ingredient, CommonMetal metal) { for (Mods mod : metal.mods) { String metalName = metal.getName(mod); - ResourceLocation ingot = mod.ingotOf(metalName); + Identifier ingot = mod.ingotOf(metalName); String modId = mod.getId(); create(ingot).withSuffix("_compat_" + modId) .whenModLoaded(modId) @@ -1509,10 +1511,10 @@ class GeneratedRecipeBuilder { private String path; private String suffix; private Supplier result; - private ResourceLocation compatDatagenOutput; + private Identifier compatDatagenOutput; List recipeConditions; - private Supplier unlockedBy; + private Function unlockedBy; private int amount; private GeneratedRecipeBuilder(String path) { @@ -1527,7 +1529,7 @@ public GeneratedRecipeBuilder(String path, Supplier result) this.result = result; } - public GeneratedRecipeBuilder(String path, ResourceLocation result) { + public GeneratedRecipeBuilder(String path, Identifier result) { this(path); this.compatDatagenOutput = result; } @@ -1538,15 +1540,15 @@ GeneratedRecipeBuilder returns(int amount) { } GeneratedRecipeBuilder unlockedBy(Supplier item) { - this.unlockedBy = () -> ItemPredicate.Builder.item() - .of(item.get()) + this.unlockedBy = provider -> ItemPredicate.Builder.item() + .of(provider.itemLookup(), item.get()) .build(); return this; } GeneratedRecipeBuilder unlockedByTag(Supplier> tag) { - this.unlockedBy = () -> ItemPredicate.Builder.item() - .of(tag.get()) + this.unlockedBy = provider -> ItemPredicate.Builder.item() + .of(provider.itemLookup(), tag.get()) .build(); return this; } @@ -1573,23 +1575,23 @@ GeneratedRecipeBuilder withSuffix(String suffix) { GeneratedRecipe viaShaped(UnaryOperator builder) { return register(consumer -> { ShapedRecipeBuilder b = - builder.apply(ShapedRecipeBuilder.shaped(RecipeCategory.MISC, result.get(), amount)); + builder.apply(CreateStandardRecipeGen.this.shaped(RecipeCategory.MISC, result.get(), amount)); if (unlockedBy != null) - b.unlockedBy("has_item", inventoryTrigger(unlockedBy.get())); - b.save(consumer, createLocation("crafting")); + b.unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(unlockedBy.apply(CreateStandardRecipeGen.this))); + b.save(consumer, createLocation("crafting").toString()); }); } GeneratedRecipe viaShapeless(UnaryOperator builder) { return register(recipeOutput -> { ShapelessRecipeBuilder b = - builder.apply(ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, result.get(), amount)); + builder.apply(CreateStandardRecipeGen.this.shapeless(RecipeCategory.MISC, result.get(), amount)); if (unlockedBy != null) - b.unlockedBy("has_item", inventoryTrigger(unlockedBy.get())); + b.unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(unlockedBy.apply(CreateStandardRecipeGen.this))); RecipeOutput conditionalOutput = recipeOutput.withConditions(recipeConditions.toArray(new ICondition[0])); - b.save(conditionalOutput, createLocation("crafting")); + b.save(conditionalOutput, createLocation("crafting").toString()); }); } @@ -1599,22 +1601,22 @@ GeneratedRecipe viaNetheriteSmithing(Supplier base, Supplier item) { } GeneratedCookingRecipeBuilder viaCookingTag(Supplier> tag) { - return unlockedByTag(tag).viaCookingIngredient(() -> Ingredient.of(tag.get())); + return unlockedByTag(tag).viaCookingIngredient(() -> CreateStandardRecipeGen.this.tag(tag.get())); } GeneratedCookingRecipeBuilder viaCookingIngredient(Supplier ingredient) { @@ -1658,7 +1660,7 @@ GeneratedRecipe inFurnace() { } GeneratedRecipe inFurnace(UnaryOperator builder) { - return create(RecipeSerializer.SMELTING_RECIPE, builder, SmeltingRecipe::new, 1); + return create("smelting", builder, SmeltingRecipe::new, 1); } GeneratedRecipe inSmoker() { @@ -1666,9 +1668,9 @@ GeneratedRecipe inSmoker() { } GeneratedRecipe inSmoker(UnaryOperator builder) { - create(RecipeSerializer.SMELTING_RECIPE, builder, SmeltingRecipe::new, 1); - create(RecipeSerializer.CAMPFIRE_COOKING_RECIPE, builder, CampfireCookingRecipe::new, 3); - return create(RecipeSerializer.SMOKING_RECIPE, builder, SmokingRecipe::new, .5f); + create("smelting", builder, SmeltingRecipe::new, 1); + create("campfire_cooking", builder, CampfireCookingRecipe::new, 3); + return create("smoking", builder, SmokingRecipe::new, .5f); } GeneratedRecipe inBlastFurnace() { @@ -1676,32 +1678,36 @@ GeneratedRecipe inBlastFurnace() { } GeneratedRecipe inBlastFurnace(UnaryOperator builder) { - create(RecipeSerializer.SMELTING_RECIPE, builder, SmeltingRecipe::new, 1); - return create(RecipeSerializer.BLASTING_RECIPE, builder, BlastingRecipe::new, .5f); + create("smelting", builder, SmeltingRecipe::new, 1); + return create("blasting", builder, BlastingRecipe::new, .5f); } - private GeneratedRecipe create(RecipeSerializer serializer, + private GeneratedRecipe create(String recipeType, UnaryOperator builder, AbstractCookingRecipe.Factory factory, float cookingTimeModifier) { return register(recipeOutput -> { boolean isOtherMod = compatDatagenOutput != null; SimpleCookingRecipeBuilder b = builder.apply(SimpleCookingRecipeBuilder.generic(ingredient.get(), - RecipeCategory.MISC, isOtherMod ? Items.DIRT : result.get(), exp, - (int) (cookingTime * cookingTimeModifier), serializer, factory)); + RecipeCategory.MISC, CookingBookCategory.MISC, isOtherMod ? Items.DIRT : result.get(), exp, + (int) (cookingTime * cookingTimeModifier), factory)); if (unlockedBy != null) - b.unlockedBy("has_item", inventoryTrigger(unlockedBy.get())); + b.unlockedBy("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(unlockedBy.apply(CreateStandardRecipeGen.this))); RecipeOutput conditionalOutput = recipeOutput.withConditions(recipeConditions.toArray(new ICondition[0])); b.save( isOtherMod ? new ModdedCookingRecipeOutput(conditionalOutput, compatDatagenOutput) : conditionalOutput, - createSimpleLocation(RegisteredObjectsHelper.getKeyOrThrow(serializer).getPath()) + recipeKey(createSimpleLocation(recipeType)) ); }); } } } + private static ResourceKey> recipeKey(Identifier id) { + return ResourceKey.create(Registries.RECIPE, id); + } + @Override public String getName() { return "Create's Standard Recipes"; @@ -1712,15 +1718,14 @@ public CreateStandardRecipeGen(PackOutput output, CompletableFuture { + private static class ModdedCookingRecipeOutputShim implements Recipe { - private static final Map, Serializer> serializers = new ConcurrentHashMap<>(); + private static final Map, RecipeSerializer> serializers = new ConcurrentHashMap<>(); private final Recipe wrapped; - private final ResourceLocation overrideID; + private final Identifier overrideID; - private ModdedCookingRecipeOutputShim(Recipe wrapped, ResourceLocation overrideID) { + private ModdedCookingRecipeOutputShim(Recipe wrapped, Identifier overrideID) { this.wrapped = wrapped; this.overrideID = overrideID; } @@ -1731,39 +1736,60 @@ public boolean matches(RecipeInput recipeInput, Level level) { } @Override - public ItemStack assemble(RecipeInput input, HolderLookup.Provider registries) { + public ItemStack assemble(RecipeInput input) { throw new AssertionError("Only for datagen output"); } - @Override public boolean canCraftInDimensions(int pWidth, int pHeight) { throw new AssertionError("Only for datagen output"); } - @Override public ItemStack getResultItem(HolderLookup.Provider registries) { throw new AssertionError("Only for datagen output"); } @Override - public RecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return serializers.computeIfAbsent( getType(), t -> Serializer.create(wrapped) ); } + @SuppressWarnings("unchecked") + @Override + public RecipeType> getType() { + return (RecipeType>) wrapped.getType(); + } + + @Override + public boolean showNotification() { + return wrapped.showNotification(); + } + + @Override + public String group() { + return wrapped.group(); + } + + @Override + public PlacementInfo placementInfo() { + return wrapped.placementInfo(); + } + @Override - public RecipeType getType() { - return wrapped.getType(); + public RecipeBookCategory recipeBookCategory() { + return wrapped.recipeBookCategory(); } private record Serializer( - MapCodec> wrappedCodec) implements RecipeSerializer { - private static Serializer create(Recipe wrapped) { + MapCodec> wrappedCodec) { + private static RecipeSerializer create(Recipe wrapped) { RecipeSerializer wrappedSerializer = wrapped.getSerializer(); @SuppressWarnings("unchecked") - Serializer serializer = new Serializer((MapCodec>) wrappedSerializer.codec()); + Serializer helper = new Serializer((MapCodec>) wrappedSerializer.codec()); + RecipeSerializer serializer = + new RecipeSerializer<>(helper.codec(), helper.streamCodec()); // Need to do some registry injection to get the Recipe/Registry#byNameCodec to encode the right type for this // getResourceKey and getId @@ -1789,7 +1815,6 @@ private static Serializer create(Recipe wrapped) { return serializer; } - @Override public MapCodec codec() { return RecordCodecBuilder.mapCodec(instance -> instance.group( wrappedCodec.forGetter(i -> i.wrapped), @@ -1799,23 +1824,28 @@ public MapCodec codec() { })); } - @Override public StreamCodec streamCodec() { - throw new AssertionError("Only for datagen output"); + return StreamCodec.of( + (output, value) -> { + throw new AssertionError("Only for datagen output"); + }, + input -> { + throw new AssertionError("Only for datagen output"); + } + ); } } - private record FakeItemStack(ResourceLocation id) { + private record FakeItemStack(Identifier id) { public static Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - ResourceLocation.CODEC.fieldOf("id").forGetter(FakeItemStack::id) + Identifier.CODEC.fieldOf("id").forGetter(FakeItemStack::id) ).apply(instance, FakeItemStack::new)); } } @ParametersAreNonnullByDefault - @MethodsReturnNonnullByDefault - private record ModdedCookingRecipeOutput(RecipeOutput wrapped, - ResourceLocation outputOverride) implements RecipeOutput { + private record ModdedCookingRecipeOutput(RecipeOutput wrapped, + Identifier outputOverride) implements RecipeOutput { @Override public Advancement.Builder advancement() { @@ -1823,7 +1853,12 @@ public Advancement.Builder advancement() { } @Override - public void accept(ResourceLocation id, Recipe recipe, @Nullable AdvancementHolder advancement, ICondition... conditions) { + public void includeRootAdvancement() { + wrapped.includeRootAdvancement(); + } + + @Override + public void accept(ResourceKey> id, Recipe recipe, AdvancementHolder advancement, ICondition... conditions) { wrapped.accept(id, new ModdedCookingRecipeOutputShim(recipe, outputOverride), advancement, conditions); } } diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateWashingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateWashingRecipeGen.java index dd510db274..47c162e456 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateWashingRecipeGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateWashingRecipeGen.java @@ -22,7 +22,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; @@ -42,7 +42,7 @@ public final class CreateWashingRecipeGen extends WashingRecipeGen { GeneratedRecipe WOOL = create("wool", b -> b.require(ItemTags.WOOL) - .output(Items.WHITE_WOOL)), + .output(Items.WOOL.white())), STAINED_GLASS = create("stained_glass", b -> b.require(Tags.Items.GLASS_BLOCKS) .output(Items.GLASS)), @@ -124,7 +124,7 @@ public CreateWashingRecipeGen(PackOutput output, CompletableFuture crushed, CommonMetal metal) { for (Mods mod : metal.mods) { String metalName = metal.getName(mod); - ResourceLocation nugget = mod.nuggetOf(metalName); + Identifier nugget = mod.nuggetOf(metalName); create(mod.getId() + "/" + crushed.getId() .getPath(), b -> b.withItemIngredients(Ingredient.of(crushed::get)) diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java index 251791761b..090ed85372 100644 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java +++ b/src/main/java/com/simibubi/create/foundation/data/recipe/LogStrippingFakeRecipes.java @@ -8,10 +8,12 @@ import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.component.DataComponents; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.AxeItem; import net.minecraft.world.item.BlockItem; @@ -58,15 +60,15 @@ private static void process(Item item, List create(Item fromItem, Item toItem, ItemStack axe) { - ResourceLocation rn = RegisteredObjectsHelper.getKeyOrThrow(toItem); - ResourceLocation id = ResourceLocation.fromNamespaceAndPath(rn.getNamespace(), rn.getPath() + "_via_vanilla_stripping"); + Identifier rn = RegisteredObjectsHelper.getKeyOrThrow(toItem); + Identifier id = Identifier.fromNamespaceAndPath(rn.getNamespace(), rn.getPath() + "_via_vanilla_stripping"); ManualApplicationRecipe recipe = new ItemApplicationRecipe.Builder<>(ManualApplicationRecipe::new, id) .require(fromItem) - .require(Ingredient.of(axe)) + .require(Ingredient.of(axe.getItem())) .output(toItem) .build(); - return new RecipeHolder<>(id, recipe); + return new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, id), recipe); } } diff --git a/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java b/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java index fe7fdfefd8..c444813291 100644 --- a/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/foundation/events/ClientEvents.java @@ -2,9 +2,10 @@ import java.util.function.Supplier; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.AllItems; +import com.simibubi.create.AllMapDecorationTypes; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.ContraptionHandler; @@ -24,7 +25,7 @@ import com.simibubi.create.content.equipment.armor.NetheriteDivingHandler; import com.simibubi.create.content.equipment.armor.RemainingAirOverlay; import com.simibubi.create.content.equipment.blueprint.BlueprintOverlayRenderer; -import com.simibubi.create.content.equipment.clipboard.ClipboardValueSettingsHandler; +import com.simibubi.create.content.equipment.clipboard.ClipboardClient; import com.simibubi.create.content.equipment.extendoGrip.ExtendoGripRenderHandler; import com.simibubi.create.content.equipment.goggles.GoggleOverlayRenderer; import com.simibubi.create.content.equipment.hats.CreateHatArmorLayer; @@ -45,7 +46,7 @@ import com.simibubi.create.content.logistics.packagePort.PackagePortTargetSelectionHandler; import com.simibubi.create.content.logistics.packagerLink.LogisticallyLinkedClientHandler; import com.simibubi.create.content.logistics.tableCloth.TableClothOverlayRenderer; -import com.simibubi.create.content.processing.sequenced.SequencedAssemblyRecipe; +import com.simibubi.create.content.processing.sequenced.SequencedAssemblyRecipeClient; import com.simibubi.create.content.redstone.displayLink.ClickToLinkBlockItem; import com.simibubi.create.content.redstone.link.LinkRenderer; import com.simibubi.create.content.redstone.link.controller.LinkedControllerClientHandler; @@ -66,6 +67,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueRenderer; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.item.TooltipModifier; +import com.simibubi.create.foundation.map.StationMapDecorationRenderer; import com.simibubi.create.foundation.networking.LeftClickPacket; import com.simibubi.create.foundation.sound.SoundScapes; import com.simibubi.create.foundation.utility.CameraAngleAnimationService; @@ -74,12 +76,12 @@ import com.simibubi.create.infrastructure.command.AllCommands; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.config.ui.BaseConfigScreen; -import net.createmod.catnip.levelWrappers.WrappedClientLevel; -import net.createmod.catnip.platform.CatnipServices; -import net.createmod.catnip.render.DefaultSuperRenderTypeBuffer; -import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.config.BaseConfigScreen; +import net.createmod.catnip.api.client.level.wrapper.WrappedClientLevel; +import net.createmod.catnip.api.platform.CatnipServices; +import net.createmod.catnip.api.client.render.DefaultSuperRenderTypeBuffer; +import net.createmod.catnip.api.client.render.SuperRenderTypeBuffer; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -104,15 +106,15 @@ import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.RegisterClientCommandsEvent; -import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; +import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent; import net.neoforged.neoforge.client.event.RegisterGuiLayersEvent; import net.neoforged.neoforge.client.event.RegisterItemDecorationsEvent; import net.neoforged.neoforge.client.event.RenderFrameEvent; import net.neoforged.neoforge.client.event.RenderLevelStageEvent; -import net.neoforged.neoforge.client.event.RenderLevelStageEvent.Stage; import net.neoforged.neoforge.client.event.ViewportEvent; import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import net.neoforged.neoforge.client.gui.VanillaGuiLayers; +import net.neoforged.neoforge.client.gui.map.RegisterMapDecorationRenderersEvent; import net.neoforged.neoforge.event.entity.EntityMountEvent; import net.neoforged.neoforge.event.entity.player.ItemTooltipEvent; import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; @@ -186,7 +188,7 @@ public static void onTick(boolean isPreEvent) { CameraDistanceModifier.tick(); CameraAngleAnimationService.tick(); TrainHUD.tick(); - ClipboardValueSettingsHandler.clientTick(); + ClipboardClient.clientTick(); CreateClient.VALUE_SETTINGS_HANDLER.tick(); ScrollValueHandler.tick(); NetheriteBacktankFirstPersonRenderer.clientTick(); @@ -233,15 +235,12 @@ public static void onUnloadWorld(LevelEvent.Unload event) { } @SubscribeEvent - public static void onRenderWorld(RenderLevelStageEvent event) { - if (event.getStage() != Stage.AFTER_PARTICLES) - return; - + public static void onRenderWorld(RenderLevelStageEvent.AfterTranslucentParticles event) { PoseStack ms = event.getPoseStack(); ms.pushPose(); SuperRenderTypeBuffer buffer = DefaultSuperRenderTypeBuffer.getInstance(); - Vec3 camera = Minecraft.getInstance().gameRenderer.getMainCamera() - .getPosition(); + Vec3 camera = Minecraft.getInstance().gameRenderer.mainCamera() + .position(); TrackBlockOutline.drawCurveSelection(ms, buffer, camera); TrackTargetingClient.render(ms, buffer, camera); @@ -251,7 +250,7 @@ public static void onRenderWorld(RenderLevelStageEvent event) { ChainConveyorInteractionHandler.drawCustomBlockSelection(ms, buffer, camera); buffer.draw(); - RenderSystem.enableCull(); + LegacyRenderSystemBridge.enableCull(); ms.popPose(); ContraptionPlayerPassengerRotation.frame(); @@ -281,7 +280,7 @@ public static void addToItemTooltip(ItemTooltipEvent event) { modifier.modify(event); } - SequencedAssemblyRecipe.addToTooltip(event); + SequencedAssemblyRecipeClient.addToTooltip(event); } @SubscribeEvent @@ -316,13 +315,13 @@ protected static boolean isGameActive() { public static void getFogDensity(ViewportEvent.RenderFog event) { Camera camera = event.getCamera(); Level level = Minecraft.getInstance().level; - BlockPos blockPos = camera.getBlockPosition(); + BlockPos blockPos = camera.blockPosition(); FluidState fluidState = level.getFluidState(blockPos); - if (camera.getPosition().y >= blockPos.getY() + fluidState.getHeight(level, blockPos)) + if (camera.position().y >= blockPos.getY() + fluidState.getHeight(level, blockPos)) return; Fluid fluid = fluidState.getType(); - Entity entity = camera.getEntity(); + Entity entity = camera.entity(); if (entity.isSpectator()) return; @@ -331,12 +330,10 @@ public static void getFogDensity(ViewportEvent.RenderFog event) { if (!divingHelmet.isEmpty()) { if (FluidHelper.isWater(fluid)) { event.scaleFarPlaneDistance(6.25f); - event.setCanceled(true); return; } else if (FluidHelper.isLava(fluid) && NetheriteDivingHandler.isNetheriteDivingHelmet(divingHelmet)) { event.setNearPlaneDistance(-4.0f); event.setFarPlaneDistance(20.0f); - event.setCanceled(true); return; } } @@ -346,7 +343,7 @@ public static void getFogDensity(ViewportEvent.RenderFog event) { public static void leftClickEmpty(PlayerInteractEvent.LeftClickEmpty event) { ItemStack stack = event.getItemStack(); if (stack.getItem() instanceof ZapperItem) { - CatnipServices.NETWORK.sendToServer(LeftClickPacket.INSTANCE); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(LeftClickPacket.INSTANCE); } } @@ -356,9 +353,9 @@ public static void registerClientCommands(RegisterClientCommandsEvent event) { } @SubscribeEvent - public static void registerClientReloadListeners(RegisterClientReloadListenersEvent event) { - event.registerReloadListener(CreateClient.RESOURCE_RELOAD_LISTENER); - event.registerReloadListener(TrainHatInfoReloadListener.LISTENER); + public static void registerClientReloadListeners(AddClientReloadListenersEvent event) { + event.addListener(Create.asResource("client_resources"), CreateClient.RESOURCE_RELOAD_LISTENER); + event.addListener(Create.asResource("train_hat_info"), TrainHatInfoReloadListener.LISTENER); } @SubscribeEvent @@ -373,7 +370,7 @@ public static void addEntityRendererLayers(EntityRenderersEvent.AddLayers event) public static void registerGuiOverlays(RegisterGuiLayersEvent event) { // Register overlays in reverse order event.registerAbove(VanillaGuiLayers.AIR_LEVEL, Create.asResource("remaining_air"), RemainingAirOverlay.INSTANCE); - event.registerAbove(VanillaGuiLayers.EXPERIENCE_BAR, Create.asResource("train_hud"), TrainHUD.OVERLAY); + event.registerAbove(VanillaGuiLayers.EXPERIENCE_LEVEL, Create.asResource("train_hud"), TrainHUD.OVERLAY); event.registerAbove(VanillaGuiLayers.HOTBAR, Create.asResource("value_settings"), CreateClient.VALUE_SETTINGS_HANDLER); event.registerAbove(VanillaGuiLayers.HOTBAR, Create.asResource("track_placement"), TrackPlacementOverlay.INSTANCE); event.registerAbove(VanillaGuiLayers.HOTBAR, Create.asResource("goggle_info"), GoggleOverlayRenderer.OVERLAY); @@ -388,6 +385,11 @@ public static void registerItemDecorations(RegisterItemDecorationsEvent event) { event.register(AllItems.POTATO_CANNON, PotatoCannonItemRenderer.DECORATOR); } + @SubscribeEvent + public static void onRegisterMapDecorationRenderers(RegisterMapDecorationRenderersEvent event) { + event.register(AllMapDecorationTypes.STATION_MAP_DECORATION.value(), new StationMapDecorationRenderer()); + } + @SubscribeEvent public static void onLoadComplete(FMLLoadCompleteEvent event) { ModContainer createContainer = ModList.get() diff --git a/src/main/java/com/simibubi/create/foundation/events/CommonEvents.java b/src/main/java/com/simibubi/create/foundation/events/CommonEvents.java index bf92096898..4291397b20 100644 --- a/src/main/java/com/simibubi/create/foundation/events/CommonEvents.java +++ b/src/main/java/com/simibubi/create/foundation/events/CommonEvents.java @@ -1,6 +1,5 @@ package com.simibubi.create.foundation.events; -import com.simibubi.create.AllMapDecorationTypes; import com.simibubi.create.Create; import com.simibubi.create.compat.trainmap.TrainMapSync; import com.simibubi.create.content.contraptions.ContraptionHandler; @@ -58,7 +57,6 @@ import com.simibubi.create.content.trains.signal.SignalBlockEntity; import com.simibubi.create.content.trains.station.StationBlockEntity; import com.simibubi.create.foundation.data.RuntimeDataGenerator; -import com.simibubi.create.foundation.map.StationMapDecorationRenderer; import com.simibubi.create.foundation.pack.DynamicPack; import com.simibubi.create.foundation.pack.DynamicPackSource; import com.simibubi.create.foundation.recipe.RecipeFinder; @@ -67,7 +65,7 @@ import com.simibubi.create.foundation.utility.TickBasedCache; import com.simibubi.create.infrastructure.command.AllCommands; -import net.createmod.catnip.data.WorldAttached; +import net.createmod.catnip.api.data.WorldAttached; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.repository.Pack; @@ -81,9 +79,8 @@ import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; -import net.neoforged.neoforge.client.gui.map.RegisterMapDecorationRenderersEvent; import net.neoforged.neoforge.event.AddPackFindersEvent; -import net.neoforged.neoforge.event.AddReloadListenerEvent; +import net.neoforged.neoforge.event.AddServerReloadListenersEvent; import net.neoforged.neoforge.event.RegisterCommandsEvent; import net.neoforged.neoforge.event.entity.EntityEvent; import net.neoforged.neoforge.event.entity.EntityJoinLevelEvent; @@ -178,10 +175,10 @@ public static void onEntityEnterSection(EntityEvent.EnteringSection event) { } @SubscribeEvent - public static void addReloadListeners(AddReloadListenerEvent event) { - event.addListener(RecipeFinder.LISTENER); - event.addListener(RecipeTrieFinder.LISTENER); - event.addListener(BeltHelper.LISTENER); + public static void addReloadListeners(AddServerReloadListenersEvent event) { + event.addListener(Create.asResource("recipe_finder"), RecipeFinder.LISTENER); + event.addListener(Create.asResource("recipe_trie_finder"), RecipeTrieFinder.LISTENER); + event.addListener(Create.asResource("belt_helper"), BeltHelper.LISTENER); } @SubscribeEvent @@ -261,11 +258,6 @@ public static void addPackFinders(AddPackFindersEvent event) { } } - @net.neoforged.bus.api.SubscribeEvent - public static void onRegisterMapDecorationRenderers(RegisterMapDecorationRenderersEvent event) { - event.register(AllMapDecorationTypes.STATION_MAP_DECORATION.value(), new StationMapDecorationRenderer()); - } - @net.neoforged.bus.api.SubscribeEvent public static void registerCapabilities(RegisterCapabilitiesEvent event) { ChuteBlockEntity.registerCapabilities(event); diff --git a/src/main/java/com/simibubi/create/foundation/events/InputEvents.java b/src/main/java/com/simibubi/create/foundation/events/InputEvents.java index 7adcc1138e..6d02ebcbfe 100644 --- a/src/main/java/com/simibubi/create/foundation/events/InputEvents.java +++ b/src/main/java/com/simibubi/create/foundation/events/InputEvents.java @@ -15,7 +15,7 @@ import com.simibubi.create.content.trains.entity.TrainRelocator; import com.simibubi.create.content.trains.track.CurvedTrackInteraction; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.world.item.ItemStack; @@ -32,7 +32,7 @@ public class InputEvents { @SubscribeEvent public static void onKeyInput(InputEvent.Key event) { - if (Minecraft.getInstance().screen != null) + if (Minecraft.getInstance().gui.screen() != null) return; int key = event.getKey(); @@ -45,7 +45,7 @@ public static void onKeyInput(InputEvent.Key event) { @SubscribeEvent public static void onMouseScrolled(InputEvent.MouseScrollingEvent event) { - if (Minecraft.getInstance().screen != null) + if (Minecraft.getInstance().gui.screen() != null) return; double delta = event.getScrollDeltaY(); @@ -58,7 +58,7 @@ public static void onMouseScrolled(InputEvent.MouseScrollingEvent event) { @SubscribeEvent public static void onMouseInput(InputEvent.MouseButton.Pre event) { - if (Minecraft.getInstance().screen != null) + if (Minecraft.getInstance().gui.screen() != null) return; int button = event.getButton(); @@ -74,7 +74,7 @@ else if (CreateClient.SCHEMATIC_AND_QUILL_HANDLER.onMouseInput(button, pressed)) @SubscribeEvent public static void onClickInput(InputEvent.InteractionKeyMappingTriggered event) { Minecraft mc = Minecraft.getInstance(); - if (mc.screen != null) + if (mc.gui.screen() != null) return; if (CurvedTrackInteraction.onClickInput(event)) { @@ -119,7 +119,7 @@ public static void onClickInput(InputEvent.InteractionKeyMappingTriggered event) ItemStack itemInHand = mc.player.getItemInHand(event.getHand()); if (itemInHand.is(Tags.Items.TOOLS_WRENCH)) return; - if (itemInHand.is(Items.CHAIN) || AllBlocks.PACKAGE_FROGPORT.isIn(itemInHand)) + if (itemInHand.is(Items.IRON_CHAIN) || AllBlocks.PACKAGE_FROGPORT.isIn(itemInHand)) return; } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java b/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java index 5c6f18b4ce..1d1291222d 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.fluid; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.fluids.capability.templates.EmptyFluidHandler; @@ -108,7 +108,7 @@ public FluidStack drain(FluidStack resource, FluidAction action) { resource.shrink(amount); if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || FluidStack.isSameFluidSameComponents(drainedFromCurrent, drained))) - drained = new FluidStack(drainedFromCurrent.getFluidHolder(), amount + drained.getAmount(), + drained = new FluidStack(drainedFromCurrent.typeHolder(), amount + drained.getAmount(), drainedFromCurrent.getComponentsPatch()); if (resource.isEmpty()) break; @@ -127,7 +127,7 @@ public FluidStack drain(int maxDrain, FluidAction action) { maxDrain -= amount; if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || FluidStack.isSameFluidSameComponents(drainedFromCurrent, drained))) - drained = new FluidStack(drainedFromCurrent.getFluidHolder(), amount + drained.getAmount(), + drained = new FluidStack(drainedFromCurrent.typeHolder(), amount + drained.getAmount(), drainedFromCurrent.getComponentsPatch()); if (maxDrain == 0) break; diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java index 3e3e2980f1..94b2b07782 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.fluids.transfer.GenericItemFilling; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.FluidTags; @@ -126,12 +126,12 @@ public static boolean tryEmptyItemIntoBE(Level worldIn, Player player, Interacti return false; Pair emptyingResult = GenericItemEmptying.emptyItem(worldIn, heldItem, true); - IFluidHandler capability = worldIn.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler capability = com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter.of(worldIn.getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); FluidStack fluidStack = emptyingResult.getFirst(); if (capability == null || fluidStack.getAmount() != capability.fill(fluidStack, FluidAction.SIMULATE)) return false; - if (worldIn.isClientSide) + if (worldIn.isClientSide()) return true; ItemStack copyOfHeld = heldItem.copy(); @@ -155,7 +155,7 @@ public static boolean tryFillItemFromBE(Level world, Player player, InteractionH if (!GenericItemFilling.canItemBeFilled(world, heldItem)) return false; - IFluidHandler capability = world.getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler capability = com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter.of(world.getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (capability == null) return false; @@ -170,7 +170,7 @@ public static boolean tryFillItemFromBE(Level world, Player player, InteractionH if (requiredAmountForItem > fluid.getAmount()) continue; - if (world.isClientSide) + if (world.isClientSide()) return true; if (player.isCreative() || be instanceof CreativeFluidTankBlockEntity) diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredientOld.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredientOld.java index f5fbd7ca91..44f02ec7cd 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredientOld.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredientOld.java @@ -3,41 +3,10 @@ import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval; import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; -import com.mojang.serialization.codecs.RecordCodecBuilder; - -import net.minecraft.core.component.DataComponentPatch; -import net.minecraft.core.registries.Registries; -import net.minecraft.tags.TagKey; - -import net.neoforged.neoforge.fluids.FluidStack; -import net.neoforged.neoforge.fluids.crafting.DataComponentFluidIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; -import net.neoforged.neoforge.fluids.crafting.TagFluidIngredient; @ScheduledForRemoval(inVersion = "1.21.1+ Port") @Deprecated(since = "6.0.7", forRemoval = true) public class FluidIngredientOld { - private static final Codec FLUID_STACK = RecordCodecBuilder.create(i -> i.group( - validatedType("fluid_stack"), - FluidStack.FLUID_NON_EMPTY_CODEC.fieldOf("fluid").forGetter(s -> null), - DataComponentPatch.CODEC.optionalFieldOf("components", DataComponentPatch.EMPTY).forGetter(s -> null), - Codec.INT.fieldOf("amount").forGetter(s -> null) - ).apply(i, (type, fluid, components, amount) -> new SizedFluidIngredient(DataComponentFluidIngredient.of(false, components.split().added(), fluid), amount)) - ); - - private static final Codec FLUID_TAG = RecordCodecBuilder.create(i -> i.group( - validatedType("fluid_tag"), - TagKey.codec(Registries.FLUID).fieldOf("fluid_tag").forGetter(s -> null), - Codec.INT.fieldOf("amount").forGetter(s -> null) - ).apply(i, (type, tag, amount) -> new SizedFluidIngredient(TagFluidIngredient.tag(tag), amount))); - - public static final Codec CODEC = Codec.withAlternative(FLUID_STACK, FLUID_TAG); - - private static RecordCodecBuilder validatedType(String requiredType) { - return Codec.STRING - .validate(s -> s.equals(requiredType) ? DataResult.success(s) : DataResult.error(() -> "Invalid Type: " + s)) - .fieldOf("type") - .forGetter(s -> requiredType); - } + public static final Codec CODEC = SizedFluidIngredient.CODEC; } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderProperties.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderProperties.java new file mode 100644 index 0000000000..067b1009bf --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderProperties.java @@ -0,0 +1,45 @@ +package com.simibubi.create.foundation.fluid; + +import com.simibubi.create.AllFluids.TintedFluidType; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.FluidModel; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.world.level.material.FluidState; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.FluidType; + +public final class FluidRenderProperties { + private static final int NO_TINT = 0xffffffff; + + private FluidRenderProperties() { + } + + public static TextureAtlasSprite getStillTexture(FluidStack stack) { + return getModel(stack).stillMaterial() + .sprite(); + } + + public static TextureAtlasSprite getFlowingTexture(FluidStack stack) { + return getModel(stack).flowingMaterial() + .sprite(); + } + + public static int getTintColor(FluidStack stack) { + FluidType type = stack.getFluid() + .getFluidType(); + if (type instanceof TintedFluidType tinted) + return tinted.getTintColor(stack); + return NO_TINT; + } + + private static FluidModel getModel(FluidStack stack) { + FluidState state = stack.getFluid() + .defaultFluidState(); + return Minecraft.getInstance() + .getModelManager() + .getFluidStateModelSet() + .get(state); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java index ef6d792a95..3c155753bd 100644 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java @@ -1,29 +1,22 @@ package com.simibubi.create.foundation.fluid; -import java.util.function.Function; - import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.render.FluidRenderHelper; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.client.render.FluidRenderHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.Direction; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.level.material.Fluid; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.FluidType; -@OnlyIn(Dist.CLIENT) public class FluidRenderer { public static void renderFluidStream(FluidStack fluidStack, Direction direction, float radius, float progress, boolean inbound, MultiBufferSource buffer, PoseStack ms, int light) { @@ -33,14 +26,11 @@ public static void renderFluidStream(FluidStack fluidStack, Direction direction, public static void renderFluidStream(FluidStack fluidStack, Direction direction, float radius, float progress, boolean inbound, VertexConsumer builder, PoseStack ms, int light) { Fluid fluid = fluidStack.getFluid(); - IClientFluidTypeExtensions clientFluid = IClientFluidTypeExtensions.of(fluid); FluidType fluidAttributes = fluid.getFluidType(); - Function spriteAtlas = Minecraft.getInstance() - .getTextureAtlas(InventoryMenu.BLOCK_ATLAS); - TextureAtlasSprite flowTexture = spriteAtlas.apply(clientFluid.getFlowingTexture(fluidStack)); - TextureAtlasSprite stillTexture = spriteAtlas.apply(clientFluid.getStillTexture(fluidStack)); + TextureAtlasSprite flowTexture = FluidRenderProperties.getFlowingTexture(fluidStack); + TextureAtlasSprite stillTexture = FluidRenderProperties.getStillTexture(fluidStack); - int color = clientFluid.getTintColor(fluidStack); + int color = FluidRenderProperties.getTintColor(fluidStack); int blockLightIn = (light >> 4) & 0xF; int luminosity = Math.max(blockLightIn, fluidAttributes.getLightLevel(fluidStack)); light = (light & 0xF00000) | luminosity << 4; @@ -71,14 +61,14 @@ public static void renderFluidStream(FluidStack fluidStack, Direction direction, } if (progress != 1) - FluidRenderHelper.renderStillTiledFace(Direction.DOWN, hMin, hMin, hMax, hMax, yMin, builder, ms, light, color, stillTexture); + FluidRenderHelper.renderStillTiledFace(Direction.DOWN, hMin, hMin, hMax, hMax, yMin, builder, ms.last(), light, color, stillTexture); ms.popPose(); } public static void renderFlowingTiledFace(Direction dir, float left, float down, float right, float up, float depth, VertexConsumer builder, PoseStack ms, int light, int color, TextureAtlasSprite texture) { - FluidRenderHelper.renderTiledFace(dir, left, down, right, up, depth, builder, ms, light, color, texture, 0.5f); + FluidRenderHelper.renderTiledFace(dir, left, down, right, up, depth, builder, ms.last(), light, color, texture, 0.5f); } } diff --git a/src/main/java/com/simibubi/create/foundation/fluid/LazyComponentFluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/LazyComponentFluidIngredient.java new file mode 100644 index 0000000000..2126093f8f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/LazyComponentFluidIngredient.java @@ -0,0 +1,116 @@ +package com.simibubi.create.foundation.fluid; + +import java.util.Objects; +import java.util.stream.Stream; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.MapCodec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import com.simibubi.create.foundation.recipe.AllIngredients; + +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.component.DataComponentExactPredicate; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.HolderSetCodec; +import net.minecraft.world.item.crafting.display.SlotDisplay; +import net.minecraft.world.level.material.Fluid; + +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.crafting.FluidIngredient; +import net.neoforged.neoforge.fluids.crafting.FluidIngredientType; +import net.neoforged.neoforge.fluids.crafting.display.FluidStackSlotDisplay; + +public class LazyComponentFluidIngredient extends FluidIngredient { + private static final Codec> FLUIDS_CODEC = + HolderSetCodec.create(Registries.FLUID, BuiltInRegistries.FLUID.holderByNameCodec(), false); + + public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(i -> i.group( + FLUIDS_CODEC.fieldOf("fluids").forGetter(LazyComponentFluidIngredient::fluidSet), + DataComponentExactPredicate.CODEC.fieldOf("components").forGetter(LazyComponentFluidIngredient::components), + Codec.BOOL.optionalFieldOf("strict", false).forGetter(LazyComponentFluidIngredient::isStrict) + ).apply(i, LazyComponentFluidIngredient::new)); + + private final HolderSet fluids; + private final DataComponentExactPredicate components; + private final boolean strict; + + public LazyComponentFluidIngredient(HolderSet fluids, DataComponentExactPredicate components, boolean strict) { + this.fluids = fluids; + this.components = components; + this.strict = strict; + } + + public static LazyComponentFluidIngredient of(boolean strict, FluidStack stack) { + return of(strict, stack.getComponents(), HolderSet.direct(stack.typeHolder())); + } + + public static LazyComponentFluidIngredient of(boolean strict, DataComponentMap components, HolderSet fluids) { + return new LazyComponentFluidIngredient(fluids, DataComponentExactPredicate.allOf(components), strict); + } + + @Override + public boolean test(FluidStack stack) { + if (!fluids.contains(stack.typeHolder())) + return false; + if (strict) + return stack.getComponentsPatch().equals(components.asPatch()); + return components.test(stack); + } + + @Override + protected Stream> generateFluids() { + return fluids.stream(); + } + + @Override + public SlotDisplay display() { + return new SlotDisplay.Composite(getStacks(1000).stream() + .map(stack -> (SlotDisplay) new FluidStackSlotDisplay(stack)) + .toList()); + } + + public java.util.List getStacks(int amount) { + return fluids.stream() + .map(fluid -> new FluidStack(fluid, amount, components.asPatch())) + .toList(); + } + + @Override + public boolean isSimple() { + return false; + } + + @Override + public FluidIngredientType getType() { + return AllIngredients.COMPONENT_FLUID_INGREDIENT.get(); + } + + public HolderSet fluidSet() { + return fluids; + } + + public DataComponentExactPredicate components() { + return components; + } + + public boolean isStrict() { + return strict; + } + + @Override + public int hashCode() { + return Objects.hash(fluids, components, strict); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof LazyComponentFluidIngredient other)) + return false; + return strict == other.strict && fluids.equals(other.fluids) && components.equals(other.components); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerAdapter.java b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerAdapter.java new file mode 100644 index 0000000000..4d60e17bad --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerAdapter.java @@ -0,0 +1,77 @@ +package com.simibubi.create.foundation.fluid; + +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.ResourceHandlerUtil; +import net.neoforged.neoforge.transfer.fluid.FluidResource; +import net.neoforged.neoforge.transfer.transaction.Transaction; + +public class LegacyFluidHandlerAdapter implements IFluidHandler { + private final ResourceHandler handler; + + public LegacyFluidHandlerAdapter(ResourceHandler handler) { + this.handler = handler; + } + + public static IFluidHandler of(ResourceHandler handler) { + return handler == null ? null : new LegacyFluidHandlerAdapter(handler); + } + + @Override + public int getTanks() { + return handler.size(); + } + + @Override + public FluidStack getFluidInTank(int tank) { + FluidResource resource = handler.getResource(tank); + return resource.isEmpty() ? FluidStack.EMPTY : resource.toStack(handler.getAmountAsInt(tank)); + } + + @Override + public int getTankCapacity(int tank) { + return handler.getCapacityAsInt(tank, FluidResource.EMPTY); + } + + @Override + public boolean isFluidValid(int tank, FluidStack stack) { + return !stack.isEmpty() && handler.isValid(tank, FluidResource.of(stack)); + } + + @Override + public int fill(FluidStack resource, FluidAction action) { + if (resource.isEmpty()) + return 0; + try (Transaction transaction = Transaction.openRoot()) { + int inserted = handler.insert(FluidResource.of(resource), resource.getAmount(), transaction); + if (action.execute()) + transaction.commit(); + return inserted; + } + } + + @Override + public FluidStack drain(FluidStack resource, FluidAction action) { + if (resource.isEmpty()) + return FluidStack.EMPTY; + try (Transaction transaction = Transaction.openRoot()) { + int extracted = handler.extract(FluidResource.of(resource), resource.getAmount(), transaction); + if (action.execute()) + transaction.commit(); + return extracted == 0 ? FluidStack.EMPTY : resource.copyWithAmount(extracted); + } + } + + @Override + public FluidStack drain(int maxDrain, FluidAction action) { + if (maxDrain <= 0) + return FluidStack.EMPTY; + try (Transaction transaction = Transaction.openRoot()) { + var extracted = ResourceHandlerUtil.extractFirst(handler, resource -> true, maxDrain, transaction); + if (action.execute()) + transaction.commit(); + return extracted == null ? FluidStack.EMPTY : extracted.resource().toStack(extracted.amount()); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerItemAdapter.java b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerItemAdapter.java new file mode 100644 index 0000000000..c4390a2e1c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidHandlerItemAdapter.java @@ -0,0 +1,31 @@ +package com.simibubi.create.foundation.fluid; + +import net.minecraft.world.item.ItemStack; + +import net.neoforged.neoforge.capabilities.Capabilities; +import net.neoforged.neoforge.fluids.capability.IFluidHandlerItem; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.access.ItemAccess; +import net.neoforged.neoforge.transfer.fluid.FluidResource; + +public class LegacyFluidHandlerItemAdapter extends LegacyFluidHandlerAdapter implements IFluidHandlerItem { + private final ItemStack container; + + public LegacyFluidHandlerItemAdapter(ResourceHandler handler, ItemStack container) { + super(handler); + this.container = container; + } + + public static IFluidHandlerItem of(ItemStack stack) { + if (stack.isEmpty()) + return null; + ItemAccess access = ItemAccess.forStack(stack); + ResourceHandler handler = access.getCapability(Capabilities.Fluid.ITEM); + return handler == null ? null : new LegacyFluidHandlerItemAdapter(handler, stack); + } + + @Override + public ItemStack getContainer() { + return container; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidIngredientBridge.java b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidIngredientBridge.java new file mode 100644 index 0000000000..af5a4badf8 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidIngredientBridge.java @@ -0,0 +1,22 @@ +package com.simibubi.create.foundation.fluid; + +import java.util.List; + +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; + +public class LegacyFluidIngredientBridge { + public static List getFluids(SizedFluidIngredient ingredient) { + if (ingredient.ingredient() instanceof LazyComponentFluidIngredient lazy) + return lazy.getStacks(ingredient.amount()); + return ingredient.ingredient() + .fluids() + .stream() + .map(fluid -> new FluidStack(fluid, ingredient.amount())) + .toList(); + } + + public static FluidStack[] getFluidsArray(SizedFluidIngredient ingredient) { + return getFluids(ingredient).toArray(FluidStack[]::new); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidTransferAdapter.java b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidTransferAdapter.java new file mode 100644 index 0000000000..09499304dc --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/fluid/LegacyFluidTransferAdapter.java @@ -0,0 +1,94 @@ +package com.simibubi.create.foundation.fluid; + +import java.util.ArrayList; +import java.util.List; + +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.IFluidHandler; +import net.neoforged.neoforge.fluids.capability.IFluidHandler.FluidAction; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.fluid.FluidResource; +import net.neoforged.neoforge.transfer.transaction.SnapshotJournal; +import net.neoforged.neoforge.transfer.transaction.TransactionContext; + +public class LegacyFluidTransferAdapter extends SnapshotJournal> implements ResourceHandler { + private final IFluidHandler handler; + + public LegacyFluidTransferAdapter(IFluidHandler handler) { + this.handler = handler; + } + + @Override + public int size() { + return handler.getTanks(); + } + + @Override + public FluidResource getResource(int index) { + if (index < 0 || index >= handler.getTanks()) + return FluidResource.EMPTY; + return FluidResource.of(handler.getFluidInTank(index)); + } + + @Override + public long getAmountAsLong(int index) { + if (index < 0 || index >= handler.getTanks()) + return 0; + return handler.getFluidInTank(index) + .getAmount(); + } + + @Override + public long getCapacityAsLong(int index, FluidResource resource) { + if (index < 0 || index >= handler.getTanks()) + return 0; + return handler.getTankCapacity(index); + } + + @Override + public boolean isValid(int index, FluidResource resource) { + if (index < 0 || index >= handler.getTanks() || resource.isEmpty()) + return false; + return handler.isFluidValid(index, resource.toStack(1)); + } + + @Override + public int insert(int index, FluidResource resource, int amount, TransactionContext transaction) { + if (!isValid(index, resource) || amount <= 0) + return 0; + FluidStack stack = resource.toStack(amount); + int inserted = handler.fill(stack, FluidAction.SIMULATE); + if (inserted <= 0) + return 0; + updateSnapshots(transaction); + return handler.fill(stack.copyWithAmount(inserted), FluidAction.EXECUTE); + } + + @Override + public int extract(int index, FluidResource resource, int amount, TransactionContext transaction) { + if (index < 0 || index >= handler.getTanks() || resource.isEmpty() || amount <= 0) + return 0; + FluidStack stack = resource.toStack(amount); + FluidStack extracted = handler.drain(stack, FluidAction.SIMULATE); + if (extracted.isEmpty()) + return 0; + updateSnapshots(transaction); + return handler.drain(extracted, FluidAction.EXECUTE) + .getAmount(); + } + + @Override + protected List createSnapshot() { + List snapshot = new ArrayList<>(handler.getTanks()); + for (int i = 0; i < handler.getTanks(); i++) + snapshot.add(handler.getFluidInTank(i).copy()); + return snapshot; + } + + @Override + protected void revertToSnapshot(List snapshot) { + if (handler instanceof FluidTank tank && snapshot.size() == 1) + tank.setFluid(snapshot.get(0).copy()); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java index 18919aa2c3..87bdbb0352 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java @@ -2,15 +2,15 @@ import com.simibubi.create.Create; -import net.createmod.catnip.gui.TextureSheetSegment; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.gui.element.ScreenElement; -import net.createmod.catnip.theme.Color; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.client.gui.TextureSheetSegment; +import net.createmod.catnip.api.client.gui.UIRenderHelper; +import net.createmod.catnip.api.client.gui.element.ScreenElement; +import net.createmod.catnip.api.theme.Color; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.resources.Identifier; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public enum AllGuiTextures implements ScreenElement, TextureSheetSegment { @@ -269,7 +269,7 @@ public enum AllGuiTextures implements ScreenElement, TextureSheetSegment { public static final int FONT_COLOR = 0x575F7A; - public final ResourceLocation location; + public final Identifier location; private final int width; private final int height; private final int startX; @@ -284,7 +284,7 @@ public enum AllGuiTextures implements ScreenElement, TextureSheetSegment { } AllGuiTextures(String namespace, String location, int startX, int startY, int width, int height) { - this.location = ResourceLocation.fromNamespaceAndPath(namespace, "textures/gui/" + location + ".png"); + this.location = Identifier.fromNamespaceAndPath(namespace, "textures/gui/" + location + ".png"); this.width = width; this.height = height; this.startX = startX; @@ -292,19 +292,16 @@ public enum AllGuiTextures implements ScreenElement, TextureSheetSegment { } @Override - public ResourceLocation getLocation() { + public Identifier getId() { return location; } - @OnlyIn(Dist.CLIENT) - public void render(GuiGraphics graphics, int x, int y) { - graphics.blit(location, x, y, startX, startY, width, height); + public void render(GuiGraphicsExtractor graphics, int x, int y) { + graphics.blit(RenderPipelines.GUI_TEXTURED, location, x, y, startX, startY, width, height, 256, 256); } - @OnlyIn(Dist.CLIENT) - public void render(GuiGraphics graphics, int x, int y, Color c) { - bind(); - UIRenderHelper.drawColoredTexture(graphics, c, x, y, startX, startY, width, height); + public void render(GuiGraphicsExtractor graphics, int x, int y, Color c) { + UIRenderHelper.drawColoredTexture(graphics, bind(), c, x, y, startX, startY, width, height); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java index e8551a3bfb..c7ecbb7ad1 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java +++ b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java @@ -2,26 +2,26 @@ import org.joml.Matrix4f; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.Create; -import net.createmod.catnip.gui.element.DelegatedStencilElement; -import net.createmod.catnip.gui.element.ScreenElement; -import net.createmod.catnip.theme.Color; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.client.gui.element.DelegatedStencilElement; +import net.createmod.catnip.api.client.gui.element.ScreenElement; +import net.createmod.catnip.api.theme.Color; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.util.LightCoordsUtil; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.resources.Identifier; import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class AllIcons implements ScreenElement { - public static final ResourceLocation ICON_ATLAS = Create.asResource("textures/gui/icons.png"); + public static final Identifier ICON_ATLAS = Create.asResource("textures/gui/icons.png"); public static final int ICON_ATLAS_SIZE = 256; private static int x = 0, y = -1; @@ -183,23 +183,20 @@ private static AllIcons newRow() { return new AllIcons(x = 0, ++y); } - @OnlyIn(Dist.CLIENT) public void bind() { - RenderSystem.setShaderTexture(0, ICON_ATLAS); + LegacyRenderSystemBridge.setShaderTexture(0, ICON_ATLAS); } - @OnlyIn(Dist.CLIENT) @Override - public void render(GuiGraphics graphics, int x, int y) { - graphics.blit(ICON_ATLAS, x, y, 0, iconX, iconY, 16, 16, 256, 256); + public void render(GuiGraphicsExtractor graphics, int x, int y) { + graphics.blit(RenderPipelines.GUI_TEXTURED, ICON_ATLAS, x, y, iconX, iconY, 16, 16, 256, 256); } - @OnlyIn(Dist.CLIENT) public void render(PoseStack ms, MultiBufferSource buffer, int color) { - VertexConsumer builder = buffer.getBuffer(RenderType.text(ICON_ATLAS)); + VertexConsumer builder = buffer.getBuffer(net.minecraft.client.renderer.rendertype.RenderTypes.text(ICON_ATLAS)); Matrix4f matrix = ms.last().pose(); Color rgb = new Color(color); - int light = LightTexture.FULL_BRIGHT; + int light = LightCoordsUtil.FULL_BRIGHT; Vec3 vec1 = new Vec3(0, 0, 0); Vec3 vec2 = new Vec3(0, 1, 0); @@ -217,7 +214,6 @@ public void render(PoseStack ms, MultiBufferSource buffer, int color) { vertex(builder, matrix, vec4, rgb, u2, v1, light); } - @OnlyIn(Dist.CLIENT) private void vertex(VertexConsumer builder, Matrix4f matrix, Vec3 vec, Color rgb, float u, float v, int light) { builder.addVertex(matrix, (float) vec.x, (float) vec.y, (float) vec.z) .setColor(rgb.getRed(), rgb.getGreen(), rgb.getBlue(), 255) @@ -225,7 +221,6 @@ private void vertex(VertexConsumer builder, Matrix4f matrix, Vec3 vec, Color rgb .setLight(light); } - @OnlyIn(Dist.CLIENT) public DelegatedStencilElement asStencil() { return new DelegatedStencilElement().withStencilRenderer((ms, w, h, alpha) -> this.render(ms, 0, 0)).withBounds(16, 16); } diff --git a/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java b/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java index 0568a4f6d8..237a21d712 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java +++ b/src/main/java/com/simibubi/create/foundation/gui/CustomLightingSettings.java @@ -2,10 +2,10 @@ import org.joml.Vector3f; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.mojang.math.Axis; -import net.createmod.catnip.gui.ILightingSettings; +import net.createmod.catnip.api.client.gui.ILightingSettings; public class CustomLightingSettings implements ILightingSettings { @@ -35,8 +35,8 @@ protected void init(float yRot1, float xRot1, float yRot2, float xRot2, boolean } @Override - public void applyLighting() { - RenderSystem.setShaderLights(light1, light2); + public void apply() { + LegacyRenderSystemBridge.setShaderLights(light1, light2); } public static Builder builder() { diff --git a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLine.java b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLine.java index 825e4e337b..76487cfa59 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLine.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLine.java @@ -7,10 +7,10 @@ import com.simibubi.create.foundation.gui.widget.ScrollInput; import com.simibubi.create.foundation.gui.widget.TooltipArea; -import net.createmod.catnip.gui.UIRenderHelper; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.UIRenderHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; @@ -30,14 +30,18 @@ public ModularGuiLine() { speechBubble = false; } - public void renderWidgetBG(int guiLeft, GuiGraphics graphics) { + public void renderWidgetBG(int guiLeft, GuiGraphicsExtractor graphics) { + renderWidgetBG(guiLeft, 0, graphics); + } + + public void renderWidgetBG(int guiLeft, int y, GuiGraphicsExtractor graphics) { boolean first = true; if (!customBoxes.isEmpty()) { for (Couple couple : customBoxes) { int x = couple.getFirst() + guiLeft; int width = couple.getSecond(); - box(graphics, x, width, first & speechBubble); + box(graphics, x, y, width, first & speechBubble); first = false; } return; @@ -57,18 +61,18 @@ public void renderWidgetBG(int guiLeft, GuiGraphics graphics) { width += 9; } - box(graphics, x, width, first & speechBubble); + box(graphics, x, y, width, first & speechBubble); first = false; } } - private void box(GuiGraphics graphics, int x, int width, boolean b) { - UIRenderHelper.drawStretched(graphics, x, 0, width, 18, 0, AllGuiTextures.DATA_AREA); + private void box(GuiGraphicsExtractor graphics, int x, int y, int width, boolean b) { + UIRenderHelper.drawStretched(graphics, x, y, width, 18, AllGuiTextures.DATA_AREA); if (b) - AllGuiTextures.DATA_AREA_SPEECH.render(graphics, x - 3, 0); + AllGuiTextures.DATA_AREA_SPEECH.render(graphics, x - 3, y); else - AllGuiTextures.DATA_AREA_START.render(graphics, x, 0); - AllGuiTextures.DATA_AREA_END.render(graphics, x + width - 2, 0); + AllGuiTextures.DATA_AREA_START.render(graphics, x, y); + AllGuiTextures.DATA_AREA_END.render(graphics, x + width - 2, y); } public void saveValues(CompoundTag data) { @@ -89,9 +93,9 @@ public void loadValu AbstractWidget w = pair.getFirst(); String key = pair.getSecond(); if (w instanceof EditBox eb) - eb.setValue(data.getString(key)); + eb.setValue(data.getStringOr(key, "")); if (w instanceof ScrollInput si) - si.setState(data.getInt(key)); + si.setState(data.getIntOr(key, 0)); if (w instanceof TooltipArea) addRenderableOnly.accept((T) w); diff --git a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java index f36f1ecf7d..17c989fecc 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/gui/ModularGuiLineBuilder.java @@ -7,8 +7,8 @@ import com.simibubi.create.foundation.gui.widget.SelectionScrollInput; import com.simibubi.create.foundation.gui.widget.TooltipArea; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.data.Pair; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.CommonComponents; @@ -80,7 +80,6 @@ public ModularGuiLineBuilder addTextInput(int x, int width, BiConsumer textLines, int mouseX, + public static void drawHoveringText(GuiGraphicsExtractor graphics, List textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, Font font) { drawHoveringText(graphics, textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, - IGuiGraphicsExtension.DEFAULT_BACKGROUND_COLOR, IGuiGraphicsExtension.DEFAULT_BORDER_COLOR_START, IGuiGraphicsExtension.DEFAULT_BORDER_COLOR_END, + DEFAULT_BACKGROUND_COLOR, DEFAULT_BORDER_COLOR_START, DEFAULT_BORDER_COLOR_END, font); } - public static void drawHoveringText(GuiGraphics graphics, List textLines, int mouseX, + public static void drawHoveringText(GuiGraphicsExtractor graphics, List textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, int backgroundColor, int borderColorStart, int borderColorEnd, Font font) { drawHoveringText(cachedTooltipStack, graphics, textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, backgroundColor, borderColorStart, borderColorEnd, font); } - public static void drawHoveringText(@NotNull final ItemStack stack, GuiGraphics graphics, + public static void drawHoveringText(@NotNull final ItemStack stack, GuiGraphicsExtractor graphics, List textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, Font font) { drawHoveringText(stack, graphics, textLines, mouseX, mouseY, screenWidth, screenHeight, maxTextWidth, - IGuiGraphicsExtension.DEFAULT_BACKGROUND_COLOR, IGuiGraphicsExtension.DEFAULT_BORDER_COLOR_START, IGuiGraphicsExtension.DEFAULT_BORDER_COLOR_END, + DEFAULT_BACKGROUND_COLOR, DEFAULT_BORDER_COLOR_START, DEFAULT_BORDER_COLOR_END, font); } - public static void drawHoveringText(@NotNull final ItemStack stack, GuiGraphics graphics, + public static void drawHoveringText(@NotNull final ItemStack stack, GuiGraphicsExtractor graphics, List textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, int backgroundColor, int borderColorStart, int borderColorEnd, Font font) { if (textLines.isEmpty()) return; - - List list = ClientHooks.gatherTooltipComponents(stack, textLines, - stack.getTooltipImage(), mouseX, screenWidth, screenHeight, font); - RenderTooltipEvent.Pre event = - new RenderTooltipEvent.Pre(stack, graphics, mouseX, mouseY, screenWidth, screenHeight, font, list, null); - if (NeoForge.EVENT_BUS.post(event).isCanceled()) - return; - - PoseStack pStack = graphics.pose(); - - mouseX = event.getX(); - mouseY = event.getY(); - screenWidth = event.getScreenWidth(); - screenHeight = event.getScreenHeight(); - font = event.getFont(); - - // RenderSystem.disableRescaleNormal(); - RenderSystem.disableDepthTest(); - int tooltipTextWidth = 0; - - for (FormattedText textLine : textLines) { - int textLineWidth = font.width(textLine); - if (textLineWidth > tooltipTextWidth) - tooltipTextWidth = textLineWidth; - } - - boolean needsWrap = false; - - int titleLinesCount = 1; - int tooltipX = mouseX + 12; - if (tooltipX + tooltipTextWidth + 4 > screenWidth) { - tooltipX = mouseX - 16 - tooltipTextWidth; - if (tooltipX < 4) // if the tooltip doesn't fit on the screen - { - if (mouseX > screenWidth / 2) - tooltipTextWidth = mouseX - 12 - 8; - else - tooltipTextWidth = screenWidth - 16 - mouseX; - needsWrap = true; - } - } - - if (maxTextWidth > 0 && tooltipTextWidth > maxTextWidth) { - tooltipTextWidth = maxTextWidth; - needsWrap = true; - } - - if (needsWrap) { - int wrappedTooltipWidth = 0; - List wrappedTextLines = new ArrayList<>(); - for (int i = 0; i < textLines.size(); i++) { - FormattedText textLine = textLines.get(i); - List wrappedLine = font.getSplitter() - .splitLines(textLine, tooltipTextWidth, Style.EMPTY); - if (i == 0) - titleLinesCount = wrappedLine.size(); - - for (FormattedText line : wrappedLine) { - int lineWidth = font.width(line); - if (lineWidth > wrappedTooltipWidth) - wrappedTooltipWidth = lineWidth; - wrappedTextLines.add(line); - } - } - tooltipTextWidth = wrappedTooltipWidth; - textLines = wrappedTextLines; - - if (mouseX > screenWidth / 2) - tooltipX = mouseX - 16 - tooltipTextWidth; - else - tooltipX = mouseX + 12; - } - - int tooltipY = mouseY - 12; - int tooltipHeight = 8; - - if (textLines.size() > 1) { - tooltipHeight += (textLines.size() - 1) * 10; - if (textLines.size() > titleLinesCount) - tooltipHeight += 2; // gap between title lines and next lines - } - - if (tooltipY < 4) - tooltipY = 4; - else if (tooltipY + tooltipHeight + 4 > screenHeight) - tooltipY = screenHeight - tooltipHeight - 4; - - final int zLevel = 400; - RenderTooltipEvent.Color colorEvent = new RenderTooltipEvent.Color(stack, graphics, tooltipX, tooltipY, - font, backgroundColor, borderColorStart, borderColorEnd, list); - NeoForge.EVENT_BUS.post(colorEvent); - backgroundColor = colorEvent.getBackgroundStart(); - borderColorStart = colorEvent.getBorderStart(); - borderColorEnd = colorEvent.getBorderEnd(); - - pStack.pushPose(); - Matrix4f mat = pStack.last() - .pose(); - graphics.fillGradient(tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, - tooltipY - 3, zLevel, backgroundColor, backgroundColor); - graphics.fillGradient(tooltipX - 3, tooltipY + tooltipHeight + 3, - tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, zLevel, backgroundColor, backgroundColor); - graphics.fillGradient(tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, - tooltipY + tooltipHeight + 3, zLevel, backgroundColor, backgroundColor); - graphics.fillGradient(tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, - zLevel, backgroundColor, backgroundColor); - graphics.fillGradient(tooltipX + tooltipTextWidth + 3, tooltipY - 3, - tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, zLevel, backgroundColor, backgroundColor); - graphics.fillGradient(tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, - tooltipY + tooltipHeight + 3 - 1, zLevel, borderColorStart, borderColorEnd); - graphics.fillGradient(tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, - tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, zLevel, borderColorStart, borderColorEnd); - graphics.fillGradient(tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, - tooltipY - 3 + 1, zLevel, borderColorStart, borderColorStart); - graphics.fillGradient(tooltipX - 3, tooltipY + tooltipHeight + 2, - tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, zLevel, borderColorEnd, borderColorEnd); - - MultiBufferSource.BufferSource renderType = graphics.bufferSource(); - pStack.translate(0.0D, 0.0D, zLevel); - - for (int lineNumber = 0; lineNumber < list.size(); ++lineNumber) { - ClientTooltipComponent line = list.get(lineNumber); - - if (line != null) - line.renderText(font, tooltipX, tooltipY, mat, renderType); - - if (lineNumber + 1 == titleLinesCount) - tooltipY += 2; - - tooltipY += line == null ? 10 : line.getHeight(); - } - - renderType.endBatch(); - pStack.popPose(); - - RenderSystem.enableDepthTest(); + graphics.setComponentTooltipForNextFrame(font, textLines, mouseX, mouseY, stack); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java b/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java index 908cf123bb..4270f81fdb 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/AbstractSimiContainerScreen.java @@ -10,11 +10,13 @@ import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.gui.TickableGuiEventListener; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; +import com.mojang.blaze3d.platform.InputConstants; + +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.gui.TickableGuiEventListener; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.Renderable; @@ -22,6 +24,9 @@ import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.gui.screens.inventory.ContainerScreen; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.client.renderer.Rect2i; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; @@ -30,16 +35,17 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) @ParametersAreNonnullByDefault public abstract class AbstractSimiContainerScreen extends AbstractContainerScreen { + protected int imageWidth, imageHeight; protected int windowXOffset, windowYOffset; public AbstractSimiContainerScreen(T container, Inventory inv, Component title) { super(container, inv, title); + imageWidth = super.getImageWidth(); + imageHeight = super.getImageHeight(); } /** @@ -61,8 +67,8 @@ protected void setWindowOffset(int xOffset, int yOffset) { @Override protected void init() { super.init(); - leftPos += windowXOffset; - topPos += windowYOffset; + leftPos = (width - imageWidth) / 2 + windowXOffset; + topPos = (height - imageHeight) / 2 + windowYOffset; } @Override @@ -100,30 +106,46 @@ protected void removeWidgets(Collection widgets) { } /*@Override - public void renderBackground(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { + public void renderBackground(GuiGraphicsExtractor pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { NeoForge.EVENT_BUS.post(new ContainerScreenEvent.Render.Background(this, pGuiGraphics, pMouseX, pMouseY)); renderBg(pGuiGraphics, pPartialTick, pMouseX, pMouseY); }*/ @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - partialTicks = AnimationTickHolder.getPartialTicksUI(); + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + partialTicks = AnimationTickHolder.getGuiPartialTicks(); - super.render(graphics, mouseX, mouseY, partialTicks); + renderBg(graphics, partialTicks, mouseX, mouseY); + super.extractRenderState(graphics, mouseX, mouseY, partialTicks); renderForeground(graphics, mouseX, mouseY, partialTicks); } + public void render(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + extractRenderState(graphics, mouseX, mouseY, partialTicks); + } + + protected void renderBg(GuiGraphicsExtractor graphics, float partialTicks, int mouseX, int mouseY) { + } + + protected void renderTooltip(GuiGraphicsExtractor graphics, int mouseX, int mouseY) { + extractTooltip(graphics, mouseX, mouseY); + } + + protected int getSlotColor(int slotIndex) { + return 0x80ffffff; + } + @Override - protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) { + protected void extractLabels(GuiGraphicsExtractor graphics, int mouseX, int mouseY) { // no-op to prevent screen- and inventory-title from being rendered at incorrect // location // could also set this.titleX/Y and this.playerInventoryTitleX/Y to the proper // values instead } - protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - renderTooltip(graphics, mouseX, mouseY); + protected void renderForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + extractTooltip(graphics, mouseX, mouseY); for (Renderable widget : renderables) { if (widget instanceof AbstractSimiWidget simiWidget && simiWidget.isMouseOver(mouseX, mouseY)) { List tooltip = simiWidget.getToolTip(); @@ -131,7 +153,7 @@ protected void renderForeground(GuiGraphics graphics, int mouseX, int mouseY, fl continue; int ttx = simiWidget.lockedTooltipX == -1 ? mouseX : simiWidget.lockedTooltipX + simiWidget.getX(); int tty = simiWidget.lockedTooltipY == -1 ? mouseY : simiWidget.lockedTooltipY + simiWidget.getY(); - graphics.renderComponentTooltip(font, tooltip, ttx, tty); + graphics.setComponentTooltipForNextFrame(font, tooltip, ttx, tty); } } } @@ -140,23 +162,54 @@ public int getLeftOfCentered(int textureWidth) { return leftPos - windowXOffset + (imageWidth - textureWidth) / 2; } - public void renderPlayerInventory(GuiGraphics graphics, int x, int y) { + public void renderPlayerInventory(GuiGraphicsExtractor graphics, int x, int y) { AllGuiTextures.PLAYER_INVENTORY.render(graphics, x, y); - graphics.drawString(font, playerInventoryTitle, x + 8, y + 6, 0x404040, false); + graphics.text(font, playerInventoryTitle, x + 8, y + 6, 0x404040, false); } @Override - public boolean keyPressed(int pKeyCode, int pScanCode, int pModifiers) { - if (getFocused() instanceof EditBox && pKeyCode != GLFW.GLFW_KEY_ESCAPE) - return getFocused().keyPressed(pKeyCode, pScanCode, pModifiers); - return super.keyPressed(pKeyCode, pScanCode, pModifiers); + public boolean keyPressed(KeyEvent event) { + if (getFocused() instanceof EditBox && event.key() != GLFW.GLFW_KEY_ESCAPE) + return getFocused().keyPressed(event); + if (keyPressed(event.key(), event.scancode(), event.modifiers())) + return true; + return super.keyPressed(event); + } + + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + return false; + } + + @Override + public boolean charTyped(CharacterEvent event) { + return charTyped((char) event.codepoint(), 0) || super.charTyped(event); + } + + public boolean charTyped(char codePoint, int modifiers) { + return false; } @Override - public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { - if (getFocused() != null && !getFocused().isMouseOver(pMouseX, pMouseY)) + public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) { + if (getFocused() != null && !getFocused().isMouseOver(event.x(), event.y())) setFocused(null); - return super.mouseClicked(pMouseX, pMouseY, pButton); + if (mouseClicked(event.x(), event.y(), event.button())) + return true; + return super.mouseClicked(event, doubleClick); + } + + public boolean mouseClicked(double mouseX, double mouseY, int button) { + return false; + } + + public boolean hasControlDown() { + return InputConstants.isKeyDown(minecraft.getWindow(), GLFW.GLFW_KEY_LEFT_CONTROL) + || InputConstants.isKeyDown(minecraft.getWindow(), GLFW.GLFW_KEY_RIGHT_CONTROL); + } + + public boolean hasShiftDown() { + return InputConstants.isKeyDown(minecraft.getWindow(), GLFW.GLFW_KEY_LEFT_SHIFT) + || InputConstants.isKeyDown(minecraft.getWindow(), GLFW.GLFW_KEY_RIGHT_SHIFT); } @Override @@ -178,13 +231,33 @@ public List getExtraAreas() { return Collections.emptyList(); } + @Override + public int getImageWidth() { + return imageWidth; + } + + @Override + public int getImageHeight() { + return imageHeight; + } + + @Override + public int getXSize() { + return imageWidth; + } + + @Override + public int getYSize() { + return imageHeight; + } + @Deprecated - protected void debugWindowArea(GuiGraphics graphics) { + protected void debugWindowArea(GuiGraphicsExtractor graphics) { graphics.fill(leftPos + imageWidth, topPos + imageHeight, leftPos, topPos, 0xD3D3D3D3); } @Deprecated - protected void debugExtraAreas(GuiGraphics graphics) { + protected void debugExtraAreas(GuiGraphicsExtractor graphics) { for (Rect2i area : getExtraAreas()) { graphics.fill(area.getX() + area.getWidth(), area.getY() + area.getHeight(), area.getX(), area.getY(), 0xD3D3D3D3); diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/GhostItemMenu.java b/src/main/java/com/simibubi/create/foundation/gui/menu/GhostItemMenu.java index a1070938f7..ddab021203 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/GhostItemMenu.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/GhostItemMenu.java @@ -3,7 +3,7 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; @@ -50,17 +50,17 @@ public boolean canDragTo(Slot slotIn) { } @Override - public void clicked(int slotId, int dragType, ClickType clickTypeIn, Player player) { + public void clicked(int slotId, int dragType, ContainerInput clickTypeIn, Player player) { if (slotId < 36) { super.clicked(slotId, dragType, clickTypeIn, player); return; } - if (clickTypeIn == ClickType.THROW) + if (clickTypeIn == ContainerInput.THROW) return; ItemStack held = getCarried(); int slot = slotId - 36; - if (clickTypeIn == ClickType.CLONE) { + if (clickTypeIn == ContainerInput.CLONE) { if (player.isCreative() && held.isEmpty()) { ItemStack stackInSlot = ghostInventory.getStackInSlot(slot) .copy(); diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/HeldItemGhostItemMenu.java b/src/main/java/com/simibubi/create/foundation/gui/menu/HeldItemGhostItemMenu.java index 95fac216f6..0cc6c5b449 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/HeldItemGhostItemMenu.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/HeldItemGhostItemMenu.java @@ -3,13 +3,12 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.ContainerInput; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; /** * A {@link GhostItemMenu} that is linked to the item in a player's main hand. Prevents its owner item from being manipulated. @@ -24,14 +23,13 @@ protected HeldItemGhostItemMenu(MenuType type, int id, Inventory inv, ItemSta } @Override - @OnlyIn(Dist.CLIENT) protected ItemStack createOnClient(RegistryFriendlyByteBuf extraData) { return ItemStack.STREAM_CODEC.decode(extraData); } @Override - public void clicked(int index, int dragType, ClickType clickType, Player player) { - if (!this.isInSlot(index) || clickType == ClickType.THROW || clickType == ClickType.CLONE) { + public void clicked(int index, int dragType, ContainerInput clickType, Player player) { + if (!this.isInSlot(index) || clickType == ContainerInput.THROW || clickType == ContainerInput.CLONE) { super.clicked(index, dragType, clickType, player); } } @@ -44,11 +42,11 @@ public boolean canTakeItemForPickAll(ItemStack stack, Slot slot) { @Override public boolean stillValid(Player player) { - return playerInventory.getSelected() == contentHolder; + return playerInventory.getSelectedItem() == contentHolder; } protected boolean isInSlot(int index) { // Inventory has the hotbar as 0-8, but menus put the hotbar at 27-35 - return index >= 27 && index - 27 == playerInventory.selected; + return index >= 27 && index - 27 == playerInventory.getSelectedSlot(); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/IClearableMenu.java b/src/main/java/com/simibubi/create/foundation/gui/menu/IClearableMenu.java index 302613731f..6b39884778 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/IClearableMenu.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/IClearableMenu.java @@ -1,11 +1,11 @@ package com.simibubi.create.foundation.gui.menu; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; public interface IClearableMenu { default void sendClearPacket() { - CatnipServices.NETWORK.sendToServer(ClearMenuPacket.INSTANCE); + net.createmod.catnip.api.client.network.ClientNetworkHelper.INSTANCE.sendToServer(ClearMenuPacket.INSTANCE); } void clearContents(); diff --git a/src/main/java/com/simibubi/create/foundation/gui/menu/MenuBase.java b/src/main/java/com/simibubi/create/foundation/gui/menu/MenuBase.java index ec1e934502..86cee95cb6 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/menu/MenuBase.java +++ b/src/main/java/com/simibubi/create/foundation/gui/menu/MenuBase.java @@ -10,7 +10,6 @@ import net.minecraft.world.inventory.Slot; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public abstract class MenuBase extends AbstractContainerMenu { public Player player; @@ -36,7 +35,6 @@ protected void init(Inventory inv, T contentHolderIn) { broadcastChanges(); } - @OnlyIn(Dist.CLIENT) protected abstract T createOnClient(RegistryFriendlyByteBuf extraData); protected abstract void initAndReadInventory(T contentHolder); diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/CompositeWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widget/CompositeWidget.java index e98dd8bb4b..501d0e0543 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/CompositeWidget.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/CompositeWidget.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.gui.widget; -import net.createmod.catnip.gui.TickableGuiEventListener; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.TickableGuiEventListener; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.AbstractContainerEventHandler; import net.minecraft.client.gui.components.events.GuiEventListener; @@ -63,11 +63,11 @@ public List children() { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { this.getChildAt(mouseX, mouseY).ifPresent(hovered -> this.hovered = hovered); for (Renderable renderable : this.renderables) { - renderable.render(graphics, mouseX, mouseY, partialTicks); + renderable.extractRenderState(graphics, mouseX, mouseY, partialTicks); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java b/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java index ffee722c24..14b6b6c1db 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/IconButton.java @@ -1,12 +1,13 @@ package com.simibubi.create.foundation.gui.widget; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllKeys; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.element.ScreenElement; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.element.ScreenElement; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.chat.Component; public class IconButton extends AbstractSimiWidget { @@ -25,7 +26,7 @@ public IconButton(int x, int y, int w, int h, ScreenElement icon) { } @Override - public void doRender(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + public void doRender(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { if (visible) { isHovered = mouseX >= getX() && mouseY >= getY() && mouseX < getX() + width && mouseY < getY() + height; @@ -34,15 +35,15 @@ public void doRender(GuiGraphics graphics, int mouseX, int mouseY, float partial : isHovered ? AllGuiTextures.BUTTON_HOVER : green ? AllGuiTextures.BUTTON_GREEN : AllGuiTextures.BUTTON; - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + LegacyRenderSystemBridge.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); drawBg(graphics, button); icon.render(graphics, getX() + 1, getY() + 1); } } - protected void drawBg(GuiGraphics graphics, AllGuiTextures button) { - graphics.blit(button.location, getX(), getY(), button.getStartX(), button.getStartY(), button.getWidth(), - button.getHeight()); + protected void drawBg(GuiGraphicsExtractor graphics, AllGuiTextures button) { + graphics.blit(RenderPipelines.GUI_TEXTURED, button.location, getX(), getY(), button.getStartX(), button.getStartY(), + button.getWidth(), button.getHeight(), 256, 256); } public void setToolTip(Component text) { diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java b/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java index 4be43c2bf5..0570279417 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/Indicator.java @@ -3,8 +3,8 @@ import com.google.common.collect.ImmutableList; import com.simibubi.create.foundation.gui.AllGuiTextures; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; public class Indicator extends AbstractSimiWidget { @@ -18,7 +18,7 @@ public Indicator(int x, int y, Component tooltip) { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks ) { + protected void doRender(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks ) { if (!visible) return; AllGuiTextures toDraw; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java index 6fe87b70ab..499a521b72 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/Label.java @@ -2,12 +2,12 @@ import org.jetbrains.annotations.NotNull; -import com.mojang.blaze3d.systems.RenderSystem; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -71,16 +71,16 @@ public void setTextAndTrim(Component newText, boolean trimFront, int maxWidthPx) } @Override - protected void doRender(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void doRender(@NotNull GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { if (text == null || text.getString().isEmpty()) return; - RenderSystem.setShaderColor(1, 1, 1, 1); + LegacyRenderSystemBridge.setShaderColor(1, 1, 1, 1); MutableComponent copy = text.plainCopy(); if (suffix != null && !suffix.isEmpty()) copy.append(suffix); - graphics.drawString(font, copy, getX(), getY(), color, hasShadow); + graphics.text(font, copy, getX(), getY(), color, hasShadow); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/ScreenOverlay.java b/src/main/java/com/simibubi/create/foundation/gui/widget/ScreenOverlay.java index 2f5c03c24f..6252834e71 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/ScreenOverlay.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/ScreenOverlay.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.gui.widget; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; /** * A set of widgets that are offset on the Z axis, allowing them to render above/below other "layers". @@ -13,10 +13,7 @@ public ScreenOverlay(int zOffset) { } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - graphics.pose().pushPose(); - graphics.pose().translate(0, 0, this.zOffset); - super.render(graphics, mouseX, mouseY, partialTicks); - graphics.pose().popPose(); + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { + super.extractRenderState(graphics, mouseX, mouseY, partialTicks); } } diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java index cdb73d1ea2..4e918ab08e 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/ScrollInput.java @@ -8,7 +8,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour.StepContext; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.sounds.SimpleSoundInstance; diff --git a/src/main/java/com/simibubi/create/foundation/gui/widget/TooltipArea.java b/src/main/java/com/simibubi/create/foundation/gui/widget/TooltipArea.java index 45cef4ddad..98ef01d7fe 100644 --- a/src/main/java/com/simibubi/create/foundation/gui/widget/TooltipArea.java +++ b/src/main/java/com/simibubi/create/foundation/gui/widget/TooltipArea.java @@ -2,8 +2,8 @@ import java.util.List; -import net.createmod.catnip.gui.widget.AbstractSimiWidget; -import net.minecraft.client.gui.GuiGraphics; +import net.createmod.catnip.api.client.gui.widget.AbstractSimiWidget; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; public class TooltipArea extends AbstractSimiWidget { @@ -13,7 +13,7 @@ public TooltipArea(int x, int y, int width, int height) { } @Override - public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void doRender(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { if (visible) isHovered = mouseX >= getX() && mouseY >= getY() && mouseX < getX() + width && mouseY < getY() + height; } diff --git a/src/main/java/com/simibubi/create/foundation/item/CountedItemStackList.java b/src/main/java/com/simibubi/create/foundation/item/CountedItemStackList.java index d3c36d4ad9..a34287a9ad 100644 --- a/src/main/java/com/simibubi/create/foundation/item/CountedItemStackList.java +++ b/src/main/java/com/simibubi/create/foundation/item/CountedItemStackList.java @@ -9,7 +9,7 @@ import com.simibubi.create.foundation.blockEntity.behaviour.filtering.FilteringBehaviour; -import net.createmod.catnip.data.IntAttached; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/foundation/item/CustomRenderedArmorItem.java b/src/main/java/com/simibubi/create/foundation/item/CustomRenderedArmorItem.java deleted file mode 100644 index 0808eafd75..0000000000 --- a/src/main/java/com/simibubi/create/foundation/item/CustomRenderedArmorItem.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.foundation.item; - -import com.mojang.blaze3d.vertex.PoseStack; - -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - -public interface CustomRenderedArmorItem { - @OnlyIn(Dist.CLIENT) - void renderArmorPiece(HumanoidArmorLayer layer, PoseStack poseStack, MultiBufferSource bufferSource, LivingEntity entity, EquipmentSlot slot, int light, HumanoidModel originalModel, ItemStack stack); -} diff --git a/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java b/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java index 9fa4267415..5c5df6e004 100644 --- a/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java +++ b/src/main/java/com/simibubi/create/foundation/item/CustomUseEffectsItem.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.item; -import net.createmod.catnip.data.TriState; +import net.createmod.catnip.api.data.TriState; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/foundation/item/EnchantedBookItem.java b/src/main/java/com/simibubi/create/foundation/item/EnchantedBookItem.java new file mode 100644 index 0000000000..9ce91f0809 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/EnchantedBookItem.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.item; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.EnchantmentInstance; + +public class EnchantedBookItem { + private EnchantedBookItem() {} + + public static ItemStack createForEnchantment(EnchantmentInstance enchantment) { + ItemStack stack = new ItemStack(Items.ENCHANTED_BOOK); + EnchantmentHelper.updateEnchantments(stack, mutable -> mutable.set(enchantment.enchantment(), enchantment.level())); + return stack; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemColor.java b/src/main/java/com/simibubi/create/foundation/item/ItemColor.java new file mode 100644 index 0000000000..d2da49fa6e --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/ItemColor.java @@ -0,0 +1,12 @@ +package com.simibubi.create.foundation.item; + +import net.minecraft.world.item.ItemStack; + +/** + * Temporary Create 26.2 bridge for legacy item color callbacks. + * TODO 26.2: Replace callers with ItemTintSource registrations. + */ +@Deprecated(forRemoval = true) +public interface ItemColor { + int getColor(ItemStack stack, int layer); +} diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java index 9b18304f71..fac312fa51 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java @@ -13,11 +13,13 @@ import org.apache.commons.lang3.tuple.Pair; import org.jetbrains.annotations.Nullable; +import org.lwjgl.glfw.GLFW; import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.platform.InputConstants; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.lang.FontHelper.Palette; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; @@ -50,13 +52,13 @@ public static ItemDescription create(String translationKey, Palette palette) { } public static boolean canFillBuilder(String translationKey) { - return I18n.exists(translationKey); + return !I18n.get(translationKey).equals(translationKey); } public static void fillBuilder(Builder builder, String translationKey) { // Summary String summaryKey = translationKey + ".summary"; - if (I18n.exists(summaryKey)) { + if (canFillBuilder(summaryKey)) { builder.addSummary(I18n.get(summaryKey)); } @@ -64,7 +66,7 @@ public static void fillBuilder(Builder builder, String translationKey) { for (int i = 1; i < 100; i++) { String conditionKey = translationKey + ".condition" + i; String behaviourKey = translationKey + ".behaviour" + i; - if (!I18n.exists(conditionKey)) + if (!canFillBuilder(conditionKey)) break; builder.addBehaviour(I18n.get(conditionKey), I18n.get(behaviourKey)); } @@ -73,7 +75,7 @@ public static void fillBuilder(Builder builder, String translationKey) { for (int i = 1; i < 100; i++) { String controlKey = translationKey + ".control" + i; String actionKey = translationKey + ".action" + i; - if (!I18n.exists(controlKey)) + if (!canFillBuilder(controlKey)) break; builder.addAction(I18n.get(controlKey), I18n.get(actionKey)); } @@ -101,15 +103,25 @@ public static String getTooltipTranslationKey(Item item) { } public ImmutableList getCurrentLines() { - if (Screen.hasShiftDown()) { + if (hasShiftDown()) { return linesOnShift; - } else if (Screen.hasControlDown()) { + } else if (hasControlDown()) { return linesOnCtrl; } else { return lines; } } + private static boolean hasShiftDown() { + return InputConstants.isKeyDown(Minecraft.getInstance().getWindow(), GLFW.GLFW_KEY_LEFT_SHIFT) + || InputConstants.isKeyDown(Minecraft.getInstance().getWindow(), GLFW.GLFW_KEY_RIGHT_SHIFT); + } + + private static boolean hasControlDown() { + return InputConstants.isKeyDown(Minecraft.getInstance().getWindow(), GLFW.GLFW_KEY_LEFT_CONTROL) + || InputConstants.isKeyDown(Minecraft.getInstance().getWindow(), GLFW.GLFW_KEY_RIGHT_CONTROL); + } + public static class Builder { protected final Palette palette; protected final List summary = new ArrayList<>(); diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java b/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java index 569193efb9..43c0645958 100644 --- a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java @@ -13,9 +13,8 @@ import com.simibubi.create.foundation.block.IBE; import com.simibubi.create.foundation.mixin.accessor.ItemStackHandlerAccessor; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.data.Pair; import net.minecraft.core.BlockPos; -import net.minecraft.core.NonNullList; import net.minecraft.util.Mth; import net.minecraft.world.Containers; import net.minecraft.world.entity.Entity; @@ -26,7 +25,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.IItemHandlerModifiable; import net.neoforged.neoforge.items.ItemStackHandler; @@ -84,10 +82,8 @@ public static boolean isSameInventory(IItemHandler h1, IItemHandler h2) { } public static > int calcRedstoneFromBlockEntity(T ibe, Level level, BlockPos pos) { - return ibe.getBlockEntityOptional(level, pos) - .map(be -> level.getCapability(ItemHandler.BLOCK, pos, null)) - .map(ItemHelper::calcRedstoneFromInventory) - .orElse(0); + // TODO 26.2: migrate inventory redstone checks to NeoForge's ResourceHandler capability. + return 0; } public static int calcRedstoneFromInventory(@Nullable IItemHandler inv) { @@ -117,14 +113,13 @@ public static int calcRedstoneFromInventory(@Nullable IItemHandler inv) { return Mth.floor(f * 14.0F) + (i > 0 ? 1 : 0); } - public static List> condenseIngredients(NonNullList recipeIngredients) { + public static List> condenseIngredients(List recipeIngredients) { List> actualIngredients = new ArrayList<>(); Ingredients: for (Ingredient igd : recipeIngredients) { for (Pair pair : actualIngredients) { - ItemStack[] stacks1 = pair.getFirst() - .getItems(); - ItemStack[] stacks2 = igd.getItems(); + ItemStack[] stacks1 = ingredientStacks(pair.getFirst()); + ItemStack[] stacks2 = ingredientStacks(igd); if (stacks1.length != stacks2.length) continue; for (int i = 0; i <= stacks1.length; i++) { @@ -145,8 +140,8 @@ public static List> condenseIngredients(NonNullList public static boolean matchIngredients(Ingredient i1, Ingredient i2) { if (i1 == i2) return true; - ItemStack[] stacks1 = i1.getItems(); - ItemStack[] stacks2 = i2.getItems(); + ItemStack[] stacks1 = ingredientStacks(i1); + ItemStack[] stacks2 = ingredientStacks(i2); if (stacks1 == stacks2) return true; if (stacks1.length == stacks2.length) { @@ -158,7 +153,7 @@ public static boolean matchIngredients(Ingredient i1, Ingredient i2) { return false; } - public static boolean matchAllIngredients(NonNullList ingredients) { + public static boolean matchAllIngredients(List ingredients) { if (ingredients.size() <= 1) return true; Ingredient firstIngredient = ingredients.get(0); @@ -316,7 +311,7 @@ public static ItemStack fromItemEntity(Entity entityIn) { } public static void fillItemStackHandler(ItemContainerContents contents, ItemStackHandler inv) { - List itemStacks = contents.stream().toList(); + List itemStacks = contents.allItemsCopyStream().toList(); for (int i = 0; i < itemStacks.size(); i++) { inv.setStackInSlot(i, itemStacks.get(i)); @@ -362,4 +357,10 @@ public static List getNonEmptyStacks(ItemStackHandler handler) { } return stacks; } + + private static ItemStack[] ingredientStacks(Ingredient ingredient) { + return ingredient.items() + .map(holder -> new ItemStack(holder.value())) + .toArray(ItemStack[]::new); + } } diff --git a/src/main/java/com/simibubi/create/foundation/item/KineticStats.java b/src/main/java/com/simibubi/create/foundation/item/KineticStats.java index 09c81072d3..f0bc8a0d94 100644 --- a/src/main/java/com/simibubi/create/foundation/item/KineticStats.java +++ b/src/main/java/com/simibubi/create/foundation/item/KineticStats.java @@ -20,8 +20,8 @@ import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.CKinetics; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.lang.LangBuilder; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.lang.LangBuilder; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Player; diff --git a/src/main/java/com/simibubi/create/foundation/item/LayeredArmorItem.java b/src/main/java/com/simibubi/create/foundation/item/LayeredArmorItem.java deleted file mode 100644 index e7a42288d6..0000000000 --- a/src/main/java/com/simibubi/create/foundation/item/LayeredArmorItem.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.foundation.item; - -import java.util.Map; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.simibubi.create.foundation.mixin.accessor.HumanoidArmorLayerAccessor; - -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.Model; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ArmorItem; -import net.minecraft.world.item.ItemStack; - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; - -public interface LayeredArmorItem extends CustomRenderedArmorItem { - @OnlyIn(Dist.CLIENT) - @SuppressWarnings({"unchecked", "rawtypes"}) - @Override - default void renderArmorPiece(HumanoidArmorLayer layer, PoseStack poseStack, - MultiBufferSource bufferSource, LivingEntity entity, EquipmentSlot slot, int light, - HumanoidModel originalModel, ItemStack stack) { - if (!(stack.getItem() instanceof ArmorItem item)) { - return; - } - if (!item.canEquip(stack, slot, entity)) { - return; - } - - HumanoidArmorLayerAccessor accessor = (HumanoidArmorLayerAccessor) layer; - Map locationCache = HumanoidArmorLayerAccessor.create$getArmorLocationCache(); - boolean glint = stack.hasFoil(); - - HumanoidModel innerModel = accessor.create$getInnerModel(); - layer.getParentModel().copyPropertiesTo((HumanoidModel) innerModel); - accessor.create$callSetPartVisibility(innerModel, slot); - String locationStr2 = getArmorTextureLocation(entity, slot, stack, 2); - ResourceLocation location2 = locationCache.computeIfAbsent(locationStr2, ResourceLocation::parse); - renderModel(poseStack, bufferSource, light, item, innerModel, glint, -1, location2); - - HumanoidModel outerModel = accessor.create$getOuterModel(); - layer.getParentModel().copyPropertiesTo((HumanoidModel) outerModel); - accessor.create$callSetPartVisibility(outerModel, slot); - String locationStr1 = getArmorTextureLocation(entity, slot, stack, 1); - ResourceLocation location1 = locationCache.computeIfAbsent(locationStr1, ResourceLocation::parse); - renderModel(poseStack, bufferSource, light, item, outerModel, glint, -1, location1); - } - - // from HumanoidArmorLayer.renderModel - private void renderModel(PoseStack poseStack, MultiBufferSource bufferSource, int light, ArmorItem item, - Model model, boolean glint, int color, ResourceLocation armorResource) { - VertexConsumer vertexconsumer = bufferSource.getBuffer(RenderType.armorCutoutNoCull(armorResource)); - model.renderToBuffer(poseStack, vertexconsumer, light, OverlayTexture.NO_OVERLAY, color); - if (glint) - model.renderToBuffer(poseStack, bufferSource.getBuffer(RenderType.armorEntityGlint()), light, OverlayTexture.NO_OVERLAY); - } - - String getArmorTextureLocation(LivingEntity entity, EquipmentSlot slot, ItemStack stack, int layer); -} diff --git a/src/main/java/com/simibubi/create/foundation/item/LegacyItemHandlerAdapter.java b/src/main/java/com/simibubi/create/foundation/item/LegacyItemHandlerAdapter.java new file mode 100644 index 0000000000..3b6eb0a809 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/LegacyItemHandlerAdapter.java @@ -0,0 +1,84 @@ +package com.simibubi.create.foundation.item; + +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.IItemHandlerModifiable; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.item.ItemResource; +import net.neoforged.neoforge.transfer.item.ItemUtil; +import net.neoforged.neoforge.transfer.transaction.Transaction; + +public class LegacyItemHandlerAdapter implements IItemHandlerModifiable { + private final ResourceHandler handler; + + public LegacyItemHandlerAdapter(ResourceHandler handler) { + this.handler = handler; + } + + public static IItemHandler of(ResourceHandler handler) { + return handler == null ? null : new LegacyItemHandlerAdapter(handler); + } + + public static IItemHandlerModifiable modifiable(ResourceHandler handler) { + return handler == null ? null : new LegacyItemHandlerAdapter(handler); + } + + @Override + public int getSlots() { + return handler.size(); + } + + @Override + public ItemStack getStackInSlot(int slot) { + return ItemUtil.getStack(handler, slot); + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + return ItemUtil.insertItemReturnRemaining(handler, slot, stack, simulate, null); + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + if (amount <= 0) + return ItemStack.EMPTY; + ItemResource resource = handler.getResource(slot); + if (resource.isEmpty()) + return ItemStack.EMPTY; + amount = Math.min(amount, resource.getMaxStackSize()); + try (Transaction transaction = Transaction.openRoot()) { + int extracted = handler.extract(slot, resource, amount, transaction); + if (!simulate) + transaction.commit(); + return resource.toStack(extracted); + } + } + + @Override + public int getSlotLimit(int slot) { + return handler.getCapacityAsInt(slot, ItemResource.EMPTY); + } + + @Override + public boolean isItemValid(int slot, ItemStack stack) { + return !stack.isEmpty() && handler.isValid(slot, ItemResource.of(stack)); + } + + @Override + public void setStackInSlot(int slot, ItemStack stack) { + try (Transaction transaction = Transaction.openRoot()) { + ItemResource current = handler.getResource(slot); + int currentAmount = handler.getAmountAsInt(slot); + if (!current.isEmpty() && currentAmount > 0) + handler.extract(slot, current, currentAmount, transaction); + + if (!stack.isEmpty()) { + int inserted = handler.insert(slot, ItemResource.of(stack), stack.getCount(), transaction); + if (inserted != stack.getCount()) + return; + } + + transaction.commit(); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/item/LegacyItemTransferAdapter.java b/src/main/java/com/simibubi/create/foundation/item/LegacyItemTransferAdapter.java new file mode 100644 index 0000000000..f43bcb0bcd --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/LegacyItemTransferAdapter.java @@ -0,0 +1,97 @@ +package com.simibubi.create.foundation.item; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.items.IItemHandlerModifiable; +import net.neoforged.neoforge.transfer.ResourceHandler; +import net.neoforged.neoforge.transfer.item.ItemResource; +import net.neoforged.neoforge.transfer.transaction.SnapshotJournal; +import net.neoforged.neoforge.transfer.transaction.TransactionContext; + +public class LegacyItemTransferAdapter extends SnapshotJournal> implements ResourceHandler { + private final IItemHandler handler; + + public LegacyItemTransferAdapter(IItemHandler handler) { + this.handler = handler; + } + + @Override + public int size() { + return handler.getSlots(); + } + + @Override + public ItemResource getResource(int index) { + if (index < 0 || index >= handler.getSlots()) + return ItemResource.EMPTY; + return ItemResource.of(handler.getStackInSlot(index)); + } + + @Override + public long getAmountAsLong(int index) { + if (index < 0 || index >= handler.getSlots()) + return 0; + return handler.getStackInSlot(index) + .getCount(); + } + + @Override + public long getCapacityAsLong(int index, ItemResource resource) { + if (index < 0 || index >= handler.getSlots()) + return 0; + return handler.getSlotLimit(index); + } + + @Override + public boolean isValid(int index, ItemResource resource) { + if (index < 0 || index >= handler.getSlots() || resource.isEmpty()) + return false; + return handler.isItemValid(index, resource.toStack(1)); + } + + @Override + public int insert(int index, ItemResource resource, int amount, TransactionContext transaction) { + if (!isValid(index, resource) || amount <= 0) + return 0; + ItemStack stack = resource.toStack(amount); + int inserted = amount - handler.insertItem(index, stack, true).getCount(); + if (inserted <= 0) + return 0; + updateSnapshots(transaction); + return amount - handler.insertItem(index, stack.copyWithCount(inserted), false).getCount(); + } + + @Override + public int extract(int index, ItemResource resource, int amount, TransactionContext transaction) { + if (index < 0 || index >= handler.getSlots() || resource.isEmpty() || amount <= 0) + return 0; + ItemStack inSlot = handler.getStackInSlot(index); + if (inSlot.isEmpty() || !resource.matches(inSlot)) + return 0; + ItemStack extracted = handler.extractItem(index, amount, true); + if (extracted.isEmpty()) + return 0; + updateSnapshots(transaction); + return handler.extractItem(index, extracted.getCount(), false) + .getCount(); + } + + @Override + protected List createSnapshot() { + List snapshot = new ArrayList<>(handler.getSlots()); + for (int i = 0; i < handler.getSlots(); i++) + snapshot.add(handler.getStackInSlot(i).copy()); + return snapshot; + } + + @Override + protected void revertToSnapshot(List snapshot) { + if (!(handler instanceof IItemHandlerModifiable modifiable)) + return; + for (int i = 0; i < snapshot.size() && i < modifiable.getSlots(); i++) + modifiable.setStackInSlot(i, snapshot.get(i).copy()); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java b/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java index af22e332e5..c40062ff7f 100644 --- a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java +++ b/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java @@ -7,17 +7,17 @@ import com.simibubi.create.foundation.blockEntity.ItemHandlerContainer; import com.simibubi.create.foundation.blockEntity.SyncedBlockEntity; +import com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; -import net.neoforged.neoforge.common.util.INBTSerializable; import net.neoforged.neoforge.items.IItemHandlerModifiable; import net.neoforged.neoforge.items.ItemStackHandler; public class SmartInventory extends ItemHandlerContainer - implements IItemHandlerModifiable, INBTSerializable { + implements IItemHandlerModifiable { protected boolean extractionAllowed; protected boolean insertionAllowed; @@ -129,14 +129,12 @@ public int getStackLimit(int slot, @NotNull ItemStack stack) { return Math.min(getSlotLimit(slot), stack.getMaxStackSize()); } - @Override public CompoundTag serializeNBT(HolderLookup.Provider registries) { - return getInv().serializeNBT(registries); + return LegacyItemStackNbtBridge.serializeHandler(getInv(), registries); } - @Override public void deserializeNBT(HolderLookup.Provider registries, CompoundTag nbt) { - getInv().deserializeNBT(registries, nbt); + LegacyItemStackNbtBridge.deserializeHandler(getInv(), registries, nbt); } private SyncedStackHandler getInv() { diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java index 2b70c47a54..1a9c16643c 100644 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java @@ -8,8 +8,8 @@ import com.google.common.base.Strings; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.lang.FontHelper; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.client.lang.FontHelper; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java index e10dac516b..625198a103 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java @@ -8,19 +8,19 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; public class CustomItemModels { - private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); + private final Multimap> modelFuncs = MultimapBuilder.hashKeys().arrayListValues().build(); private final Map> finalModelFuncs = new IdentityHashMap<>(); private boolean funcsLoaded = false; - public void register(ResourceLocation item, NonNullFunction func) { + public void register(Identifier item, NonNullFunction func) { modelFuncs.put(item, func); } @@ -39,7 +39,7 @@ private void loadEntriesIfMissing() { private void loadEntries() { finalModelFuncs.clear(); modelFuncs.asMap().forEach((location, funcList) -> { - Item item = BuiltInRegistries.ITEM.get(location); + Item item = BuiltInRegistries.ITEM.getValue(location); if (item == Items.AIR) { return; } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java index 186f45a928..af1d34851d 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java @@ -1,32 +1,13 @@ package com.simibubi.create.foundation.item.render; -import com.mojang.blaze3d.vertex.PoseStack; +public class CustomRenderedItemModel { + private final Object originalModel; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.world.item.ItemDisplayContext; -import net.neoforged.neoforge.client.model.BakedModelWrapper; - -public class CustomRenderedItemModel extends BakedModelWrapper { - - public CustomRenderedItemModel(BakedModel originalModel) { - super(originalModel); - } - - @Override - public boolean isCustomRenderer() { - return true; - } - - @Override - public BakedModel applyTransform(ItemDisplayContext cameraItemDisplayContext, PoseStack mat, - boolean leftHand) { - // Super call returns originalModel, but we want to return this, else BEWLR - // won't be used. - super.applyTransform(cameraItemDisplayContext, mat, leftHand); - return this; + public CustomRenderedItemModel(Object originalModel) { + this.originalModel = originalModel; } - public BakedModel getOriginalModel() { + public Object getOriginalModel() { return originalModel; } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java index 95b8c6e7e2..aeecc31fe5 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java @@ -2,29 +2,17 @@ import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -public abstract class CustomRenderedItemModelRenderer extends BlockEntityWithoutLevelRenderer { +public abstract class CustomRenderedItemModelRenderer { public CustomRenderedItemModelRenderer() { - super(null, null); } - @Override public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack ms, MultiBufferSource buffer, int light, int overlay) { - CustomRenderedItemModel mainModel = (CustomRenderedItemModel) Minecraft.getInstance() - .getItemRenderer() - .getModel(stack, null, null, 0); - PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay); - - ms.pushPose(); - ms.translate(0.5F, 0.5F, 0.5F); - render(stack, mainModel, renderer, transformType, ms, buffer, light, overlay); - ms.popPose(); + // TODO 26.2: Rebuild custom item rendering on top of ItemModel/SpecialModelRenderer. } protected abstract void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer, ItemDisplayContext transformType, diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java index 5655da5fbf..8da1dd013c 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java @@ -31,8 +31,7 @@ public static void forEach(Consumer consumer) { Iterator iterator = ITEMS.iterator(); while (iterator.hasNext()) { Item item = iterator.next(); - if (!BuiltInRegistries.ITEM.containsValue(item) || !(IClientItemExtensions.of(item) - .getCustomRenderer() instanceof CustomRenderedItemModelRenderer)) { + if (!BuiltInRegistries.ITEM.containsValue(item)) { iterator.remove(); } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java index ba4bf6e930..bae1c67efe 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java @@ -4,19 +4,16 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.simibubi.create.foundation.render.RenderTypes; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.resources.model.BakedModel; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class PartialItemModelRenderer { @@ -41,57 +38,27 @@ public static PartialItemModelRenderer of(ItemStack stack, ItemDisplayContext tr return instance; } - public void render(BakedModel model, int light) { - render(model, Sheets.translucentCullBlockSheet(), light); + public void render(Object model, int light) { + render(model, (RenderType) null, light); } - public void renderSolid(BakedModel model, int light) { - render(model, Sheets.solidBlockSheet(), light); + public void renderSolid(Object model, int light) { + render(model, (RenderType) null, light); } - public void renderGlowing(BakedModel model, int light) { + public void renderGlowing(Object model, int light) { render(model, RenderTypes.itemGlowingTranslucent(), light); } - public void renderSolidGlowing(BakedModel model, int light) { + public void renderSolidGlowing(Object model, int light) { render(model, RenderTypes.itemGlowingSolid(), light); } - public void render(BakedModel model, RenderType type, int light) { - if (stack.isEmpty()) - return; - - ms.pushPose(); - ms.translate(-0.5D, -0.5D, -0.5D); - - if (!model.isCustomRenderer()) { - VertexConsumer vc = ItemRenderer.getFoilBufferDirect(buffer, type, true, stack.hasFoil()); - for (BakedModel pass : model.getRenderPasses(stack, false)) { - renderBakedItemModel(pass, light, ms, vc); - } - } else - IClientItemExtensions.of(stack) - .getCustomRenderer() - .renderByItem(stack, transformType, ms, buffer, light, overlay); - - ms.popPose(); + public void render(Object model, RenderType type, int light) { + // TODO 26.2: Rebuild partial item model rendering on top of ItemModel. } - private void renderBakedItemModel(BakedModel model, int light, PoseStack ms, VertexConsumer buffer) { - ItemRenderer ir = Minecraft.getInstance() - .getItemRenderer(); - ModelData data = ModelData.EMPTY; - - for (RenderType renderType : model.getRenderTypes(stack, false)) { - for (Direction direction : Iterate.directions) { - random.setSeed(42L); - ir.renderQuadList(ms, buffer, model.getQuads(null, direction, random, data, renderType), stack, light, - overlay); - } - - random.setSeed(42L); - ir.renderQuadList(ms, buffer, model.getQuads(null, null, random, data, renderType), stack, light, overlay); - } + private void renderBakedItemModel(Object model, int light, PoseStack ms, VertexConsumer buffer) { } } diff --git a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java index c246bbdb97..32da5876bf 100644 --- a/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/item/render/SimpleCustomRenderer.java @@ -12,11 +12,9 @@ protected SimpleCustomRenderer(CustomRenderedItemModelRenderer renderer) { } public static SimpleCustomRenderer create(Item item, CustomRenderedItemModelRenderer renderer) { - CustomRenderedItems.register(item); return new SimpleCustomRenderer(renderer); } - @Override public CustomRenderedItemModelRenderer getCustomRenderer() { return renderer; } diff --git a/src/main/java/com/simibubi/create/foundation/map/StationMapDecorationRenderer.java b/src/main/java/com/simibubi/create/foundation/map/StationMapDecorationRenderer.java index a52e552872..4af692d01c 100644 --- a/src/main/java/com/simibubi/create/foundation/map/StationMapDecorationRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/map/StationMapDecorationRenderer.java @@ -1,68 +1,18 @@ package com.simibubi.create.foundation.map; -import org.jetbrains.annotations.NotNull; -import org.joml.Matrix4f; - import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.MapDecorationTextureManager; -import net.minecraft.network.chat.Component; -import net.minecraft.world.level.saveddata.maps.MapDecoration; -import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.MapRenderState; +import net.minecraft.client.renderer.texture.TextureAtlas; import net.neoforged.neoforge.client.gui.map.IMapDecorationRenderer; public class StationMapDecorationRenderer implements IMapDecorationRenderer { @Override - public boolean render(MapDecoration decoration, PoseStack poseStack, MultiBufferSource bufferSource, @NotNull MapItemSavedData mapData, MapDecorationTextureManager decorationTextures, boolean inItemFrame, int packedLight, int index) { - poseStack.pushPose(); - - poseStack.translate(decoration.x() / 2D + 64.0, decoration.y() / 2D + 64.0, -0.02D); - - poseStack.pushPose(); - - poseStack.translate(0.5f, 0f, 0); - poseStack.scale(4.5F, 4.5F, 3.0F); - - TextureAtlasSprite sprite = decorationTextures.get(decoration); - float U0 = sprite.getU0(); - float V0 = sprite.getV0(); - float U1 = sprite.getU1(); - float V1 = sprite.getV1(); - VertexConsumer buffer = bufferSource.getBuffer(RenderType.text(sprite.atlasLocation())); - Matrix4f mat = poseStack.last().pose(); - float zOffset = -0.001f; - buffer.addVertex(mat, -1.0F, 1.0F, index * zOffset).setColor(-1).setUv(U0, V0).setLight(packedLight); - buffer.addVertex(mat, 1.0F, 1.0F, index * zOffset).setColor(-1).setUv(U1, V0).setLight(packedLight); - buffer.addVertex(mat, 1.0F, -1.0F, index * zOffset).setColor(-1).setUv(U1, V1).setLight(packedLight); - buffer.addVertex(mat, -1.0F, -1.0F, index * zOffset).setColor(-1).setUv(U0, V1).setLight(packedLight); - - poseStack.popPose(); - - if (decoration.name().isPresent()) { - Font font = Minecraft.getInstance().font; - Component component = decoration.name().get(); - float f6 = (float)font.width(component); -// float f7 = Mth.clamp(25.0F / f6, 0.0F, 6.0F / 9.0F); - poseStack.pushPose(); -// poseStack.translate((double)(0.0F + (float)getX() / 2.0F + 64.0F / 2.0F), (double)(0.0F + (float)getY() / 2.0F + 64.0F + 4.0F), (double)-0.025F); - poseStack.translate(0, 6.0D, -0.005F); - - poseStack.scale(0.8f, 0.8f, 1.0F); - poseStack.translate(-f6 / 2f + .5f, 0, 0); -// poseStack.scale(f7, f7, 1.0F); - font.drawInBatch(component, 0.0F, 0.0F, -1, false, poseStack.last() - .pose(), bufferSource, Font.DisplayMode.NORMAL, Integer.MIN_VALUE, packedLight); - poseStack.popPose(); - } - - poseStack.popPose(); - - return true; + public boolean render(MapRenderState.MapDecorationRenderState decorationRenderState, PoseStack poseStack, + SubmitNodeCollector submitNodeCollector, MapRenderState mapRenderState, TextureAtlas decorationSprites, + boolean inItemFrame, int packedLight, int index) { + // TODO 26.2: port station map labels to the MapRenderState submit pipeline. + return false; } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ArmorTrimMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ArmorTrimMixin.java deleted file mode 100644 index d84b39fea4..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/ArmorTrimMixin.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import java.util.function.BiFunction; - -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.CallbackInfoReturnable; - -import com.simibubi.create.Create; -import com.simibubi.create.content.equipment.armor.AllArmorMaterials; - -import net.minecraft.Util; -import net.minecraft.core.Holder; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ArmorMaterial; -import net.minecraft.world.item.armortrim.ArmorTrim; -import net.minecraft.world.item.armortrim.TrimMaterial; -import net.minecraft.world.item.armortrim.TrimPattern; - -@Mixin(ArmorTrim.class) -public abstract class ArmorTrimMixin { - @Shadow - @Final - private Holder material; - - @Shadow - @Final - private Holder pattern; - - @Shadow - private static String getColorPaletteSuffix(Holder trimMaterial, Holder armorMaterial) { - throw new AssertionError(); - } - - @Unique - private final BiFunction, ResourceLocation> create$textureCardboard = Util.memoize((inner, armorMaterial) -> { - String assetPath = pattern.value().assetId().getPath(); - String colorSuffix = getColorPaletteSuffix(material, armorMaterial); - return Create.asResource("trims/models/armor/card_" + assetPath + (inner ? "_leggings_" : "_") + colorSuffix); - }); - - @Inject(method = "innerTexture", at = @At("HEAD"), cancellable = true) - private void create$swapTexturesForCardboardTrimsInner(Holder armorMaterial, CallbackInfoReturnable cir) { - if (armorMaterial == AllArmorMaterials.CARDBOARD) { - cir.setReturnValue(create$textureCardboard.apply(true, armorMaterial)); - } - } - - @Inject(method = "outerTexture", at = @At("HEAD"), cancellable = true) - private void create$swapTexturesForCardboardTrimsOuter(Holder armorMaterial, CallbackInfoReturnable cir) { - if (armorMaterial == AllArmorMaterials.CARDBOARD) { - cir.setReturnValue(create$textureCardboard.apply(false, armorMaterial)); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/BuiltInRegistriesMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/BuiltInRegistriesMixin.java index 8a5a9416ff..11d36ea355 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/BuiltInRegistriesMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/BuiltInRegistriesMixin.java @@ -22,7 +22,7 @@ public class BuiltInRegistriesMixin { @WrapOperation(method = "validate", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/Registry;forEach(Ljava/util/function/Consumer;)V")) private static > void create$ourRegistriesAreNotEmpty(Registry instance, Consumer consumer, Operation original) { Consumer callback = (t) -> { - if (!t.key().location().getNamespace().equals(Create.ID)) + if (!t.key().identifier().getNamespace().equals(Create.ID)) consumer.accept(t); }; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java index 20c6715d4f..456d0aa841 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java @@ -5,11 +5,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.simibubi.create.foundation.item.CustomUseEffectsItem; -import net.createmod.catnip.data.TriState; +import net.createmod.catnip.api.data.TriState; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -26,22 +25,15 @@ private CustomItemUseEffectsMixin(EntityType entityType, Level level) { @Shadow public abstract ItemStack getUseItem(); - @Inject(method = "shouldTriggerItemUseEffects()Z", at = @At("HEAD"), cancellable = true) - private void create$onShouldTriggerUseEffects(CallbackInfoReturnable cir) { - ItemStack using = getUseItem(); - Item item = using.getItem(); - if (item instanceof CustomUseEffectsItem handler) { - TriState result = handler.shouldTriggerUseEffects(using, (LivingEntity) (Object) this); - if (result != TriState.DEFAULT) { - cir.setReturnValue(result.getValue()); - } - } - } - - @Inject(method = "triggerItemUseEffects(Lnet/minecraft/world/item/ItemStack;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getUseAnimation()Lnet/minecraft/world/item/UseAnim;", ordinal = 0), cancellable = true) - private void create$onTriggerUseEffects(ItemStack stack, int count, CallbackInfo ci) { + @Inject(method = "spawnItemParticles(Lnet/minecraft/world/item/ItemStack;I)V", at = @At("HEAD"), cancellable = true) + private void create$onSpawnItemParticles(ItemStack stack, int count, CallbackInfo ci) { Item item = stack.getItem(); if (item instanceof CustomUseEffectsItem handler) { + TriState shouldTrigger = handler.shouldTriggerUseEffects(stack, (LivingEntity) (Object) this); + if (shouldTrigger == TriState.FALSE) { + ci.cancel(); + return; + } if (handler.triggerUseEffects(stack, (LivingEntity) (Object) this, count, random)) { ci.cancel(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EnchantedCountIncreaseFunctionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EnchantedCountIncreaseFunctionMixin.java index 1f9bd10979..45b01ecd48 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/EnchantedCountIncreaseFunctionMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/EnchantedCountIncreaseFunctionMixin.java @@ -20,7 +20,7 @@ public abstract class EnchantedCountIncreaseFunctionMixin { @Shadow @Final - private NumberProvider value; + private NumberProvider count; @Shadow protected abstract boolean hasLimit(); @@ -31,11 +31,11 @@ public abstract class EnchantedCountIncreaseFunctionMixin { @Inject(method = "run", at = @At("TAIL")) private void create$crushingWheelLooting(ItemStack stack, LootContext context, CallbackInfoReturnable cir) { - DamageSource damageSource = context.getParamOrNull(LootContextParams.DAMAGE_SOURCE); + DamageSource damageSource = context.getOptionalParameter(LootContextParams.DAMAGE_SOURCE); if (damageSource != null && damageSource.is(AllDamageTypes.CRUSH)) { int lootingLevel = 2; - float f = (float) lootingLevel * this.value.getFloat(context); + float f = (float) lootingLevel * this.count.getFloat(context); stack.grow(Math.round(f)); if (this.hasLimit()) stack.limitSize(this.limit); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java index d50af4d9fd..e712add8bc 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java @@ -27,7 +27,7 @@ public abstract class EntityMixin { @ModifyReturnValue(method = "fireImmune()Z", at = @At("RETURN")) private boolean create$onFireImmune(boolean original) { - return ((Entity) (Object) this).getPersistentData().getBoolean(NetheriteDivingHandler.FIRE_IMMUNE_KEY) || original; + return ((Entity) (Object) this).getPersistentData().getBooleanOr(NetheriteDivingHandler.FIRE_IMMUNE_KEY, false) || original; } @ModifyExpressionValue(method = "move", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getOnPosLegacy()Lnet/minecraft/core/BlockPos;")) diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ItemStackMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ItemStackMixin.java index eba43752db..fee61153a2 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/ItemStackMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/ItemStackMixin.java @@ -14,18 +14,19 @@ import com.simibubi.create.AllDataComponents; import com.simibubi.create.content.equipment.clipboard.ClipboardContent; +import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.PatchedDataComponentMap; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; @ScheduledForRemoval(inVersion = "1.21.1+ Port") @Deprecated(since = "6.0.7", forRemoval = true) @Mixin(ItemStack.class) public class ItemStackMixin { - @Inject(method = "(Lnet/minecraft/world/level/ItemLike;ILnet/minecraft/core/component/PatchedDataComponentMap;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/Item;verifyComponentsAfterLoad(Lnet/minecraft/world/item/ItemStack;)V")) - private void create$migrateOldClipboardComponents(ItemLike item, int count, PatchedDataComponentMap components, CallbackInfo ci) { - if (!(item.asItem() instanceof ClipboardBlockItem) || components.isPatchEmpty() || components.has(AllDataComponents.CLIPBOARD_CONTENT)) + @Inject(method = "(Lnet/minecraft/core/Holder;ILnet/minecraft/core/component/PatchedDataComponentMap;)V", at = @At("TAIL")) + private void create$migrateOldClipboardComponents(Holder item, int count, PatchedDataComponentMap components, CallbackInfo ci) { + if (!(item.value() instanceof ClipboardBlockItem) || components.isPatchEmpty() || components.has(AllDataComponents.CLIPBOARD_CONTENT)) return; ClipboardContent content = ClipboardContent.EMPTY; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java index b09cb72730..5a9b854edc 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java @@ -4,7 +4,6 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Slice; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.simibubi.create.AllItems; @@ -23,8 +22,8 @@ private LavaSwimmingMixin(EntityType type, Level level) { super(type, level); } - @Inject(method = "travel(Lnet/minecraft/world/phys/Vec3;)V", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isInLava()Z")), at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V", shift = Shift.AFTER, ordinal = 0)) - private void create$onLavaTravel(Vec3 travelVector, CallbackInfo ci) { + @Inject(method = "travelInLava(Lnet/minecraft/world/phys/Vec3;DZD)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V", shift = Shift.AFTER)) + private void create$onLavaTravel(Vec3 travelVector, double gravity, boolean falling, double fluidHeight, CallbackInfo ci) { ItemStack bootsStack = DivingBootsItem.getWornItem(this); if (AllItems.NETHERITE_DIVING_BOOTS.isIn(bootsStack)) setDeltaMovement(getDeltaMovement().multiply(DivingBootsItem.getMovementMultiplier((LivingEntity) (Object) this))); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java index df7dabf1d9..4bbda28853 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java @@ -10,31 +10,45 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.google.common.collect.Maps; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.content.trains.station.StationBlockEntity; import com.simibubi.create.content.trains.station.StationMapData; import com.simibubi.create.content.trains.station.StationMarker; +import net.minecraft.resources.ResourceKey; import net.minecraft.core.BlockPos; -import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.saveddata.SavedDataType; +import net.minecraft.world.level.saveddata.maps.MapBanner; import net.minecraft.world.level.saveddata.maps.MapDecoration; +import net.minecraft.world.level.saveddata.maps.MapFrame; +import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import java.nio.ByteBuffer; + @Mixin(MapItemSavedData.class) public class MapItemSavedDataMixin implements StationMapData { @Unique private static final String STATION_MARKERS_KEY = "create:stations"; + @Unique + private static final Codec CREATE_STATION_MARKER_CODEC = CompoundTag.CODEC.xmap( + tag -> StationMarker.load(tag, null), + marker -> marker.save(null) + ); + @Shadow @Final public int centerX; @@ -47,10 +61,37 @@ public class MapItemSavedDataMixin implements StationMapData { @Final public byte scale; + @Shadow + @Final + public ResourceKey dimension; + + @Shadow + @Final + private boolean trackingPosition; + + @Shadow + @Final + private boolean unlimitedTracking; + + @Shadow + @Final + public boolean locked; + + @Shadow + public byte[] colors; + @Shadow @Final Map decorations; + @Shadow + @Final + private Map bannerMarkers; + + @Shadow + @Final + private Map frameMarkers; + @Shadow private int trackedDecorationCount; @@ -58,30 +99,51 @@ public class MapItemSavedDataMixin implements StationMapData { private final Map create$stationMarkers = Maps.newHashMap(); @Inject( - method = "load", - at = @At("RETURN") + method = "type", + at = @At("RETURN"), + cancellable = true ) - private static void create$onLoad(CompoundTag tag, HolderLookup.Provider levelRegistry, CallbackInfoReturnable cir) { - MapItemSavedData mapData = cir.getReturnValue(); - StationMapData stationMapData = (StationMapData) mapData; + private static void create$useStationMarkerCodec(MapId id, CallbackInfoReturnable> cir) { + SavedDataType original = cir.getReturnValue(); + cir.setReturnValue(new SavedDataType<>(original.id(), original.factory(), level -> create$codec(), original.dataFixType())); + } - ListTag listTag = tag.getList(STATION_MARKERS_KEY, Tag.TAG_COMPOUND); - for (int i = 0; i < listTag.size(); ++i) { - StationMarker stationMarker = StationMarker.load(listTag.getCompound(i), levelRegistry); - stationMapData.addStationMarker(stationMarker); - } + @Unique + private static Codec create$codec() { + return RecordCodecBuilder.create(instance -> instance.group( + Level.RESOURCE_KEY_CODEC.fieldOf("dimension").forGetter(mapData -> mapData.dimension), + Codec.INT.fieldOf("xCenter").forGetter(mapData -> mapData.centerX), + Codec.INT.fieldOf("zCenter").forGetter(mapData -> mapData.centerZ), + Codec.BYTE.optionalFieldOf("scale", (byte) 0).forGetter(mapData -> mapData.scale), + Codec.BYTE_BUFFER.fieldOf("colors").forGetter(mapData -> ByteBuffer.wrap(mapData.colors)), + Codec.BOOL.optionalFieldOf("trackingPosition", true).forGetter(mapData -> ((MapItemSavedDataMixin) (Object) mapData).trackingPosition), + Codec.BOOL.optionalFieldOf("unlimitedTracking", false).forGetter(mapData -> ((MapItemSavedDataMixin) (Object) mapData).unlimitedTracking), + Codec.BOOL.optionalFieldOf("locked", false).forGetter(mapData -> mapData.locked), + MapBanner.CODEC.listOf().optionalFieldOf("banners", List.of()).forGetter(mapData -> List.copyOf(((MapItemSavedDataMixin) (Object) mapData).bannerMarkers.values())), + MapFrame.CODEC.listOf().optionalFieldOf("frames", List.of()).forGetter(mapData -> List.copyOf(((MapItemSavedDataMixin) (Object) mapData).frameMarkers.values())), + CREATE_STATION_MARKER_CODEC.listOf().optionalFieldOf(STATION_MARKERS_KEY, List.of()).forGetter(mapData -> List.copyOf(((MapItemSavedDataMixin) (Object) mapData).create$stationMarkers.values())) + ) + .apply(instance, MapItemSavedDataMixin::create$load)); } - @Inject( - method = "save", - at = @At("RETURN") - ) - private void create$onSave(CompoundTag tag, HolderLookup.Provider registries, CallbackInfoReturnable cir) { - ListTag listTag = new ListTag(); - for (StationMarker stationMarker : create$stationMarkers.values()) { - listTag.add(stationMarker.save(registries)); - } - tag.put(STATION_MARKERS_KEY, listTag); + @Unique + private static MapItemSavedData create$load(ResourceKey dimension, int centerX, int centerZ, byte scale, + ByteBuffer colors, boolean trackingPosition, boolean unlimitedTracking, + boolean locked, List banners, List frames, + List stationMarkers) { + MapItemSavedData mapData = create$createMapItemSavedData(dimension, centerX, centerZ, scale, colors, + trackingPosition, unlimitedTracking, locked, banners, frames); + StationMapData stationMapData = (StationMapData) mapData; + stationMarkers.forEach(stationMapData::addStationMarker); + return mapData; + } + + @Invoker("") + private static MapItemSavedData create$createMapItemSavedData(ResourceKey dimension, int centerX, int centerZ, + byte scale, ByteBuffer colors, boolean trackingPosition, + boolean unlimitedTracking, boolean locked, + List banners, List frames) { + throw new AssertionError(); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/mixin/SmithingMenuMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/SmithingMenuMixin.java index 1d35d7ce82..5d4b6a6344 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/SmithingMenuMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/SmithingMenuMixin.java @@ -29,10 +29,10 @@ public class SmithingMenuMixin { // Only add enchantments to the backtank if it supports them @ModifyExpressionValue( - method = "createResult", + method = "lambda$createResult$0", at = @At( value = "INVOKE", - target = "Lnet/minecraft/world/item/crafting/SmithingRecipe;assemble(Lnet/minecraft/world/item/crafting/RecipeInput;Lnet/minecraft/core/HolderLookup$Provider;)Lnet/minecraft/world/item/ItemStack;" + target = "Lnet/minecraft/world/item/crafting/SmithingRecipe;assemble(Lnet/minecraft/world/item/crafting/RecipeInput;)Lnet/minecraft/world/item/ItemStack;" ) ) private ItemStack create$preventUnbreakingOnBacktanks(ItemStack original) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/AgeableListModelAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/AgeableListModelAccessor.java deleted file mode 100644 index 33e871e5fb..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/AgeableListModelAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import net.minecraft.client.model.AgeableListModel; -import net.minecraft.client.model.geom.ModelPart; - -@Mixin(AgeableListModel.class) -public interface AgeableListModelAccessor { - @Invoker("headParts") - Iterable create$callHeadParts(); - - @Invoker("bodyParts") - Iterable create$callBodyParts(); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/EntityRenderDispatcherAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/EntityRenderDispatcherAccessor.java deleted file mode 100644 index 3bb5b32a8e..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/EntityRenderDispatcherAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import net.minecraft.client.renderer.entity.EntityRenderDispatcher; - -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.world.entity.EntityType; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.Map; - -@Mixin(EntityRenderDispatcher.class) -public interface EntityRenderDispatcherAccessor { - @Accessor("renderers") - Map, EntityRenderer> create$getRenderers(); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/FlowingFluidAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/FlowingFluidAccessor.java index 6d154f7ad5..1167a84528 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/FlowingFluidAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/FlowingFluidAccessor.java @@ -4,7 +4,7 @@ import org.spongepowered.asm.mixin.gen.Invoker; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FlowingFluid; import net.minecraft.world.level.material.FluidState; @@ -12,5 +12,5 @@ @Mixin(FlowingFluid.class) public interface FlowingFluidAccessor { @Invoker("getNewLiquid") - FluidState create$getNewLiquid(Level pLevel, BlockPos pPos, BlockState pBlockState); + FluidState create$getNewLiquid(ServerLevel pLevel, BlockPos pPos, BlockState pBlockState); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/FontAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/FontAccessor.java deleted file mode 100644 index 9758f1df9c..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/FontAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import java.util.function.Function; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.font.FontSet; -import net.minecraft.resources.ResourceLocation; - -@Mixin(Font.class) -public interface FontAccessor { - @Accessor("fonts") - Function create$getFonts(); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/GuiAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/GuiAccessor.java deleted file mode 100644 index 8b016466f4..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/GuiAccessor.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.components.SubtitleOverlay; - -import net.minecraft.resources.ResourceLocation; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.client.gui.Gui; - -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(Gui.class) -public interface GuiAccessor { - @Accessor("subtitleOverlay") - SubtitleOverlay create$getSubtitleOverlay(); - - @Accessor("toolHighlightTimer") - int create$getToolHighlightTimer(); - - @Invoker("renderTextureOverlay") - void create$renderTextureOverlay(GuiGraphics guiGraphics, ResourceLocation shaderLocation, float alpha); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/HudAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/HudAccessor.java new file mode 100644 index 0000000000..eb04fbade7 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/HudAccessor.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.mixin.accessor; + +import net.minecraft.client.gui.Hud; +import net.minecraft.client.gui.components.SubtitleOverlay; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(Hud.class) +public interface HudAccessor { + @Accessor("subtitleOverlay") + SubtitleOverlay create$getSubtitleOverlay(); + + @Accessor("toolHighlightTimer") + int create$getToolHighlightTimer(); +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/HumanoidArmorLayerAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/HumanoidArmorLayerAccessor.java deleted file mode 100644 index 4735df807a..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/HumanoidArmorLayerAccessor.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import java.util.Map; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.EquipmentSlot; - -@Mixin(HumanoidArmorLayer.class) -public interface HumanoidArmorLayerAccessor { - @Accessor("ARMOR_LOCATION_CACHE") - static Map create$getArmorLocationCache() { - throw new RuntimeException(); - } - - @Accessor("innerModel") - HumanoidModel create$getInnerModel(); - - @Accessor("outerModel") - HumanoidModel create$getOuterModel(); - - @Invoker("setPartVisibility") - void create$callSetPartVisibility(HumanoidModel model, EquipmentSlot slot); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemEntityAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemEntityAccessor.java new file mode 100644 index 0000000000..68a7e0c365 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemEntityAccessor.java @@ -0,0 +1,12 @@ +package com.simibubi.create.foundation.mixin.accessor; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.world.entity.item.ItemEntity; + +@Mixin(ItemEntity.class) +public interface ItemEntityAccessor { + @Accessor("pickupDelay") + int create$getPickupDelay(); +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemModelGeneratorsAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemModelGeneratorsAccessor.java deleted file mode 100644 index fb82aa9ec7..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ItemModelGeneratorsAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import java.util.List; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.data.models.ItemModelGenerators; -import net.minecraft.data.models.ItemModelGenerators.TrimModelData; - -@Mixin(ItemModelGenerators.class) -public interface ItemModelGeneratorsAccessor { - @Accessor("GENERATED_TRIM_MODELS") - static List create$getGENERATED_TRIM_MODELS() { - throw new AssertionError(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/LevelRendererAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/LevelRendererAccessor.java deleted file mode 100644 index 3123c81e1d..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/LevelRendererAccessor.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simibubi.create.foundation.mixin.accessor; - -import net.minecraft.client.renderer.LevelRenderer; - -import net.minecraft.client.renderer.culling.Frustum; - -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(LevelRenderer.class) -public interface LevelRendererAccessor { - @Accessor("cullingFrustum") - Frustum create$getCullingFrustum(); - - @Nullable - @Accessor("capturedFrustum") - Frustum create$getCapturedFrustum(); -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/MinecartFurnaceAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/MinecartFurnaceAccessor.java index 9943fc0821..3dc36f4c0c 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/MinecartFurnaceAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/MinecartFurnaceAccessor.java @@ -3,7 +3,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; @Mixin(MinecartFurnace.class) public interface MinecartFurnaceAccessor { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ShapedRecipeAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ShapedRecipeAccessor.java index bef6dbb444..535da4fa58 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/ShapedRecipeAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/ShapedRecipeAccessor.java @@ -2,6 +2,7 @@ import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.crafting.ShapedRecipePattern; import org.spongepowered.asm.mixin.Mixin; @@ -11,4 +12,7 @@ public interface ShapedRecipeAccessor { @Accessor("pattern") ShapedRecipePattern create$getPattern(); + + @Accessor("result") + ItemStackTemplate create$getResult(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/accessor/SystemReportAccessor.java b/src/main/java/com/simibubi/create/foundation/mixin/accessor/SystemReportAccessor.java index fa4995d082..5eea52df1b 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/accessor/SystemReportAccessor.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/accessor/SystemReportAccessor.java @@ -1,10 +1,11 @@ package com.simibubi.create.foundation.mixin.accessor; -import java.util.Map; +import java.util.List; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import net.minecraft.CrashReportCategory.Entry; import net.minecraft.SystemReport; @Mixin(SystemReport.class) @@ -20,5 +21,5 @@ static String getJAVA_VERSION() { } @Accessor - Map getEntries(); + List getEntries(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java index 34a9cd3abb..33f7a5f5cb 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java @@ -11,7 +11,7 @@ @Mixin(Camera.class) public abstract class CameraMixin { @ModifyArg( - method = "setup(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/entity/Entity;ZZF)V", + method = "alignWithEntity(F)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getMaxZoom(F)F"), index = 0 ) diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/ClientLevelMixin.java similarity index 82% rename from src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/ClientLevelMixin.java index b68e3ae576..a2f756bcc5 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/ClientLevelMixin.java @@ -3,9 +3,7 @@ import java.util.Set; import java.util.SortedSet; -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.At.Shift; import org.spongepowered.asm.mixin.injection.Inject; @@ -18,24 +16,16 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectMap; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.server.level.BlockDestructionProgress; import net.minecraft.world.level.block.state.BlockState; - import net.neoforged.neoforge.client.extensions.common.IClientBlockExtensions; -@Mixin(LevelRenderer.class) -public class LevelRendererMixin { - @Shadow - private ClientLevel level; - - @Shadow - @Final - private Long2ObjectMap> destructionProgress; - - @Inject(method = "destroyBlockProgress(ILnet/minecraft/core/BlockPos;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/BlockDestructionProgress;updateTick(I)V", shift = Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) +@Mixin(ClientLevel.class) +public class ClientLevelMixin { + @Inject(method = "destroyBlockProgress(ILnet/minecraft/core/BlockPos;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/BlockDestructionProgress;updateTick(J)V", shift = Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) private void create$onDestroyBlockProgress(int breakerId, BlockPos pos, int progress, CallbackInfo ci, BlockDestructionProgress progressObj) { + ClientLevel level = (ClientLevel) (Object) this; BlockState state = level.getBlockState(pos); IClientBlockExtensions properties = IClientBlockExtensions.of(state); if (properties instanceof MultiPosDestructionHandler handler) { @@ -44,7 +34,9 @@ public class LevelRendererMixin { extraPositions.remove(pos); ((BlockDestructionProgressExtension) progressObj).create$setExtraPositions(extraPositions); for (BlockPos extraPos : extraPositions) { - destructionProgress.computeIfAbsent(extraPos.asLong(), l -> Sets.newTreeSet()).add(progressObj); + level.destructionProgress() + .computeIfAbsent(extraPos.asLong(), l -> Sets.newTreeSet()) + .add(progressObj); } } } @@ -54,6 +46,8 @@ public class LevelRendererMixin { private void create$onRemoveProgress(BlockDestructionProgress progress, CallbackInfo ci) { Set extraPositions = ((BlockDestructionProgressExtension) progress).create$getExtraPositions(); if (extraPositions != null) { + Long2ObjectMap> destructionProgress = + ((ClientLevel) (Object) this).destructionProgress(); for (BlockPos extraPos : extraPositions) { long l = extraPos.asLong(); Set set = destructionProgress.get(l); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java index 6250881e31..fa5429cc3b 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java @@ -26,6 +26,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.Entity.MovementEmission; import net.minecraft.world.entity.MoverType; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.RenderShape; @@ -93,10 +94,10 @@ public abstract class EntityContraptionInteractionMixin { } // involves block step sounds on contraptions - // injecting before `!blockstate1.isAir(this.world, blockpos)` + // injecting before `!supportingState.isAir()` // `if (this.moveDist > this.nextStep && !blockstate1.isAir()) - @Inject(method = "move", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;isAir()Z", ordinal = 0)) - private void create$contraptionStepSounds(MoverType mover, Vec3 movement, CallbackInfo ci) { + @Inject(method = "applyMovementEmissionAndPlaySound(Lnet/minecraft/world/entity/Entity$MovementEmission;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;isAir()Z", ordinal = 0)) + private void create$contraptionStepSounds(MovementEmission emission, Vec3 movement, BlockPos effectPos, BlockState effectState, CallbackInfo ci) { Vec3 worldPos = position.add(0, -0.2, 0); MutableBoolean stepped = new MutableBoolean(false); @@ -112,7 +113,7 @@ public abstract class EntityContraptionInteractionMixin { // involves client-side view bobbing animation on contraptions @Inject(method = "move", at = @At(value = "TAIL")) private void create$onMove(MoverType mover, Vec3 movement, CallbackInfo ci) { - if (!level.isClientSide) + if (!level.isClientSide()) return; Entity self = (Entity) (Object) this; if (self.onGround()) @@ -155,7 +156,7 @@ public abstract class EntityContraptionInteractionMixin { && state.getRenderShape() != RenderShape.INVISIBLE) { Vec3 speed = self.getDeltaMovement(); level.addParticle( - new BlockParticleOption(ParticleTypes.BLOCK, state).setPos(particlePos), + new BlockParticleOption(ParticleTypes.BLOCK, state), self.getX() + ((double) random.nextFloat() - 0.5D) * (double) dimensions.width(), self.getY() + 0.1D, self.getZ() + ((double) random.nextFloat() - 0.5D) * (double) dimensions.height(), diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRenderStateMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRenderStateMixin.java new file mode 100644 index 0000000000..bc24c02678 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRenderStateMixin.java @@ -0,0 +1,29 @@ +package com.simibubi.create.foundation.mixin.client; + +import java.util.UUID; + +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; + +import com.simibubi.create.foundation.render.CreateEntityRenderStateExtension; + +import net.minecraft.client.renderer.entity.state.EntityRenderState; + +@Mixin(EntityRenderState.class) +public class EntityRenderStateMixin implements CreateEntityRenderStateExtension { + @Unique + @Nullable + private UUID create$entityUUID; + + @Override + public void create$setEntityUUID(@Nullable UUID uuid) { + create$entityUUID = uuid; + } + + @Override + @Nullable + public UUID create$getEntityUUID() { + return create$entityUUID; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRendererMixin.java new file mode 100644 index 0000000000..66f98b7432 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityRendererMixin.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.mixin.client; + +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; + +import com.simibubi.create.foundation.render.CreateEntityRenderStateExtension; + +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.world.entity.Entity; + +@Mixin(EntityRenderer.class) +public class EntityRendererMixin { + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/client/renderer/entity/state/EntityRenderState;F)V", at = @At("RETURN")) + private void create$trackEntityUUID(Entity entity, EntityRenderState state, float partialTicks, CallbackInfo ci) { + ((CreateEntityRenderStateExtension) state).create$setEntityUUID(entity.getUUID()); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java index 2e615810c9..51f81f5b9c 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java @@ -8,12 +8,12 @@ import com.simibubi.create.content.trains.track.TrackBlockOutline; import com.simibubi.create.foundation.block.BigOutlines; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.Minecraft; -@Mixin(GameRenderer.class) +@Mixin(Minecraft.class) public class GameRendererMixin { @Inject(method = "pick(F)V", at = @At("TAIL")) - private void create$bigShapePick(CallbackInfo ci) { + private void create$bigShapePick(float partialTicks, CallbackInfo ci) { BigOutlines.pick(); TrackBlockOutline.pickCurves(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java deleted file mode 100644 index 7f8185b5b7..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.foundation.mixin.client; - -import com.llamalad7.mixinextras.sugar.Local; - -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; -import org.spongepowered.asm.mixin.injection.callback.LocalCapture; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.simibubi.create.foundation.item.CustomRenderedArmorItem; - -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; -import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -@Mixin(HumanoidArmorLayer.class) -public class HumanoidArmorLayerMixin { - @Inject( - method = "renderArmorPiece(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;ILnet/minecraft/client/model/HumanoidModel;FFFFFF)V", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/item/ItemStack;getItem()Lnet/minecraft/world/item/Item;"), - cancellable = true - ) - private void create$onRenderArmorPiece(PoseStack poseStack, MultiBufferSource bufferSource, LivingEntity entity, EquipmentSlot slot, int light, HumanoidModel model, float limbSwing, float limbSwingAmount, float partialTick, float ageInTicks, float netHeadYaw, float headPitch, CallbackInfo ci, @Local ItemStack stack) { - if (stack.getItem() instanceof CustomRenderedArmorItem renderer) { - renderer.renderArmorPiece((HumanoidArmorLayer) (Object) this, poseStack, bufferSource, entity, slot, light, model, stack); - ci.cancel(); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidModelMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidModelMixin.java index ba8319a30a..1e5ab790d3 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidModelMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidModelMixin.java @@ -1,8 +1,6 @@ package com.simibubi.create.foundation.mixin.client; -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.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -10,29 +8,17 @@ import com.simibubi.create.foundation.render.PlayerSkyhookRenderer; import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.world.entity.LivingEntity; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; @Mixin(HumanoidModel.class) -public class HumanoidModelMixin { - @Shadow - @Final - public ModelPart body; - - @Inject(method = "setupAnim*", at = @At("RETURN")) - private void create$afterSetupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch, CallbackInfo callbackInfo) { - if (!(pEntity instanceof AbstractClientPlayer player)) - return; - - PlayerSkyhookRenderer.afterSetupAnim(player, (HumanoidModel) (Object) this); +public class HumanoidModelMixin { + @Inject(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)V", at = @At("RETURN")) + private void create$afterSetupAnim(T state, CallbackInfo callbackInfo) { + PlayerSkyhookRenderer.afterSetupAnim(state, (HumanoidModel) (Object) this); } - @Inject(method = "setupAnim*", at = @At("HEAD")) - private void create$beforeSetupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch, CallbackInfo callbackInfo) { - if (!(pEntity instanceof AbstractClientPlayer player)) - return; - - PlayerSkyhookRenderer.beforeSetupAnim(player, (HumanoidModel) (Object) this); + @Inject(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)V", at = @At("HEAD")) + private void create$beforeSetupAnim(T state, CallbackInfo callbackInfo) { + PlayerSkyhookRenderer.beforeSetupAnim(state, (HumanoidModel) (Object) this); } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java deleted file mode 100644 index 91e98d4b7e..0000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.foundation.mixin.client; - -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.CallbackInfoReturnable; - -import com.simibubi.create.foundation.item.CustomArmPoseItem; - -import net.minecraft.client.model.HumanoidModel.ArmPose; -import net.minecraft.client.player.AbstractClientPlayer; -import net.minecraft.client.renderer.entity.player.PlayerRenderer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.item.ItemStack; - -@Mixin(PlayerRenderer.class) -public class PlayerRendererMixin { - @Inject(method = "getArmPose(Lnet/minecraft/client/player/AbstractClientPlayer;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/client/model/HumanoidModel$ArmPose;", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/client/player/AbstractClientPlayer;getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;"), cancellable = true) - private static void create$onGetArmPose(AbstractClientPlayer player, InteractionHand hand, CallbackInfoReturnable cir) { - ItemStack stack = player.getItemInHand(hand); - if (stack.getItem() instanceof CustomArmPoseItem armPoseProvider) { - ArmPose pose = armPoseProvider.getArmPose(stack, player, hand); - if (pose != null) { - cir.setReturnValue(pose); - } - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/compat/xaeros/XaeroFullscreenMapMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/compat/xaeros/XaeroFullscreenMapMixin.java index 5c62821c9d..5f77f63703 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/compat/xaeros/XaeroFullscreenMapMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/compat/xaeros/XaeroFullscreenMapMixin.java @@ -9,7 +9,7 @@ import com.simibubi.create.Create; import com.simibubi.create.compat.trainmap.XaeroTrainMap; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import xaero.map.gui.GuiMap; @Mixin(GuiMap.class) @@ -17,12 +17,12 @@ public abstract class XaeroFullscreenMapMixin { @Unique private boolean create$failedToRenderTrainMap = false; - @Inject(method = "render(Lnet/minecraft/client/gui/GuiGraphics;IIF)V", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/GuiGraphics;blit(Lnet/minecraft/resources/ResourceLocation;IIIIII)V"), require = 0) - private void create$xaeroMapFullscreenRender(GuiGraphics guiGraphics, int scaledMouseX, int scaledMouseY, float partialTicks, CallbackInfo ci) { + @Inject(method = "render(Lnet/minecraft/client/gui/GuiGraphicsExtractor;IIF)V", at = @At(value = "INVOKE", + target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blit(Lnet/minecraft/resources/Identifier;IIIIII)V"), require = 0) + private void create$xaeroMapFullscreenRender(GuiGraphicsExtractor GuiGraphicsExtractor, int scaledMouseX, int scaledMouseY, float partialTicks, CallbackInfo ci) { try { if (!create$failedToRenderTrainMap) - XaeroTrainMap.onRender(guiGraphics, (GuiMap) (Object) this, scaledMouseX, scaledMouseY, partialTicks); + XaeroTrainMap.onRender(GuiGraphicsExtractor, (GuiMap) (Object) this, scaledMouseX, scaledMouseY, partialTicks); } catch (Throwable e) { Create.LOGGER.error("Failed to render Xaero's World Map train map integration:", e); create$failedToRenderTrainMap = true; diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedModel.java b/src/main/java/com/simibubi/create/foundation/model/BakedModel.java new file mode 100644 index 0000000000..5581a48b9b --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/BakedModel.java @@ -0,0 +1,92 @@ +package com.simibubi.create.foundation.model; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.client.renderer.block.dispatch.BlockStateModel; +import net.minecraft.client.renderer.block.dispatch.BlockStateModelPart; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.sprite.Material; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.model.data.ModelData; + +/** + * Temporary Create 26.2 porting bridge for legacy baked-model callers. + * TODO 26.2: Migrate these call sites to BlockStateModel, BlockModel, and ItemModel. + */ +@Deprecated(forRemoval = true) +public interface BakedModel extends BlockStateModel { + default List getQuads(BlockState state, Direction side, RandomSource rand) { + return Collections.emptyList(); + } + + default List getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, + RenderType renderType) { + return getQuads(state, side, rand); + } + + default boolean useAmbientOcclusion() { + return true; + } + + default boolean usesBlockLight() { + return true; + } + + default boolean isGui3d() { + return true; + } + + default boolean isCustomRenderer() { + return false; + } + + default TextureAtlasSprite getParticleIcon(ModelData data) { + return null; + } + + default Object getTransforms() { + return null; + } + + default ItemOverrides getOverrides() { + return ItemOverrides.EMPTY; + } + + default List getRenderPasses(ItemStack stack, boolean fabulous) { + return List.of(this); + } + + default Set getRenderTypes(ItemStack stack, boolean fabulous) { + return Collections.emptySet(); + } + + default Set getRenderTypes(BlockState state, RandomSource rand, ModelData data) { + return Collections.emptySet(); + } + + default ModelData getModelData(BlockAndTintGetter level, BlockPos pos, BlockState state, ModelData modelData) { + return modelData; + } + + @Override + default void collectParts(RandomSource random, List output) { + } + + @Override + default Material.Baked particleMaterial() { + return null; + } + + @Override + default int materialFlags() { + return 0; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedModelHelper.java b/src/main/java/com/simibubi/create/foundation/model/BakedModelHelper.java index 081facce86..05ea22a8b3 100644 --- a/src/main/java/com/simibubi/create/foundation/model/BakedModelHelper.java +++ b/src/main/java/com/simibubi/create/foundation/model/BakedModelHelper.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.model; -import static net.createmod.catnip.render.SpriteShiftEntry.getUnInterpolatedU; -import static net.createmod.catnip.render.SpriteShiftEntry.getUnInterpolatedV; +import static net.createmod.catnip.api.client.render.SpriteShiftEntry.getUnInterpolatedU; +import static net.createmod.catnip.api.client.render.SpriteShiftEntry.getUnInterpolatedV; import java.util.ArrayList; import java.util.Arrays; @@ -10,19 +10,19 @@ import java.util.Map; import java.util.function.UnaryOperator; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.VecHelper; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.VecHelper; +import net.minecraft.client.renderer.rendertype.RenderType; +import com.simibubi.create.foundation.model.BakedQuad; +import com.simibubi.create.foundation.model.ItemOverrides; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.SimpleBakedModel; +import com.simibubi.create.foundation.model.BakedModel; +import com.simibubi.create.foundation.model.SimpleBakedModel; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class BakedModelHelper { @@ -101,12 +101,12 @@ public static BakedModel generateModel(BakedModel template, UnaryOperator> culledFaces = new EnumMap<>(Direction.class); for (Direction cullFace : Iterate.directions) { random.setSeed(42L); - List quads = template.getQuads(null, cullFace, random, ModelData.EMPTY, RenderType.solid()); + List quads = template.getQuads(null, cullFace, random, ModelData.EMPTY, com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); culledFaces.put(cullFace, swapSprites(quads, spriteSwapper)); } random.setSeed(42L); - List quads = template.getQuads(null, null, random, ModelData.EMPTY, RenderType.solid()); + List quads = template.getQuads(null, null, random, ModelData.EMPTY, com.simibubi.create.foundation.render.LegacyRenderTypes.solid()); List unculledFaces = swapSprites(quads, spriteSwapper); TextureAtlasSprite particleSprite = template.getParticleIcon(ModelData.EMPTY); diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapper.java b/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapper.java new file mode 100644 index 0000000000..0d44b1fa0c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapper.java @@ -0,0 +1,90 @@ +package com.simibubi.create.foundation.model; + +import java.util.List; +import java.util.Set; + +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import com.simibubi.create.foundation.model.BakedQuad; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import com.simibubi.create.foundation.model.BakedModel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.model.data.ModelData; + +/** + * Temporary Create 26.2 porting bridge for legacy model wrappers. + * TODO 26.2: Replace with DelegateBlockStateModel or ItemModel wrappers. + */ +@Deprecated(forRemoval = true) +public class BakedModelWrapper implements BakedModel { + protected final T originalModel; + + public BakedModelWrapper(T originalModel) { + this.originalModel = originalModel; + } + + @Override + public List getQuads(BlockState state, Direction side, RandomSource rand) { + return originalModel.getQuads(state, side, rand); + } + + @Override + public List getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, + RenderType renderType) { + return originalModel.getQuads(state, side, rand, data, renderType); + } + + @Override + public boolean useAmbientOcclusion() { + return originalModel.useAmbientOcclusion(); + } + + @Override + public boolean usesBlockLight() { + return originalModel.usesBlockLight(); + } + + @Override + public boolean isGui3d() { + return originalModel.isGui3d(); + } + + @Override + public boolean isCustomRenderer() { + return originalModel.isCustomRenderer(); + } + + @Override + public TextureAtlasSprite getParticleIcon(ModelData data) { + return originalModel.getParticleIcon(data); + } + + @Override + public ModelData getModelData(BlockAndTintGetter level, BlockPos pos, BlockState state, ModelData modelData) { + return originalModel.getModelData(level, pos, state, modelData); + } + + @Override + public Object getTransforms() { + return originalModel.getTransforms(); + } + + @Override + public List getRenderPasses(ItemStack stack, boolean fabulous) { + return originalModel.getRenderPasses(stack, fabulous); + } + + @Override + public Set getRenderTypes(ItemStack stack, boolean fabulous) { + return originalModel.getRenderTypes(stack, fabulous); + } + + @Override + public Set getRenderTypes(BlockState state, RandomSource rand, ModelData data) { + return originalModel.getRenderTypes(state, rand, data); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapperWithData.java b/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapperWithData.java index 4fd4e87f39..eb2ec4266c 100644 --- a/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapperWithData.java +++ b/src/main/java/com/simibubi/create/foundation/model/BakedModelWrapperWithData.java @@ -1,12 +1,11 @@ package com.simibubi.create.foundation.model; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.client.model.BakedModelWrapper; -import net.neoforged.neoforge.client.model.data.ModelData; -import net.neoforged.neoforge.client.model.data.ModelData.Builder; +import net.neoforged.neoforge.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData.Builder; public abstract class BakedModelWrapperWithData extends BakedModelWrapper { diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedQuad.java b/src/main/java/com/simibubi/create/foundation/model/BakedQuad.java new file mode 100644 index 0000000000..e2678566d1 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/BakedQuad.java @@ -0,0 +1,45 @@ +package com.simibubi.create.foundation.model; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; + +/** + * Temporary Create 26.2 porting bridge for legacy model code. + * TODO 26.2: Replace callers with net.minecraft.client.resources.model.geometry.BakedQuad. + */ +@Deprecated(forRemoval = true) +public class BakedQuad { + private final int[] vertices; + private final int tintIndex; + private final Direction direction; + private final TextureAtlasSprite sprite; + private final boolean shade; + + public BakedQuad(int[] vertices, int tintIndex, Direction direction, TextureAtlasSprite sprite, boolean shade) { + this.vertices = vertices; + this.tintIndex = tintIndex; + this.direction = direction; + this.sprite = sprite; + this.shade = shade; + } + + public int[] getVertices() { + return vertices; + } + + public int getTintIndex() { + return tintIndex; + } + + public Direction getDirection() { + return direction; + } + + public TextureAtlasSprite getSprite() { + return sprite; + } + + public boolean isShade() { + return shade; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/model/BakedQuadHelper.java b/src/main/java/com/simibubi/create/foundation/model/BakedQuadHelper.java index ca67874e50..972e076862 100644 --- a/src/main/java/com/simibubi/create/foundation/model/BakedQuadHelper.java +++ b/src/main/java/com/simibubi/create/foundation/model/BakedQuadHelper.java @@ -5,7 +5,7 @@ import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.VertexFormat; -import net.minecraft.client.renderer.block.model.BakedQuad; +import com.simibubi.create.foundation.model.BakedQuad; import net.minecraft.util.Mth; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/model/ItemOverrides.java b/src/main/java/com/simibubi/create/foundation/model/ItemOverrides.java new file mode 100644 index 0000000000..5fb96bb511 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/ItemOverrides.java @@ -0,0 +1,10 @@ +package com.simibubi.create.foundation.model; + +/** + * Temporary Create 26.2 porting bridge. + * TODO 26.2: Replace legacy item override usage with ItemModel definitions. + */ +@Deprecated(forRemoval = true) +public class ItemOverrides { + public static final ItemOverrides EMPTY = new ItemOverrides(); +} diff --git a/src/main/java/com/simibubi/create/foundation/model/ModelSwapper.java b/src/main/java/com/simibubi/create/foundation/model/ModelSwapper.java index 13d20606ab..4af7dc9ddf 100644 --- a/src/main/java/com/simibubi/create/foundation/model/ModelSwapper.java +++ b/src/main/java/com/simibubi/create/foundation/model/ModelSwapper.java @@ -1,25 +1,9 @@ package com.simibubi.create.foundation.model; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - import com.simibubi.create.foundation.block.render.CustomBlockModels; import com.simibubi.create.foundation.item.render.CustomItemModels; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; -import com.simibubi.create.foundation.item.render.CustomRenderedItems; - -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.client.renderer.block.BlockModelShaper; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.ModelResourceLocation; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.client.event.ModelEvent; public class ModelSwapper { @@ -34,42 +18,8 @@ public CustomItemModels getCustomItemModels() { return customItemModels; } - public void onModelBake(ModelEvent.ModifyBakingResult event) { - Map modelRegistry = event.getModels(); - customBlockModels.forEach((block, modelFunc) -> swapModels(modelRegistry, getAllBlockStateModelLocations(block), modelFunc)); - customItemModels.forEach((item, modelFunc) -> swapModels(modelRegistry, getItemModelLocation(item), modelFunc)); - CustomRenderedItems.forEach(item -> swapModels(modelRegistry, getItemModelLocation(item), CustomRenderedItemModel::new)); - } - public void registerListeners(IEventBus modEventBus) { - modEventBus.addListener(this::onModelBake); - } - - public static void swapModels(Map modelRegistry, - List locations, Function factory) { - locations.forEach(location -> { - swapModels(modelRegistry, location, factory); - }); - } - - public static void swapModels(Map modelRegistry, - ModelResourceLocation location, Function factory) { - modelRegistry.put(location, factory.apply(modelRegistry.get(location))); - } - - public static List getAllBlockStateModelLocations(Block block) { - List models = new ArrayList<>(); - ResourceLocation blockRl = RegisteredObjectsHelper.getKeyOrThrow(block); - block.getStateDefinition() - .getPossibleStates() - .forEach(state -> { - models.add(BlockModelShaper.stateToModelLocation(blockRl, state)); - }); - return models; - } - - public static ModelResourceLocation getItemModelLocation(Item item) { - return new ModelResourceLocation(RegisteredObjectsHelper.getKeyOrThrow(item), "inventory"); + // TODO 26.2: Register custom BlockStateModel/ItemModel loaders instead of mutating baked model maps. } } diff --git a/src/main/java/com/simibubi/create/foundation/model/QuadTransformers.java b/src/main/java/com/simibubi/create/foundation/model/QuadTransformers.java new file mode 100644 index 0000000000..4bd91c9a46 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/QuadTransformers.java @@ -0,0 +1,17 @@ +package com.simibubi.create.foundation.model; + +import java.util.List; + +public final class QuadTransformers { + private QuadTransformers() {} + + public static Transformer settingMaxEmissivity() { + return Transformer.INSTANCE; + } + + public enum Transformer { + INSTANCE; + + public void processInPlace(List quads) {} + } +} diff --git a/src/main/java/com/simibubi/create/foundation/model/SimpleBakedModel.java b/src/main/java/com/simibubi/create/foundation/model/SimpleBakedModel.java new file mode 100644 index 0000000000..1c2fbad963 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/model/SimpleBakedModel.java @@ -0,0 +1,74 @@ +package com.simibubi.create.foundation.model; + +import java.util.List; +import java.util.Map; + +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.model.data.ModelData; + +/** + * Temporary Create 26.2 porting bridge. + * TODO 26.2: Replace with BlockStateModel parts. + */ +@Deprecated(forRemoval = true) +public class SimpleBakedModel implements BakedModel { + private final List unculledFaces; + private final Map> culledFaces; + private final boolean ambientOcclusion; + private final boolean blockLight; + private final boolean gui3d; + private final TextureAtlasSprite particleIcon; + private final Object transforms; + private final ItemOverrides overrides; + + public SimpleBakedModel(List unculledFaces, Map> culledFaces, + boolean ambientOcclusion, boolean blockLight, boolean gui3d, TextureAtlasSprite particleIcon, + Object transforms, ItemOverrides overrides) { + this.unculledFaces = unculledFaces; + this.culledFaces = culledFaces; + this.ambientOcclusion = ambientOcclusion; + this.blockLight = blockLight; + this.gui3d = gui3d; + this.particleIcon = particleIcon; + this.transforms = transforms; + this.overrides = overrides; + } + + @Override + public List getQuads(BlockState state, Direction side, RandomSource rand) { + return side == null ? unculledFaces : culledFaces.getOrDefault(side, List.of()); + } + + @Override + public boolean useAmbientOcclusion() { + return ambientOcclusion; + } + + @Override + public boolean usesBlockLight() { + return blockLight; + } + + @Override + public boolean isGui3d() { + return gui3d; + } + + @Override + public TextureAtlasSprite getParticleIcon(ModelData data) { + return particleIcon; + } + + @Override + public Object getTransforms() { + return transforms; + } + + @Override + public ItemOverrides getOverrides() { + return overrides; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/networking/BlockEntityConfigurationPacket.java b/src/main/java/com/simibubi/create/foundation/networking/BlockEntityConfigurationPacket.java index 142b09a92d..05b97a2c7d 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/BlockEntityConfigurationPacket.java +++ b/src/main/java/com/simibubi/create/foundation/networking/BlockEntityConfigurationPacket.java @@ -9,6 +9,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.phys.Vec3; public abstract class BlockEntityConfigurationPacket implements ServerboundPacketPayload { @@ -26,7 +27,7 @@ public void handle(ServerPlayer player) { Level world = player.level(); if (!world.isLoaded(this.pos)) return; - if (!player.canInteractWithBlock(this.pos, maxRange())) + if (player.distanceToSqr(Vec3.atCenterOf(this.pos)) > maxRange() * maxRange()) return; BlockEntity blockEntity = world.getBlockEntity(this.pos); if (blockEntity instanceof SyncedBlockEntity) { diff --git a/src/main/java/com/simibubi/create/foundation/networking/BlockEntityDataPacket.java b/src/main/java/com/simibubi/create/foundation/networking/BlockEntityDataPacket.java index 4d55d18f54..1aff6b17d8 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/BlockEntityDataPacket.java +++ b/src/main/java/com/simibubi/create/foundation/networking/BlockEntityDataPacket.java @@ -3,11 +3,10 @@ import com.simibubi.create.foundation.blockEntity.SyncedBlockEntity; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; /** * A server to client version of {@link BlockEntityConfigurationPacket} @@ -20,9 +19,9 @@ public BlockEntityDataPacket(BlockPos pos) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - BlockEntity blockEntity = player.clientLevel.getBlockEntity(pos); + public void handle(Player player) { + BlockEntity blockEntity = player.level() + .getBlockEntity(pos); if (blockEntity instanceof SyncedBlockEntity) { handlePacket((BE) blockEntity); diff --git a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java b/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java index a5803c8e27..2d702b1c7c 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java +++ b/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java @@ -5,15 +5,14 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.platform.CatnipServices; +import net.minecraft.world.entity.player.Player; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.entity.Entity; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public interface ISyncPersistentData { @@ -35,11 +34,13 @@ public PersistentDataPacket(Entity entity) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - Entity entityByID = player.clientLevel.getEntity(entityId); + public void handle(Player player) { + Entity entityByID = player.level() + .getEntity(entityId); + if (entityByID == null) + return; CompoundTag data = entityByID.getPersistentData(); - new HashSet<>(data.getAllKeys()).forEach(data::remove); + new HashSet<>(data.keySet()).forEach(data::remove); data.merge(readData); if (!(entityByID instanceof ISyncPersistentData)) return; diff --git a/src/main/java/com/simibubi/create/foundation/pack/DynamicPack.java b/src/main/java/com/simibubi/create/foundation/pack/DynamicPack.java index 7ad54bf52c..47c9cfad0f 100644 --- a/src/main/java/com/simibubi/create/foundation/pack/DynamicPack.java +++ b/src/main/java/com/simibubi/create/foundation/pack/DynamicPack.java @@ -18,14 +18,16 @@ import net.minecraft.SharedConstants; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.packs.PackLocationInfo; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.metadata.MetadataSectionSerializer; +import net.minecraft.server.packs.metadata.MetadataSectionType; +import net.minecraft.server.packs.metadata.pack.PackFormat; import net.minecraft.server.packs.metadata.pack.PackMetadataSection; import net.minecraft.server.packs.repository.PackSource; import net.minecraft.server.packs.resources.IoSupplier; +import net.minecraft.util.InclusiveRange; // TODO - Move into catnip public class DynamicPack implements PackResources { @@ -40,29 +42,30 @@ public DynamicPack(String packId, PackType packType) { this.packId = packId; this.packType = packType; - metadata = new PackMetadataSection(Component.empty(), SharedConstants.getCurrentVersion().getPackVersion(packType)); + PackFormat currentFormat = SharedConstants.getCurrentVersion().packVersion(packType); + metadata = new PackMetadataSection(Component.empty(), new InclusiveRange<>(currentFormat, currentFormat)); packLocationInfo = new PackLocationInfo(packId, Component.literal(packId), PackSource.BUILT_IN, Optional.empty()); } - private static String getPath(PackType packType, ResourceLocation resourceLocation) { + private static String getPath(PackType packType, Identifier resourceLocation) { return packType.getDirectory() + "/" + resourceLocation.getNamespace() + "/" + resourceLocation.getPath(); } - public DynamicPack put(ResourceLocation location, IoSupplier stream) { + public DynamicPack put(Identifier location, IoSupplier stream) { files.put(getPath(packType, location), stream); return this; } - public DynamicPack put(ResourceLocation location, byte[] bytes) { + public DynamicPack put(Identifier location, byte[] bytes) { return put(location, () -> new ByteArrayInputStream(bytes)); } - public DynamicPack put(ResourceLocation location, String string) { + public DynamicPack put(Identifier location, String string) { return put(location, string.getBytes(StandardCharsets.UTF_8)); } - // Automatically suffixes the ResourceLocation with .json - public DynamicPack put(ResourceLocation location, JsonElement json) { + // Automatically suffixes the Identifier with .json + public DynamicPack put(Identifier location, JsonElement json) { return put(location.withSuffix(".json"), Create.GSON.toJson(json)); } @@ -72,13 +75,13 @@ public DynamicPack put(ResourceLocation location, JsonElement json) { } @Override - public @Nullable IoSupplier getResource(@NotNull PackType packType, @NotNull ResourceLocation resourceLocation) { + public @Nullable IoSupplier getResource(@NotNull PackType packType, @NotNull Identifier resourceLocation) { return files.getOrDefault(getPath(packType, resourceLocation), null); } @Override public void listResources(@NotNull PackType packType, @NotNull String namespace, @NotNull String path, @NotNull ResourceOutput resourceOutput) { - ResourceLocation resourceLocation = ResourceLocation.fromNamespaceAndPath(namespace, path); + Identifier resourceLocation = Identifier.fromNamespaceAndPath(namespace, path); String directoryAndNamespace = packType.getDirectory() + "/" + namespace + "/"; String prefix = directoryAndNamespace + path + "/"; files.forEach((filePath, streamSupplier) -> { @@ -106,8 +109,8 @@ public void listResources(@NotNull PackType packType, @NotNull String namespace, @SuppressWarnings("unchecked") @Override - public @Nullable T getMetadataSection(@NotNull MetadataSectionSerializer deserializer) throws IOException { - return deserializer == PackMetadataSection.TYPE ? (T) metadata : null; + public @Nullable T getMetadataSection(@NotNull MetadataSectionType deserializer) throws IOException { + return deserializer == PackMetadataSection.forPackType(packType) ? (T) metadata : null; } @Override diff --git a/src/main/java/com/simibubi/create/foundation/particle/AirParticle.java b/src/main/java/com/simibubi/create/foundation/particle/AirParticle.java index 70e6fd0548..c629916efe 100644 --- a/src/main/java/com/simibubi/create/foundation/particle/AirParticle.java +++ b/src/main/java/com/simibubi/create/foundation/particle/AirParticle.java @@ -2,17 +2,17 @@ import com.simibubi.create.Create; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.particle.Particle; import net.minecraft.client.particle.ParticleProvider; -import net.minecraft.client.particle.ParticleRenderType; import net.minecraft.client.particle.SimpleAnimatedParticle; import net.minecraft.client.particle.SpriteSet; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction.Axis; import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; import net.minecraft.world.phys.Vec3; public class AirParticle extends SimpleAnimatedParticle { @@ -26,7 +26,7 @@ public class AirParticle extends SimpleAnimatedParticle { protected AirParticle(ClientLevel world, AirParticleData data, double x, double y, double z, double dx, double dy, double dz, SpriteSet sprite) { - super(world, x, y, z, sprite, world.random.nextFloat() * .5f); + super(world, x, y, z, sprite, world.getRandom().nextFloat() * .5f); quadSize *= 0.75F; hasPhysics = false; @@ -55,10 +55,6 @@ protected AirParticle(ClientLevel world, AirParticleData data, double x, double } } - public ParticleRenderType getRenderType() { - return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; - } - @Override public void tick() { this.xo = this.x; @@ -85,9 +81,10 @@ public void tick() { this.move(this.xd, this.yd, this.zd); } - public int getLightColor(float partialTick) { + @Override + public int getLightCoords(float partialTick) { BlockPos blockpos = BlockPos.containing(this.x, this.y, this.z); - return this.level.isLoaded(blockpos) ? LevelRenderer.getLightColor(level, blockpos) : 0; + return this.level.isLoaded(blockpos) ? com.simibubi.create.foundation.render.LegacyLightTexture.getLightColor(level, blockpos) : 0; } private void selectSprite(int index) { @@ -102,7 +99,7 @@ public Factory(SpriteSet animatedSprite) { } public Particle createParticle(AirParticleData data, ClientLevel worldIn, double x, double y, double z, double xSpeed, - double ySpeed, double zSpeed) { + double ySpeed, double zSpeed, RandomSource random) { return new AirParticle(worldIn, data, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); } } diff --git a/src/main/java/com/simibubi/create/foundation/particle/AirParticleData.java b/src/main/java/com/simibubi/create/foundation/particle/AirParticleData.java index c724780992..b17d3c02bd 100644 --- a/src/main/java/com/simibubi/create/foundation/particle/AirParticleData.java +++ b/src/main/java/com/simibubi/create/foundation/particle/AirParticleData.java @@ -5,7 +5,6 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.simibubi.create.AllParticleTypes; -import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -13,7 +12,6 @@ import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; @@ -57,11 +55,4 @@ public StreamCodec getStreamCo public MapCodec getCodec(ParticleType type) { return CODEC; } - - @Override - @OnlyIn(Dist.CLIENT) - public SpriteParticleRegistration getMetaFactory() { - return AirParticle.Factory::new; - } - } diff --git a/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleData.java b/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleData.java index 627415b843..a7e21fb37d 100644 --- a/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleData.java +++ b/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleData.java @@ -2,15 +2,12 @@ import com.mojang.serialization.MapCodec; -import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleType; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; import org.jetbrains.annotations.NotNull; @@ -35,12 +32,4 @@ default ParticleType createType() { }; } - @OnlyIn(Dist.CLIENT) - public ParticleProvider getFactory(); - - @OnlyIn(Dist.CLIENT) - public default void register(ParticleType type, RegisterParticleProvidersEvent event) { - event.registerSpecial(type, getFactory()); - } - } diff --git a/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleDataWithSprite.java b/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleDataWithSprite.java index bb32a3d446..12ced48105 100644 --- a/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleDataWithSprite.java +++ b/src/main/java/com/simibubi/create/foundation/particle/ICustomParticleDataWithSprite.java @@ -1,50 +1,8 @@ package com.simibubi.create.foundation.particle; -import com.mojang.serialization.MapCodec; - -import net.minecraft.client.particle.ParticleEngine.SpriteParticleRegistration; -import net.minecraft.client.particle.ParticleProvider; import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.core.particles.ParticleType; - -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; - -import org.jetbrains.annotations.NotNull; public interface ICustomParticleDataWithSprite extends ICustomParticleData { - default ParticleType createType() { - return new ParticleType<>(false) { - - @Override - public @NotNull MapCodec codec() { - return ICustomParticleDataWithSprite.this.getCodec(this); - } - - @Override - public @NotNull StreamCodec streamCodec() { - return ICustomParticleDataWithSprite.this.getStreamCodec(); - } - }; - } - - @Override - @OnlyIn(Dist.CLIENT) - default ParticleProvider getFactory() { - throw new IllegalAccessError("This particle type uses a metaFactory!"); - } - - @OnlyIn(Dist.CLIENT) - public SpriteParticleRegistration getMetaFactory(); - - @Override - @OnlyIn(Dist.CLIENT) - public default void register(ParticleType type, RegisterParticleProvidersEvent event) { - event.registerSpriteSet(type, getMetaFactory()); - } - } diff --git a/src/main/java/com/simibubi/create/foundation/placement/PoleHelper.java b/src/main/java/com/simibubi/create/foundation/placement/PoleHelper.java index 6d70208ad1..7f5378e049 100644 --- a/src/main/java/com/simibubi/create/foundation/placement/PoleHelper.java +++ b/src/main/java/com/simibubi/create/foundation/placement/PoleHelper.java @@ -7,9 +7,8 @@ import com.simibubi.create.content.equipment.extendoGrip.ExtendoGripItem; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.placement.IPlacementHelper; -import net.createmod.catnip.placement.PlacementOffset; -import net.minecraft.MethodsReturnNonnullByDefault; +import net.createmod.catnip.api.placement.IPlacementHelper; +import net.createmod.catnip.api.placement.PlacementOffset; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -20,7 +19,6 @@ import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.BlockHitResult; -@MethodsReturnNonnullByDefault public abstract class PoleHelper> implements IPlacementHelper { protected final Predicate statePredicate; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/CreatePonderPlugin.java b/src/main/java/com/simibubi/create/foundation/ponder/CreatePonderPlugin.java index ea95b85406..f3904eb606 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/CreatePonderPlugin.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/CreatePonderPlugin.java @@ -8,13 +8,13 @@ import com.simibubi.create.infrastructure.ponder.AllCreatePonderScenes; import com.simibubi.create.infrastructure.ponder.AllCreatePonderTags; -import net.createmod.ponder.api.level.PonderLevel; -import net.createmod.ponder.api.registration.IndexExclusionHelper; -import net.createmod.ponder.api.registration.PonderPlugin; -import net.createmod.ponder.api.registration.PonderSceneRegistrationHelper; -import net.createmod.ponder.api.registration.PonderTagRegistrationHelper; -import net.createmod.ponder.api.registration.SharedTextRegistrationHelper; -import net.minecraft.resources.ResourceLocation; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.createmod.ponder.api.client.registration.IndexExclusionHelper; +import net.createmod.ponder.api.client.registration.PonderPlugin; +import net.createmod.ponder.api.client.registration.PonderSceneRegistrationHelper; +import net.createmod.ponder.api.client.registration.PonderTagRegistrationHelper; +import net.createmod.ponder.api.client.registration.SharedTextRegistrationHelper; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; public class CreatePonderPlugin implements PonderPlugin { @@ -25,12 +25,12 @@ public String getModId() { } @Override - public void registerScenes(PonderSceneRegistrationHelper helper) { + public void registerScenes(PonderSceneRegistrationHelper helper) { AllCreatePonderScenes.register(helper); } @Override - public void registerTags(PonderTagRegistrationHelper helper) { + public void registerTags(PonderTagRegistrationHelper helper) { AllCreatePonderTags.register(helper); } diff --git a/src/main/java/com/simibubi/create/foundation/ponder/CreateSceneBuilder.java b/src/main/java/com/simibubi/create/foundation/ponder/CreateSceneBuilder.java index 13d93c0638..b406aebfba 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/CreateSceneBuilder.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/CreateSceneBuilder.java @@ -28,24 +28,24 @@ import com.simibubi.create.foundation.ponder.element.ExpandedParrotElement; import com.simibubi.create.foundation.ponder.instruction.AnimateBlockEntityInstruction; -import net.createmod.catnip.data.FunctionalHelper; -import net.createmod.catnip.math.VecHelper; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.level.PonderLevel; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.Selection; -import net.createmod.ponder.foundation.PonderScene; -import net.createmod.ponder.foundation.PonderSceneBuilder; -import net.createmod.ponder.foundation.element.ElementLinkImpl; -import net.createmod.ponder.foundation.instruction.CreateParrotInstruction; +import net.createmod.catnip.api.data.FunctionalHelper; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.Selection; +import net.createmod.ponder.api.client.scene.PonderScene; +import net.createmod.ponder.api.client.scene.PonderSceneBuilder; +import net.createmod.ponder.impl.client.element.ElementLinkImpl; +import net.createmod.ponder.impl.client.instruction.CreateParrotInstruction; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.animal.Parrot; +import net.minecraft.world.entity.animal.parrot.Parrot; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; @@ -227,11 +227,11 @@ public void multiplyKineticSpeed(Selection selection, float modifier) { public void modifyKineticSpeed(Selection selection, UnaryOperator speedFunc) { modifyBlockEntityNBT(selection, SpeedGaugeBlockEntity.class, nbt -> { - float newSpeed = speedFunc.apply(nbt.getFloat("Speed")); + float newSpeed = speedFunc.apply(nbt.getFloatOr("Speed", 0)); nbt.putFloat("Value", SpeedGaugeBlockEntity.getDialTarget(newSpeed)); }); modifyBlockEntityNBT(selection, KineticBlockEntity.class, nbt -> { - nbt.putFloat("Speed", speedFunc.apply(nbt.getFloat("Speed"))); + nbt.putFloat("Speed", speedFunc.apply(nbt.getFloatOr("Speed", 0))); }); } @@ -241,7 +241,7 @@ public void propagatePipeChange(BlockPos pos) { public void setFilterData(Selection selection, Class teType, ItemStack filter) { modifyBlockEntityNBT(selection, teType, nbt -> { - nbt.put("Filter", filter.saveOptional(world().getHolderLookupProvider())); + nbt.put("Filter", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(filter, world().getHolderLookupProvider())); }); } @@ -250,7 +250,7 @@ public void instructArm(BlockPos armLocation, ArmBlockEntity.Phase phase, ItemSt modifyBlockEntityNBT(scene.getSceneBuildingUtil().select().position(armLocation), ArmBlockEntity.class, compound -> { NBTHelper.writeEnum(compound, "Phase", phase); - compound.put("HeldItem", heldItem.saveOptional(world().getHolderLookupProvider())); + compound.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(heldItem, world().getHolderLookupProvider())); compound.putInt("TargetPointIndex", targetedPoint); compound.putFloat("MovementProgress", 0); }); diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldBlockEntityFix.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldBlockEntityFix.java index 6802f16fb3..b42b056045 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldBlockEntityFix.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldBlockEntityFix.java @@ -4,7 +4,7 @@ import com.simibubi.create.content.kinetics.belt.BeltBlockEntity; import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer; -import net.createmod.ponder.api.level.PonderLevel; +import net.createmod.ponder.api.client.level.PonderLevel; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java index 4b5bf28c33..6fdffb5fd5 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/BeltItemElement.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.kinetics.belt.transport.TransportedItemStack; -import net.createmod.ponder.foundation.element.TrackedElementBase; +import net.createmod.ponder.impl.client.element.TrackedElementBase; public class BeltItemElement extends TrackedElementBase { diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/ExpandedParrotElement.java b/src/main/java/com/simibubi/create/foundation/ponder/element/ExpandedParrotElement.java index c95de858e9..ed9f3a1f6f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/ExpandedParrotElement.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/ExpandedParrotElement.java @@ -2,9 +2,9 @@ import java.util.function.Supplier; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.foundation.PonderScene; -import net.createmod.ponder.foundation.element.ParrotElementImpl; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.scene.PonderScene; +import net.createmod.ponder.impl.client.element.ParrotElementImpl; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/element/package-info.java b/src/main/java/com/simibubi/create/foundation/ponder/element/package-info.java index d5ca466a54..b6e923169e 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/element/package-info.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/element/package-info.java @@ -1,9 +1,7 @@ @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault package com.simibubi.create.foundation.ponder.element; import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; +import com.simibubi.create.foundation.utility.FieldsAreNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateBlockEntityInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateBlockEntityInstruction.java index 466812dd91..addb299eac 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateBlockEntityInstruction.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/AnimateBlockEntityInstruction.java @@ -9,9 +9,9 @@ import com.simibubi.create.content.kinetics.deployer.DeployerBlockEntity; import com.simibubi.create.content.trains.bogey.AbstractBogeyBlockEntity; -import net.createmod.ponder.api.level.PonderLevel; -import net.createmod.ponder.foundation.PonderScene; -import net.createmod.ponder.foundation.instruction.TickingInstruction; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.createmod.ponder.api.client.scene.PonderScene; +import net.createmod.ponder.impl.client.instruction.TickingInstruction; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instruction/package-info.java b/src/main/java/com/simibubi/create/foundation/ponder/instruction/package-info.java index b2be52faab..3c77830e6f 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/instruction/package-info.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/instruction/package-info.java @@ -1,9 +1,7 @@ @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault package com.simibubi.create.foundation.ponder.instruction; import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; +import com.simibubi.create.foundation.utility.FieldsAreNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/foundation/ponder/package-info.java b/src/main/java/com/simibubi/create/foundation/ponder/package-info.java index a782f56179..1727aef0d0 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/package-info.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/package-info.java @@ -1,9 +1,7 @@ @ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault @FieldsAreNonnullByDefault package com.simibubi.create.foundation.ponder; import javax.annotation.ParametersAreNonnullByDefault; -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; +import com.simibubi.create.foundation.utility.FieldsAreNonnullByDefault; diff --git a/src/main/java/com/simibubi/create/foundation/recipe/AllIngredients.java b/src/main/java/com/simibubi/create/foundation/recipe/AllIngredients.java index ffa0655d87..9787b88e04 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/AllIngredients.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/AllIngredients.java @@ -1,9 +1,12 @@ package com.simibubi.create.foundation.recipe; import com.simibubi.create.Create; +import com.simibubi.create.foundation.fluid.LazyComponentFluidIngredient; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.common.crafting.IngredientType; +import net.neoforged.neoforge.fluids.crafting.FluidIngredientType; +import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; import net.neoforged.neoforge.registries.NeoForgeRegistries; @@ -11,11 +14,15 @@ public class AllIngredients { public static final DeferredRegister> INGREDIENT_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.INGREDIENT_TYPES, Create.ID); + public static final DeferredRegister> FLUID_INGREDIENT_TYPES = DeferredRegister.create(NeoForgeRegistries.Keys.FLUID_INGREDIENT_TYPES, Create.ID); // Unused currently + public static final DeferredHolder, FluidIngredientType> COMPONENT_FLUID_INGREDIENT = + FLUID_INGREDIENT_TYPES.register("components", () -> new FluidIngredientType<>(LazyComponentFluidIngredient.CODEC)); @Internal public static void register(IEventBus modEventBus) { INGREDIENT_TYPES.register(modEventBus); + FLUID_INGREDIENT_TYPES.register(modEventBus); } } diff --git a/src/main/java/com/simibubi/create/foundation/recipe/DummyCraftingContainer.java b/src/main/java/com/simibubi/create/foundation/recipe/DummyCraftingContainer.java index 08af9fe37a..3065b077ef 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/DummyCraftingContainer.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/DummyCraftingContainer.java @@ -54,7 +54,6 @@ public void setItem(int slot, @NotNull ItemStack stack) {} @Override public void clearContent() {} - @Override public void fillStackedContents(@NotNull StackedContents helper) {} private static NonNullList createInventory(IItemHandler itemHandler, int[] extractedItemsFromSlot) { diff --git a/src/main/java/com/simibubi/create/foundation/recipe/IRecipeTypeInfo.java b/src/main/java/com/simibubi/create/foundation/recipe/IRecipeTypeInfo.java index 6d74cdeac7..5b0f20a508 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/IRecipeTypeInfo.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/IRecipeTypeInfo.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.recipe; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.item.crafting.RecipeSerializer; @@ -8,7 +8,7 @@ public interface IRecipeTypeInfo { - ResourceLocation getId(); + Identifier getId(); > T getSerializer(); diff --git a/src/main/java/com/simibubi/create/foundation/recipe/ItemCopyingRecipe.java b/src/main/java/com/simibubi/create/foundation/recipe/ItemCopyingRecipe.java index 18ec264d65..e329dfb2a0 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/ItemCopyingRecipe.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/ItemCopyingRecipe.java @@ -3,11 +3,13 @@ import org.jetbrains.annotations.Nullable; import com.simibubi.create.AllRecipeTypes; +import com.mojang.serialization.MapCodec; -import net.createmod.catnip.data.IntAttached; -import net.minecraft.core.HolderLookup; +import net.createmod.catnip.api.data.IntAttached; import net.minecraft.core.component.DataComponentType; import net.minecraft.core.component.DataComponents; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CraftingInput; @@ -17,6 +19,12 @@ import net.minecraft.world.level.Level; public class ItemCopyingRecipe extends CustomRecipe { + public static final MapCodec CODEC = + MapCodec.unit(() -> new ItemCopyingRecipe(CraftingBookCategory.MISC)); + public static final StreamCodec STREAM_CODEC = + StreamCodec.unit(new ItemCopyingRecipe(CraftingBookCategory.MISC)); + public static final RecipeSerializer SERIALIZER = new RecipeSerializer<>(CODEC, STREAM_CODEC); + public interface SupportsItemCopying { default ItemStack createCopy(ItemStack original, int count) { ItemStack copyWithCount = original.copyWithCount(count); @@ -37,7 +45,6 @@ default boolean canCopyToItem(ItemStack item) { } public ItemCopyingRecipe(CraftingBookCategory category) { - super(category); } @Override @@ -46,7 +53,7 @@ public boolean matches(CraftingInput input, Level level) { } @Override - public ItemStack assemble(CraftingInput input, HolderLookup.Provider registries) { + public ItemStack assemble(CraftingInput input) { IntAttached copyCheck = copyCheck(input); if (copyCheck == null) return ItemStack.EMPTY; @@ -97,8 +104,8 @@ private IntAttached copyCheck(CraftingInput input) { return IntAttached.with(copyTargets, itemToCopy); } - public RecipeSerializer getSerializer() { - return AllRecipeTypes.ITEM_COPYING.getSerializer(); + public RecipeSerializer getSerializer() { + return SERIALIZER; } public boolean canCraftInDimensions(int width, int height) { diff --git a/src/main/java/com/simibubi/create/foundation/recipe/RecipeApplier.java b/src/main/java/com/simibubi/create/foundation/recipe/RecipeApplier.java index f4e0cb7660..4bf4d161e3 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/RecipeApplier.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/RecipeApplier.java @@ -36,7 +36,7 @@ public static List applyRecipeOn(Level level, ItemStack stackIn, Reci for (int i = 0; i < stackIn.getCount(); i++) { List outputs = pr instanceof ManualApplicationRecipe mar ? mar.getRollableResults() : pr.getRollableResults(); - for (ItemStack stack : pr.rollResults(outputs, level.random)) { + for (ItemStack stack : pr.rollResults(outputs, level.getRandom())) { for (ItemStack previouslyRolled : stacks) { if (stack.isEmpty()) continue; @@ -53,14 +53,14 @@ public static List applyRecipeOn(Level level, ItemStack stackIn, Reci stacks.add(stack); } - if (returnProcessingRemainder && stackIn.hasCraftingRemainingItem()) { - ItemHelper.addToList(stackIn.getCraftingRemainingItem(), stacks); + ItemStack remainder = stackIn.getItem().getCraftingRemainder().create(); + if (returnProcessingRemainder && !remainder.isEmpty()) { + ItemHelper.addToList(remainder, stacks); } } } else { - ItemStack out = recipe.getResultItem(level.registryAccess()) - .copy(); + ItemStack out = ItemStack.EMPTY; stacks = ItemHelper.multipliedOutput(stackIn, out); } diff --git a/src/main/java/com/simibubi/create/foundation/recipe/RecipeConditions.java b/src/main/java/com/simibubi/create/foundation/recipe/RecipeConditions.java index 8f6e7a8c2b..7a11c2c981 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/RecipeConditions.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/RecipeConditions.java @@ -28,11 +28,11 @@ public static Predicate>> isOfType(RecipeType>> firstIngredientMatches(ItemStack stack) { - return r -> !r.value().getIngredients().isEmpty() && r.value().getIngredients().get(0).test(stack); + return r -> !r.value().placementInfo().ingredients().isEmpty() && r.value().placementInfo().ingredients().get(0).test(stack); } public static Predicate>> outputMatchesFilter(FilteringBehaviour filtering) { - return r -> filtering.test(r.value().getResultItem(filtering.getWorld().registryAccess())); + return r -> false; } diff --git a/src/main/java/com/simibubi/create/foundation/recipe/RecipeFinder.java b/src/main/java/com/simibubi/create/foundation/recipe/RecipeFinder.java index 682d201de9..b11af1d8c0 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/RecipeFinder.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/RecipeFinder.java @@ -15,6 +15,7 @@ import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; +import net.minecraft.world.item.crafting.RecipeManager; import net.minecraft.world.level.Level; /** @@ -51,7 +52,9 @@ public static List>> get(@Nullable Object cache private static List>> startSearch(Level level, Predicate>> conditions) { List>> recipes = new ArrayList<>(); - for (RecipeHolder> r : level.getRecipeManager().getRecipes()) + if (!(level.recipeAccess() instanceof RecipeManager recipeManager)) + return recipes; + for (RecipeHolder> r : recipeManager.getRecipes()) if (conditions.test(r)) recipes.add(r); return recipes; diff --git a/src/main/java/com/simibubi/create/foundation/recipe/trie/RecipeTrie.java b/src/main/java/com/simibubi/create/foundation/recipe/trie/RecipeTrie.java index ead65569ce..c98bfa1b51 100644 --- a/src/main/java/com/simibubi/create/foundation/recipe/trie/RecipeTrie.java +++ b/src/main/java/com/simibubi/create/foundation/recipe/trie/RecipeTrie.java @@ -15,6 +15,7 @@ import com.google.common.cache.CacheBuilder; import com.simibubi.create.Create; import com.simibubi.create.content.processing.basin.BasinRecipe; +import com.simibubi.create.foundation.fluid.LegacyFluidIngredientBridge; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -22,6 +23,7 @@ import it.unimi.dsi.fastutil.ints.IntSet; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.core.Holder; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; @@ -183,7 +185,7 @@ public void insert(R1 recipe) { private AbstractRecipe createRecipe(R1 recipe) { Set ingredients = new HashSet<>(); - for (Ingredient ingredient : recipe.getIngredients()) { + for (Ingredient ingredient : recipe.placementInfo().ingredients()) { if (ingredient.isEmpty()) { ingredients.add(AbstractIngredient.Universal.INSTANCE); continue; @@ -194,8 +196,8 @@ private AbstractRecipe createRecipe(R1 recipe) { } Set variants = new HashSet<>(); - for (ItemStack stack : ingredient.getItems()) { - variants.add(getOrAssignVariant(stack.getItem())); + for (Holder item : ingredient.items().toList()) { + variants.add(getOrAssignVariant(item.value())); } ingredients.add(new AbstractIngredient(variants)); @@ -209,7 +211,7 @@ private AbstractRecipe createRecipe(R1 recipe) { } Set variants = new HashSet<>(); - for (FluidStack stack : ingredient.getFluids()) { + for (FluidStack stack : LegacyFluidIngredientBridge.getFluids(ingredient)) { variants.add(getOrAssignVariant(stack.getFluid())); } diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java index 8eb00bc11b..0b2aa39e22 100644 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java +++ b/src/main/java/com/simibubi/create/foundation/render/AllInstanceTypes.java @@ -3,7 +3,6 @@ import static com.simibubi.create.Create.asResource; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import org.lwjgl.system.MemoryUtil; @@ -19,7 +18,6 @@ import dev.engine_room.flywheel.lib.instance.SimpleInstanceType; import dev.engine_room.flywheel.lib.util.ExtraMemoryOps; -@OnlyIn(Dist.CLIENT) public class AllInstanceTypes { public static final InstanceType ROTATING = SimpleInstanceType.builder(RotatingInstance::new) .cullShader(asResource("instance/cull/rotating.glsl")) diff --git a/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java index a57901851c..d95519b0aa 100644 --- a/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/BlockEntityRenderHelper.java @@ -15,10 +15,10 @@ import dev.engine_room.flywheel.api.visualization.VisualizationManager; import dev.engine_room.flywheel.lib.transform.TransformStack; import dev.engine_room.flywheel.lib.visualization.VisualizationHelper; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.api.client.render.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; @@ -36,50 +36,6 @@ public class BlockEntityRenderHelper { */ public static void renderBlockEntities(List blockEntities, BitSet shouldRenderBEs, BitSet erroredBEsOut, @javax.annotation.Nullable VirtualRenderWorld renderLevel, Level realLevel, PoseStack ms, @javax.annotation.Nullable Matrix4f lightTransform, MultiBufferSource buffer, float pt) { - for (int i = shouldRenderBEs.nextSetBit(0); i >= 0 && i < blockEntities.size(); i = shouldRenderBEs.nextSetBit(i + 1)) { - BlockEntity blockEntity = blockEntities.get(i); - if (VisualizationManager.supportsVisualization(realLevel) && VisualizationHelper.skipVanillaRender(blockEntity)) - continue; - - BlockEntityRenderer renderer = Minecraft.getInstance() - .getBlockEntityRenderDispatcher() - .getRenderer(blockEntity); - if (renderer == null) { - // Don't bother looping over it again if we can't do anything with it. - erroredBEsOut.set(i); - continue; - } - - BlockPos pos = blockEntity.getBlockPos(); - ms.pushPose(); - TransformStack.of(ms) - .translate(pos); - - try { - int realLevelLight = LevelRenderer.getLightColor(realLevel, getLightPos(lightTransform, pos)); - - int light; - if (renderLevel != null) { - renderLevel.setExternalLight(realLevelLight); - light = LevelRenderer.getLightColor(renderLevel, pos); - } else { - light = realLevelLight; - } - - renderer.render(blockEntity, pt, ms, buffer, light, OverlayTexture.NO_OVERLAY); - - } catch (Exception e) { - // Prevent this BE from causing more issues in the future. - erroredBEsOut.set(i); - - String message = "BlockEntity " + RegisteredObjectsHelper.getKeyOrThrow(blockEntity.getType()) + " could not be rendered virtually."; - if (AllConfigs.client().explainRenderErrors.get()) Create.LOGGER.error(message, e); - else Create.LOGGER.error(message); - } - - ms.popPose(); - } - if (renderLevel != null) { renderLevel.resetExternalLight(); } diff --git a/src/main/java/com/simibubi/create/foundation/render/BlockRenderDispatcher.java b/src/main/java/com/simibubi/create/foundation/render/BlockRenderDispatcher.java new file mode 100644 index 0000000000..1856f2c97f --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/BlockRenderDispatcher.java @@ -0,0 +1,23 @@ +package com.simibubi.create.foundation.render; + +import com.simibubi.create.foundation.model.BakedModel; + +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.world.level.block.state.BlockState; + +/** + * Temporary Create 26.2 porting bridge for legacy block model callers. + * TODO 26.2: Replace with BlockModelResolver/BlockStateModelSet. + */ +@Deprecated(forRemoval = true) +public class BlockRenderDispatcher { + private static final BakedModel EMPTY_MODEL = new BakedModel() {}; + + public BakedModel getBlockModel(BlockState state) { + return EMPTY_MODEL; + } + + public ModelBlockRenderer getModelRenderer() { + return null; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/CreateEntityRenderStateExtension.java b/src/main/java/com/simibubi/create/foundation/render/CreateEntityRenderStateExtension.java new file mode 100644 index 0000000000..ac966450e2 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/CreateEntityRenderStateExtension.java @@ -0,0 +1,12 @@ +package com.simibubi.create.foundation.render; + +import java.util.UUID; + +import org.jetbrains.annotations.Nullable; + +public interface CreateEntityRenderStateExtension { + void create$setEntityUUID(@Nullable UUID uuid); + + @Nullable + UUID create$getEntityUUID(); +} diff --git a/src/main/java/com/simibubi/create/foundation/render/GlStateManager.java b/src/main/java/com/simibubi/create/foundation/render/GlStateManager.java new file mode 100644 index 0000000000..fdd23ecb4c --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/GlStateManager.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.render; + +/** + * Temporary source bridge for legacy blend/logic enum constants. + * TODO 26.2: Remove once render state is expressed through RenderPipeline/RenderSetup. + */ +@Deprecated(forRemoval = true) +public class GlStateManager { + public enum SourceFactor { + SRC_ALPHA + } + + public enum DestFactor { + ONE_MINUS_SRC_ALPHA + } + + public enum LogicOp { + OR_REVERSE + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/ItemRenderer.java b/src/main/java/com/simibubi/create/foundation/render/ItemRenderer.java new file mode 100644 index 0000000000..eee75d0f63 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/ItemRenderer.java @@ -0,0 +1,38 @@ +package com.simibubi.create.foundation.render; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.simibubi.create.foundation.model.BakedModel; + +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +/** + * Temporary Create 26.2 porting bridge for legacy item-render callers. + * TODO 26.2: Remove when migrated to ItemModelResolver and ItemStackRenderState. + */ +@Deprecated(forRemoval = true) +public class ItemRenderer { + private static final BakedModel EMPTY_MODEL = new BakedModel() {}; + + public static VertexConsumer getFoilBuffer(MultiBufferSource buffer, RenderType renderType, boolean isItem, + boolean glint) { + return buffer.getBuffer(renderType); + } + + public BakedModel getModel(ItemStack stack, Level level, LivingEntity entity, int seed) { + return EMPTY_MODEL; + } + + public void render(ItemStack stack, ItemDisplayContext displayContext, boolean leftHand, PoseStack poseStack, + MultiBufferSource buffer, int light, int overlay, BakedModel model) { + } + + public void renderStatic(ItemStack stack, ItemDisplayContext displayContext, int light, int overlay, + PoseStack poseStack, MultiBufferSource buffer, Level level, int seed) { + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/LegacyBlockRendererBridge.java b/src/main/java/com/simibubi/create/foundation/render/LegacyBlockRendererBridge.java new file mode 100644 index 0000000000..cb40db4ab2 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/LegacyBlockRendererBridge.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.render; + +import com.simibubi.create.foundation.render.BlockRenderDispatcher; + +/** + * Temporary Create 26.2 porting bridge for call sites still using the old block renderer facade. + * TODO 26.2: Replace with BlockModelResolver, BlockStateModelSet, and render-state submission. + */ +@Deprecated(forRemoval = true) +public class LegacyBlockRendererBridge { + private static final BlockRenderDispatcher RENDERER = new BlockRenderDispatcher(); + + public static BlockRenderDispatcher getBlockRenderer() { + return RENDERER; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/LegacyItemRendererBridge.java b/src/main/java/com/simibubi/create/foundation/render/LegacyItemRendererBridge.java new file mode 100644 index 0000000000..1129d06fd1 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/LegacyItemRendererBridge.java @@ -0,0 +1,16 @@ +package com.simibubi.create.foundation.render; + +import com.simibubi.create.foundation.render.ItemRenderer; + +/** + * Temporary Create 26.2 porting bridge for call sites still using the old item renderer. + * TODO 26.2: Replace with ItemModelResolver + ItemStackRenderState submit calls. + */ +@Deprecated(forRemoval = true) +public class LegacyItemRendererBridge { + private static final ItemRenderer RENDERER = new ItemRenderer(); + + public static ItemRenderer getItemRenderer() { + return RENDERER; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/LegacyLightTexture.java b/src/main/java/com/simibubi/create/foundation/render/LegacyLightTexture.java new file mode 100644 index 0000000000..9545535585 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/LegacyLightTexture.java @@ -0,0 +1,24 @@ +package com.simibubi.create.foundation.render; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndLightGetter; +import net.minecraft.world.level.LightLayer; + +/** + * Temporary Create 26.2 bridge for call sites that used LevelRenderer#getLightColor. + * TODO 26.2: Replace with the official client render-state lighting utility once settled. + */ +@Deprecated(forRemoval = true) +public final class LegacyLightTexture { + public static final int FULL_BRIGHT = 0x00F000F0; + + private LegacyLightTexture() {} + + public static int getLightColor(Object level, BlockPos pos) { + if (!(level instanceof BlockAndLightGetter lightGetter)) + return FULL_BRIGHT; + int block = lightGetter.getBrightness(LightLayer.BLOCK, pos); + int sky = lightGetter.getBrightness(LightLayer.SKY, pos); + return block << 4 | sky << 20; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/LegacyRenderSystemBridge.java b/src/main/java/com/simibubi/create/foundation/render/LegacyRenderSystemBridge.java new file mode 100644 index 0000000000..b1d62d0d63 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/LegacyRenderSystemBridge.java @@ -0,0 +1,82 @@ +package com.simibubi.create.foundation.render; + +import java.util.function.Supplier; + +import org.joml.Matrix4f; +import org.joml.Matrix4fStack; +import org.joml.Vector3f; + +import net.minecraft.resources.Identifier; + +/** + * Temporary Create 26.2 porting bridge for fixed-function render state calls removed from RenderSystem. + * TODO 26.2: Replace these call sites with RenderPipeline/RenderSetup state. + */ +@Deprecated(forRemoval = true) +public class LegacyRenderSystemBridge { + public static void enableBlend() { + } + + public static void disableBlend() { + } + + public static void defaultBlendFunc() { + } + + public static void blendFunc(com.simibubi.create.foundation.render.GlStateManager.SourceFactor source, + com.simibubi.create.foundation.render.GlStateManager.DestFactor dest) { + } + + public static void enableDepthTest() { + } + + public static void disableDepthTest() { + } + + public static void enableCull() { + } + + public static void colorMask(boolean red, boolean green, boolean blue, boolean alpha) { + } + + public static void setShaderColor(float red, float green, float blue, float alpha) { + } + + public static void setShaderTexture(int slot, Identifier texture) { + } + + public static void setShader(Supplier shader) { + } + + public static void enableColorLogicOp() { + } + + public static void disableColorLogicOp() { + } + + public static void logicOp(com.simibubi.create.foundation.render.GlStateManager.LogicOp op) { + } + + public static void disableTexture() { + } + + public static void enableTexture() { + } + + public static void disableRescaleNormal() { + } + + public static Matrix4fStack getModelViewStack() { + return com.mojang.blaze3d.systems.RenderSystem.getModelViewStack(); + } + + public static void applyModelViewMatrix() { + } + + public static void multMatrix(Matrix4f matrix) { + getModelViewStack().mul(matrix); + } + + public static void setShaderLights(Vector3f light1, Vector3f light2) { + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/LegacyRenderTypes.java b/src/main/java/com/simibubi/create/foundation/render/LegacyRenderTypes.java new file mode 100644 index 0000000000..11d2624863 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/LegacyRenderTypes.java @@ -0,0 +1,32 @@ +package com.simibubi.create.foundation.render; + +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.Identifier; + +public class LegacyRenderTypes { + + public static RenderType solid() { + return net.minecraft.client.renderer.rendertype.RenderTypes.entitySolid(TextureAtlas.LOCATION_BLOCKS); + } + + public static RenderType cutout() { + return net.minecraft.client.renderer.rendertype.RenderTypes.entityCutout(TextureAtlas.LOCATION_BLOCKS); + } + + public static RenderType cutoutMipped() { + return cutout(); + } + + public static RenderType translucent() { + return net.minecraft.client.renderer.rendertype.RenderTypes.entityTranslucent(TextureAtlas.LOCATION_BLOCKS); + } + + public static RenderType lines() { + return net.minecraft.client.renderer.rendertype.RenderTypes.lines(); + } + + public static RenderType shadow(Identifier texture) { + return net.minecraft.client.renderer.rendertype.RenderTypes.entityShadow(texture); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/PanoramaRenderer.java b/src/main/java/com/simibubi/create/foundation/render/PanoramaRenderer.java new file mode 100644 index 0000000000..234e652092 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/render/PanoramaRenderer.java @@ -0,0 +1,11 @@ +package com.simibubi.create.foundation.render; + +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.renderer.CubeMap; + +public class PanoramaRenderer { + public PanoramaRenderer(CubeMap cubeMap) {} + + public void render(GuiGraphicsExtractor graphics, int width, int height, float alpha, float partialTicks) { + } +} diff --git a/src/main/java/com/simibubi/create/foundation/render/PlayerSkyhookRenderer.java b/src/main/java/com/simibubi/create/foundation/render/PlayerSkyhookRenderer.java index e7e422ec14..d9205ad28e 100644 --- a/src/main/java/com/simibubi/create/foundation/render/PlayerSkyhookRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/render/PlayerSkyhookRenderer.java @@ -7,14 +7,16 @@ import com.simibubi.create.AllTags.AllItemTags; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; import net.minecraft.util.Mth; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; public class PlayerSkyhookRenderer { @@ -29,6 +31,18 @@ public static void beforeSetupAnim(Player player, HumanoidModel model) { if (hangingPlayers.contains(player.getUUID())) return; + resetPose(model); + } + + public static void beforeSetupAnim(HumanoidRenderState state, HumanoidModel model) { + UUID uuid = ((CreateEntityRenderStateExtension) state).create$getEntityUUID(); + if (uuid == null || hangingPlayers.contains(uuid)) + return; + + resetPose(model); + } + + private static void resetPose(HumanoidModel model) { model.head.resetPose(); model.hat.resetPose(); model.body.resetPose(); @@ -44,6 +58,15 @@ public static void afterSetupAnim(Player player, HumanoidModel model) { !AllItemTags.CHAIN_RIDEABLE.matches(player.getMainHandItem()), model); } + public static void afterSetupAnim(HumanoidRenderState state, HumanoidModel model) { + UUID uuid = ((CreateEntityRenderStateExtension) state).create$getEntityUUID(); + if (uuid == null || !hangingPlayers.contains(uuid)) + return; + + ItemStack mainHandItem = state.getMainHandItemStack(); + setHangingPose(state.mainArm == HumanoidArm.LEFT ^ !AllItemTags.CHAIN_RIDEABLE.matches(mainHandItem), model); + } + private static void setHangingPose(boolean isLeftArmMain, HumanoidModel model) { if (Minecraft.getInstance().isPaused()) return; diff --git a/src/main/java/com/simibubi/create/foundation/render/RenderTypes.java b/src/main/java/com/simibubi/create/foundation/render/RenderTypes.java index a4cc2ebd12..fdc797e340 100644 --- a/src/main/java/com/simibubi/create/foundation/render/RenderTypes.java +++ b/src/main/java/com/simibubi/create/foundation/render/RenderTypes.java @@ -1,156 +1,45 @@ package com.simibubi.create.foundation.render; -import java.io.IOException; import java.util.function.BiFunction; -import java.util.function.Function; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.VertexFormat; -import com.simibubi.create.Create; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.Identifier; -import net.minecraft.Util; -import net.minecraft.client.renderer.RenderStateShard; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.ShaderInstance; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.ResourceProvider; - -import net.neoforged.api.distmarker.Dist; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.common.EventBusSubscriber; -import net.neoforged.neoforge.client.event.RegisterShadersEvent; - -public class RenderTypes extends RenderStateShard { - public static final RenderStateShard.ShaderStateShard GLOWING_SHADER = new RenderStateShard.ShaderStateShard(() -> Shaders.glowingShader); - - private static final RenderType ENTITY_SOLID_BLOCK_MIPPED = RenderType.create(createLayerName("entity_solid_block_mipped"), - DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, - RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_ENTITY_SOLID_SHADER) - .setTextureState(BLOCK_SHEET_MIPPED) - .setTransparencyState(NO_TRANSPARENCY) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final RenderType ENTITY_CUTOUT_BLOCK_MIPPED = RenderType.create(createLayerName("entity_cutout_block_mipped"), - DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, - RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_ENTITY_CUTOUT_SHADER) - .setTextureState(BLOCK_SHEET_MIPPED) - .setTransparencyState(NO_TRANSPARENCY) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final RenderType ENTITY_TRANSLUCENT_BLOCK_MIPPED = RenderType.create(createLayerName("entity_translucent_block_mipped"), - DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, - RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_ENTITY_TRANSLUCENT_CULL_SHADER) - .setTextureState(BLOCK_SHEET_MIPPED) - .setTransparencyState(TRANSLUCENT_TRANSPARENCY) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final RenderType ADDITIVE = RenderType.create(createLayerName("additive"), DefaultVertexFormat.BLOCK, - VertexFormat.Mode.QUADS, 256, true, true, RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_SOLID_SHADER) - .setTextureState(BLOCK_SHEET) - .setTransparencyState(ADDITIVE_TRANSPARENCY) - .setCullState(NO_CULL) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final RenderType ITEM_GLOWING_SOLID = RenderType.create(createLayerName("item_glowing_solid"), - DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, false, RenderType.CompositeState.builder() - .setShaderState(GLOWING_SHADER) - .setTextureState(BLOCK_SHEET) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final RenderType ITEM_GLOWING_TRANSLUCENT = RenderType.create(createLayerName("item_glowing_translucent"), - DefaultVertexFormat.NEW_ENTITY, VertexFormat.Mode.QUADS, 256, true, true, RenderType.CompositeState.builder() - .setShaderState(GLOWING_SHADER) - .setTextureState(BLOCK_SHEET) - .setTransparencyState(TRANSLUCENT_TRANSPARENCY) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(true)); - - private static final Function CHAIN = Util.memoize((p_234330_) -> { - return RenderType.create("chain_conveyor_chain", DefaultVertexFormat.BLOCK, VertexFormat.Mode.QUADS, 256, false, - true, RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_CUTOUT_MIPPED_SHADER) - .setTextureState(new RenderStateShard.TextureStateShard(p_234330_, false, true)) - .setTransparencyState(NO_TRANSPARENCY) - .setWriteMaskState(COLOR_DEPTH_WRITE) - .setLightmapState(LIGHTMAP) - .setOverlayState(OVERLAY) - .createCompositeState(false)); - }); +/** + * Temporary Create 26.2 bridge for legacy render layer callers. + * TODO 26.2: Rebuild Create's custom pipelines with RenderPipeline/RenderSetup. + */ +@Deprecated(forRemoval = true) +public class RenderTypes { + public static final BiFunction TRAIN_MAP = + (texture, linearFiltering) -> net.minecraft.client.renderer.rendertype.RenderTypes.text(texture); public static RenderType entitySolidBlockMipped() { - return ENTITY_SOLID_BLOCK_MIPPED; + return net.minecraft.client.renderer.rendertype.RenderTypes.entitySolid(TextureAtlas.LOCATION_BLOCKS); } public static RenderType entityCutoutBlockMipped() { - return ENTITY_CUTOUT_BLOCK_MIPPED; + return net.minecraft.client.renderer.rendertype.RenderTypes.entityCutout(TextureAtlas.LOCATION_BLOCKS); } public static RenderType entityTranslucentBlockMipped() { - return ENTITY_TRANSLUCENT_BLOCK_MIPPED; + return net.minecraft.client.renderer.rendertype.RenderTypes.entityTranslucent(TextureAtlas.LOCATION_BLOCKS); } public static RenderType additive() { - return ADDITIVE; - } - - public static BiFunction TRAIN_MAP = Util.memoize(RenderTypes::getTrainMap); - - private static RenderType getTrainMap(ResourceLocation locationIn, boolean linearFiltering) { - RenderType.CompositeState rendertype$state = RenderType.CompositeState.builder() - .setShaderState(RENDERTYPE_TEXT_SHADER) - .setTextureState(new RenderStateShard.TextureStateShard(locationIn, linearFiltering, false)) - .setTransparencyState(NO_TRANSPARENCY) - .setLightmapState(LIGHTMAP) - .createCompositeState(false); - return RenderType.create("create_train_map", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, - VertexFormat.Mode.QUADS, 256, false, true, rendertype$state); + return net.minecraft.client.renderer.rendertype.RenderTypes.entityTranslucentEmissive(TextureAtlas.LOCATION_BLOCKS); } public static RenderType itemGlowingSolid() { - return ITEM_GLOWING_SOLID; + return net.minecraft.client.renderer.rendertype.RenderTypes.entityTranslucentEmissive(TextureAtlas.LOCATION_BLOCKS); } public static RenderType itemGlowingTranslucent() { - return ITEM_GLOWING_TRANSLUCENT; + return net.minecraft.client.renderer.rendertype.RenderTypes.entityTranslucentEmissive(TextureAtlas.LOCATION_BLOCKS); } - public static RenderType chain(ResourceLocation pLocation) { - return CHAIN.apply(pLocation); - } - - private static String createLayerName(String name) { - return Create.ID + ":" + name; - } - - // Mmm gimme those protected fields - private RenderTypes() { - super(null, null, null); - } - - @EventBusSubscriber(Dist.CLIENT) - private static class Shaders { - private static ShaderInstance glowingShader; - - @SubscribeEvent - public static void onRegisterShaders(RegisterShadersEvent event) throws IOException { - ResourceProvider resourceProvider = event.getResourceProvider(); - event.registerShader(new ShaderInstance(resourceProvider, Create.asResource("glowing_shader"), - DefaultVertexFormat.NEW_ENTITY), shader -> glowingShader = shader); - } + public static RenderType chain(Identifier location) { + return net.minecraft.client.renderer.rendertype.RenderTypes.entityCutout(location, false); } } diff --git a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java index 3996c24030..0b27f0b9c9 100644 --- a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java +++ b/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java @@ -3,12 +3,13 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.Lightmap; +import net.minecraft.client.renderer.rendertype.RenderType; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.util.Mth; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.RenderShape; @@ -23,7 +24,7 @@ public class ShadowRenderHelper { private static final RenderType SHADOW_LAYER = - RenderType.entityNoOutline(ResourceLocation.withDefaultNamespace("textures/misc/shadow.png")); + LegacyRenderTypes.shadow(Identifier.withDefaultNamespace("textures/misc/shadow.png")); public static void renderShadow(PoseStack matrixStack, MultiBufferSource buffer, float opacity, float radius) { PoseStack.Pose entry = matrixStack.last(); @@ -67,7 +68,7 @@ private static void renderBlockShadow(PoseStack.Pose entry, VertexConsumer build if (blockstate.isCollisionShapeFullBlock(world, blockpos)) { VoxelShape voxelshape = blockstate.getShape(world, pos.below()); if (!voxelshape.isEmpty()) { - float brightness = LightTexture.getBrightness(world.dimensionType(), world.getMaxLocalRawBrightness(pos)); + float brightness = Lightmap.getBrightness(world.dimensionType(), world.getMaxLocalRawBrightness(pos)); float f = (float) ((opacity - (y - pos.getY()) / 2.0D) * 0.5D * brightness); if (f >= 0.0F) { if (f > 1.0F) { @@ -105,7 +106,7 @@ private static void shadowVertex(PoseStack.Pose entry, VertexConsumer builder, f .setColor(1.0F, 1.0F, 1.0F, alpha) .setUv(u, v) .setOverlay(OverlayTexture.NO_OVERLAY) - .setLight(LightTexture.FULL_BRIGHT) + .setLight(LightCoordsUtil.FULL_BRIGHT) .setNormal(entry.copy(), 0.0F, 1.0F, 0.0F); } diff --git a/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java b/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java index 4ecc193391..438c34e52a 100644 --- a/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java +++ b/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.sound; -import net.createmod.catnip.animation.AnimationTickHolder; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.sounds.SoundEvent; diff --git a/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java b/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java index a3d14eb25e..2d5cde96da 100644 --- a/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java +++ b/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java @@ -7,8 +7,8 @@ import com.simibubi.create.foundation.sound.SoundScapes.PitchGroup; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.math.VecHelper; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.math.VecHelper; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; @@ -82,7 +82,7 @@ private Vec3 determineMeanPos() { } public float getVolume() { - Entity renderViewEntity = Minecraft.getInstance().cameraEntity; + Entity renderViewEntity = Minecraft.getInstance().getCameraEntity(); float distanceMultiplier = 0; if (renderViewEntity != null) { double distanceTo = renderViewEntity.position() diff --git a/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java b/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java index a891c12bc2..bb7c611f7c 100644 --- a/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java +++ b/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java @@ -13,8 +13,8 @@ import com.simibubi.create.AllSoundEvents; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.AnimationTickHolder; -import net.createmod.catnip.data.Pair; +import net.createmod.catnip.api.client.animation.AnimationTickHolder; +import net.createmod.catnip.api.data.Pair; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvents; @@ -131,7 +131,7 @@ protected static boolean outOfRange(BlockPos pos) { } protected static BlockPos getCameraPos() { - Entity renderViewEntity = Minecraft.getInstance().cameraEntity; + Entity renderViewEntity = Minecraft.getInstance().getCameraEntity(); if (renderViewEntity == null) return BlockPos.ZERO; return renderViewEntity.blockPosition(); diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java index 411b227b46..69d1da3ac9 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java @@ -22,7 +22,7 @@ import com.simibubi.create.foundation.blockEntity.IMergeableBE; import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer; -import net.createmod.catnip.nbt.NBTProcessors; +import net.createmod.catnip.api.nbt.NBTProcessors; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Registry; @@ -40,7 +40,7 @@ import net.minecraft.tags.FluidTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.ItemInteractionResult; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -48,7 +48,7 @@ import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseRailBlock; import net.minecraft.world.level.block.BedBlock; @@ -67,13 +67,14 @@ import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.chunk.PalettedContainerFactory; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.BlockHitResult; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.common.SpecialPlantable; import net.neoforged.neoforge.event.level.BlockDropsEvent; -import net.neoforged.neoforge.event.level.BlockEvent; +import net.neoforged.neoforge.event.level.block.BreakBlockEvent; public class BlockHelper { private static final List COUNT_STATES = List.of( @@ -153,7 +154,7 @@ public static int findAndRemoveInInventory(BlockState block, Player player, int { // Try held Item first - int preferredSlot = player.getInventory().selected; + int preferredSlot = player.getInventory().getSelectedSlot(); ItemStack itemstack = player.getInventory() .getItem(preferredSlot); int count = itemstack.getCount(); @@ -215,12 +216,12 @@ public static void destroyBlockAs(Level level, BlockPos pos, @Nullable Player pl FluidState fluidState = level.getFluidState(pos); BlockState state = level.getBlockState(pos); - if (level.random.nextFloat() < effectChance) + if (level.getRandom().nextFloat() < effectChance) level.levelEvent(LevelEvent.PARTICLES_DESTROY_BLOCK, pos, Block.getId(state)); BlockEntity blockEntity = state.hasBlockEntity() ? level.getBlockEntity(pos) : null; if (player != null) { - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(level, pos, state, player); + BreakBlockEvent event = new BreakBlockEvent(level, pos, state, player); NeoForge.EVENT_BUS.post(event); if (event.isCanceled()) return; @@ -229,8 +230,8 @@ public static void destroyBlockAs(Level level, BlockPos pos, @Nullable Player pl player.awardStat(Stats.BLOCK_MINED.get(state.getBlock())); } - if (level instanceof ServerLevel serverLevel && level.getGameRules() - .getBoolean(GameRules.RULE_DOBLOCKDROPS) && !level.restoringBlockSnapshots + if (level instanceof ServerLevel serverLevel && serverLevel.getGameRules() + .get(GameRules.BLOCK_DROPS) && !level.restoringBlockSnapshots && (player == null || !player.isCreative())) { List drops = Block.getDrops(state, serverLevel, pos, blockEntity, player, usedTool); @@ -247,9 +248,9 @@ public static void destroyBlockAs(Level level, BlockPos pos, @Nullable Player pl // Simulating IceBlock#playerDestroy. Not calling method directly as it would drop item // entities as a side-effect - Registry enchantmentRegistry = level.registryAccess().registryOrThrow(Registries.ENCHANTMENT); - if (state.getBlock() instanceof IceBlock && usedTool.getEnchantmentLevel(enchantmentRegistry.getHolderOrThrow(Enchantments.SILK_TOUCH)) == 0) { - if (!level.dimensionType().ultraWarm()) { + Registry enchantmentRegistry = level.registryAccess().lookupOrThrow(Registries.ENCHANTMENT); + if (state.getBlock() instanceof IceBlock && usedTool.getEnchantmentLevel(enchantmentRegistry.getOrThrow(Enchantments.SILK_TOUCH)) == 0) { + if (!level.dimension().equals(Level.NETHER)) { BlockState below = level.getBlockState(pos.below()); if (below.blocksMotion() || below.liquid()) { fluidState = IceBlock.meltsInto().getFluidState(); @@ -279,18 +280,17 @@ private static void placeRailWithoutUpdate(Level world, BlockState state, BlockP int idx = chunk.getSectionIndex(target.getY()); LevelChunkSection chunksection = chunk.getSection(idx); if (chunksection == null) { - chunksection = new LevelChunkSection(world.registryAccess() - .registryOrThrow(Registries.BIOME)); + chunksection = new LevelChunkSection(PalettedContainerFactory.create(world.registryAccess())); chunk.getSections()[idx] = chunksection; } BlockState old = chunksection.setBlockState(SectionPos.sectionRelative(target.getX()), SectionPos.sectionRelative(target.getY()), SectionPos.sectionRelative(target.getZ()), state); - chunk.setUnsaved(true); + chunk.markUnsaved(); world.markAndNotifyBlock(target, chunk, old, state, 82, 512); world.setBlock(target, state, Block.UPDATE_CLIENTS | Block.UPDATE_KNOWN_SHAPE | Block.UPDATE_MOVE_BY_PISTON); world.neighborChanged(target, world.getBlockState(target.below()) - .getBlock(), target.below()); + .getBlock(), null); } public static CompoundTag prepareBlockEntityData(Level level, BlockState blockState, BlockEntity blockEntity) { @@ -343,13 +343,12 @@ public static void placeSchematicBlock(Level world, BlockState state, BlockPos t state = Blocks.CAULDRON.defaultBlockState(); } - if (world.dimensionType() - .ultraWarm() && state.getFluidState().is(FluidTags.WATER)) { + if (world.dimension().equals(Level.NETHER) && state.getFluidState().is(FluidTags.WATER)) { int i = target.getX(); int j = target.getY(); int k = target.getZ(); world.playSound(null, target, SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 0.5F, - 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); + 2.6F + (world.getRandom().nextFloat() - world.getRandom().nextFloat()) * 0.8F); for (int l = 0; l < 8; ++l) { world.addParticle(ParticleTypes.LARGE_SMOKE, i + Math.random(), j + Math.random(), k + Math.random(), @@ -390,8 +389,8 @@ public static void placeSchematicBlock(Level world, BlockState state, BlockPos t kbe.warnOfMovement(); if (blockEntity instanceof IMultiBlockEntityContainer imbe) if (!imbe.isController()) - data.put("Controller", NbtUtils.writeBlockPos(imbe.getController())); - blockEntity.loadWithComponents(data, world.registryAccess()); + data.put("Controller", com.simibubi.create.foundation.utility.LegacyNbtUtilsBridge.writeBlockPos(imbe.getController())); + blockEntity.loadWithComponents(LegacyBlockEntityTagBridge.input(data, world.registryAccess())); } } @@ -454,14 +453,14 @@ public static boolean isNotUnheated(BlockState state) { public static InteractionResult invokeUse(BlockState state, Level level, Player player, InteractionHand hand, BlockHitResult ray) { - ItemInteractionResult iteminteractionresult = state.useItemOn( + InteractionResult interactionResult = state.useItemOn( player.getItemInHand(hand), level, player, hand, ray ); - if (iteminteractionresult.consumesAction()) { - return iteminteractionresult.result(); + if (interactionResult.consumesAction()) { + return interactionResult; } - if (iteminteractionresult == ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION && hand == InteractionHand.MAIN_HAND) { + if (interactionResult == InteractionResult.TRY_WITH_EMPTY_HAND && hand == InteractionHand.MAIN_HAND) { InteractionResult interactionresult = state.useWithoutItem(level, player, ray); if (interactionresult.consumesAction()) { return interactionresult; diff --git a/src/main/java/com/simibubi/create/foundation/utility/CameraAngleAnimationService.java b/src/main/java/com/simibubi/create/foundation/utility/CameraAngleAnimationService.java index 3234776216..f5531ad0d3 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/CameraAngleAnimationService.java +++ b/src/main/java/com/simibubi/create/foundation/utility/CameraAngleAnimationService.java @@ -1,7 +1,7 @@ package com.simibubi.create.foundation.utility; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.math.AngleHelper; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.math.AngleHelper; import net.minecraft.client.Minecraft; import net.minecraft.util.Mth; diff --git a/src/main/java/com/simibubi/create/foundation/utility/CreateLang.java b/src/main/java/com/simibubi/create/foundation/utility/CreateLang.java index 08a47f0bee..f9415a6834 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/CreateLang.java +++ b/src/main/java/com/simibubi/create/foundation/utility/CreateLang.java @@ -5,9 +5,9 @@ import com.simibubi.create.Create; -import net.createmod.catnip.lang.Lang; -import net.createmod.catnip.lang.LangBuilder; -import net.createmod.catnip.lang.LangNumberFormat; +import net.createmod.catnip.api.lang.Lang; +import net.createmod.catnip.api.lang.LangBuilder; +import net.createmod.catnip.api.client.lang.LangNumberFormat; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/foundation/utility/Debug.java b/src/main/java/com/simibubi/create/foundation/utility/Debug.java index 237d0b721c..6b64bdf17f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/Debug.java +++ b/src/main/java/com/simibubi/create/foundation/utility/Debug.java @@ -7,32 +7,30 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.fml.util.thread.EffectiveSide; /** Deprecated so simi doensn't forget to remove debug calls **/ -@OnlyIn(value = Dist.CLIENT) public class Debug { @Deprecated public static void debugChat(String message) { if (Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.displayClientMessage(Component.literal(message), false); + Minecraft.getInstance().player.sendSystemMessage(Component.literal(message)); } } @Deprecated public static void debugChatAndShowStack(String message, int depth) { if (Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.displayClientMessage(Component.literal(message).append("@") - .append(debugStack(depth)), false); + Minecraft.getInstance().player.sendSystemMessage(Component.literal(message).append("@") + .append(debugStack(depth))); } } @Deprecated public static void debugMessage(String message) { if (Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.displayClientMessage(Component.literal(message), true); + Minecraft.getInstance().player.sendSystemMessage(Component.literal(message)); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/DistExecutor.java b/src/main/java/com/simibubi/create/foundation/utility/DistExecutor.java index 5bcbfe1dcd..170c3e18bd 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/DistExecutor.java +++ b/src/main/java/com/simibubi/create/foundation/utility/DistExecutor.java @@ -5,8 +5,8 @@ import org.jetbrains.annotations.ApiStatus; +import net.createmod.catnip.api.platform.CatnipServices; import net.neoforged.api.distmarker.Dist; -import net.neoforged.fml.loading.FMLLoader; @ApiStatus.Internal @Deprecated(forRemoval = true, since = "1.21") @@ -18,7 +18,8 @@ public class DistExecutor { @ApiStatus.Internal @Deprecated(forRemoval = true, since = "1.21") public static T unsafeCallWhenOn(Dist dist, Supplier> toRun) { - if (FMLLoader.getDist() == dist) { + if ((dist == Dist.CLIENT && CatnipServices.PLATFORM.getEnv().isClient()) + || (dist == Dist.DEDICATED_SERVER && CatnipServices.PLATFORM.getEnv().isServer())) { try { return toRun.get().call(); } catch (Exception e) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java b/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java index 564a24ca06..9b25cb176b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java @@ -4,7 +4,7 @@ import java.util.Map; import java.util.function.Supplier; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Blocks; @@ -12,7 +12,7 @@ public class DyeHelper { public static ItemLike getWoolOfDye(DyeColor color) { - return WOOL_TABLE.getOrDefault(color, () -> Blocks.WHITE_WOOL).get(); + return WOOL_TABLE.getOrDefault(color, () -> Blocks.WOOL.white()).get(); } public static Couple getDyeColors(DyeColor color){ @@ -41,24 +41,24 @@ private static void addDye(DyeColor color, Integer brightColor, Integer darkColo static { // DyeColor, ( Front RGB, Back RGB ) - addDye(DyeColor.BLACK, 0x45403B, 0x21201F, Blocks.BLACK_WOOL); - addDye(DyeColor.RED, 0xB13937, 0x632737, Blocks.RED_WOOL); - addDye(DyeColor.GREEN, 0x208A46, 0x1D6045, Blocks.GREEN_WOOL); - addDye(DyeColor.BROWN, 0xAC855C, 0x68533E, Blocks.BROWN_WOOL); + addDye(DyeColor.BLACK, 0x45403B, 0x21201F, Blocks.WOOL.black()); + addDye(DyeColor.RED, 0xB13937, 0x632737, Blocks.WOOL.red()); + addDye(DyeColor.GREEN, 0x208A46, 0x1D6045, Blocks.WOOL.green()); + addDye(DyeColor.BROWN, 0xAC855C, 0x68533E, Blocks.WOOL.brown()); - addDye(DyeColor.BLUE, 0x5391E1, 0x504B90, Blocks.BLUE_WOOL); - addDye(DyeColor.GRAY, 0x5D666F, 0x313538, Blocks.GRAY_WOOL); - addDye(DyeColor.LIGHT_GRAY, 0x95969B, 0x707070, Blocks.LIGHT_GRAY_WOOL); - addDye(DyeColor.PURPLE, 0x9F54AE, 0x63366C, Blocks.PURPLE_WOOL); + addDye(DyeColor.BLUE, 0x5391E1, 0x504B90, Blocks.WOOL.blue()); + addDye(DyeColor.GRAY, 0x5D666F, 0x313538, Blocks.WOOL.gray()); + addDye(DyeColor.LIGHT_GRAY, 0x95969B, 0x707070, Blocks.WOOL.lightGray()); + addDye(DyeColor.PURPLE, 0x9F54AE, 0x63366C, Blocks.WOOL.purple()); - addDye(DyeColor.CYAN, 0x3EABB4, 0x3C7872, Blocks.CYAN_WOOL); - addDye(DyeColor.PINK, 0xD5A8CB, 0xB86B95, Blocks.PINK_WOOL); - addDye(DyeColor.LIME, 0xA3DF55, 0x4FB16F, Blocks.LIME_WOOL); - addDye(DyeColor.YELLOW, 0xE6D756, 0xE9AC29, Blocks.YELLOW_WOOL); + addDye(DyeColor.CYAN, 0x3EABB4, 0x3C7872, Blocks.WOOL.cyan()); + addDye(DyeColor.PINK, 0xD5A8CB, 0xB86B95, Blocks.WOOL.pink()); + addDye(DyeColor.LIME, 0xA3DF55, 0x4FB16F, Blocks.WOOL.lime()); + addDye(DyeColor.YELLOW, 0xE6D756, 0xE9AC29, Blocks.WOOL.yellow()); - addDye(DyeColor.LIGHT_BLUE, 0x69CED2, 0x508AA5, Blocks.LIGHT_BLUE_WOOL); - addDye(DyeColor.ORANGE, 0xEE9246, 0xD94927, Blocks.ORANGE_WOOL); - addDye(DyeColor.MAGENTA, 0xF062B0, 0xC04488, Blocks.MAGENTA_WOOL); - addDye(DyeColor.WHITE, 0xEDEAE5, 0xBBB6B0, Blocks.WHITE_WOOL); + addDye(DyeColor.LIGHT_BLUE, 0x69CED2, 0x508AA5, Blocks.WOOL.lightBlue()); + addDye(DyeColor.ORANGE, 0xEE9246, 0xD94927, Blocks.WOOL.orange()); + addDye(DyeColor.MAGENTA, 0xF062B0, 0xC04488, Blocks.WOOL.magenta()); + addDye(DyeColor.WHITE, 0xEDEAE5, 0xBBB6B0, Blocks.WOOL.white()); } } diff --git a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java index e792730cbf..4c279bc446 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java +++ b/src/main/java/com/simibubi/create/foundation/utility/DynamicComponent.java @@ -14,7 +14,9 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.ResolutionContext; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.permissions.PermissionSet; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; @@ -51,12 +53,8 @@ public MutableComponent get() { } public void read(BlockPos pos, CompoundTag nbt, HolderLookup.Provider registries) { - rawCustomText = getJsonFromString(nbt.getString("RawCustomText")); - try { - parsedCustomText = Component.Serializer.fromJson(nbt.getString("CustomText"), registries); - } catch (JsonParseException e) { - parsedCustomText = null; - } + rawCustomText = getJsonFromString(nbt.getStringOr("RawCustomText", "")); + parsedCustomText = LegacyComponentSerializationBridge.fromJson(nbt.getStringOr("CustomText", ""), registries); } public void write(CompoundTag nbt, HolderLookup.Provider registries) { @@ -64,7 +62,7 @@ public void write(CompoundTag nbt, HolderLookup.Provider registries) { return; nbt.putString("RawCustomText", rawCustomText.toString()); - nbt.putString("CustomText", Component.Serializer.toJson(parsedCustomText, registries)); + nbt.putString("CustomText", LegacyComponentSerializationBridge.toJson(parsedCustomText, registries)); } public static JsonElement getJsonFromString(String string) { @@ -79,9 +77,9 @@ public static Component parseCustomText(Level level, BlockPos pos, JsonElement c if (!(level instanceof ServerLevel serverLevel)) return null; try { - return ComponentUtils.updateForEntity(getCommandSource(serverLevel, pos), - Component.Serializer.fromJson(customText, level.registryAccess()), null, 0); - } catch (JsonParseException | CommandSyntaxException e) { + return ComponentUtils.resolve(ResolutionContext.create(getCommandSource(serverLevel, pos)), + LegacyComponentSerializationBridge.fromJson(customText.toString(), level.registryAccess()), 0); + } catch (CommandSyntaxException e) { return null; } } @@ -91,14 +89,14 @@ public static Component parseCustomText(Level level, BlockPos pos, Component cus if (!(level instanceof ServerLevel serverLevel)) return null; try { - return ComponentUtils.updateForEntity(getCommandSource(serverLevel, pos), customText, null, 0); - } catch (JsonParseException | CommandSyntaxException e) { + return ComponentUtils.resolve(ResolutionContext.create(getCommandSource(serverLevel, pos)), customText, 0); + } catch (CommandSyntaxException e) { return null; } } public static CommandSourceStack getCommandSource(ServerLevel level, BlockPos pos) { - return new CommandSourceStack(CommandSource.NULL, Vec3.atCenterOf(pos), Vec2.ZERO, level, 2, Create.ID, + return new CommandSourceStack(CommandSource.NULL, Vec3.atCenterOf(pos), Vec2.ZERO, level, PermissionSet.ALL_PERMISSIONS, Create.ID, Component.literal(Create.ID), level.getServer(), null); } diff --git a/src/main/java/com/simibubi/create/foundation/utility/FieldsAreNonnullByDefault.java b/src/main/java/com/simibubi/create/foundation/utility/FieldsAreNonnullByDefault.java new file mode 100644 index 0000000000..2adb6bc11a --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/FieldsAreNonnullByDefault.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.utility; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import javax.annotation.Nonnull; +import javax.annotation.meta.TypeQualifierDefault; + +/** + * Temporary source-compat annotation retained for package-info files. + */ +@Deprecated(forRemoval = true) +@Nonnull +@TypeQualifierDefault({ ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER }) +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.PACKAGE) +public @interface FieldsAreNonnullByDefault { +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java b/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java index 13f2a273c0..2ea4b1bc5a 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java @@ -12,7 +12,7 @@ import com.google.gson.stream.JsonReader; import com.simibubi.create.Create; -import net.createmod.catnip.lang.Lang; +import net.createmod.catnip.api.lang.Lang; public class FilesHelper { public static void createFolderIfMissing(Path path) { diff --git a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java index 2fae846110..ba823fde34 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/FluidFormatter.java @@ -1,6 +1,6 @@ package com.simibubi.create.foundation.utility; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; diff --git a/src/main/java/com/simibubi/create/foundation/utility/GlobalRegistryAccess.java b/src/main/java/com/simibubi/create/foundation/utility/GlobalRegistryAccess.java index 7ea8f6bd3c..18f8c44f2d 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/GlobalRegistryAccess.java +++ b/src/main/java/com/simibubi/create/foundation/utility/GlobalRegistryAccess.java @@ -4,7 +4,7 @@ import org.jetbrains.annotations.Nullable; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.core.RegistryAccess; diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityDataComponentBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityDataComponentBridge.java new file mode 100644 index 0000000000..b5deaa3348 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityDataComponentBridge.java @@ -0,0 +1,20 @@ +package com.simibubi.create.foundation.utility; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.component.TypedEntityData; +import net.minecraft.world.level.block.entity.BlockEntityType; + +public final class LegacyBlockEntityDataComponentBridge { + private LegacyBlockEntityDataComponentBridge() {} + + public static CompoundTag get(ItemStack stack) { + TypedEntityData> data = stack.get(DataComponents.BLOCK_ENTITY_DATA); + return data == null ? new CompoundTag() : data.copyTagWithoutId(); + } + + public static void set(ItemStack stack, BlockEntityType type, CompoundTag tag) { + stack.set(DataComponents.BLOCK_ENTITY_DATA, TypedEntityData.of(type, tag)); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityTagBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityTagBridge.java new file mode 100644 index 0000000000..c767a859b1 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyBlockEntityTagBridge.java @@ -0,0 +1,57 @@ +package com.simibubi.create.foundation.utility; + +import java.util.function.Consumer; + +import com.mojang.serialization.MapCodec; + +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.TagValueOutput; +import net.minecraft.world.level.storage.ValueInput; +import net.minecraft.world.level.storage.ValueOutput; + +public final class LegacyBlockEntityTagBridge { + private static final MapCodec ROOT_COMPOUND = MapCodec.assumeMapUnsafe(CompoundTag.CODEC); + + private LegacyBlockEntityTagBridge() {} + + public static CompoundTag read(ValueInput input) { + return input.read(ROOT_COMPOUND) + .map(CompoundTag::copy) + .orElseGet(CompoundTag::new); + } + + public static ValueInput input(CompoundTag tag, HolderLookup.Provider registries) { + return TagValueInput.create(ProblemReporter.DISCARDING, registries, tag); + } + + public static CompoundTag output(HolderLookup.Provider registries, Consumer writer) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + writer.accept(output); + return output.buildResult(); + } + + public static CompoundTag saveAsPassenger(Entity entity, HolderLookup.Provider registries) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + return entity.saveAsPassenger(output) ? output.buildResult() : new CompoundTag(); + } + + public static Entity loadEntityRecursive(CompoundTag tag, Level level) { + return EntityType.loadEntityRecursive(input(tag, registries(level)), level, EntitySpawnReason.LOAD, entity -> entity); + } + + public static void store(ValueOutput output, CompoundTag tag) { + output.store(tag); + } + + public static HolderLookup.Provider registries(Level level) { + return level != null ? level.registryAccess() : RegistryAccess.EMPTY; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyComponentSerializationBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyComponentSerializationBridge.java new file mode 100644 index 0000000000..515b813a62 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyComponentSerializationBridge.java @@ -0,0 +1,34 @@ +package com.simibubi.create.foundation.utility; + +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import com.mojang.serialization.JsonOps; + +import net.minecraft.core.HolderLookup; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentSerialization; + +public final class LegacyComponentSerializationBridge { + private LegacyComponentSerializationBridge() {} + + public static String toJson(Component component, HolderLookup.Provider registries) { + return ComponentSerialization.CODEC.encodeStart(registries.createSerializationContext(JsonOps.INSTANCE), component) + .result() + .map(JsonElement::toString) + .orElseGet(() -> Component.empty() + .getString()); + } + + public static Component fromJson(String json, HolderLookup.Provider registries) { + if (json == null || json.isBlank()) + return Component.empty(); + try { + return ComponentSerialization.CODEC.parse(registries.createSerializationContext(JsonOps.INSTANCE), + JsonParser.parseString(json)) + .result() + .orElseGet(() -> Component.literal(json)); + } catch (RuntimeException e) { + return Component.literal(json); + } + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyDirectionBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyDirectionBridge.java new file mode 100644 index 0000000000..0bd6677e1d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyDirectionBridge.java @@ -0,0 +1,18 @@ +package com.simibubi.create.foundation.utility; + +import net.minecraft.core.Direction; + +public class LegacyDirectionBridge { + public static Direction nearest(double x, double y, double z, Direction fallback) { + double ax = Math.abs(x); + double ay = Math.abs(y); + double az = Math.abs(z); + if (ax == 0 && ay == 0 && az == 0) + return fallback; + if (ay >= ax && ay >= az) + return y >= 0 ? Direction.UP : Direction.DOWN; + if (az >= ax) + return z >= 0 ? Direction.SOUTH : Direction.NORTH; + return x >= 0 ? Direction.EAST : Direction.WEST; + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyFluidNbtBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyFluidNbtBridge.java new file mode 100644 index 0000000000..7d494d8828 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyFluidNbtBridge.java @@ -0,0 +1,58 @@ +package com.simibubi.create.foundation.utility; + +import java.util.Optional; + +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.TagValueOutput; +import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.fluids.capability.templates.FluidTank; + +public final class LegacyFluidNbtBridge { + private LegacyFluidNbtBridge() {} + + public static Tag saveOptional(FluidStack stack, HolderLookup.Provider registries) { + return FluidStack.OPTIONAL_CODEC.encodeStart(registries.createSerializationContext(NbtOps.INSTANCE), stack) + .result() + .orElseGet(CompoundTag::new); + } + + public static CompoundTag saveOptionalCompound(FluidStack stack, HolderLookup.Provider registries) { + Tag tag = saveOptional(stack, registries); + return tag instanceof CompoundTag compoundTag ? compoundTag : new CompoundTag(); + } + + public static Optional parse(HolderLookup.Provider registries, Tag tag) { + return FluidStack.CODEC.parse(registries.createSerializationContext(NbtOps.INSTANCE), tag) + .result(); + } + + public static Optional parse(HolderLookup.Provider registries, Optional tag) { + return tag.flatMap(t -> parse(registries, t)); + } + + public static FluidStack parseOptional(HolderLookup.Provider registries, Tag tag) { + return FluidStack.OPTIONAL_CODEC.parse(registries.createSerializationContext(NbtOps.INSTANCE), tag) + .result() + .orElse(FluidStack.EMPTY); + } + + public static FluidStack parseOptional(HolderLookup.Provider registries, Optional tag) { + return tag.map(t -> parseOptional(registries, t)) + .orElse(FluidStack.EMPTY); + } + + public static CompoundTag serializeTank(FluidTank tank, HolderLookup.Provider registries) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + tank.serialize(output); + return output.buildResult(); + } + + public static void deserializeTank(FluidTank tank, HolderLookup.Provider registries, CompoundTag tag) { + tank.deserialize(TagValueInput.create(ProblemReporter.DISCARDING, registries, tag)); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyItemStackNbtBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyItemStackNbtBridge.java new file mode 100644 index 0000000000..164a996b82 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyItemStackNbtBridge.java @@ -0,0 +1,68 @@ +package com.simibubi.create.foundation.utility; + +import java.util.Optional; + +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.TagValueOutput; +import net.neoforged.neoforge.items.ItemStackHandler; + +import com.simibubi.create.foundation.item.SmartInventory; + +public final class LegacyItemStackNbtBridge { + private LegacyItemStackNbtBridge() {} + + public static Tag saveOptional(ItemStack stack, HolderLookup.Provider registries) { + return ItemStack.OPTIONAL_CODEC.encodeStart(registries.createSerializationContext(NbtOps.INSTANCE), stack) + .result() + .orElseGet(CompoundTag::new); + } + + public static CompoundTag saveOptionalCompound(ItemStack stack, HolderLookup.Provider registries) { + Tag tag = saveOptional(stack, registries); + return tag instanceof CompoundTag compoundTag ? compoundTag : new CompoundTag(); + } + + public static Optional parse(HolderLookup.Provider registries, Tag tag) { + return ItemStack.CODEC.parse(registries.createSerializationContext(NbtOps.INSTANCE), tag) + .result(); + } + + public static Optional parse(HolderLookup.Provider registries, Optional tag) { + return tag.flatMap(t -> parse(registries, t)); + } + + public static ItemStack parseOptional(HolderLookup.Provider registries, Tag tag) { + return ItemStack.OPTIONAL_CODEC.parse(registries.createSerializationContext(NbtOps.INSTANCE), tag) + .result() + .orElse(ItemStack.EMPTY); + } + + public static ItemStack parseOptional(HolderLookup.Provider registries, Optional tag) { + return tag.map(t -> parseOptional(registries, t)) + .orElse(ItemStack.EMPTY); + } + + public static CompoundTag serializeHandler(ItemStackHandler handler, HolderLookup.Provider registries) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + handler.serialize(output); + return output.buildResult(); + } + + public static void deserializeHandler(ItemStackHandler handler, HolderLookup.Provider registries, CompoundTag tag) { + handler.deserialize(TagValueInput.create(ProblemReporter.DISCARDING, registries, tag)); + } + + public static CompoundTag serializeHandler(SmartInventory handler, HolderLookup.Provider registries) { + return handler.serializeNBT(registries); + } + + public static void deserializeHandler(SmartInventory handler, HolderLookup.Provider registries, CompoundTag tag) { + handler.deserializeNBT(registries, tag); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/LegacyNbtUtilsBridge.java b/src/main/java/com/simibubi/create/foundation/utility/LegacyNbtUtilsBridge.java new file mode 100644 index 0000000000..047692368d --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/utility/LegacyNbtUtilsBridge.java @@ -0,0 +1,79 @@ +package com.simibubi.create.foundation.utility; + +import java.util.UUID; + +import net.minecraft.core.HolderLookup; +import net.minecraft.core.BlockPos; +import net.minecraft.core.UUIDUtil; +import net.minecraft.util.ProblemReporter; +import net.minecraft.world.ItemStackWithSlot; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.level.storage.TagValueInput; +import net.minecraft.world.level.storage.TagValueOutput; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.IntArrayTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.LongTag; +import net.minecraft.nbt.NumericTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; + +public final class LegacyNbtUtilsBridge { + private LegacyNbtUtilsBridge() {} + + public static Tag writeBlockPos(BlockPos pos) { + return LongTag.valueOf(pos.asLong()); + } + + public static BlockPos readBlockPos(Tag tag) { + if (tag instanceof NumericTag numericTag) + return BlockPos.of(numericTag.longValue()); + if (tag instanceof CompoundTag compoundTag) + return new BlockPos(compoundTag.getIntOr("X", 0), compoundTag.getIntOr("Y", 0), compoundTag.getIntOr("Z", 0)); + return BlockPos.ZERO; + } + + public static IntArrayTag createUUID(UUID uuid) { + return new IntArrayTag(UUIDUtil.uuidToIntArray(uuid)); + } + + public static void putUUID(CompoundTag tag, String key, UUID uuid) { + tag.put(key, createUUID(uuid)); + } + + public static boolean hasUUID(CompoundTag tag, String key) { + return tag.contains(key); + } + + public static UUID getUUID(CompoundTag tag, String key) { + return loadUUID(tag.get(key)); + } + + public static UUID loadUUID(Tag tag) { + if (tag instanceof IntArrayTag intArrayTag) { + int[] value = intArrayTag.getAsIntArray(); + if (value.length == 4) + return UUIDUtil.uuidFromIntArray(value); + } + if (tag instanceof StringTag stringTag) + return UUID.fromString(stringTag.value()); + if (tag instanceof CompoundTag compoundTag) { + long most = compoundTag.getLongOr("M", compoundTag.getLongOr("UUIDMost", 0)); + long least = compoundTag.getLongOr("L", compoundTag.getLongOr("UUIDLeast", 0)); + if (most != 0 || least != 0) + return new UUID(most, least); + } + return new UUID(0, 0); + } + + public static ListTag saveInventory(Inventory inventory, HolderLookup.Provider registries, String key) { + TagValueOutput output = TagValueOutput.createWithContext(ProblemReporter.DISCARDING, registries); + inventory.save(output.list(key, ItemStackWithSlot.CODEC)); + return output.buildResult().getListOrEmpty(key); + } + + public static void loadInventory(Inventory inventory, HolderLookup.Provider registries, CompoundTag tag, String key) { + inventory.load(TagValueInput.create(ProblemReporter.DISCARDING, registries, tag) + .listOrEmpty(key, ItemStackWithSlot.CODEC)); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java index 53231a6989..5c6559865b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java +++ b/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java @@ -1,5 +1,7 @@ package com.simibubi.create.foundation.utility; +import com.simibubi.create.foundation.utility.LegacyDirectionBridge; + import java.util.function.Predicate; import net.minecraft.core.BlockPos; @@ -56,7 +58,7 @@ public static PredicateTraceResult rayTraceUntil(Vec3 start, Vec3 end, Predicate MutableBlockPos currentPos = new BlockPos(x, y, z).mutable(); if (predicate.test(currentPos)) - return new PredicateTraceResult(currentPos.immutable(), Direction.getNearest(dx - x, dy - y, dz - z)); + return new PredicateTraceResult(currentPos.immutable(), LegacyDirectionBridge.nearest(dx - x, dy - y, dz - z, Direction.NORTH)); int remainingDistance = 200; diff --git a/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java b/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java index 68176f2765..3303e29878 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java +++ b/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java @@ -2,17 +2,16 @@ import com.simibubi.create.AllPackets; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.animation.LerpedFloat; -import net.createmod.catnip.animation.LerpedFloat.Chaser; +import net.createmod.catnip.api.animation.LerpedFloat; +import net.createmod.catnip.api.animation.LerpedFloat.Chaser; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.StreamCodec; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public class ServerSpeedProvider { private static final LerpedFloat modifier = LerpedFloat.linear(); @@ -29,7 +28,6 @@ public static void serverTick() { } } - @OnlyIn(Dist.CLIENT) public static void clientTick() { if (Minecraft.getInstance() .hasSingleplayerServer() @@ -54,8 +52,7 @@ public enum Packet implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = StreamCodec.unit(INSTANCE); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { if (!initialized) { initialized = true; clientTimer = 0; diff --git a/src/main/java/com/simibubi/create/foundation/utility/flywheel/box/MutableBox.java b/src/main/java/com/simibubi/create/foundation/utility/flywheel/box/MutableBox.java index 85d77f9d06..81325f5d20 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/flywheel/box/MutableBox.java +++ b/src/main/java/com/simibubi/create/foundation/utility/flywheel/box/MutableBox.java @@ -286,7 +286,7 @@ public void nextPowerOf2Centered() { public void mirrorAbout(Direction.Axis axis) { Vec3i axisVec = Direction.get(Direction.AxisDirection.POSITIVE, axis) - .getNormal(); + .getUnitVec3i(); int flipX = axisVec.getX() - 1; int flipY = axisVec.getY() - 1; int flipZ = axisVec.getZ() - 1; diff --git a/src/main/java/com/simibubi/create/foundation/utility/flywheel/light/LightVolume.java b/src/main/java/com/simibubi/create/foundation/utility/flywheel/light/LightVolume.java index 2da7cacef8..8767ca2328 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/flywheel/light/LightVolume.java +++ b/src/main/java/com/simibubi/create/foundation/utility/flywheel/light/LightVolume.java @@ -6,7 +6,7 @@ import dev.engine_room.flywheel.lib.memory.MemoryBlock; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; import net.minecraft.world.level.LightLayer; diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedBlockAndTintGetter.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedBlockAndTintGetter.java index 9385d785aa..590d45ac58 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedBlockAndTintGetter.java +++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedBlockAndTintGetter.java @@ -1,19 +1,22 @@ package com.simibubi.create.foundation.utility.worldWrappers; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.client.renderer.block.BlockAndTintGetter; +import net.minecraft.world.level.BlockAndLightGetter; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.CardinalLighting; import net.minecraft.world.level.ColorResolver; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.lighting.LevelLightEngine; import net.minecraft.world.level.material.FluidState; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.model.data.ModelData; public class WrappedBlockAndTintGetter implements BlockAndTintGetter { - protected final BlockAndTintGetter wrapped; + protected final BlockGetter wrapped; - public WrappedBlockAndTintGetter(BlockAndTintGetter wrapped) { + public WrappedBlockAndTintGetter(BlockGetter wrapped) { this.wrapped = wrapped; } @@ -38,23 +41,27 @@ public int getHeight() { } @Override - public int getMinBuildHeight() { - return wrapped.getMinBuildHeight(); + public int getMinY() { + return wrapped.getMinY(); } @Override - public float getShade(Direction pDirection, boolean pShade) { - return wrapped.getShade(pDirection, pShade); + public LevelLightEngine getLightEngine() { + if (wrapped instanceof BlockAndLightGetter lightGetter) + return lightGetter.getLightEngine(); + if (wrapped instanceof Level level) + return level.getLightEngine(); + return BlockAndTintGetter.EMPTY.getLightEngine(); } @Override - public LevelLightEngine getLightEngine() { - return wrapped.getLightEngine(); + public CardinalLighting cardinalLighting() { + return wrapped instanceof BlockAndTintGetter tintGetter ? tintGetter.cardinalLighting() : CardinalLighting.DEFAULT; } @Override public int getBlockTint(BlockPos pBlockPos, ColorResolver pColorResolver) { - return wrapped.getBlockTint(pBlockPos, pColorResolver); + return wrapped instanceof BlockAndTintGetter tintGetter ? tintGetter.getBlockTint(pBlockPos, pColorResolver) : 0xFFFFFF; } @Override diff --git a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunk.java b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunk.java index 0b9281f534..153aef1e27 100644 --- a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunk.java +++ b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunk.java @@ -23,6 +23,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.status.ChunkStatus; @@ -50,7 +51,7 @@ public VirtualChunk(VirtualRenderWorld world, int x, int z) { this.sections = new VirtualChunkSection[sectionCount]; for (int i = 0; i < sectionCount; i++) { - sections[i] = new VirtualChunkSection(this, i << 4); + sections[i] = new VirtualChunkSection(this, world.getMinBuildHeight() + (i << 4)); } this.needsLight = true; @@ -63,7 +64,7 @@ public VirtualChunk(VirtualRenderWorld world, int x, int z) { @Override @Nullable - public BlockState setBlockState(BlockPos pos, BlockState state, boolean isMoving) { + public BlockState setBlockState(BlockPos pos, BlockState state, int flags) { return null; } @@ -141,7 +142,6 @@ public Map getAllReferences() { public void setAllReferences(Map structureReferencesMap) { } - @Override public void setUnsaved(boolean unsaved) { } @@ -179,7 +179,7 @@ public CompoundTag getBlockEntityNbtForSaving(BlockPos pos, HolderLookup.Provide @Override public void findBlocks(@NotNull Predicate roughFilter, @NotNull BiPredicate fineFilter, @NotNull BiConsumer output) { world.blockStates.forEach((pos, state) -> { - if (SectionPos.blockToSectionCoord(pos.getX()) == chunkPos.x && SectionPos.blockToSectionCoord(pos.getZ()) == chunkPos.z) { + if (SectionPos.blockToSectionCoord(pos.getX()) == chunkPos.x() && SectionPos.blockToSectionCoord(pos.getZ()) == chunkPos.z()) { if (roughFilter.test(state) && fineFilter.test(state, pos)) { output.accept(pos, state); } @@ -198,7 +198,7 @@ public TickContainerAccess getFluidTicks() { } @Override - public TicksToSave getTicksForSerialization() { + public ChunkAccess.PackedTicks getTicksForSerialization(long currentTick) { throw new UnsupportedOperationException(); } diff --git a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSection.java b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSection.java index f47c31a776..92f447d566 100644 --- a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSection.java +++ b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSection.java @@ -1,6 +1,5 @@ package com.simibubi.create.foundation.virtualWorld; -import net.minecraft.core.registries.Registries; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.material.FluidState; @@ -13,8 +12,7 @@ public class VirtualChunkSection extends LevelChunkSection { public final int zStart; public VirtualChunkSection(VirtualChunk owner, int yBase) { - super(owner.world.registryAccess() - .registryOrThrow(Registries.BIOME)); + super(owner.world.palettedContainerFactory()); this.owner = owner; this.xStart = owner.getPos() .getMinBlockX(); diff --git a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSource.java b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSource.java index b0c78feb5c..4512ff5c56 100644 --- a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSource.java +++ b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualChunkSource.java @@ -28,7 +28,7 @@ public Level getLevel() { } public ChunkAccess getChunk(int x, int z) { - return chunks.computeIfAbsent(ChunkPos.asLong(x, z), packedPos -> new VirtualChunk(world, ChunkPos.getX(packedPos), ChunkPos.getZ(packedPos))); + return chunks.computeIfAbsent(ChunkPos.pack(x, z), packedPos -> new VirtualChunk(world, ChunkPos.getX(packedPos), ChunkPos.getZ(packedPos))); } @Override diff --git a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualRenderWorld.java b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualRenderWorld.java index 9b01ac4cd5..16ea95bc99 100644 --- a/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualRenderWorld.java +++ b/src/main/java/com/simibubi/create/foundation/virtualWorld/VirtualRenderWorld.java @@ -14,26 +14,34 @@ import it.unimi.dsi.fastutil.objects.Object2ShortMap; import it.unimi.dsi.fastutil.objects.Object2ShortOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import net.minecraft.client.renderer.LightTexture; +import net.minecraft.util.LightCoordsUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; +import net.minecraft.core.particles.ExplosionParticleInfo; +import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.SectionPos; import net.minecraft.core.Vec3i; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.world.TickRateManager; +import net.minecraft.world.attribute.EnvironmentAttributeSystem; +import net.minecraft.world.clock.ClockManager; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.flag.FeatureFlagSet; import net.minecraft.world.item.alchemy.PotionBrewing; -import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeAccess; import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.ExplosionDamageCalculator; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeManager; +import net.minecraft.world.level.border.WorldBorder; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.FuelValues; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; @@ -50,12 +58,15 @@ import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import net.minecraft.world.level.storage.LevelData; import net.minecraft.world.level.storage.WritableLevelData; import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.Scoreboard; import net.minecraft.world.ticks.LevelTickAccess; +import net.minecraft.util.random.WeightedList; -import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.entity.PartEntity; +import net.neoforged.neoforge.model.data.ModelData; public class VirtualRenderWorld extends Level implements VisualizationLevel { protected final Level level; @@ -79,7 +90,7 @@ public class VirtualRenderWorld extends Level implements VisualizationLevel { private int externalPackedLight = 0; public VirtualRenderWorld(Level level, int minBuildHeight, int height, Vec3i biomeOffset, Runnable onBlockUpdated) { - super((WritableLevelData) level.getLevelData(), level.dimension(), level.registryAccess(), level.dimensionTypeRegistration(), level.getProfilerSupplier(), + super((WritableLevelData) level.getLevelData(), level.dimension(), level.registryAccess(), level.dimensionTypeRegistration(), true, false, 0, 0); this.level = level; this.minBuildHeight = nextMultipleOf16(minBuildHeight); @@ -127,9 +138,9 @@ public int getBrightness(LightLayer lightType, BlockPos blockPos) { var selfBrightness = super.getBrightness(lightType, blockPos); if (lightType == LightLayer.SKY) { - return Math.max(selfBrightness, LightTexture.sky(externalPackedLight)); + return Math.max(selfBrightness, LightCoordsUtil.sky(externalPackedLight)); } else { - return Math.max(selfBrightness, LightTexture.block(externalPackedLight)); + return Math.max(selfBrightness, LightCoordsUtil.block(externalPackedLight)); } } @@ -291,12 +302,10 @@ public ChunkSource getChunkSource() { return chunkSource; } - @Override public int getMinBuildHeight() { return minBuildHeight; } - @Override public int getHeight() { return height; } @@ -329,7 +338,6 @@ public int getMaxLocalRawBrightness(BlockPos pos) { return 15; } - @Override public float getShade(Direction direction, boolean shade) { return 1f; } @@ -342,8 +350,8 @@ public Scoreboard getScoreboard() { } @Override - public RecipeManager getRecipeManager() { - return level.getRecipeManager(); + public RecipeAccess recipeAccess() { + return level.recipeAccess(); } @Override @@ -372,23 +380,18 @@ public PotionBrewing potionBrewing() { } @Override - public void setDayTimeFraction(float v) { - level.setDayTimeFraction(v); + public FuelValues fuelValues() { + return level.fuelValues(); } @Override - public void setDayTimePerTick(float v) { - level.setDayTimePerTick(v); + public ClockManager clockManager() { + return level.clockManager(); } @Override - public float getDayTimeFraction() { - return level.getDayTimeFraction(); - } - - @Override - public float getDayTimePerTick() { - return level.getDayTimePerTick(); + public EnvironmentAttributeSystem environmentAttributes() { + return level.environmentAttributes(); } // ADDITIONAL OVERRRIDES @@ -407,15 +410,25 @@ public boolean isAreaLoaded(BlockPos center, int range) { return true; } + @Override + public int getSeaLevel() { + return level.getSeaLevel(); + } + + @Override + public WorldBorder getWorldBorder() { + return level.getWorldBorder(); + } + // UNIMPORTANT IMPLEMENTATIONS @Override - public void playSeededSound(Player player, double x, double y, double z, Holder soundEvent, + public void playSeededSound(Entity player, double x, double y, double z, Holder soundEvent, SoundSource soundSource, float volume, float pitch, long seed) { } @Override - public void playSeededSound(Player player, Entity entity, Holder soundEvent, SoundSource soundSource, + public void playSeededSound(Entity player, Entity entity, Holder soundEvent, SoundSource soundSource, float volume, float pitch, long seed) { } @@ -435,18 +448,38 @@ public TickRateManager tickRateManager() { return level.tickRateManager(); } + @Override + public void setRespawnData(LevelData.RespawnData respawnData) { + level.setRespawnData(respawnData); + } + + @Override + public LevelData.RespawnData getRespawnData() { + return level.getRespawnData(); + } + + @Override + public Collection> dragonParts() { + return Collections.emptyList(); + } + + @Override + public void explode(Entity entity, DamageSource damageSource, ExplosionDamageCalculator explosionDamageCalculator, double x, + double y, double z, float power, boolean fire, ExplosionInteraction explosionInteraction, + ParticleOptions smallExplosionParticles, ParticleOptions largeExplosionParticles, + WeightedList explosionParticles, Holder explosionSound) { + } + @Override @Nullable public MapItemSavedData getMapData(MapId mapId) { return null; } - @Override public void setMapData(MapId mapId, MapItemSavedData mapItemSavedData) { } @NotNull - @Override public MapId getFreeMapId() { return new MapId(0); } @@ -456,7 +489,7 @@ public void destroyBlockProgress(int breakerId, BlockPos pos, int progress) { } @Override - public void levelEvent(@Nullable Player player, int type, BlockPos pos, int data) { + public void levelEvent(@Nullable Entity player, int type, BlockPos pos, int data) { } @Override @@ -480,47 +513,38 @@ public ChunkAccess getAnyChunkImmediately(final int chunkX, final int chunkZ) { // Intentionally copied from LevelHeightAccessor. Lithium overrides these methods so we need to, too. - @Override public int getMaxBuildHeight() { return this.getMinBuildHeight() + this.getHeight(); } - @Override public int getSectionsCount() { return this.getMaxSection() - this.getMinSection(); } - @Override public int getMinSection() { return SectionPos.blockToSectionCoord(this.getMinBuildHeight()); } - @Override public int getMaxSection() { return SectionPos.blockToSectionCoord(this.getMaxBuildHeight() - 1) + 1; } - @Override public boolean isOutsideBuildHeight(BlockPos pos) { return this.isOutsideBuildHeight(pos.getY()); } - @Override public boolean isOutsideBuildHeight(int y) { return y < this.getMinBuildHeight() || y >= this.getMaxBuildHeight(); } - @Override public int getSectionIndex(int y) { return this.getSectionIndexFromSectionY(SectionPos.blockToSectionCoord(y)); } - @Override public int getSectionIndexFromSectionY(int sectionY) { return sectionY - this.getMinSection(); } - @Override public int getSectionYFromSectionIndex(int sectionIndex) { return sectionIndex + this.getMinSection(); } diff --git a/src/main/java/com/simibubi/create/impl/contraption/dispenser/DispenserBehaviorConverter.java b/src/main/java/com/simibubi/create/impl/contraption/dispenser/DispenserBehaviorConverter.java index 7e00d8b10a..881e1a03a7 100644 --- a/src/main/java/com/simibubi/create/impl/contraption/dispenser/DispenserBehaviorConverter.java +++ b/src/main/java/com/simibubi/create/impl/contraption/dispenser/DispenserBehaviorConverter.java @@ -18,7 +18,7 @@ import net.minecraft.core.dispenser.DispenseItemBehavior; import net.minecraft.core.dispenser.ProjectileDispenseBehavior; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.Item; @@ -109,7 +109,7 @@ protected ItemStack execute(ItemStack stack, MovementContext context, BlockPos p return this.wrapped.dispense(source, stack.copy()); } catch (NullPointerException e) { // likely due to the lack of a BlockEntity - ResourceLocation itemId = BuiltInRegistries.ITEM.getKey(this.item); + Identifier itemId = BuiltInRegistries.ITEM.getKey(this.item); String message = "Error dispensing item '" + itemId + "' from contraption, not doing that anymore"; Create.LOGGER.error(message, e); this.hasErrored = true; diff --git a/src/main/java/com/simibubi/create/impl/effect/MilkEffectHandler.java b/src/main/java/com/simibubi/create/impl/effect/MilkEffectHandler.java index 281ecf60d5..b75d546145 100644 --- a/src/main/java/com/simibubi/create/impl/effect/MilkEffectHandler.java +++ b/src/main/java/com/simibubi/create/impl/effect/MilkEffectHandler.java @@ -8,7 +8,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; -import net.neoforged.neoforge.common.EffectCures; import net.neoforged.neoforge.fluids.FluidStack; public class MilkEffectHandler implements OpenPipeEffectHandler { @@ -19,7 +18,7 @@ public void apply(Level level, AABB area, FluidStack fluid) { List entities = level.getEntitiesOfClass(LivingEntity.class, area, LivingEntity::isAffectedByPotions); for (LivingEntity entity : entities) { - entity.removeEffectsCuredBy(EffectCures.MILK); + entity.removeAllEffects(); } } } diff --git a/src/main/java/com/simibubi/create/impl/effect/PotionEffectHandler.java b/src/main/java/com/simibubi/create/impl/effect/PotionEffectHandler.java index ff78f714d0..386757885b 100644 --- a/src/main/java/com/simibubi/create/impl/effect/PotionEffectHandler.java +++ b/src/main/java/com/simibubi/create/impl/effect/PotionEffectHandler.java @@ -28,12 +28,12 @@ public void apply(Level level, AABB area, FluidStack fluid) { for (LivingEntity entity : entities) { contents.forEachEffect(effectInstance -> { MobEffect effect = effectInstance.getEffect().value(); - if (effect.isInstantenous()) { - effect.applyInstantenousEffect(null, null, entity, effectInstance.getAmplifier(), 0.5D); + if (effect.isInstantaneous() && level instanceof net.minecraft.server.level.ServerLevel serverLevel) { + effect.applyInstantaneousEffect(serverLevel, null, null, entity, effectInstance.getAmplifier(), 0.5D); } else { entity.addEffect(new MobEffectInstance(effectInstance)); } - }); + }, 1.0F); } } diff --git a/src/main/java/com/simibubi/create/impl/effect/TeaEffectHandler.java b/src/main/java/com/simibubi/create/impl/effect/TeaEffectHandler.java index b57de5f4b1..a023c5fab6 100644 --- a/src/main/java/com/simibubi/create/impl/effect/TeaEffectHandler.java +++ b/src/main/java/com/simibubi/create/impl/effect/TeaEffectHandler.java @@ -20,7 +20,7 @@ public void apply(Level level, AABB area, FluidStack fluid) { List entities = level.getEntitiesOfClass(LivingEntity.class, area, LivingEntity::isAffectedByPotions); for (LivingEntity entity : entities) { - entity.addEffect(new MobEffectInstance(MobEffects.DIG_SPEED, 21, 0, false, false, false)); + entity.addEffect(new MobEffectInstance(MobEffects.HASTE, 21, 0, false, false, false)); } } } diff --git a/src/main/java/com/simibubi/create/impl/registrate/CreateRegistrateRegistrationCallbackImpl.java b/src/main/java/com/simibubi/create/impl/registrate/CreateRegistrateRegistrationCallbackImpl.java index 2007c5898b..c4dcd8f43a 100644 --- a/src/main/java/com/simibubi/create/impl/registrate/CreateRegistrateRegistrationCallbackImpl.java +++ b/src/main/java/com/simibubi/create/impl/registrate/CreateRegistrateRegistrationCallbackImpl.java @@ -11,7 +11,7 @@ import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; public class CreateRegistrateRegistrationCallbackImpl { // Intentionally not a synchronized map, since all safe accesses have to be synchronized anyway. @@ -37,7 +37,7 @@ public static void provideRegistrate(CreateRegistrate registrate) { } } - public static void register(ResourceKey> registry, ResourceLocation id, NonNullConsumer callback) { + public static void register(ResourceKey> registry, Identifier id, NonNullConsumer callback) { CallbackImpl callbackImpl = new CallbackImpl<>(registry, id, callback); Either>, CreateRegistrate> either; @@ -53,7 +53,7 @@ public static void register(ResourceKey> either.ifRight(callbackImpl::addToRegistrate); } - private record CallbackImpl(ResourceKey> registry, ResourceLocation id, NonNullConsumer callback) { + private record CallbackImpl(ResourceKey> registry, Identifier id, NonNullConsumer callback) { // Helper method so javac doesn't explode on the generic types. // Otherwise, IntelliJ does type inference better than javac, // and everything becomes illegible with generic erasure casts. diff --git a/src/main/java/com/simibubi/create/impl/registry/TagProviderImpl.java b/src/main/java/com/simibubi/create/impl/registry/TagProviderImpl.java index f1f49db2ad..42990d7aa9 100644 --- a/src/main/java/com/simibubi/create/impl/registry/TagProviderImpl.java +++ b/src/main/java/com/simibubi/create/impl/registry/TagProviderImpl.java @@ -8,7 +8,7 @@ import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -44,10 +44,10 @@ public void onRegister(Runnable invalidate) { // eye of the beholder? check the nametag, buddy public static Holder> getBeHolder(BlockEntityType type) { - ResourceLocation key = BuiltInRegistries.BLOCK_ENTITY_TYPE.getKey(type); + Identifier key = BuiltInRegistries.BLOCK_ENTITY_TYPE.getKey(type); if (key == null) throw new IllegalStateException("Unregistered BlockEntityType: " + type); - return BuiltInRegistries.BLOCK_ENTITY_TYPE.getHolder(key).orElseThrow(); + return BuiltInRegistries.BLOCK_ENTITY_TYPE.get(key).orElseThrow(); } } diff --git a/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java b/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java index 65bab3b995..d0dcfb706b 100644 --- a/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java +++ b/src/main/java/com/simibubi/create/impl/unpacking/DefaultUnpackingHandler.java @@ -6,6 +6,7 @@ import com.simibubi.create.api.packager.unpacking.UnpackingHandler; import com.simibubi.create.content.logistics.stockTicker.PackageOrderWithCrafts; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -14,7 +15,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; @@ -27,7 +28,7 @@ public boolean unpack(Level level, BlockPos pos, BlockState state, Direction sid if (targetBE == null) return false; - IItemHandler targetInv = level.getCapability(ItemHandler.BLOCK, pos, state, targetBE, side); + IItemHandler targetInv = LegacyItemHandlerAdapter.of(level.getCapability(Item.BLOCK, pos, state, targetBE, side)); if (targetInv == null) return false; diff --git a/src/main/java/com/simibubi/create/infrastructure/RemapHelper.java b/src/main/java/com/simibubi/create/infrastructure/RemapHelper.java index 169c32e2f2..ebd4d57e1b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/RemapHelper.java +++ b/src/main/java/com/simibubi/create/infrastructure/RemapHelper.java @@ -57,10 +57,10 @@ import com.simibubi.create.Create; import com.simibubi.create.foundation.data.recipe.CommonMetal; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Blocks; import net.neoforged.bus.api.SubscribeEvent; @@ -70,7 +70,7 @@ @EventBusSubscriber public class RemapHelper { - private static final Map reMap = new HashMap<>(); + private static final Map reMap = new HashMap<>(); static { reMap.put("toggle_latch", POWERED_TOGGLE_LATCH.getId()); @@ -99,7 +99,7 @@ public class RemapHelper { reMap.put("adjustable_pulse_repeater", PULSE_REPEATER.getId()); reMap.put("adjustable_repeater", PULSE_REPEATER.getId()); - reMap.put("copper_block", RegisteredObjectsHelper.getKeyOrThrow(Blocks.COPPER_BLOCK)); + reMap.put("copper_block", RegisteredObjectsHelper.getKeyOrThrow(Blocks.COPPER_BLOCK.weathering().unaffected())); reMap.put("copper_ore", RegisteredObjectsHelper.getKeyOrThrow(Blocks.COPPER_ORE)); reMap.put("acacia_glass", ACACIA_WINDOW.getId()); @@ -150,13 +150,13 @@ public class RemapHelper { reMap.put("gabbro_stairs", asResource("polished_cut_dripstone_stairs")); reMap.put("limestone_layers", asResource("layered_limestone")); - reMap.put("gabbro", ResourceLocation.withDefaultNamespace("dripstone_block")); - reMap.put("dolomite", ResourceLocation.withDefaultNamespace("calcite")); - reMap.put("weathered_limestone", ResourceLocation.withDefaultNamespace("tuff")); - reMap.put("gabbro_cobblestone", ResourceLocation.withDefaultNamespace("dripstone_block")); - reMap.put("andesite_cobblestone", ResourceLocation.withDefaultNamespace("andesite")); - reMap.put("diorite_cobblestone", ResourceLocation.withDefaultNamespace("diorite")); - reMap.put("granite_cobblestone", ResourceLocation.withDefaultNamespace("granite")); + reMap.put("gabbro", Identifier.withDefaultNamespace("dripstone_block")); + reMap.put("dolomite", Identifier.withDefaultNamespace("calcite")); + reMap.put("weathered_limestone", Identifier.withDefaultNamespace("tuff")); + reMap.put("gabbro_cobblestone", Identifier.withDefaultNamespace("dripstone_block")); + reMap.put("andesite_cobblestone", Identifier.withDefaultNamespace("andesite")); + reMap.put("diorite_cobblestone", Identifier.withDefaultNamespace("diorite")); + reMap.put("granite_cobblestone", Identifier.withDefaultNamespace("granite")); reMap.put("dark_scoria", asResource("scorchia")); // 1.15 palettes diff --git a/src/main/java/com/simibubi/create/infrastructure/command/AllCommands.java b/src/main/java/com/simibubi/create/infrastructure/command/AllCommands.java index 2c30ab6ddd..774c4a3641 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/AllCommands.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/AllCommands.java @@ -4,10 +4,11 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.tree.LiteralCommandNode; -import net.createmod.catnip.command.CatnipCommands; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.impl.command.CatnipCommands; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.server.permissions.PermissionProviderCheck; public class AllCommands { // Client Commands @@ -16,7 +17,7 @@ public static void registerClient(CommandDispatcher dispatch LiteralCommandNode util = buildClientUtilityCommands(); LiteralArgumentBuilder root = Commands.literal("create") - .requires(cs -> cs.hasPermission(0)) + .requires(hasPermission(0)) // general purpose .then(ToggleDebugCommand.register()) .then(FabulousWarningCommand.register()) @@ -45,7 +46,7 @@ public static void register(CommandDispatcher dispatcher) { LiteralCommandNode util = buildUtilityCommands(); LiteralArgumentBuilder root = Commands.literal("create") - .requires(cs -> cs.hasPermission(0)) + .requires(hasPermission(0)) // general purpose .then(DumpRailwaysCommand.register()) .then(DebugInfoCommand.register()) @@ -76,4 +77,14 @@ private static LiteralCommandNode buildUtilityCommands() { .build(); } + + public static PermissionProviderCheck hasPermission(int level) { + return switch (level) { + case 0 -> Commands.hasPermission(Commands.LEVEL_ALL); + case 1 -> Commands.hasPermission(Commands.LEVEL_MODERATORS); + case 2 -> Commands.hasPermission(Commands.LEVEL_GAMEMASTERS); + case 3 -> Commands.hasPermission(Commands.LEVEL_ADMINS); + default -> Commands.hasPermission(Commands.LEVEL_OWNERS); + }; + } } diff --git a/src/main/java/com/simibubi/create/infrastructure/command/CameraAngleCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/CameraAngleCommand.java index ab2f61e7b7..b983f15589 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/CameraAngleCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/CameraAngleCommand.java @@ -15,7 +15,7 @@ public class CameraAngleCommand { public static ArgumentBuilder register() { return Commands.literal("angle") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.argument("players", EntityArgument.players()) .then(Commands.literal("yaw") .then(Commands.argument("degrees", FloatArgumentType.floatArg()) diff --git a/src/main/java/com/simibubi/create/infrastructure/command/ClearBufferCacheCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/ClearBufferCacheCommand.java index 2443ec3eff..8c811e7c70 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/ClearBufferCacheCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/ClearBufferCacheCommand.java @@ -4,7 +4,6 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.simibubi.create.CreateClient; -import net.createmod.ponder.PonderClient; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; @@ -13,7 +12,7 @@ public class ClearBufferCacheCommand { static ArgumentBuilder register() { return Commands.literal("clearRenderBuffers") .executes(ctx -> { - PonderClient.invalidateRenderers(); + // TODO 26.2: Restore Ponder renderer invalidation once its public client API is available. CreateClient.invalidateRenderers(); ctx.getSource().sendSuccess(() -> Component.literal("Cleared rendering buffers."), true); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/CloneCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/CloneCommand.java index 7667dbbdb6..799fa06091 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/CloneCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/CloneCommand.java @@ -8,6 +8,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; import com.simibubi.create.content.contraptions.glue.SuperGlueEntity; +import com.simibubi.create.foundation.utility.LegacyBlockEntityTagBridge; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -17,7 +18,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Clearable; -import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; @@ -34,7 +35,7 @@ public class CloneCommand { public static ArgumentBuilder register() { return Commands.literal("clone") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.argument("begin", BlockPosArgument.blockPos()) .then(Commands.argument("end", BlockPosArgument.blockPos()) .then(Commands.argument("destination", BlockPosArgument.blockPos()) @@ -61,7 +62,7 @@ private static int doClone(CommandSourceStack source, BlockPos begin, BlockPos e ServerLevel world = source.getLevel(); int i = sourceArea.getXSpan() * sourceArea.getYSpan() * sourceArea.getZSpan(); - int limit = world.getGameRules().getInt(GameRules.RULE_COMMAND_MODIFICATION_BLOCK_LIMIT); + int limit = world.getGameRules().get(GameRules.MAX_BLOCK_MODIFICATIONS); if (i > limit) throw CLONE_TOO_BIG_EXCEPTION.create(limit, i); @@ -133,7 +134,8 @@ private static int cloneBlocks(BoundingBox sourceArea, ServerLevel world, BlockP for (StructureTemplate.StructureBlockInfo info : reverse) { BlockEntity be = world.getBlockEntity(info.pos()); - Clearable.tryClear(be); + if (be instanceof Clearable clearable) + clearable.clearContent(); world.setBlock(info.pos(), Blocks.BARRIER.defaultBlockState(), Block.UPDATE_CLIENTS); } @@ -148,7 +150,7 @@ private static int cloneBlocks(BoundingBox sourceArea, ServerLevel world, BlockP info.nbt().putInt("x", info.pos().getX()); info.nbt().putInt("y", info.pos().getY()); info.nbt().putInt("z", info.pos().getZ()); - be.loadWithComponents(info.nbt(), world.registryAccess()); + be.loadWithComponents(LegacyBlockEntityTagBridge.input(info.nbt(), world.registryAccess())); be.setChanged(); } @@ -158,7 +160,7 @@ private static int cloneBlocks(BoundingBox sourceArea, ServerLevel world, BlockP } for (StructureTemplate.StructureBlockInfo info : reverse) { - world.blockUpdated(info.pos(), info.state().getBlock()); + world.updateNeighborsAt(info.pos(), info.state().getBlock()); } world.getBlockTicks() diff --git a/src/main/java/com/simibubi/create/infrastructure/command/ConfigureConfigCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/ConfigureConfigCommand.java index 5c6d4d6f5e..596bfa0f56 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/ConfigureConfigCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/ConfigureConfigCommand.java @@ -17,7 +17,7 @@ public abstract class ConfigureConfigCommand { ArgumentBuilder register() { return Commands.literal(this.commandLiteral) - .requires(cs -> cs.hasPermission(0)) + .requires(AllCommands.hasPermission(0)) .then(Commands.literal("on") .executes(ctx -> { ServerPlayer player = ctx.getSource() diff --git a/src/main/java/com/simibubi/create/infrastructure/command/CouplingCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/CouplingCommand.java index aa79900226..e2401d9179 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/CouplingCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/CouplingCommand.java @@ -14,14 +14,14 @@ import com.simibubi.create.content.contraptions.minecart.capability.CapabilityMinecartController; import com.simibubi.create.content.contraptions.minecart.capability.MinecartController; -import net.createmod.catnip.data.Iterate; +import net.createmod.catnip.api.data.Iterate; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.minecart.AbstractMinecart; public class CouplingCommand { @@ -46,7 +46,7 @@ public class CouplingCommand { public static ArgumentBuilder register() { return Commands.literal("coupling") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.literal("add") .then(Commands.argument("cart1", EntityArgument.entity()) .then(Commands.argument("cart2", EntityArgument.entity()) @@ -59,15 +59,15 @@ public class CouplingCommand { if (!(cart2 instanceof AbstractMinecart)) throw ONLY_MINECARTS_ALLOWED.create(); - if (!cart1.getCommandSenderWorld() - .equals(cart2.getCommandSenderWorld())) + if (!cart1.level() + .equals(cart2.level())) throw SAME_DIMENSION.create(); Entity source = ctx.getSource() .getEntity(); CouplingHandler.tryToCoupleCarts( - source instanceof Player ? (Player) source : null, cart1.getCommandSenderWorld(), + source instanceof Player ? (Player) source : null, cart1.level(), cart1.getId(), cart2.getId()); return Command.SINGLE_SUCCESS; @@ -87,15 +87,15 @@ public class CouplingCommand { if (!(cart2 instanceof AbstractMinecart)) throw ONLY_MINECARTS_ALLOWED.create(); - if (!cart1.getCommandSenderWorld() - .equals(cart2.getCommandSenderWorld())) + if (!cart1.level() + .equals(cart2.level())) throw SAME_DIMENSION.create(); Entity source = ctx.getSource() .getEntity(); CouplingHandler.tryToCoupleCarts(source instanceof Player ? (Player) source : null, - cart1.getCommandSenderWorld(), cart1.getId(), cart2.getId()); + cart1.level(), cart1.getId(), cart2.getId()); return Command.SINGLE_SUCCESS; }))) @@ -139,7 +139,7 @@ public class CouplingCommand { continue; MinecartController cart2Controller = - CapabilityMinecartController.getIfPresent(cart1.getCommandSenderWorld(), coupledCart); + CapabilityMinecartController.getIfPresent(cart1.level(), coupledCart); if (cart2Controller == null) return 0; diff --git a/src/main/java/com/simibubi/create/infrastructure/command/DebugHatsCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/DebugHatsCommand.java index f19ba405c0..f57d33bdc4 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/DebugHatsCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/DebugHatsCommand.java @@ -14,6 +14,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; @@ -22,7 +23,7 @@ public class DebugHatsCommand { public static ArgumentBuilder register() { return Commands.literal("debugHats") - .requires(cs -> cs.hasPermission(4)) + .requires(AllCommands.hasPermission(4)) .then(Commands.argument("pos", BlockPosArgument.blockPos()) .executes((ctx) -> { BlockPos origin = BlockPosArgument.getLoadedBlockPos(ctx, "pos"); @@ -30,12 +31,12 @@ public class DebugHatsCommand { for (EntityType entityType : BuiltInRegistries.ENTITY_TYPE) { ServerLevel level = ctx.getSource().getLevel(); - Entity entity = entityType.create(level); + Entity entity = entityType.create(level, EntitySpawnReason.COMMAND); if (entity instanceof LivingEntity) { level.setBlockAndUpdate(pos, AllBlocks.SEATS.get(DyeColor.RED).getDefaultState()); level.setBlockAndUpdate(pos.east(), AllBlocks.STOCK_TICKER.getDefaultState().setValue(StockTickerBlock.FACING, Direction.EAST)); - entity.moveTo(pos.getCenter()); + entity.setPos(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5); if (entity instanceof Mob mob) mob.setNoAi(true); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/DebugInfoCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/DebugInfoCommand.java index 4cea4c3820..a5ab33daa1 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/DebugInfoCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/DebugInfoCommand.java @@ -7,7 +7,7 @@ import com.simibubi.create.Create; import com.simibubi.create.infrastructure.debugInfo.ServerDebugInfoPacket; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.commands.CommandSourceStack; import net.minecraft.server.level.ServerPlayer; diff --git a/src/main/java/com/simibubi/create/infrastructure/command/DebugValueCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/DebugValueCommand.java index d08fde1348..21c23e7036 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/DebugValueCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/DebugValueCommand.java @@ -13,7 +13,7 @@ public class DebugValueCommand { public static ArgumentBuilder register() { return Commands.literal("debugValue") - .requires(cs -> cs.hasPermission(4)) + .requires(AllCommands.hasPermission(4)) .then(Commands.argument("value", FloatArgumentType.floatArg()) .executes((ctx) -> { value = FloatArgumentType.getFloat(ctx, "value"); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/DumpRailwaysCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/DumpRailwaysCommand.java index 66d64b5916..b9de8b57c2 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/DumpRailwaysCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/DumpRailwaysCommand.java @@ -31,7 +31,7 @@ public class DumpRailwaysCommand { - private static final int white = ChatFormatting.WHITE.getColor(); + private static final int white = 0xFFFFFF; private static final int blue = 0xaac8e0; //private static final int blue = 0xD3DEDC; private static final int darkBlue = 0x88a5b7; @@ -43,7 +43,7 @@ public class DumpRailwaysCommand { static ArgumentBuilder register() { return Commands.literal("trains") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .executes(ctx -> { CommandSourceStack source = ctx.getSource(); fillReport(source.getLevel(), source.getPosition(), @@ -145,7 +145,7 @@ else if (train.graph != null) if (presentDimensions.size() > 1) chat.accept("├─Travelling between Dimensions:", darkerBlue); presentDimensions.forEach(key -> - chat.accept("├─In %1$s near [%2$s]".formatted(key.location(), train.getPositionInDimension(key).get().toShortString()), darkerBlue) + chat.accept("├─In %1$s near [%2$s]".formatted(key.identifier(), train.getPositionInDimension(key).get().toShortString()), darkerBlue) ); chatRaw.accept(createTeleportButton(train)); @@ -168,8 +168,8 @@ private static Component createDeleteButton(Train train) { ).withStyle(style -> { return style .withColor(blue) - .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/c train remove " + train.id.toString())) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("Click to remove ").append(train.name))); + .withClickEvent(new ClickEvent.RunCommand("/c train remove " + train.id.toString())) + .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to remove ").append(train.name))); } ) ); @@ -182,8 +182,8 @@ private static Component createTeleportButton(Train train) { ).withStyle(style -> { return style .withColor(darkBlue) - .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/c train tp " + train.id.toString())) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal("Click to teleport to ").append(train.name))); + .withClickEvent(new ClickEvent.RunCommand("/c train tp " + train.id.toString())) + .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to teleport to ").append(train.name))); } ) ); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/FixLightingCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/FixLightingCommand.java index fc2c72880c..4b89cc8f52 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/FixLightingCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/FixLightingCommand.java @@ -8,17 +8,16 @@ import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; -import net.neoforged.neoforge.common.NeoForgeConfig; - public class FixLightingCommand { static ArgumentBuilder register() { return Commands.literal("fixLighting") - .requires(cs -> cs.hasPermission(0)) + .requires(AllCommands.hasPermission(0)) .executes(ctx -> { - NeoForgeConfig.CLIENT.experimentalForgeLightPipelineEnabled.set(true); - Minecraft.getInstance().levelRenderer.allChanged(); + Minecraft mc = Minecraft.getInstance(); + if (mc.level != null) + mc.levelRenderer.invalidateCompiledGeometry(mc.level, mc.options, mc.gameRenderer.mainCamera(), mc.getBlockColors()); - ctx.getSource().sendSuccess(() -> Component.literal("NeoForge's experimental block rendering pipeline is now enabled."), true); + ctx.getSource().sendSuccess(() -> Component.literal("Lighting renderer refreshed."), true); return Command.SINGLE_SUCCESS; }); } diff --git a/src/main/java/com/simibubi/create/infrastructure/command/GlueCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/GlueCommand.java index 71c92d1175..45d509047b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/GlueCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/GlueCommand.java @@ -12,7 +12,7 @@ public class GlueCommand { public static ArgumentBuilder register() { return Commands.literal("glue") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.argument("from", BlockPosArgument.blockPos()) .then(Commands.argument("to", BlockPosArgument.blockPos()) .executes(ctx -> { diff --git a/src/main/java/com/simibubi/create/infrastructure/command/HighlightCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/HighlightCommand.java index 2dec480893..f8d0cb858c 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/HighlightCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/HighlightCommand.java @@ -7,7 +7,7 @@ import com.simibubi.create.content.contraptions.AssemblyException; import com.simibubi.create.content.contraptions.IDisplayAssemblyExceptions; -import net.createmod.catnip.platform.CatnipServices; +import net.createmod.catnip.api.platform.CatnipServices; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; @@ -91,7 +91,7 @@ private static int highlightAssemblyExceptionFor(ServerPlayer player, CommandSou BlockPos p = exception.getPosition(); String command = "/create highlight " + p.getX() + " " + p.getY() + " " + p.getZ(); - player.server.getCommands().performPrefixedCommand(source, command); + source.getServer().getCommands().performPrefixedCommand(source, command); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/simibubi/create/infrastructure/command/HighlightPacket.java b/src/main/java/com/simibubi/create/infrastructure/command/HighlightPacket.java index a6949d6bac..f213e15fa5 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/HighlightPacket.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/HighlightPacket.java @@ -5,22 +5,20 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; -import net.createmod.catnip.outliner.Outliner; -import net.minecraft.client.player.LocalPlayer; +import net.createmod.catnip.api.client.outliner.Outliner; +import net.minecraft.world.entity.player.Player; import net.minecraft.core.BlockPos; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.phys.shapes.Shapes; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record HighlightPacket(BlockPos pos) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = BlockPos.STREAM_CODEC.map(HighlightPacket::new, p -> p.pos); @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { - if (!player.clientLevel.isLoaded(pos)) { + public void handle(Player player) { + if (!player.level().hasChunkAt(pos)) { return; } diff --git a/src/main/java/com/simibubi/create/infrastructure/command/KillTPSCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/KillTPSCommand.java index 7923c0712e..3eb4e9c708 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/KillTPSCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/KillTPSCommand.java @@ -12,7 +12,7 @@ public class KillTPSCommand { public static ArgumentBuilder register() { return Commands.literal("killtps") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .executes(ctx -> { // killtps no arguments ctx.getSource() diff --git a/src/main/java/com/simibubi/create/infrastructure/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/OverlayConfigCommand.java index b38badc217..713676be18 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/OverlayConfigCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/OverlayConfigCommand.java @@ -5,7 +5,7 @@ import com.simibubi.create.content.equipment.goggles.GoggleConfigScreen; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.ScreenOpener; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; @@ -13,7 +13,7 @@ public class OverlayConfigCommand { public static ArgumentBuilder register() { return Commands.literal("overlay") - .requires(cs -> cs.hasPermission(0)) + .requires(AllCommands.hasPermission(0)) .then(Commands.literal("reset") .executes(ctx -> { AllConfigs.client().overlayOffsetX.set(0); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/PassengerCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/PassengerCommand.java index 1679388f8a..e0e0c43849 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/PassengerCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/PassengerCommand.java @@ -15,7 +15,7 @@ public class PassengerCommand { static ArgumentBuilder register() { return Commands.literal("passenger") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.argument("rider", EntityArgument.entity()) .then(Commands.argument("vehicle", EntityArgument.entity()) .executes(ctx -> { @@ -48,6 +48,6 @@ private static void run(CommandSourceStack source, Entity vehicle, Entity rider, return; } - rider.startRiding(vehicle, true); + rider.startRiding(vehicle, true, true); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/command/ReplaceInCommandBlocksCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/ReplaceInCommandBlocksCommand.java index 3470a7009c..2885b5c158 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/ReplaceInCommandBlocksCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/ReplaceInCommandBlocksCommand.java @@ -21,7 +21,7 @@ public class ReplaceInCommandBlocksCommand { public static ArgumentBuilder register() { return Commands.literal("replaceInCommandBlocks") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.argument("begin", BlockPosArgument.blockPos()) .then(Commands.argument("end", BlockPosArgument.blockPos()) .then(Commands.argument("toReplace", StringArgumentType.string()) diff --git a/src/main/java/com/simibubi/create/infrastructure/command/ToggleDebugCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/ToggleDebugCommand.java index 46c4b58e93..321cc4357b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/ToggleDebugCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/ToggleDebugCommand.java @@ -14,7 +14,7 @@ public class ToggleDebugCommand { public static ArgumentBuilder register() { return Commands.literal("rainbowDebug") - .requires(cs -> cs.hasPermission(0)) + .requires(AllCommands.hasPermission(0)) .then(Commands.argument("status", BoolArgumentType.bool()) .executes(ctx -> { KineticDebugger.rainbowDebug = BoolArgumentType.getBool(ctx, "status"); diff --git a/src/main/java/com/simibubi/create/infrastructure/command/TrainCommand.java b/src/main/java/com/simibubi/create/infrastructure/command/TrainCommand.java index cb87081c1b..f995dfdc98 100644 --- a/src/main/java/com/simibubi/create/infrastructure/command/TrainCommand.java +++ b/src/main/java/com/simibubi/create/infrastructure/command/TrainCommand.java @@ -2,6 +2,7 @@ import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.UUID; import com.mojang.brigadier.Command; @@ -18,6 +19,7 @@ import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Relative; import net.minecraft.world.level.GameType; import net.minecraft.world.level.Level; @@ -25,7 +27,7 @@ public class TrainCommand { static ArgumentBuilder register() { return Commands.literal("train") - .requires(cs -> cs.hasPermission(2)) + .requires(AllCommands.hasPermission(2)) .then(Commands.literal("remove") .then(Commands.argument("train", UuidArgument.uuid()) .executes(ctx -> runDelete(ctx.getSource(), UuidArgument.getUuid(ctx, "train"))) @@ -77,7 +79,7 @@ private static int runTeleport(CommandSourceStack source, UUID argument) throws } ResourceKey levelKey = presentDimensions.get(0); - ServerLevel serverLevel = serverPlayer.getServer().getLevel(levelKey); + ServerLevel serverLevel = source.getServer().getLevel(levelKey); Optional positionInDimension = train.getPositionInDimension(levelKey); if (positionInDimension.isEmpty() || serverLevel == null) { @@ -92,8 +94,10 @@ private static int runTeleport(CommandSourceStack source, UUID argument) throws pos.getX(), pos.getY() + 5, pos.getZ(), + Set.of(), serverPlayer.getViewYRot(0), - serverPlayer.getViewXRot(0) + serverPlayer.getViewXRot(0), + true ); source.sendSuccess(() -> { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/AllConfigs.java b/src/main/java/com/simibubi/create/infrastructure/config/AllConfigs.java index 3978a2912f..8da74826e5 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/AllConfigs.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/AllConfigs.java @@ -9,7 +9,7 @@ import com.simibubi.create.api.stress.BlockStressValues; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.ModContainer; diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CClient.java b/src/main/java/com/simibubi/create/infrastructure/config/CClient.java index 2e0e2bd666..ebc77f449f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CClient.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CClient.java @@ -3,8 +3,8 @@ import com.simibubi.create.content.logistics.stockTicker.StockKeeperRequestScreen.SearchSyncMode; -import net.createmod.catnip.config.ConfigBase; -import net.createmod.catnip.config.ui.ConfigAnnotations; +import net.createmod.catnip.api.client.config.ConfigAnnotations; +import net.createmod.catnip.api.config.ConfigBase; public class CClient extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CCommon.java b/src/main/java/com/simibubi/create/infrastructure/config/CCommon.java index e97bd5ce82..57a713fcd5 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CCommon.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CCommon.java @@ -1,7 +1,7 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CCommon extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CEquipment.java b/src/main/java/com/simibubi/create/infrastructure/config/CEquipment.java index b5abc04a17..675d3dd520 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CEquipment.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CEquipment.java @@ -1,7 +1,7 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CEquipment extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CFluids.java b/src/main/java/com/simibubi/create/infrastructure/config/CFluids.java index c733597a83..d6ea58d48e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CFluids.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CFluids.java @@ -2,7 +2,7 @@ import com.simibubi.create.content.fluids.transfer.FluidManipulationBehaviour.BottomlessFluidMode; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CFluids extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java b/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java index ad5a18065a..ba21946825 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CKinetics.java @@ -2,7 +2,7 @@ import com.simibubi.create.api.contraption.ContraptionMovementSetting; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CKinetics extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CLogistics.java b/src/main/java/com/simibubi/create/infrastructure/config/CLogistics.java index 726f5c7c1b..c3cb4a51a4 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CLogistics.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CLogistics.java @@ -1,7 +1,7 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CLogistics extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CRecipes.java b/src/main/java/com/simibubi/create/infrastructure/config/CRecipes.java index e5106901fe..2f91f9bddf 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CRecipes.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CRecipes.java @@ -1,6 +1,6 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CRecipes extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java b/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java index 47b1df60cb..74330dd64c 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CSchematics.java @@ -1,6 +1,6 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CSchematics extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CServer.java b/src/main/java/com/simibubi/create/infrastructure/config/CServer.java index 4ff528019c..5af2129b80 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CServer.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CServer.java @@ -1,6 +1,6 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CServer extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CStress.java b/src/main/java/com/simibubi/create/infrastructure/config/CStress.java index 12344f66bd..340ff20ea4 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CStress.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CStress.java @@ -12,9 +12,9 @@ import it.unimi.dsi.fastutil.objects.Object2DoubleMap; import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap; -import net.createmod.catnip.config.ConfigBase; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.minecraft.resources.ResourceLocation; +import net.createmod.catnip.api.config.ConfigBase; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.block.Block; import net.neoforged.neoforge.common.ModConfigSpec.Builder; @@ -26,11 +26,11 @@ public class CStress extends ConfigBase { // IDs need to be used since configs load before registration - private static final Object2DoubleMap DEFAULT_IMPACTS = new Object2DoubleOpenHashMap<>(); - private static final Object2DoubleMap DEFAULT_CAPACITIES = new Object2DoubleOpenHashMap<>(); + private static final Object2DoubleMap DEFAULT_IMPACTS = new Object2DoubleOpenHashMap<>(); + private static final Object2DoubleMap DEFAULT_CAPACITIES = new Object2DoubleOpenHashMap<>(); - protected final Map> capacities = new HashMap<>(); - protected final Map> impacts = new HashMap<>(); + protected final Map> capacities = new HashMap<>(); + protected final Map> impacts = new HashMap<>(); @Override public void registerAll(Builder builder) { @@ -52,14 +52,14 @@ public String getName() { @Nullable public DoubleSupplier getImpact(Block block) { - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(block); + Identifier id = RegisteredObjectsHelper.getKeyOrThrow(block); ConfigValue value = this.impacts.get(id); return value == null ? null : value::get; } @Nullable public DoubleSupplier getCapacity(Block block) { - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(block); + Identifier id = RegisteredObjectsHelper.getKeyOrThrow(block); ConfigValue value = this.capacities.get(id); return value == null ? null : value::get; } @@ -71,7 +71,7 @@ public static NonNullUnaryOperator> setN public static NonNullUnaryOperator> setImpact(double value) { return builder -> { assertFromCreate(builder); - ResourceLocation id = Create.asResource(builder.getName()); + Identifier id = Create.asResource(builder.getName()); DEFAULT_IMPACTS.put(id, value); return builder; }; @@ -80,7 +80,7 @@ public static NonNullUnaryOperator> setI public static NonNullUnaryOperator> setCapacity(double value) { return builder -> { assertFromCreate(builder); - ResourceLocation id = Create.asResource(builder.getName()); + Identifier id = Create.asResource(builder.getName()); DEFAULT_CAPACITIES.put(id, value); return builder; }; diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CTrains.java b/src/main/java/com/simibubi/create/infrastructure/config/CTrains.java index 1391aaaf0d..5fab90bddd 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CTrains.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CTrains.java @@ -1,6 +1,6 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CTrains extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/config/CWorldGen.java b/src/main/java/com/simibubi/create/infrastructure/config/CWorldGen.java index bcb45d8db4..80132f81bf 100644 --- a/src/main/java/com/simibubi/create/infrastructure/config/CWorldGen.java +++ b/src/main/java/com/simibubi/create/infrastructure/config/CWorldGen.java @@ -1,7 +1,7 @@ package com.simibubi.create.infrastructure.config; -import net.createmod.catnip.config.ConfigBase; +import net.createmod.catnip.api.config.ConfigBase; public class CWorldGen extends ConfigBase { diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateContraptionTypeTagsProvider.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateContraptionTypeTagsProvider.java index 44ff3f031f..efc21f60b1 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateContraptionTypeTagsProvider.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateContraptionTypeTagsProvider.java @@ -2,8 +2,6 @@ import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Nullable; - import com.simibubi.create.AllContraptionTypes; import com.simibubi.create.AllTags.AllContraptionTypeTags; import com.simibubi.create.Create; @@ -15,11 +13,9 @@ import net.minecraft.data.PackOutput; import net.minecraft.data.tags.TagsProvider; -import net.neoforged.neoforge.common.data.ExistingFileHelper; - public class CreateContraptionTypeTagsProvider extends TagsProvider { - public CreateContraptionTypeTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, CreateRegistries.CONTRAPTION_TYPE, lookupProvider, Create.ID, existingFileHelper); + public CreateContraptionTypeTagsProvider(PackOutput output, CompletableFuture lookupProvider) { + super(output, CreateRegistries.CONTRAPTION_TYPE, lookupProvider, Create.ID); } @Override diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateDatagen.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateDatagen.java index 3e3827b1d1..54cec29247 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateDatagen.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateDatagen.java @@ -9,7 +9,6 @@ import com.simibubi.create.AllKeys; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.Create; -import com.simibubi.create.compat.curios.CuriosDataGenerator; import com.simibubi.create.foundation.advancement.AllAdvancements; import com.simibubi.create.foundation.data.CreateDatamapProvider; import com.simibubi.create.foundation.data.DamageTypeTagGen; @@ -20,53 +19,56 @@ import com.simibubi.create.foundation.ponder.CreatePonderPlugin; import com.simibubi.create.foundation.utility.FilesHelper; import com.tterrag.registrate.providers.ProviderType; +import com.tterrag.registrate.providers.RegistrateLangProvider; -import net.createmod.ponder.foundation.PonderIndex; +import net.createmod.ponder.api.client.PonderIndex; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.core.component.DataComponents; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; +import net.minecraft.network.chat.Component; -import net.neoforged.neoforge.common.data.ExistingFileHelper; import net.neoforged.neoforge.data.event.GatherDataEvent; public class CreateDatagen { - public static void gatherDataHighPriority(GatherDataEvent event) { - if (event.getMods().contains(Create.ID)) + private static boolean defaultComponentsBoundForDatagen; + + public static void gatherDataHighPriority(GatherDataEvent.Client event) { + if (event.getModContainer().getModId().equals(Create.ID)) addExtraRegistrateData(); } - public static void gatherData(GatherDataEvent event) { - if (!event.getMods().contains(Create.ID)) + public static void gatherData(GatherDataEvent.Client event) { + if (!event.getModContainer().getModId().equals(Create.ID)) return; DataGenerator generator = event.getGenerator(); PackOutput output = generator.getPackOutput(); CompletableFuture lookupProvider = event.getLookupProvider(); - ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(event.includeClient(), AllSoundEvents.provider(generator)); + generator.addProvider(true, AllSoundEvents.provider(generator)); + bindDefaultComponentsForDatagen(); GeneratedEntriesProvider generatedEntriesProvider = new GeneratedEntriesProvider(output, lookupProvider); lookupProvider = generatedEntriesProvider.getRegistryProvider(); - generator.addProvider(event.includeServer(), generatedEntriesProvider); - - generator.addProvider(event.includeServer(), new CreateRecipeSerializerTagsProvider(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeServer(), new CreateContraptionTypeTagsProvider(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeServer(), new CreateMountedItemStorageTypeTagsProvider(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeServer(), new DamageTypeTagGen(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeServer(), new AllAdvancements(output, lookupProvider)); - generator.addProvider(event.includeServer(), new CreateStandardRecipeGen(output, lookupProvider)); - generator.addProvider(event.includeServer(), new CreateMechanicalCraftingRecipeGen(output, lookupProvider)); - generator.addProvider(event.includeServer(), new CreateSequencedAssemblyRecipeGen(output, lookupProvider)); - generator.addProvider(event.includeServer(), new CreateDatamapProvider(output, lookupProvider)); - generator.addProvider(event.includeServer(), new VanillaHatOffsetGenerator(output, lookupProvider)); - generator.addProvider(event.includeServer(), new CuriosDataGenerator(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeServer(), new CreateEnchantmentTagsProvider(output, lookupProvider, existingFileHelper)); - generator.addProvider(event.includeClient(), new CreateWikiBlockInfoProvider(output)); - - if (event.includeServer()) { - CreateRecipeProvider.registerAllProcessing(generator, output, lookupProvider); - } + generator.addProvider(true, generatedEntriesProvider); + + generator.addProvider(true, new CreateRecipeSerializerTagsProvider(output, lookupProvider)); + generator.addProvider(true, new CreateContraptionTypeTagsProvider(output, lookupProvider)); + generator.addProvider(true, new CreateMountedItemStorageTypeTagsProvider(output, lookupProvider)); + generator.addProvider(true, new DamageTypeTagGen(output, lookupProvider)); + generator.addProvider(true, new AllAdvancements(output, lookupProvider)); + generator.addProvider(true, new CreateStandardRecipeGen(output, lookupProvider)); + generator.addProvider(true, new CreateMechanicalCraftingRecipeGen(output, lookupProvider)); + generator.addProvider(true, new CreateSequencedAssemblyRecipeGen(output, lookupProvider)); + generator.addProvider(true, new CreateDatamapProvider(output, lookupProvider)); + generator.addProvider(true, new VanillaHatOffsetGenerator(output, lookupProvider)); + generator.addProvider(true, new CreateEnchantmentTagsProvider(output, lookupProvider)); + generator.addProvider(true, new CreateWikiBlockInfoProvider(output)); + + CreateRecipeProvider.registerAllProcessing(generator, output, lookupProvider); } private static void addExtraRegistrateData() { @@ -80,7 +82,7 @@ private static void addExtraRegistrateData() { AllAdvancements.provideLang(langConsumer); AllSoundEvents.provideLang(langConsumer); AllKeys.provideLang(langConsumer); - providePonderLang(langConsumer); + providePonderLang(provider, langConsumer); new TagLangGenerator(langConsumer).generate(); }); } @@ -99,7 +101,34 @@ private static void provideDefaultLang(String fileName, BiConsumer consumer) { + private static synchronized void bindDefaultComponentsForDatagen() { + if (defaultComponentsBoundForDatagen) + return; + + BuiltInRegistries.ITEM.listElements() + .forEach(item -> { + if (item.areComponentsBound()) + return; + item.bindComponents(DataComponentMap.builder() + .addAll(DataComponents.COMMON_ITEM_COMPONENTS) + .set(DataComponents.ITEM_NAME, Component.translatable(item.value() + .getDescriptionId())) + .set(DataComponents.ITEM_MODEL, item.key() + .identifier()) + .build()); + }); + BuiltInRegistries.FLUID.listElements() + .forEach(fluid -> { + if (fluid.areComponentsBound()) + return; + fluid.bindComponents(DataComponentMap.EMPTY); + }); + defaultComponentsBoundForDatagen = true; + } + + private static void providePonderLang(RegistrateLangProvider provider, BiConsumer consumer) { + bindDefaultComponentsForDatagen(); + // Register this since FMLClientSetupEvent does not run during datagen PonderIndex.addPlugin(new CreatePonderPlugin()); diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateEnchantmentTagsProvider.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateEnchantmentTagsProvider.java index 7b1097043f..24aa0c9637 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateEnchantmentTagsProvider.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateEnchantmentTagsProvider.java @@ -2,8 +2,6 @@ import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Nullable; - import com.simibubi.create.AllEnchantments; import com.simibubi.create.Create; @@ -13,11 +11,9 @@ import net.minecraft.data.tags.EnchantmentTagsProvider; import net.minecraft.tags.EnchantmentTags; -import net.neoforged.neoforge.common.data.ExistingFileHelper; - public class CreateEnchantmentTagsProvider extends EnchantmentTagsProvider { - public CreateEnchantmentTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, lookupProvider, Create.ID, existingFileHelper); + public CreateEnchantmentTagsProvider(PackOutput output, CompletableFuture lookupProvider) { + super(output, lookupProvider, Create.ID); } @Override diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateMountedItemStorageTypeTagsProvider.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateMountedItemStorageTypeTagsProvider.java index cf67bc128c..a99f651046 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateMountedItemStorageTypeTagsProvider.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateMountedItemStorageTypeTagsProvider.java @@ -2,8 +2,6 @@ import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Nullable; - import com.simibubi.create.AllMountedStorageTypes; import com.simibubi.create.AllTags.AllMountedItemStorageTypeTags; import com.simibubi.create.Create; @@ -13,22 +11,20 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup.Provider; import net.minecraft.data.PackOutput; -import net.minecraft.data.tags.IntrinsicHolderTagsProvider; - -import net.neoforged.neoforge.common.data.ExistingFileHelper; +import net.minecraft.data.tags.TagsProvider; -public class CreateMountedItemStorageTypeTagsProvider extends IntrinsicHolderTagsProvider> { - public CreateMountedItemStorageTypeTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, CreateRegistries.MOUNTED_ITEM_STORAGE_TYPE, lookupProvider, type -> type.holder.key(), Create.ID, existingFileHelper); +public class CreateMountedItemStorageTypeTagsProvider extends TagsProvider> { + public CreateMountedItemStorageTypeTagsProvider(PackOutput output, CompletableFuture lookupProvider) { + super(output, CreateRegistries.MOUNTED_ITEM_STORAGE_TYPE, lookupProvider, Create.ID); } @Override protected void addTags(Provider pProvider) { tag(AllMountedItemStorageTypeTags.INTERNAL.tag).add( - AllMountedStorageTypes.DISPENSER.get() + AllMountedStorageTypes.DISPENSER.getKey() ); tag(AllMountedItemStorageTypeTags.FUEL_BLACKLIST.tag).add( - AllMountedStorageTypes.VAULT.get() + AllMountedStorageTypes.VAULT.getKey() ); } diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateRecipeSerializerTagsProvider.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateRecipeSerializerTagsProvider.java index 5859ae47d6..270459233e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateRecipeSerializerTagsProvider.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateRecipeSerializerTagsProvider.java @@ -2,8 +2,6 @@ import java.util.concurrent.CompletableFuture; -import org.jetbrains.annotations.Nullable; - import com.simibubi.create.AllTags.AllRecipeSerializerTags; import com.simibubi.create.Create; import com.simibubi.create.compat.Mods; @@ -13,19 +11,22 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.data.tags.TagsProvider; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.crafting.RecipeSerializer; -import net.neoforged.neoforge.common.data.ExistingFileHelper; - public class CreateRecipeSerializerTagsProvider extends TagsProvider> { - public CreateRecipeSerializerTagsProvider(PackOutput output, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(output, Registries.RECIPE_SERIALIZER, lookupProvider, Create.ID, existingFileHelper); + public CreateRecipeSerializerTagsProvider(PackOutput output, CompletableFuture lookupProvider) { + super(output, Registries.RECIPE_SERIALIZER, lookupProvider, Create.ID); } @Override protected void addTags(Provider pProvider) { - tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag).addOptional(Mods.OCCULTISM.rl("spirit_trade")) - .addOptional(Mods.OCCULTISM.rl("ritual")); + tag(AllRecipeSerializerTags.AUTOMATION_IGNORE.tag).addOptional(recipeSerializerKey("spirit_trade")) + .addOptional(recipeSerializerKey("ritual")); + } + + private static ResourceKey> recipeSerializerKey(String path) { + return ResourceKey.create(Registries.RECIPE_SERIALIZER, Mods.OCCULTISM.rl(path)); } @Override diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java index f5bd168630..9fedf29ad7 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateRegistrateTags.java @@ -18,7 +18,11 @@ import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; @@ -33,10 +37,12 @@ public class CreateRegistrateTags { private static final Block[] SHULKER_BOXES = { Blocks.SHULKER_BOX, - Blocks.WHITE_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, - Blocks.YELLOW_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, - Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, - Blocks.BROWN_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.BLACK_SHULKER_BOX + Blocks.DYED_SHULKER_BOX.white(), Blocks.DYED_SHULKER_BOX.orange(), Blocks.DYED_SHULKER_BOX.magenta(), + Blocks.DYED_SHULKER_BOX.lightBlue(), Blocks.DYED_SHULKER_BOX.yellow(), Blocks.DYED_SHULKER_BOX.lime(), + Blocks.DYED_SHULKER_BOX.pink(), Blocks.DYED_SHULKER_BOX.gray(), Blocks.DYED_SHULKER_BOX.lightGray(), + Blocks.DYED_SHULKER_BOX.cyan(), Blocks.DYED_SHULKER_BOX.purple(), Blocks.DYED_SHULKER_BOX.blue(), + Blocks.DYED_SHULKER_BOX.brown(), Blocks.DYED_SHULKER_BOX.green(), Blocks.DYED_SHULKER_BOX.red(), + Blocks.DYED_SHULKER_BOX.black() }; public static void addGenerators() { @@ -65,7 +71,7 @@ private static void genBlockTags(RegistrateTagsProvider provIn) { prov.tag(AllBlockTags.COPYCAT_DENY.tag) .addTag(BlockTags.CAULDRONS) - .addTag(BlockTags.SAPLINGS) + .addTag(BlockTags.create(Identifier.withDefaultNamespace("saplings"))) .addTag(BlockTags.CLIMBABLE); prov.tag(AllBlockTags.FAN_PROCESSING_CATALYSTS_HAUNTING.tag) @@ -79,10 +85,7 @@ private static void genBlockTags(RegistrateTagsProvider provIn) { prov.tag(AllBlockTags.FAN_TRANSPARENT.tag) .add(Blocks.IRON_BARS) .add(Blocks.MANGROVE_ROOTS) - .add(Blocks.COPPER_GRATE, Blocks.EXPOSED_COPPER_GRATE, Blocks.WEATHERED_COPPER_GRATE, - Blocks.OXIDIZED_COPPER_GRATE, Blocks.WAXED_COPPER_GRATE, Blocks.WAXED_EXPOSED_COPPER_GRATE, - Blocks.WAXED_WEATHERED_COPPER_GRATE, Blocks.WAXED_OXIDIZED_COPPER_GRATE - ) + .add(Blocks.COPPER_GRATE.asList().toArray(Block[]::new)) .addTag(BlockTags.CAMPFIRES) .addTag(BlockTags.FENCES) .addTag(BlockTags.LEAVES); @@ -208,12 +211,12 @@ private static void genItemTags(RegistrateTagsProvider provIn) { prov.tag(ItemTags.TRIMMABLE_ARMOR) .remove( - AllItems.COPPER_DIVING_BOOTS.getId(), - AllItems.COPPER_BACKTANK.getId(), - AllItems.COPPER_DIVING_HELMET.getId(), - AllItems.NETHERITE_DIVING_BOOTS.getId(), - AllItems.NETHERITE_BACKTANK.getId(), - AllItems.NETHERITE_DIVING_HELMET.getId() + itemKey(AllItems.COPPER_DIVING_BOOTS.getId()), + itemKey(AllItems.COPPER_BACKTANK.getId()), + itemKey(AllItems.COPPER_DIVING_HELMET.getId()), + itemKey(AllItems.NETHERITE_DIVING_BOOTS.getId()), + itemKey(AllItems.NETHERITE_BACKTANK.getId()), + itemKey(AllItems.NETHERITE_DIVING_HELMET.getId()) ); prov.tag(ItemTags.DURABILITY_ENCHANTABLE) @@ -263,6 +266,10 @@ private static ArrayList gsPalette(String material) { return toReturn; } + private static ResourceKey itemKey(Identifier id) { + return ResourceKey.create(Registries.ITEM, id); + } + private static void genFluidTags(RegistrateTagsProvider provIn) { CreateTagsProvider prov = new CreateTagsProvider<>(provIn, Fluid::builtInRegistryHolder); @@ -280,7 +287,7 @@ private static void genEntityTags(RegistrateTagsProvider> provIn) CreateTagsProvider> prov = new CreateTagsProvider<>(provIn, EntityType::builtInRegistryHolder); prov.tag(AllEntityTags.BLAZE_BURNER_CAPTURABLE.tag) - .add(EntityType.BLAZE); + .add(EntityTypes.BLAZE); prov.tag(AllEntityTags.IGNORE_SEAT.tag) .addTag(Tags.EntityTypes.CAPTURING_NOT_SUPPORTED); diff --git a/src/main/java/com/simibubi/create/infrastructure/data/CreateWikiBlockInfoProvider.java b/src/main/java/com/simibubi/create/infrastructure/data/CreateWikiBlockInfoProvider.java index 83c7649682..dad81dcb45 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/CreateWikiBlockInfoProvider.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/CreateWikiBlockInfoProvider.java @@ -5,13 +5,13 @@ import com.google.gson.JsonObject; import com.simibubi.create.Create; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; import net.minecraft.data.PackOutput.Target; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FireBlock; @@ -31,7 +31,7 @@ public CompletableFuture run(CachedOutput cachedOutput) { .filter(b -> RegisteredObjectsHelper.getKeyOrThrow(b).getNamespace().equals(Create.ID)) .map(block -> { BlockState state = block.defaultBlockState(); - ResourceLocation id = RegisteredObjectsHelper.getKeyOrThrow(block); + Identifier id = RegisteredObjectsHelper.getKeyOrThrow(block); JsonObject element = new JsonObject(); diff --git a/src/main/java/com/simibubi/create/infrastructure/data/TagLangGenerator.java b/src/main/java/com/simibubi/create/infrastructure/data/TagLangGenerator.java index f77b366969..c2810ebdb9 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/TagLangGenerator.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/TagLangGenerator.java @@ -13,7 +13,7 @@ import com.simibubi.create.foundation.data.recipe.CommonMetal; import com.simibubi.create.foundation.data.recipe.CommonMetal.ItemLikeTag; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.tags.TagKey; /** @@ -175,7 +175,7 @@ public void generate() { } protected static String keyFor(TagKey tag) { - ResourceLocation registryId = tag.registry().location(); + Identifier registryId = tag.registry().identifier(); String registry = sanitize( registryId.getNamespace().equals("minecraft") ? registryId.getPath() : registryId.toLanguageKey() ); diff --git a/src/main/java/com/simibubi/create/infrastructure/data/VanillaHatOffsetGenerator.java b/src/main/java/com/simibubi/create/infrastructure/data/VanillaHatOffsetGenerator.java index 7efb55b924..2f0a59aa35 100644 --- a/src/main/java/com/simibubi/create/infrastructure/data/VanillaHatOffsetGenerator.java +++ b/src/main/java/com/simibubi/create/infrastructure/data/VanillaHatOffsetGenerator.java @@ -6,7 +6,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; -import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.phys.Vec3; public class VanillaHatOffsetGenerator extends TrainHatInfoProvider { @@ -16,63 +16,63 @@ public VanillaHatOffsetGenerator(PackOutput output, CompletableFuture mcSystemInfo = Util.make(() -> { SystemReport systemReport = new SystemReport(); SystemReportAccessor access = (SystemReportAccessor) systemReport; - return ImmutableMap.copyOf(access.getEntries()); + Map entries = new LinkedHashMap<>(); + for (Entry entry : access.getEntries()) + entries.put(entry.key(), entry.value()); + return ImmutableMap.copyOf(entries); }); public static void registerClientInfo(DebugInfoSection section) { @@ -74,7 +79,7 @@ public static List getServerInfo() { .put("Mod Git Commit", CreateBuildInfo.GIT_COMMIT) .put("Ponder Version", getVersionOfMod("ponder")) .put("NeoForge Version", getVersionOfMod("neoforge")) - .put("Minecraft Version", SharedConstants.getCurrentVersion().getName()) + .put("Minecraft Version", SharedConstants.getCurrentVersion().name()) .buildTo(DebugInformation::registerBothInfo); CatnipServices.PLATFORM.executeOnClientOnly(() -> () -> { @@ -86,9 +91,9 @@ public static List getServerInfo() { .toString()) .orElse("None")) .put("Flywheel Backend", () -> Backend.REGISTRY.getIdOrThrow(BackendManager.currentBackend()).toString()) - .put("OpenGL Renderer", GlUtil::getRenderer) - .put("OpenGL Version", GlUtil::getOpenGLVersion) - .put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsMode().get().name().toLowerCase(Locale.ROOT)) + .put("OpenGL Renderer", () -> "Unavailable on Minecraft 26.2 render backend") + .put("OpenGL Version", () -> "Unavailable on Minecraft 26.2 render backend") + .put("Graphics Mode", () -> Minecraft.getInstance().options.graphicsPreset().get().name().toLowerCase(Locale.ROOT)) .put("PojavLauncher Detected", () -> String.valueOf(PojavChecker.IS_PRESENT)) .buildTo(DebugInformation::registerClientInfo); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/debugInfo/ServerDebugInfoPacket.java b/src/main/java/com/simibubi/create/infrastructure/debugInfo/ServerDebugInfoPacket.java index eab0d55ba3..7ddd9ef2a7 100644 --- a/src/main/java/com/simibubi/create/infrastructure/debugInfo/ServerDebugInfoPacket.java +++ b/src/main/java/com/simibubi/create/infrastructure/debugInfo/ServerDebugInfoPacket.java @@ -10,13 +10,12 @@ import io.netty.buffer.ByteBuf; import net.createmod.catnip.net.base.ClientboundPacketPayload; import net.minecraft.client.Minecraft; -import net.minecraft.client.player.LocalPlayer; +import net.minecraft.world.entity.player.Player; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.DyeColor; import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; public record ServerDebugInfoPacket(String serverInfo) implements ClientboundPacketPayload { public static final StreamCodec STREAM_CODEC = ByteBufCodecs.STRING_UTF8.map( @@ -28,8 +27,7 @@ public ServerDebugInfoPacket(Player target) { } @Override - @OnlyIn(Dist.CLIENT) - public void handle(LocalPlayer player) { + public void handle(Player player) { StringBuilder output = new StringBuilder(); List clientInfo = DebugInformation.getClientInfo(); diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTestHelper.java b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTestHelper.java index f5c20c8b72..81f0ee23c0 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTestHelper.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTestHelper.java @@ -22,12 +22,14 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollOptionBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollValueBehaviour; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; import com.simibubi.create.foundation.item.ItemHelper; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; import com.simibubi.create.foundation.mixin.accessor.GameTestHelperAccessor; import it.unimi.dsi.fastutil.objects.Object2LongArrayMap; import it.unimi.dsi.fastutil.objects.Object2LongMap; -import net.createmod.catnip.registry.RegisteredObjectsHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -166,7 +168,7 @@ public void toggleActorsOfType(Contraption contraption, ItemLike item) { * Get the block entity of the expected type. If the type does not match, this fails the test. */ public T getBlockEntity(BlockEntityType type, BlockPos pos) { - BlockEntity be = getBlockEntity(pos); + BlockEntity be = getLevel().getBlockEntity(absolutePos(pos)); BlockEntityType actualType = be == null ? null : be.getType(); if (actualType != type) { String actualId = actualType == null ? "null" : RegisteredObjectsHelper.getKeyOrThrow(actualType).toString(); @@ -247,10 +249,10 @@ public List getEntitiesBetween(EntityType type, BlockPo // transfer - fluids public IFluidHandler fluidStorageAt(BlockPos pos) { - BlockEntity be = getBlockEntity(pos); + BlockEntity be = getLevel().getBlockEntity(absolutePos(pos)); if (be == null) fail("BlockEntity not present"); - IFluidHandler handler = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler handler = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (handler == null) fail("handler not present"); return handler; @@ -315,10 +317,10 @@ public void assertTanksEmpty(BlockPos... tanks) { // transfer - items public IItemHandler itemStorageAt(BlockPos pos) { - BlockEntity be = getBlockEntity(pos); + BlockEntity be = getLevel().getBlockEntity(absolutePos(pos)); if (be == null) fail("BlockEntity not present"); - IItemHandler handler = be.getLevel().getCapability(Capabilities.ItemHandler.BLOCK, be.getBlockPos(), null); + IItemHandler handler = LegacyItemHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Item.BLOCK, be.getBlockPos(), null)); if (handler == null) fail("handler not present"); return handler; diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTests.java b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTests.java index 2c97ae1889..465717b81d 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTests.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateGameTests.java @@ -9,8 +9,8 @@ import com.simibubi.create.infrastructure.gametest.tests.TestProcessing; import com.simibubi.create.infrastructure.gametest.tests.TestRegressions; -import net.minecraft.gametest.framework.GameTestGenerator; -import net.minecraft.gametest.framework.TestFunction; +import com.simibubi.create.infrastructure.gametest.legacy.GameTestGenerator; +import com.simibubi.create.infrastructure.gametest.legacy.TestFunction; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -29,7 +29,7 @@ public class CreateGameTests { @SubscribeEvent public static void registerTests(RegisterGameTestsEvent event) { - event.register(CreateGameTests.class); + // TODO 26.2: register generated tests with RegisterGameTestsEvent's GameTestInstance API. } @GameTestGenerator diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateTestFunction.java b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateTestFunction.java index 1430959c15..ed80de3de6 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/CreateTestFunction.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/CreateTestFunction.java @@ -16,11 +16,11 @@ import org.jetbrains.annotations.NotNull; import net.minecraft.core.BlockPos; -import net.minecraft.gametest.framework.GameTest; -import net.minecraft.gametest.framework.GameTestGenerator; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; +import com.simibubi.create.infrastructure.gametest.legacy.GameTestGenerator; import net.minecraft.gametest.framework.GameTestHelper; import net.minecraft.gametest.framework.StructureUtils; -import net.minecraft.gametest.framework.TestFunction; +import com.simibubi.create.infrastructure.gametest.legacy.TestFunction; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.entity.StructureBlockEntity; @@ -117,7 +117,7 @@ public static Consumer run(String fullName, @NotNull Consumer { helper.andThen(gameTestHelper -> { // give structure block test info - StructureBlockEntity be = gameTestHelper.getBlockEntity(BlockPos.ZERO); + StructureBlockEntity be = gameTestHelper.getBlockEntity(BlockPos.ZERO, StructureBlockEntity.class); be.getPersistentData().putString("CreateTestFunction", fullName); }).accept(CreateGameTestHelper.of(consumer)); }; diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTest.java b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTest.java new file mode 100644 index 0000000000..0a691c9d10 --- /dev/null +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTest.java @@ -0,0 +1,31 @@ +package com.simibubi.create.infrastructure.gametest.legacy; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Temporary Create 26.2 bridge for legacy GameTest declarations. + * TODO 26.2: Migrate tests to GeneratedTest/FunctionGameTestInstance registration. + */ +@Deprecated(forRemoval = true) +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface GameTest { + String batch() default "defaultBatch"; + + String template() default ""; + + int rotationSteps() default 0; + + int timeoutTicks() default 100; + + long setupTicks() default 0L; + + boolean required() default true; + + int attempts() default 1; + + int requiredSuccesses() default 1; +} diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTestGenerator.java b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTestGenerator.java new file mode 100644 index 0000000000..da4ea7663d --- /dev/null +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/GameTestGenerator.java @@ -0,0 +1,16 @@ +package com.simibubi.create.infrastructure.gametest.legacy; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Temporary Create 26.2 bridge for legacy GameTest factories. + * TODO 26.2: Replace with the 26.2 GameTest loader/instance API. + */ +@Deprecated(forRemoval = true) +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface GameTestGenerator { +} diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/TestFunction.java b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/TestFunction.java new file mode 100644 index 0000000000..883abbee3f --- /dev/null +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/legacy/TestFunction.java @@ -0,0 +1,17 @@ +package com.simibubi.create.infrastructure.gametest.legacy; + +import java.util.function.Consumer; + +import net.minecraft.gametest.framework.GameTestHelper; +import net.minecraft.world.level.block.Rotation; + +/** + * Temporary Create 26.2 bridge for legacy Create test discovery code. + * TODO 26.2: Replace with FunctionGameTestInstance/GeneratedTest instances. + */ +@Deprecated(forRemoval = true) +public record TestFunction(String batchName, String testName, String structureName, Rotation rotation, + int maxTicks, long setupTicks, boolean required, boolean manualOnly, + int maxAttempts, int requiredSuccesses, boolean skyAccess, + Consumer function) { +} diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestContraptions.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestContraptions.java index e74ff27e40..10e481954b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestContraptions.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestContraptions.java @@ -15,9 +15,9 @@ import it.unimi.dsi.fastutil.objects.Object2LongMap; import net.minecraft.core.BlockPos; -import net.minecraft.gametest.framework.GameTest; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.projectile.Arrow; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; +import net.minecraft.world.entity.EntityTypes; +import net.minecraft.world.entity.projectile.arrow.Arrow; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -38,7 +38,7 @@ public static void arrowDispenser(CreateGameTestHelper helper) { BlockPos pos2 = new BlockPos(4, 5, 4); helper.succeedWhen(() -> { helper.assertSecondsPassed(7); - List arrows = helper.getEntitiesBetween(EntityType.ARROW, pos1, pos2); + List arrows = helper.getEntitiesBetween(EntityTypes.ARROW, pos1, pos2); if (arrows.size() != 4) helper.fail("Expected 4 arrows"); helper.powerLever(lever); // disassemble contraption @@ -166,7 +166,7 @@ public static void elevator(CreateGameTestHelper helper) { BlockPos cowSpawn = new BlockPos(4, 4, 2); BlockPos cowEnd = new BlockPos(4, 13, 2); - helper.runAtTickTime(1, () -> helper.spawn(EntityType.COW, cowSpawn)); + helper.runAtTickTime(1, () -> helper.spawn(EntityTypes.COW, cowSpawn)); helper.runAtTickTime( 15, () -> helper.getBlockEntity(AllBlockEntityTypes.ELEVATOR_PULLEY.get(), pulley).clicked() ); @@ -187,7 +187,7 @@ public static void elevator(CreateGameTestHelper helper) { } else { // step 2: wait for top lamp and cow passenger helper.assertBlockProperty(topLamp, RedstoneLampBlock.LIT, true); helper.assertBlockProperty(bottomLamp, RedstoneLampBlock.LIT, false); - helper.assertEntityPresent(EntityType.COW, cowEnd); + helper.assertEntityPresent(EntityTypes.COW, cowEnd); // all done, disassemble helper.getBlockEntity(AllBlockEntityTypes.ELEVATOR_PULLEY.get(), pulley).clicked(); } @@ -243,8 +243,8 @@ public static void dispensersDontFight(CreateGameTestHelper helper) { helper.pullLever(lever); helper.succeedWhen(() -> { - helper.assertEntitiesPresent(EntityType.ARROW, bottom, 3, 0); - helper.assertEntityNotPresent(EntityType.ARROW, top); + helper.assertEntitiesPresent(EntityTypes.ARROW, bottom, 3, 0); + helper.assertEntityNotPresent(EntityTypes.ARROW, top); helper.assertBlockPresent(Blocks.DISPENSER, dispenser); helper.assertContainerContains(dispenser, new ItemStack(Items.ARROW, 2)); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestFluids.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestFluids.java index 4102b83bc6..02d7268f62 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestFluids.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestFluids.java @@ -18,12 +18,11 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.gametest.framework.GameTest; -import net.minecraft.gametest.framework.GameTestAssertException; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; import net.minecraft.tags.BlockTags; import net.minecraft.util.Mth; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.entity.EntityTypes; +import net.minecraft.world.entity.monster.zombie.Zombie; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -33,7 +32,7 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.FarmBlock; +import net.minecraft.world.level.block.FarmlandBlock; import net.minecraft.world.level.block.LeverBlock; import net.minecraft.world.level.block.RedstoneLampBlock; import net.minecraft.world.level.material.Fluids; @@ -217,8 +216,9 @@ private static void waterwheel(CreateGameTestHelper helper, @GameTest(template = "waterwheel_materials", timeoutTicks = CreateGameTestHelper.FIFTEEN_SECONDS) public static void waterwheelMaterials(CreateGameTestHelper helper) { - List planks = BuiltInRegistries.BLOCK.getOrCreateTag(BlockTags.PLANKS).stream() - .map(Holder::value).map(ItemLike::asItem).collect(Collectors.toCollection(ArrayList::new)); + List planks = new ArrayList<>(); + BuiltInRegistries.BLOCK.getTagOrEmpty(BlockTags.PLANKS) + .forEach(holder -> planks.add(holder.value().asItem())); List chests = List.of(new BlockPos(6, 4, 2), new BlockPos(6, 4, 3)); List deployers = chests.stream().map(pos -> pos.below(2)).toList(); helper.runAfterDelay(3, () -> chests.forEach(chest -> @@ -233,7 +233,7 @@ public static void waterwheelMaterials(CreateGameTestHelper helper) { helper.succeedWhen(() -> { Item plank = planks.get(0); if (!(plank instanceof BlockItem blockItem)) - throw new GameTestAssertException(BuiltInRegistries.ITEM.getKey(plank) + " is not a BlockItem"); + throw helper.assertionException(BuiltInRegistries.ITEM.getKey(plank) + " is not a BlockItem"); Block block = blockItem.getBlock(); WaterWheelBlockEntity smallWheelBe = helper.getBlockEntity(AllBlockEntityTypes.WATER_WHEEL.get(), smallWheel); @@ -318,8 +318,8 @@ public static void openPipes(CreateGameTestHelper helper) { BlockPos firstSeat = new BlockPos(4, 2, 1); BlockPos secondSeat = firstSeat.south(2); - Zombie firstZombie = helper.spawn(EntityType.ZOMBIE, firstSeat); - Zombie secondZombie = helper.spawn(EntityType.ZOMBIE, secondSeat); + Zombie firstZombie = helper.spawn(EntityTypes.ZOMBIE, firstSeat); + Zombie secondZombie = helper.spawn(EntityTypes.ZOMBIE, secondSeat); helper.pullLever(effects); @@ -353,7 +353,7 @@ public static void spouting(CreateGameTestHelper helper) { // lava helper.assertBlockPresent(Blocks.LAVA_CAULDRON, 3, 2, 1); // water - helper.assertBlockProperty(farmland, FarmBlock.MOISTURE, 7); + helper.assertBlockProperty(farmland, FarmlandBlock.MOISTURE, 7); helper.assertBlockPresent(Blocks.MUD, farmland.east(1)); helper.assertBlockPresent(Blocks.MUD, farmland.east(2)); helper.assertBlockPresent(Blocks.MUD, farmland.east(3)); diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestItems.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestItems.java index 71d028a895..ac6c36a96e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestItems.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestItems.java @@ -21,15 +21,15 @@ import com.simibubi.create.infrastructure.gametest.GameTestGroup; import it.unimi.dsi.fastutil.objects.Object2LongMap; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.gametest.framework.GameTest; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.world.item.EnchantedBookItem; +import com.simibubi.create.foundation.item.EnchantedBookItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -70,7 +70,7 @@ public static void armMultiOutput(CreateGameTestHelper helper) { helper.assertBlockState( pos, state -> state.getValue(BlazeBurnerBlock.HEAT_LEVEL) == HeatLevel.KINDLED, - () -> "Blaze burner isn't lit!" + state -> Component.literal("Blaze burner isn't lit!") ); }); } @@ -105,8 +105,8 @@ public static void attributeFilters(CreateGameTestHelper helper) { BlockPos lever = new BlockPos(2, 3, 1); BlockPos end = new BlockPos(11, 2, 2); Holder PROTECTION_ENCHANT = helper.getLevel().registryAccess() - .registryOrThrow(Registries.ENCHANTMENT) - .getHolderOrThrow(Enchantments.PROTECTION); + .lookupOrThrow(Registries.ENCHANTMENT) + .getOrThrow(Enchantments.PROTECTION); Map outputs = Map.of( new BlockPos(3, 2, 1), new ItemStack(AllBlocks.BRASS_BLOCK.get()), new BlockPos(4, 2, 1), new ItemStack(Items.APPLE), diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java index 7c531165be..782647320b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java @@ -14,14 +14,14 @@ import com.simibubi.create.infrastructure.gametest.GameTestGroup; import net.minecraft.core.BlockPos; -import net.minecraft.gametest.framework.GameTest; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.EquipmentSlot; -import net.minecraft.world.entity.animal.Sheep; +import net.minecraft.world.entity.animal.sheep.Sheep; import net.minecraft.world.entity.decoration.ArmorStand; -import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.entity.monster.zombie.Zombie; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -57,17 +57,17 @@ public static void schematicannon(CreateGameTestHelper helper) { helper.fail("Schematicannon not done"); } BlockPos lastBlock = new BlockPos(1, 4, 7); - helper.assertBlockPresent(Blocks.RED_WOOL, lastBlock); + helper.assertBlockPresent(Blocks.WOOL.red(), lastBlock); }); } @GameTest(template = "shearing") public static void shearing(CreateGameTestHelper helper) { BlockPos sheepPos = new BlockPos(2, 1, 2); - Sheep sheep = helper.getFirstEntity(EntityType.SHEEP, sheepPos); - sheep.shear(SoundSource.NEUTRAL); + Sheep sheep = helper.getFirstEntity(EntityTypes.SHEEP, sheepPos); + sheep.shear(helper.getLevel(), SoundSource.NEUTRAL, ItemStack.EMPTY); helper.succeedWhen(() -> { - helper.assertItemEntityPresent(Items.WHITE_WOOL, sheepPos, 2); + helper.assertItemEntityPresent(Items.WOOL.white(), sheepPos, 2); }); } @@ -104,15 +104,15 @@ public static void netheriteBacktank(CreateGameTestHelper helper) { BlockPos zombieSpawn = lava.above(2); BlockPos armorStandPos = new BlockPos(2, 2, 1); helper.runAtTickTime(5, () -> { - Zombie zombie = helper.spawn(EntityType.ZOMBIE, zombieSpawn); - ArmorStand armorStand = helper.getFirstEntity(EntityType.ARMOR_STAND, armorStandPos); + Zombie zombie = helper.spawn(EntityTypes.ZOMBIE, zombieSpawn); + ArmorStand armorStand = helper.getFirstEntity(EntityTypes.ARMOR_STAND, armorStandPos); for (EquipmentSlot slot : EquipmentSlot.values()) { zombie.setItemSlot(slot, armorStand.getItemBySlot(slot).copy()); } }); helper.succeedWhen(() -> { helper.assertSecondsPassed(9); - helper.assertEntityPresent(EntityType.ZOMBIE, lava); + helper.assertEntityPresent(EntityTypes.ZOMBIE, lava); }); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestProcessing.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestProcessing.java index 921915d3c1..89bc1dcc34 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestProcessing.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestProcessing.java @@ -12,8 +12,11 @@ import com.simibubi.create.infrastructure.gametest.GameTestGroup; import net.minecraft.core.BlockPos; -import net.minecraft.gametest.framework.GameTest; -import net.minecraft.gametest.framework.GameTestAssertException; +import net.minecraft.core.registries.Registries; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -80,9 +83,13 @@ public static void precisionMechanismCrafting(CreateGameTestHelper helper) { BlockPos output = new BlockPos(11, 3, 1); helper.pullLever(lever); - SequencedAssemblyRecipe recipe = (SequencedAssemblyRecipe) helper.getLevel().getRecipeManager() - .byKey(Create.asResource("sequenced_assembly/precision_mechanism")) - .orElseThrow(() -> new GameTestAssertException("Precision Mechanism recipe not found")).value(); + if (!(helper.getLevel().recipeAccess() instanceof RecipeManager recipeManager)) + throw helper.assertionException("Recipe manager not available"); + ResourceKey> recipeKey = ResourceKey.create(Registries.RECIPE, + Create.asResource("sequenced_assembly/precision_mechanism")); + SequencedAssemblyRecipe recipe = (SequencedAssemblyRecipe) recipeManager + .byKey(recipeKey) + .orElseThrow(() -> helper.assertionException("Precision Mechanism recipe not found")).value(); Item result = recipe.getResultItem(helper.getLevel().registryAccess()).getItem(); Item[] possibleResults = recipe.resultPool.stream() .map(ProcessingOutput::getStack) diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestRegressions.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestRegressions.java index 90cfef1272..c3928a3e3d 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestRegressions.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestRegressions.java @@ -6,7 +6,7 @@ import com.simibubi.create.infrastructure.gametest.GameTestGroup; import net.minecraft.core.BlockPos; -import net.minecraft.gametest.framework.GameTest; +import com.simibubi.create.infrastructure.gametest.legacy.GameTest; import net.minecraft.world.level.block.Blocks; @GameTestGroup(path = "regressions") @@ -16,6 +16,6 @@ public static void issue9615_efficientDeployers(CreateGameTestHelper helper) { final BlockPos lever = new BlockPos(2, 5, 0); final BlockPos goal = new BlockPos(1, 3, 4); helper.unpowerLever(lever); - helper.succeedWhen(() -> helper.assertBlockPresent(Blocks.LIME_STAINED_GLASS, goal)); + helper.succeedWhen(() -> helper.assertBlockPresent(Blocks.STAINED_GLASS.lime(), goal)); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java index 5050fd8333..562b76c0b6 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java +++ b/src/main/java/com/simibubi/create/infrastructure/gui/CreateMainMenuScreen.java @@ -1,8 +1,7 @@ package com.simibubi.create.infrastructure.gui; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; +import com.simibubi.create.foundation.render.GlStateManager; +import com.simibubi.create.foundation.render.LegacyRenderSystemBridge; import com.simibubi.create.AllBlocks; import com.simibubi.create.Create; import com.simibubi.create.CreateBuildInfo; @@ -10,37 +9,41 @@ import com.simibubi.create.foundation.utility.CreateLang; import dev.engine_room.flywheel.lib.transform.TransformStack; -import net.createmod.catnip.config.ui.BaseConfigScreen; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.gui.AbstractSimiScreen; -import net.createmod.catnip.gui.ScreenOpener; -import net.createmod.catnip.gui.element.BoxElement; -import net.createmod.catnip.gui.element.GuiGameElement; -import net.createmod.catnip.lang.FontHelper; -import net.createmod.catnip.lang.FontHelper.Palette; -import net.createmod.catnip.theme.Color; -import net.createmod.ponder.foundation.ui.PonderTagIndexScreen; +import net.createmod.catnip.api.client.config.BaseConfigScreen; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.client.gui.AbstractSimiScreen; +import net.createmod.catnip.api.client.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.element.BoxElement; +import net.createmod.catnip.api.client.gui.element.GuiGameElement; +import net.createmod.catnip.api.client.lang.FontHelper; +import net.createmod.catnip.api.client.lang.FontHelper.Palette; +import net.createmod.catnip.api.theme.Color; +import net.createmod.ponder.impl.client.gui.PonderTagIndexScreen; import net.minecraft.ChatFormatting; -import net.minecraft.Util; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.Util; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Tooltip; import net.minecraft.client.gui.screens.ConfirmLinkScreen; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.renderer.CubeMap; -import net.minecraft.client.renderer.PanoramaRenderer; +import com.simibubi.create.foundation.render.PanoramaRenderer; +import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; + +import org.joml.Matrix3x2fStack; public class CreateMainMenuScreen extends AbstractSimiScreen { public static final CubeMap PANORAMA_RESOURCES = new CubeMap(Create.asResource("textures/gui/title/background/panorama")); - public static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = - ResourceLocation.withDefaultNamespace("textures/gui/title/background/panorama_overlay.png"); + public static final Identifier PANORAMA_OVERLAY_TEXTURES = + Identifier.withDefaultNamespace("textures/gui/title/background/panorama_overlay.png"); public static final PanoramaRenderer PANORAMA = new PanoramaRenderer(PANORAMA_RESOURCES); private static final Component CURSEFORGE_TOOLTIP; @@ -63,88 +66,75 @@ public class CreateMainMenuScreen extends AbstractSimiScreen { protected final Screen parent; protected boolean returnOnClose; - private PanoramaRenderer vanillaPanorama; private long firstRenderTime; private Button gettingStarted; public CreateMainMenuScreen(Screen parent) { this.parent = parent; returnOnClose = true; - if (parent instanceof TitleScreen) - vanillaPanorama = Screen.PANORAMA; - else - vanillaPanorama = new PanoramaRenderer(TitleScreen.CUBE_MAP); } @Override - public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindow(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { if (firstRenderTime == 0L) this.firstRenderTime = Util.getMillis(); - super.render(graphics, mouseX, mouseY, partialTicks); - } - - @Override - protected void renderWindow(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { float f = (float) (Util.getMillis() - this.firstRenderTime) / 1000.0F; float alpha = Mth.clamp(f, 0.0F, 1.0F); - float elapsedPartials = minecraft.getTimer().getGameTimeDeltaPartialTick(false); if (parent instanceof TitleScreen) { - if (alpha < 1) - vanillaPanorama.render(graphics, this.width, this.height, 1, elapsedPartials); - PANORAMA.render(graphics, this.width, this.height, 1, elapsedPartials); + PANORAMA.render(graphics, this.width, this.height, 1, partialTicks); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, + LegacyRenderSystemBridge.enableBlend(); + LegacyRenderSystemBridge.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - graphics.blit(PANORAMA_OVERLAY_TEXTURES, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128); + graphics.blit(RenderPipelines.GUI_TEXTURED, PANORAMA_OVERLAY_TEXTURES, 0, 0, 0.0F, 0.0F, this.width, + this.height, 16, 128, 16, 128); + } else { + graphics.fill(0, 0, width, height, 0xff101010); } - RenderSystem.enableDepthTest(); + LegacyRenderSystemBridge.enableDepthTest(); - PoseStack ms = graphics.pose(); + Matrix3x2fStack ms = graphics.pose(); for (int side : Iterate.positiveAndNegative) { - ms.pushPose(); - ms.translate(width / 2, 60, 200); - ms.scale(24 * side, 24 * side, 32); - ms.translate(-1.75 * ((alpha * alpha) / 2f + .5f), .25f, 0); - TransformStack.of(ms) - .rotateXDegrees(45); + ms.pushMatrix(); + ms.translate(width / 2f, 60); + ms.scale(24 * side, 24 * side); + ms.translate((float) (-1.75 * ((alpha * alpha) / 2f + .5f)), .25f); GuiGameElement.of(AllBlocks.LARGE_COGWHEEL.getDefaultState()) .rotateBlock(0, Util.getMillis() / 32f * side, 0) .render(graphics); - ms.translate(-1, 0, -1); + ms.translate(-1, 0); GuiGameElement.of(AllBlocks.COGWHEEL.getDefaultState()) .rotateBlock(0, Util.getMillis() / -16f * side + 22.5f, 0) .render(graphics); - ms.popPose(); + ms.popMatrix(); } - RenderSystem.enableBlend(); + LegacyRenderSystemBridge.enableBlend(); - ms.pushPose(); - ms.translate(width / 2 - 32, 32, -10); - ms.pushPose(); - ms.scale(0.25f, 0.25f, 0.25f); + ms.pushMatrix(); + ms.translate(width / 2f - 32, 32); + ms.pushMatrix(); + ms.scale(0.25f, 0.25f); AllGuiTextures.LOGO.render(graphics, 0, 0); - ms.popPose(); + ms.popMatrix(); new BoxElement().withBackground(0x88_000000) .flatBorder(new Color(0x01_000000)) - .at(-32, 56, 100) + .at(-32, 56) .withBounds(128, 11) .render(graphics); - ms.popPose(); + ms.popMatrix(); - ms.pushPose(); - ms.translate(0, 0, 200); - graphics.drawCenteredString(font, Component.literal(Create.NAME).withStyle(ChatFormatting.BOLD) + ms.pushMatrix(); + graphics.centeredText(font, Component.literal(Create.NAME).withStyle(ChatFormatting.BOLD) .append( Component.literal(" v" + CreateBuildInfo.VERSION).withStyle(ChatFormatting.BOLD, ChatFormatting.WHITE)), width / 2, 89, 0xFF_E4BB67); - ms.popPose(); + ms.popMatrix(); - RenderSystem.disableDepthTest(); + LegacyRenderSystemBridge.disableDepthTest(); } protected void init() { @@ -191,18 +181,18 @@ private void addButtons() { } @Override - protected void renderWindowForeground(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { + protected void renderWindowForeground(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { super.renderWindowForeground(graphics, mouseX, mouseY, partialTicks); - renderables.forEach(w -> w.render(graphics, mouseX, mouseY, partialTicks)); + renderables.forEach(w -> w.extractRenderState(graphics, mouseX, mouseY, partialTicks)); if (parent instanceof TitleScreen) { if (mouseX < gettingStarted.getX() || mouseX > gettingStarted.getX() + 98) return; if (mouseY < gettingStarted.getY() || mouseY > gettingStarted.getY() + 20) return; - graphics.renderComponentTooltip(font, + graphics.setComponentTooltipForNextFrame(font, FontHelper.cutTextComponent(CreateLang.translateDirect("menu.only_ingame"), Palette.ALL_GRAY), mouseX, - mouseY); + mouseY, ItemStack.EMPTY); } } @@ -217,7 +207,7 @@ private void linkTo(String url) { if (p_213069_2_) Util.getPlatform() .openUri(url); - this.minecraft.setScreen(this); + this.minecraft.gui.setScreen(this); }, url, true)); } @@ -238,14 +228,13 @@ public PlatformIconButton(int pX, int pY, int pWidth, int pHeight, AllGuiTexture } @Override - protected void renderWidget(GuiGraphics graphics, int pMouseX, int pMouseY, float pt) { - super.renderWidget(graphics, pMouseX, pMouseY, pt); - PoseStack pPoseStack = graphics.pose(); - pPoseStack.pushPose(); - pPoseStack.translate(getX() + width / 2 - (icon.getWidth() * scale) / 2, getY() + height / 2 - (icon.getHeight() * scale) / 2, 0); - pPoseStack.scale(scale, scale, 1); + protected void extractContents(GuiGraphicsExtractor graphics, int pMouseX, int pMouseY, float pt) { + Matrix3x2fStack pPoseStack = graphics.pose(); + pPoseStack.pushMatrix(); + pPoseStack.translate(getX() + width / 2f - (icon.getWidth() * scale) / 2f, getY() + height / 2f - (icon.getHeight() * scale) / 2f); + pPoseStack.scale(scale, scale); icon.render(graphics, 0, 0); - pPoseStack.popPose(); + pPoseStack.popMatrix(); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/gui/OpenCreateMenuButton.java b/src/main/java/com/simibubi/create/infrastructure/gui/OpenCreateMenuButton.java index e9f38e44bb..41e99e0a99 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gui/OpenCreateMenuButton.java +++ b/src/main/java/com/simibubi/create/infrastructure/gui/OpenCreateMenuButton.java @@ -9,10 +9,9 @@ import com.simibubi.create.AllItems; import com.simibubi.create.infrastructure.config.AllConfigs; -import net.createmod.catnip.gui.ScreenOpener; +import net.createmod.catnip.api.client.gui.ScreenOpener; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; @@ -20,7 +19,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.resources.language.I18n; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.network.chat.CommonComponents; import net.minecraft.world.item.ItemStack; @@ -36,19 +35,18 @@ public OpenCreateMenuButton(int x, int y) { } @Override - public void renderString(GuiGraphics graphics, Font pFont, int pColor) { + protected void extractContents(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float partialTicks) { ItemStack icon = AllItems.GOGGLES.asStack(); - BakedModel bakedmodel = Minecraft.getInstance() - .getItemRenderer() + BakedModel bakedmodel = com.simibubi.create.foundation.render.LegacyItemRendererBridge.getItemRenderer() .getModel(icon, Minecraft.getInstance().level, Minecraft.getInstance().player, 0); if (bakedmodel == null) return; - graphics.renderItem(icon, getX() + 2, getY() + 2); + graphics.item(icon, getX() + 2, getY() + 2); } public static void click(Button b) { - ScreenOpener.open(new CreateMainMenuScreen(Minecraft.getInstance().screen)); + ScreenOpener.open(new CreateMainMenuScreen(Minecraft.getInstance().gui.screen())); } public record SingleMenuRow(String leftTextKey, String rightTextKey) { diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderScenes.java index f431c7c3a6..1163fd6971 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderScenes.java @@ -63,12 +63,12 @@ import net.minecraft.core.registries.Registries; import net.neoforged.neoforge.registries.DeferredHolder; -import net.createmod.ponder.api.registration.PonderSceneRegistrationHelper; -import net.minecraft.resources.ResourceLocation; +import net.createmod.ponder.api.client.registration.PonderSceneRegistrationHelper; +import net.minecraft.resources.Identifier; public class AllCreatePonderScenes { - public static void register(PonderSceneRegistrationHelper helper) { + public static void register(PonderSceneRegistrationHelper helper) { PonderSceneRegistrationHelper> HELPER = helper.withKeyFunction(RegistryEntry::getId); HELPER.forComponents(AllBlocks.SHAFT) diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderTags.java b/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderTags.java index 01d0a63a54..8b7d95490c 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderTags.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/AllCreatePonderTags.java @@ -6,10 +6,10 @@ import com.simibubi.create.compat.Mods; import com.tterrag.registrate.util.entry.RegistryEntry; -import net.createmod.catnip.registry.RegisteredObjectsHelper; -import net.createmod.ponder.api.registration.PonderTagRegistrationHelper; +import net.createmod.catnip.api.registry.RegisteredObjectsHelper; +import net.createmod.ponder.api.client.registration.PonderTagRegistrationHelper; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; @@ -18,7 +18,7 @@ public class AllCreatePonderTags { - public static final ResourceLocation + public static final Identifier KINETIC_RELAYS = loc("kinetic_relays"), KINETIC_SOURCES = loc("kinetic_sources"), @@ -40,11 +40,11 @@ public class AllCreatePonderTags { DISPLAY_TARGETS = loc("display_targets"), THRESHOLD_SWITCH_TARGETS = loc("threshold_switch_targets"); - private static ResourceLocation loc(String id) { + private static Identifier loc(String id) { return Create.asResource(id); } - public static void register(PonderTagRegistrationHelper helper) { + public static void register(PonderTagRegistrationHelper helper) { PonderTagRegistrationHelper> HELPER = helper.withKeyFunction(RegistryEntry::getId); @@ -316,7 +316,7 @@ public static void register(PonderTagRegistrationHelper helper .add(AllBlocks.SAIL_FRAME); itemHelper.addToTag(SAILS) - .add(Blocks.WHITE_WOOL); + .add(Blocks.WOOL.white()); HELPER.addToTag(REDSTONE) .add(AllBlocks.SMART_OBSERVER) @@ -421,7 +421,7 @@ public static void register(PonderTagRegistrationHelper helper .add(Blocks.BARREL); Mods.COMPUTERCRAFT.executeIfInstalled(() -> () -> { - Block computer = BuiltInRegistries.BLOCK.get(Mods.COMPUTERCRAFT.rl("computer_advanced")); + Block computer = BuiltInRegistries.BLOCK.getValue(Mods.COMPUTERCRAFT.rl("computer_advanced")); if (computer != Blocks.AIR) itemHelper.addToTag(DISPLAY_SOURCES).add(computer); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ArmScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ArmScenes.java index 92ed388cb2..6dff52c6df 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ArmScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ArmScenes.java @@ -7,13 +7,13 @@ import com.simibubi.create.content.logistics.funnel.FunnelBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -158,7 +158,7 @@ public static void setup(SceneBuilder builder, SceneBuildingUtil util) { inputDepot = util.grid().at(1, 3, 4); outputDepot = util.grid().at(1, 1, 0); - copper = new ItemStack(Items.COPPER_BLOCK); + copper = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); scene.world().createItemOnBeltLike(inputDepot, Direction.SOUTH, copper); scene.idle(20); scene.world().instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 2); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java index 23e150d5de..ccb3d75763 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BearingScenes.java @@ -7,14 +7,14 @@ import com.simibubi.create.content.contraptions.glue.SuperGlueEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -596,7 +596,7 @@ public static void clockwork(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(10); scene.world().setBlock(util.grid().at(3, 3, 0), Blocks.STONE_BRICK_WALL.defaultBlockState() - .setValue(WallBlock.SOUTH_WALL, WallSide.TALL), false); + .setValue(WallBlock.SOUTH, WallSide.TALL), false); ElementLink minuteHand = scene.world().showIndependentSection(util.select().fromTo(3, 3, 0, 3, 6, 0), Direction.SOUTH); scene.world().configureCenterOfRotation(minuteHand, util.vector().centerOf(bearingPos)); @@ -693,7 +693,7 @@ private static void sails(SceneBuilder builder, SceneBuildingUtil util, boolean scene.rotateCameraY(-30); scene.idle(10); scene.overlay().showControls(util.vector().blockSurface(util.grid().at(2, 3, 1), Direction.NORTH), Pointing.RIGHT, 30) - .withItem(new ItemStack(Items.BLUE_DYE)); + .withItem(new ItemStack(Items.DYE.blue())); scene.idle(7); scene.world().setBlock(util.grid().at(2, 3, 1), AllBlocks.DYED_SAILS.get(DyeColor.BLUE) .getDefaultState() @@ -707,7 +707,7 @@ private static void sails(SceneBuilder builder, SceneBuildingUtil util, boolean .placeNearTarget(); scene.idle(20); scene.overlay().showControls(util.vector().blockSurface(util.grid().at(2, 3, 1), Direction.NORTH), Pointing.RIGHT, 30) - .withItem(new ItemStack(Items.BLUE_DYE)); + .withItem(new ItemStack(Items.DYE.blue())); scene.idle(7); scene.world().replaceBlocks(util.select().fromTo(2, 2, 1, 2, 4, 1), AllBlocks.DYED_SAILS.get(DyeColor.BLUE) .getDefaultState() diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BeltScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BeltScenes.java index 7ae49e27e8..5cca5b2c6d 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BeltScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/BeltScenes.java @@ -16,17 +16,17 @@ import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -157,7 +157,7 @@ public static void beltConnector(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(70); scene.overlay().showControls(util.vector().topOf(shaftLocation.east()), Pointing.DOWN, 50).rightClick() - .withItem(new ItemStack(Items.BLUE_DYE)); + .withItem(new ItemStack(Items.DYE.blue())); scene.idle(7); scene.world().modifyBlockEntityNBT(util.select().fromTo(0, 1, 2, 4, 1, 2), BeltBlockEntity.class, nbt -> NBTHelper.writeEnum(nbt, "Dye", DyeColor.BLUE)); @@ -336,7 +336,7 @@ public static void transport(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(10); scene.special().movePointOfInterest(util.grid().at(2, 2, 0)); - ItemStack stack = new ItemStack(Items.COPPER_BLOCK); + ItemStack stack = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); ElementLink item = scene.world().createItemEntity(util.vector().centerOf(0, 4, 2), util.vector().of(0, 0, 0), stack); scene.idle(13); @@ -499,9 +499,9 @@ public static void depot(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(70); scene.overlay().showControls(topOf, Pointing.DOWN, 20).rightClick() - .withItem(new ItemStack(Items.COPPER_BLOCK)); + .withItem(new ItemStack(Items.COPPER_BLOCK.weathering().unaffected())); scene.idle(7); - scene.world().createItemOnBeltLike(depotPos, Direction.NORTH, new ItemStack(Items.COPPER_BLOCK)); + scene.world().createItemOnBeltLike(depotPos, Direction.NORTH, new ItemStack(Items.COPPER_BLOCK.weathering().unaffected())); scene.idle(10); scene.overlay().showText(70) .attachKeyFrame() diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CartAssemblerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CartAssemblerScenes.java index 9fadcc1cc7..b0c7f1fdaf 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CartAssemblerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CartAssemblerScenes.java @@ -6,31 +6,51 @@ import com.simibubi.create.content.contraptions.mounted.CartAssemblerBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.ParticleEmitter; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.MinecartElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.scene.ParticleEmitter; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.MinecartElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.vehicle.Minecart; -import net.minecraft.world.entity.vehicle.MinecartChest; -import net.minecraft.world.entity.vehicle.MinecartFurnace; +import net.minecraft.world.entity.EntityTypes; +import net.minecraft.world.entity.vehicle.minecart.Minecart; +import net.minecraft.world.entity.vehicle.minecart.MinecartChest; +import net.minecraft.world.entity.vehicle.minecart.MinecartFurnace; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.properties.RailShape; import net.minecraft.world.phys.Vec3; public class CartAssemblerScenes { + private static Minecart minecart(Level level, double x, double y, double z) { + Minecart cart = new Minecart(EntityTypes.MINECART, level); + cart.setPos(x, y, z); + return cart; + } + + private static MinecartChest chestMinecart(Level level, double x, double y, double z) { + MinecartChest cart = new MinecartChest(EntityTypes.CHEST_MINECART, level); + cart.setPos(x, y, z); + return cart; + } + + private static MinecartFurnace furnaceMinecart(Level level, double x, double y, double z) { + MinecartFurnace cart = new MinecartFurnace(EntityTypes.FURNACE_MINECART, level); + cart.setPos(x, y, z); + return cart; + } + public static void anchor(SceneBuilder builder, SceneBuildingUtil util) { CreateSceneBuilder scene = new CreateSceneBuilder(builder); scene.title("cart_assembler", "Moving Structures using Cart Assemblers"); @@ -71,7 +91,7 @@ public static void anchor(SceneBuilder builder, SceneBuildingUtil util) { .placeNearTarget(); scene.idle(80); - ElementLink cart = scene.special().createCart(util.vector().topOf(2, 0, 4), 90, Minecart::new); + ElementLink cart = scene.special().createCart(util.vector().topOf(2, 0, 4), 90, CartAssemblerScenes::minecart); scene.world().showSection(util.select().position(assemblerPos.above()), Direction.DOWN); scene.idle(10); scene.special().moveCart(cart, util.vector().of(0, 0, -2), 20); @@ -209,7 +229,7 @@ public static void modes(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(10); ElementLink cart = - scene.special().createCart(util.vector().topOf(util.grid().at(4, 0, 3)), 0, Minecart::new); + scene.special().createCart(util.vector().topOf(util.grid().at(4, 0, 3)), 0, CartAssemblerScenes::minecart); scene.idle(20); scene.special().moveCart(cart, util.vector().of(-1, 0, 0), 10); scene.idle(10); @@ -268,7 +288,7 @@ public static void modes(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(70); contraption = scene.world().showIndependentSection(util.select().fromTo(3, 2, 3, 2, 2, 3), Direction.DOWN); - cart = scene.special().createCart(util.vector().topOf(util.grid().at(4, 0, 3)), 0, Minecart::new); + cart = scene.special().createCart(util.vector().topOf(util.grid().at(4, 0, 3)), 0, CartAssemblerScenes::minecart); scene.idle(10); scene.special().moveCart(cart, util.vector().of(-1, 0, 0), 10); scene.idle(10); @@ -326,9 +346,9 @@ public static void dual(SceneBuilder builder, SceneBuildingUtil util) { scene.world().showSection(util.select().fromTo(2, 1, 3, 2, 1, 2), Direction.SOUTH); scene.idle(5); ElementLink cart = - scene.special().createCart(util.vector().topOf(assembler1.below()), 0, Minecart::new); + scene.special().createCart(util.vector().topOf(assembler1.below()), 0, CartAssemblerScenes::minecart); ElementLink cart2 = - scene.special().createCart(util.vector().topOf(assembler2.below()), 0, MinecartChest::new); + scene.special().createCart(util.vector().topOf(assembler2.below()), 0, CartAssemblerScenes::chestMinecart); scene.idle(15); scene.world().setBlock(assembler1, AllBlocks.CART_ASSEMBLER.getDefaultState() .setValue(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) @@ -444,7 +464,7 @@ public static void rails(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(70); ElementLink cart = scene.special().createCart(util.vector().topOf(assembler.east(2) - .below()), 0, Minecart::new); + .below()), 0, CartAssemblerScenes::minecart); ElementLink anchor = scene.world().showIndependentSection(util.select().position(assembler.south()), Direction.DOWN); ElementLink contraption = @@ -477,7 +497,7 @@ public static void rails(SceneBuilder builder, SceneBuildingUtil util) { scene.world().hideIndependentSection(anchor, Direction.DOWN); cart = scene.special().createCart(util.vector().topOf(assembler.east(2) - .below()), 0, Minecart::new); + .below()), 0, CartAssemblerScenes::minecart); anchor = scene.world().showIndependentSection(util.select().position(assembler.south()), Direction.DOWN); contraption = scene.world().showIndependentSection(util.select().position(assembler.south() .above()), Direction.DOWN); @@ -505,7 +525,7 @@ public static void rails(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(20); cart = scene.special().createCart(util.vector().topOf(assembler.east(2) - .below()), 0, MinecartFurnace::new); + .below()), 0, CartAssemblerScenes::furnaceMinecart); scene.idle(10); scene.overlay().showText(50) .attachKeyFrame() diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChainDriveScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChainDriveScenes.java index bdeb4d3a99..3e184eec61 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChainDriveScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChainDriveScenes.java @@ -5,14 +5,14 @@ import com.simibubi.create.content.redstone.analogLever.AnalogLeverBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.TextElementBuilder; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.TextElementBuilder; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChassisScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChassisScenes.java index 0f7d0057a7..1923351bd4 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChassisScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChassisScenes.java @@ -7,13 +7,13 @@ import com.simibubi.create.content.contraptions.chassis.RadialChassisBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChuteScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChuteScenes.java index a59545546d..655857e4af 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChuteScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ChuteScenes.java @@ -9,14 +9,14 @@ import com.simibubi.create.content.logistics.chute.SmartChuteBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; @@ -43,7 +43,7 @@ public static void downward(SceneBuilder builder, SceneBuildingUtil util) { scene.world().moveSection(top, util.vector().of(0, 0, -1), 0); scene.idle(20); - ItemStack stack = new ItemStack(Items.COPPER_BLOCK); + ItemStack stack = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); scene.world().createItemEntity(util.vector().centerOf(util.grid().at(3, 3, 2)), util.vector().of(0, -0.1, 0), stack); scene.idle(20); ElementLink remove = @@ -134,7 +134,7 @@ public static void downward(SceneBuilder builder, SceneBuildingUtil util) { for (int i = 0; i < 3; i++) { remove = scene.world().createItemEntity(util.vector().centerOf(util.grid().at(2, 6, 3) .relative(offset)), util.vector().of(0, 0.1, 0) - .add(Vec3.atLowerCornerOf(offset.getNormal()) + .add(Vec3.atLowerCornerOf(offset.getUnitVec3i()) .scale(-.1)), stack); scene.idle(12); @@ -183,7 +183,7 @@ public static void upward(SceneBuilder builder, SceneBuildingUtil util) { scene.world().showSection(util.select().fromTo(2, 2, 2, 4, 1, 5) .add(util.select().position(3, 0, 5)), Direction.DOWN); - ItemStack stack = new ItemStack(Items.COPPER_BLOCK); + ItemStack stack = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); scene.world().createItemOnBelt(util.grid().at(4, 1, 2), Direction.EAST, stack); scene.idle(10); scene.rotateCameraY(60); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CrafterScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CrafterScenes.java index bfab1b848e..90273e919e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CrafterScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/CrafterScenes.java @@ -8,14 +8,14 @@ import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.Couple; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.Couple; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DeployerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DeployerScenes.java index b2a940da46..957a317a3e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DeployerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DeployerScenes.java @@ -7,22 +7,24 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.ponder.element.BeltItemElement; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.BlockParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.WalkAnimationState; -import net.minecraft.world.entity.animal.Sheep; +import net.minecraft.world.entity.animal.sheep.Sheep; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -112,7 +114,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { .withItem(pot); scene.idle(7); Class teType = DeployerBlockEntity.class; - scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", pot.saveOptional(scene.world().getHolderLookupProvider()))); + scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(pot, scene.world().getHolderLookupProvider()))); scene.idle(10); scene.overlay().showText(40) @@ -125,7 +127,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(26); scene.world().restoreBlocks(util.select().position(potPosition)); scene.world().modifyBlockEntityNBT(deployerSelection, teType, - nbt -> nbt.put("HeldItem", ItemStack.EMPTY.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ItemStack.EMPTY, scene.world().getHolderLookupProvider()))); scene.world().moveDeployer(deployerPos, -1, 25); scene.idle(20); @@ -138,7 +140,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { scene.world().createItemEntity(entitySpawn, util.vector().of(0, 0.2, 0), tulip); scene.idle(17); scene.world().modifyEntity(entity1, Entity::discard); - scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", tulip.saveOptional(scene.world().getHolderLookupProvider()))); + scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(tulip, scene.world().getHolderLookupProvider()))); scene.idle(10); scene.overlay().showText(40) .placeNearTarget() @@ -149,7 +151,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(26); scene.world().setBlock(potPosition, Blocks.POTTED_RED_TULIP.defaultBlockState(), false); scene.world().modifyBlockEntityNBT(deployerSelection, teType, - nbt -> nbt.put("HeldItem", ItemStack.EMPTY.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ItemStack.EMPTY, scene.world().getHolderLookupProvider()))); scene.world().moveDeployer(deployerPos, -1, 25); scene.idle(25); scene.world().hideSection(util.select().position(potPosition), Direction.UP); @@ -179,7 +181,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(70); ElementLink sheep = scene.world().createEntity(w -> { - Sheep entity = EntityType.SHEEP.create(w); + Sheep entity = EntityTypes.SHEEP.create(w, EntitySpawnReason.COMMAND); entity.setColor(DyeColor.PINK); Vec3 p = util.vector().topOf(util.grid().at(1, 0, 2)); entity.setPos(p.x, p.y, p.z); @@ -187,7 +189,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { entity.yo = p.y; entity.zo = p.z; WalkAnimationState animation = entity.walkAnimation; - animation.update(-animation.position(), 1); + animation.update(-animation.position(), 1, 1); animation.setSpeed(1); entity.yRotO = 210; entity.setYRot(210); @@ -200,7 +202,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { entity1 = scene.world().createItemEntity(entitySpawn, util.vector().of(0, 0.2, 0), shears); scene.idle(17); scene.world().modifyEntity(entity1, Entity::discard); - scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", shears.saveOptional(scene.world().getHolderLookupProvider()))); + scene.world().modifyBlockEntityNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(shears, scene.world().getHolderLookupProvider()))); scene.idle(10); scene.overlay().showText(60) @@ -214,7 +216,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyEntity(sheep, e -> ((Sheep) e).setSheared(true)); scene.effects().emitParticles(util.vector().topOf(deployerPos.west(2)) .add(0, -.25, 0), - scene.effects().particleEmitterWithinBlockSpace(new BlockParticleOption(ParticleTypes.BLOCK, Blocks.PINK_WOOL.defaultBlockState()), + scene.effects().particleEmitterWithinBlockSpace(new BlockParticleOption(ParticleTypes.BLOCK, Blocks.WOOL.pink().defaultBlockState()), util.vector().of(0, 0, 0)), 25, 1); scene.world().moveDeployer(deployerPos, -1, 25); @@ -227,7 +229,7 @@ public static void filter(SceneBuilder builder, SceneBuildingUtil util) { .text("...and only non-matching items will be extracted"); scene.world().flapFunnel(deployerPos.north(), true); scene.world().createItemEntity(util.vector().centerOf(deployerPos.north()) - .subtract(0, .45, 0), util.vector().of(0, 0, -0.1), new ItemStack(Items.PINK_WOOL)); + .subtract(0, .45, 0), util.vector().of(0, 0, -0.1), new ItemStack(Items.WOOL.pink())); scene.markAsFinished(); for (int i = 0; i < 10; i++) { @@ -263,7 +265,7 @@ public static void modes(SceneBuilder builder, SceneBuildingUtil util) { scene.overlay().showControls(util.vector().topOf(deployerPos), Pointing.DOWN, 30).withItem(tool); scene.idle(7); scene.world().modifyBlockEntityNBT(deployerSelection, DeployerBlockEntity.class, - nbt -> nbt.put("HeldItem", tool.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(tool, scene.world().getHolderLookupProvider()))); scene.idle(45); scene.world().setKineticSpeed(util.select().position(2, 0, 5), 16); @@ -346,7 +348,7 @@ public static void processing(SceneBuilder builder, SceneBuildingUtil util) { .withItem(tool); scene.idle(7); scene.world().modifyBlockEntityNBT(pressS, DeployerBlockEntity.class, - nbt -> nbt.put("HeldItem", tool.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(tool, scene.world().getHolderLookupProvider()))); scene.idle(25); Vec3 pressSide = util.vector().blockSurface(pressPos, Direction.WEST); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DetectorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DetectorScenes.java index f3b20941cf..789a5cc2c5 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DetectorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DetectorScenes.java @@ -4,13 +4,13 @@ import com.simibubi.create.content.redstone.thresholdSwitch.ThresholdSwitchBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DisplayScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DisplayScenes.java index 08800a015b..170a95610e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DisplayScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/DisplayScenes.java @@ -8,13 +8,13 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.utility.CreateLang; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.CommonComponents; @@ -337,7 +337,7 @@ public static void board(SceneBuilder builder, SceneBuildingUtil util) { scene.world().flashDisplayLink(linkPos); scene.idle(50); - scene.overlay().showControls(target, Pointing.RIGHT, 40).withItem(new ItemStack(Items.PINK_DYE)) + scene.overlay().showControls(target, Pointing.RIGHT, 40).withItem(new ItemStack(Items.DYE.pink())) .rightClick(); scene.idle(6); scene.world().dyeDisplayBoard(board, 0, DyeColor.PINK); @@ -350,7 +350,7 @@ public static void board(SceneBuilder builder, SceneBuildingUtil util) { .placeNearTarget(); scene.idle(25); - scene.overlay().showControls(target.add(0, -.5f, 0), Pointing.RIGHT, 40).withItem(new ItemStack(Items.LIME_DYE)) + scene.overlay().showControls(target.add(0, -.5f, 0), Pointing.RIGHT, 40).withItem(new ItemStack(Items.DYE.lime())) .rightClick(); scene.idle(6); scene.world().dyeDisplayBoard(board, 1, DyeColor.LIME); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/EjectorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/EjectorScenes.java index 66744fe265..896bee33c0 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/EjectorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/EjectorScenes.java @@ -5,16 +5,16 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; @@ -117,7 +117,7 @@ public static void ejector(SceneBuilder builder, SceneBuildingUtil util) { .placeNearTarget(); scene.idle(60); - ItemStack copperBlock = new ItemStack(Items.COPPER_BLOCK); + ItemStack copperBlock = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); ItemStack copperIngot = new ItemStack(Items.COPPER_INGOT); scene.overlay().showControls(util.vector().topOf(ejectorPos).add(0.5, 0, 0), Pointing.RIGHT, 30).withItem(copperBlock); scene.idle(7); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ElevatorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ElevatorScenes.java index 1deeb68544..5de10a550f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ElevatorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ElevatorScenes.java @@ -8,13 +8,13 @@ import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.RegistryAccess; @@ -370,7 +370,7 @@ public static void elevator(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntityNBT(util.select().position(nixiePos), NixieTubeBlockEntity.class, nbt -> { Component component = Component.literal("0F"); nbt.putString("RawCustomText", component.getString()); - nbt.putString("CustomText", Component.Serializer.toJson(component, scene.world().getHolderLookupProvider())); + nbt.putString("CustomText", com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge.toJson(component, scene.world().getHolderLookupProvider())); }); scene.overlay().showText(90) @@ -401,7 +401,7 @@ public static void elevator(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntityNBT(util.select().position(nixiePos), NixieTubeBlockEntity.class, nbt -> { Component component = Component.literal("1F"); nbt.putString("RawCustomText", component.getString()); - nbt.putString("CustomText", Component.Serializer.toJson(component, scene.world().getHolderLookupProvider())); + nbt.putString("CustomText", com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge.toJson(component, scene.world().getHolderLookupProvider())); }); scene.idle(40); @@ -417,7 +417,7 @@ public static void elevator(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntityNBT(util.select().position(nixiePos), NixieTubeBlockEntity.class, nbt -> { Component component = Component.literal("2F"); nbt.putString("RawCustomText", component.getString()); - nbt.putString("CustomText", Component.Serializer.toJson(component, scene.world().getHolderLookupProvider())); + nbt.putString("CustomText", com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge.toJson(component, scene.world().getHolderLookupProvider())); }); } diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FanScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FanScenes.java index b0d19bef82..cfa0aab953 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FanScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FanScenes.java @@ -5,16 +5,16 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.ponder.element.BeltItemElement; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FunnelScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FunnelScenes.java index 54192875bc..58c4995da1 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FunnelScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/FunnelScenes.java @@ -7,14 +7,14 @@ import com.simibubi.create.content.logistics.funnel.FunnelBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/GantryScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/GantryScenes.java index 43d51a1848..a8cc6261fb 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/GantryScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/GantryScenes.java @@ -3,14 +3,14 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Blocks; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ItemVaultScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ItemVaultScenes.java index 6610d21f28..ae41cc5914 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ItemVaultScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ItemVaultScenes.java @@ -4,13 +4,13 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/KineticsScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/KineticsScenes.java index 7df6cdc3c7..cc75e52dfd 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/KineticsScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/KineticsScenes.java @@ -17,13 +17,13 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.tterrag.registrate.util.entry.BlockEntry; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -1035,7 +1035,7 @@ public static void valveHandle(SceneBuilder builder, SceneBuildingUtil util) { scene.addKeyframe(); scene.overlay().showControls(topOf, Pointing.DOWN, 40).rightClick() - .withItem(new ItemStack(Items.BLUE_DYE)); + .withItem(new ItemStack(Items.DYE.blue())); scene.idle(7); scene.world().modifyBlock(valvePos, s -> AllBlocks.DYED_VALVE_HANDLES.get(DyeColor.BLUE) .getDefaultState() diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalDrillScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalDrillScenes.java index 40cb1cfb3a..4786a2fd74 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalDrillScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalDrillScenes.java @@ -2,13 +2,13 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalSawScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalSawScenes.java index 66d400cae4..7c3f4dd2a8 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalSawScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MechanicalSawScenes.java @@ -5,14 +5,14 @@ import com.simibubi.create.content.kinetics.simpleRelays.ShaftBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MovementActorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MovementActorScenes.java index 7b48e560f4..2a351d261f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MovementActorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/MovementActorScenes.java @@ -8,16 +8,16 @@ import com.simibubi.create.content.contraptions.chassis.LinearChassisBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PistonScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PistonScenes.java index 4ba9990d33..d2b7754754 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PistonScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PistonScenes.java @@ -4,15 +4,15 @@ import com.simibubi.create.content.contraptions.piston.MechanicalPistonHeadBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ProcessingScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ProcessingScenes.java index 27ec995d06..519b67efcd 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ProcessingScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/ProcessingScenes.java @@ -16,28 +16,31 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.ponder.element.BeltItemElement; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.ParticleEmitter; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.scene.ParticleEmitter; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySpawnReason; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.monster.Blaze; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.Vec3; @@ -212,7 +215,7 @@ public static void crushingWheels(SceneBuilder builder, SceneBuildingUtil util) scene.idle(18); scene.world().modifyEntity(entity1, Entity::discard); ParticleEmitter blockSpace = - scene.effects().particleEmitterWithinBlockSpace(new ItemParticleOption(ParticleTypes.ITEM, input), util.vector().of(0, 0, 0)); + scene.effects().particleEmitterWithinBlockSpace(new ItemParticleOption(ParticleTypes.ITEM, ItemStackTemplate.fromNonEmptyStack(input)), util.vector().of(0, 0, 0)); scene.effects().emitParticles(util.vector().centerOf(center) .add(0, -0.2, 0), blockSpace, 3, 40); scene.idle(10); @@ -402,9 +405,9 @@ public static void mixing(SceneBuilder builder, SceneBuildingUtil util) { BlockPos pressPos = util.grid().at(1, 4, 2); Vec3 basinSide = util.vector().blockSurface(basin, Direction.WEST); - ItemStack blue = new ItemStack(Items.BLUE_DYE); - ItemStack red = new ItemStack(Items.RED_DYE); - ItemStack purple = new ItemStack(Items.PURPLE_DYE); + ItemStack blue = new ItemStack(Items.DYE.blue()); + ItemStack red = new ItemStack(Items.DYE.red()); + ItemStack purple = new ItemStack(Items.DYE.purple()); scene.overlay().showText(60) .pointAt(basinSide) @@ -423,7 +426,7 @@ public static void mixing(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(80); scene.world().modifyBlockEntityNBT(util.select().position(basin), BasinBlockEntity.class, nbt -> { nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, purple)), ia -> (CompoundTag) ia.getValue().saveOptional(scene.world().getHolderLookupProvider()))); + NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, purple)), ia -> (CompoundTag) com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ia.getValue(), scene.world().getHolderLookupProvider()))); }); scene.idle(4); scene.world().createItemOnBelt(util.grid().at(1, 1, 1), Direction.UP, purple); @@ -485,7 +488,7 @@ public static void compacting(SceneBuilder builder, SceneBuildingUtil util) { Vec3 basinSide = util.vector().blockSurface(basin, Direction.WEST); ItemStack copper = new ItemStack(Items.COPPER_INGOT); - ItemStack copperBlock = new ItemStack(Items.COPPER_BLOCK); + ItemStack copperBlock = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); scene.overlay().showText(60) .pointAt(basinSide) @@ -504,7 +507,7 @@ public static void compacting(SceneBuilder builder, SceneBuildingUtil util) { .makeCompactingParticleEffect(util.vector().centerOf(basin), copper)); scene.world().modifyBlockEntityNBT(util.select().position(basin), BasinBlockEntity.class, nbt -> { nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, copperBlock)), ia -> (CompoundTag) ia.getValue().saveOptional(scene.world().getHolderLookupProvider()))); + NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, copperBlock)), ia -> (CompoundTag) com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ia.getValue(), scene.world().getHolderLookupProvider()))); }); scene.idle(4); scene.world().createItemOnBelt(util.grid().at(1, 1, 1), Direction.UP, copperBlock); @@ -529,7 +532,7 @@ public static void compacting(SceneBuilder builder, SceneBuildingUtil util) { .makeCompactingParticleEffect(util.vector().centerOf(basin), log)); scene.world().modifyBlockEntityNBT(util.select().position(basin), BasinBlockEntity.class, nbt -> { nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, bark)), ia -> (CompoundTag) ia.getValue().saveOptional(scene.world().getHolderLookupProvider()))); + NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, bark)), ia -> (CompoundTag) com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ia.getValue(), scene.world().getHolderLookupProvider()))); }); scene.idle(4); scene.world().createItemOnBelt(util.grid().at(1, 1, 1), Direction.UP, bark); @@ -568,7 +571,7 @@ public static void emptyBlazeBurner(SceneBuilder scene, SceneBuildingUtil util) BlockPos center = util.grid().at(2, 0, 2); scene.world().createEntity(w -> { - Blaze blazeEntity = EntityType.BLAZE.create(w); + Blaze blazeEntity = EntityTypes.BLAZE.create(w, EntitySpawnReason.COMMAND); Vec3 v = util.vector().topOf(center); blazeEntity.setPosRaw(v.x, v.y, v.z); blazeEntity.setYRot(blazeEntity.yRotO = 180); @@ -701,7 +704,7 @@ public static void blazeBurner(SceneBuilder scene, SceneBuildingUtil util) { Class teType = DeployerBlockEntity.class; scene.world().modifyBlockEntityNBT(util.select().position(4, 1, 2), teType, - nbt -> nbt.put("HeldItem", AllItems.BLAZE_CAKE.asStack().saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("HeldItem", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(AllItems.BLAZE_CAKE.asStack(), scene.world().getHolderLookupProvider()))); scene.world().showSection(util.select().fromTo(3, 0, 5, 2, 0, 5), Direction.UP); scene.idle(5); @@ -823,7 +826,7 @@ public static void basin(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntityNBT(util.select().position(basinPos), BasinBlockEntity.class, nbt -> { nbt.put("VisualizedItems", NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, new ItemStack(Blocks.BRICKS))), - ia -> (CompoundTag) ia.getValue().saveOptional(scene.world().getHolderLookupProvider()))); + ia -> (CompoundTag) com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ia.getValue(), scene.world().getHolderLookupProvider()))); }); scene.idle(4); scene.overlay().showControls(util.vector().topOf(basinPos.below().north()), Pointing.RIGHT, 30).withItem(new ItemStack(Items.BRICKS)); @@ -867,7 +870,7 @@ public static void basin(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntity(pressPos, type, pte -> pte.getPressingBehaviour() .makeCompactingParticleEffect(util.vector().centerOf(basinPos), ingot)); - ItemStack block = new ItemStack(Items.COPPER_BLOCK); + ItemStack block = new ItemStack(Items.COPPER_BLOCK.weathering().unaffected()); scene.idle(30); scene.overlay().showControls(util.vector().topOf(basinPos), Pointing.RIGHT, 30).withItem(block); scene.overlay().showText(70) diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PulleyScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PulleyScenes.java index ad804cdc94..a673109b51 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PulleyScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/PulleyScenes.java @@ -3,13 +3,13 @@ import com.simibubi.create.AllItems; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Blocks; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes.java index ca649e985f..0f4baddf1f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes.java @@ -19,14 +19,14 @@ import com.simibubi.create.content.redstone.nixieTube.NixieTubeBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -642,7 +642,7 @@ public static void nixieTube(SceneBuilder scene, SceneBuildingUtil util) { final int index = i; scene.world().modifyBlockEntityNBT(util.select().position(3 - i, 1, 3), NixieTubeBlockEntity.class, nbt -> { nbt.putString("RawCustomText", component.getString()); - nbt.putString("CustomText", Component.Serializer.toJson(component, scene.world().getHolderLookupProvider())); + nbt.putString("CustomText", com.simibubi.create.foundation.utility.LegacyComponentSerializationBridge.toJson(component, scene.world().getHolderLookupProvider())); nbt.putInt("CustomTextIndex", index); }); } @@ -662,7 +662,7 @@ public static void nixieTube(SceneBuilder scene, SceneBuildingUtil util) { scene.idle(90); scene.overlay().showControls(util.vector().blockSurface(util.grid().at(3, 1, 3), Direction.UP), Pointing.DOWN, 30) - .withItem(new ItemStack(Items.BLUE_DYE)); + .withItem(new ItemStack(Items.DYE.blue())); scene.idle(7); scene.world().setBlocks(util.select().fromTo(1, 1, 3, 3, 1, 3), AllBlocks.NIXIE_TUBES.get(DyeColor.BLUE) .getDefaultState() @@ -786,30 +786,30 @@ public static void redstoneLink(SceneBuilder scene, SceneBuildingUtil util) { scene.idle(7); scene.overlay().showControls(backSlot, Pointing.DOWN, 30).withItem(sapling); scene.world().modifyBlockEntityNBT(link1Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyLast", iron.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyLast", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(iron, scene.world().getHolderLookupProvider()))); scene.idle(7); scene.world().modifyBlockEntityNBT(link1Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyFirst", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(sapling, scene.world().getHolderLookupProvider()))); scene.idle(20); scene.overlay().showControls(bottom2Slot, Pointing.UP, 30).withItem(iron); scene.idle(7); scene.overlay().showControls(top2Slot, Pointing.DOWN, 30).withItem(sapling); scene.world().modifyBlockEntityNBT(link2Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyLast", iron.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyLast", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(iron, scene.world().getHolderLookupProvider()))); scene.idle(7); scene.world().modifyBlockEntityNBT(link2Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyFirst", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(sapling, scene.world().getHolderLookupProvider()))); scene.idle(20); scene.overlay().showControls(bottom3Slot, Pointing.UP, 30).withItem(gold); scene.idle(7); scene.overlay().showControls(top3Slot, Pointing.DOWN, 30).withItem(sapling); scene.world().modifyBlockEntityNBT(link3Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyLast", gold.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyLast", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(gold, scene.world().getHolderLookupProvider()))); scene.idle(7); scene.world().modifyBlockEntityNBT(link3Select, RedstoneLinkBlockEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.saveOptional(scene.world().getHolderLookupProvider()))); + nbt -> nbt.put("FrequencyFirst", com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(sapling, scene.world().getHolderLookupProvider()))); scene.idle(20); scene.world().toggleRedstonePower(redstone); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes2.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes2.java index d808247fec..bafb90ef20 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes2.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RedstoneScenes2.java @@ -8,13 +8,13 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.ponder.CreateSceneBuilder.WorldInstructions; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; -import net.createmod.ponder.api.scene.SelectionUtil; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; +import net.createmod.ponder.api.client.scene.SelectionUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RollerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RollerScenes.java index 0f83016cc2..e4a1a4c167 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RollerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/RollerScenes.java @@ -5,15 +5,15 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/SteamScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/SteamScenes.java index 6399c305d3..d6771110c6 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/SteamScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/SteamScenes.java @@ -10,14 +10,14 @@ import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TemplateScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TemplateScenes.java index 4aece366d2..2fb82299bf 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TemplateScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TemplateScenes.java @@ -2,8 +2,8 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; import net.minecraft.core.Direction; public class TemplateScenes { diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TunnelScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TunnelScenes.java index 9f1b38534b..ba82815fa6 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TunnelScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/TunnelScenes.java @@ -12,15 +12,15 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.Iterate; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; +import net.createmod.catnip.api.data.Iterate; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.entity.Entity; @@ -338,7 +338,7 @@ public static void brass(SceneBuilder builder, SceneBuildingUtil util) { protected static Vec3 getTunnelFilterVec(BlockPos pos, Direction d) { return VecHelper.getCenterOf(pos) - .add(Vec3.atLowerCornerOf(d.getNormal()) + .add(Vec3.atLowerCornerOf(d.getUnitVec3i()) .scale(.5)) .add(0, 0.3, 0); } diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/DrainScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/DrainScenes.java index f4438c410b..8ae88abfce 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/DrainScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/DrainScenes.java @@ -3,13 +3,14 @@ import com.simibubi.create.content.fluids.drain.ItemDrainBlockEntity; import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; - -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; + +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -57,7 +58,7 @@ public static void emptying(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntity(drainPos, ItemDrainBlockEntity.class, be -> { be.getBehaviour(SmartFluidTankBehaviour.TYPE) .allowInsertion(); - IFluidHandler fh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler fh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (fh != null) fh.fill(new FluidStack(Fluids.LAVA, 1000), FluidAction.EXECUTE); }); @@ -72,7 +73,7 @@ public static void emptying(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlockEntity(drainPos, ItemDrainBlockEntity.class, be -> { - IFluidHandler fh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler fh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (fh != null) fh.drain(500, FluidAction.EXECUTE); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidMovementActorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidMovementActorScenes.java index 0c110c253a..93822ea95b 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidMovementActorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidMovementActorScenes.java @@ -6,14 +6,15 @@ import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; - -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; + +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -51,7 +52,7 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { scene.world().modifyBlock(pumpPos, s -> s.setValue(PumpBlock.FACING, Direction.NORTH), false); scene.world().modifyBlockEntity(st, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(FluidHelper.copyStackWithAmount(chocolate, 10000), FluidAction.EXECUTE); }); @@ -148,12 +149,12 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { .withItem(bucket); scene.world().modifyBlockEntity(st, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.drain(1000, FluidAction.EXECUTE); }); scene.world().modifyBlockEntity(ct1, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(chocolate, FluidAction.EXECUTE); }); @@ -161,12 +162,12 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { } for (int i = 0; i < 8; i++) { scene.world().modifyBlockEntity(st, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.drain(1000, FluidAction.EXECUTE); }); scene.world().modifyBlockEntity(ct2, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(chocolate, FluidAction.EXECUTE); }); @@ -185,12 +186,12 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { for (int i = 0; i < 8; i++) { scene.world().modifyBlockEntity(ct2, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.drain(1000, FluidAction.EXECUTE); }); scene.world().modifyBlockEntity(st, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(chocolate, FluidAction.EXECUTE); }); @@ -198,12 +199,12 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { } for (int i = 0; i < 16; i++) { scene.world().modifyBlockEntity(ct1, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.drain(1000, FluidAction.EXECUTE); }); scene.world().modifyBlockEntity(st, type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(chocolate, FluidAction.EXECUTE); }); @@ -211,7 +212,7 @@ public static void transfer(SceneBuilder builder, SceneBuildingUtil util) { } scene.world().modifyBlockEntity(util.grid().at(2, 2, 3), type, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.drain(8000, FluidAction.EXECUTE); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidTankScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidTankScenes.java index de2b647129..1789524d67 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidTankScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/FluidTankScenes.java @@ -14,15 +14,16 @@ import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; - -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; + +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -169,7 +170,7 @@ public static void storage(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(80); scene.world().modifyBlockEntity(util.grid().at(4, 3, 0), SpoutBlockEntity.class, be -> { - IFluidHandler handler = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler handler = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (handler != null) handler.fill(content, FluidAction.EXECUTE); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/HosePulleyScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/HosePulleyScenes.java index 33fb99edc7..960a4b5d68 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/HosePulleyScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/HosePulleyScenes.java @@ -9,13 +9,14 @@ import com.simibubi.create.content.fluids.pump.PumpBlock; import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; - -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; + +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.Blocks; @@ -126,7 +127,7 @@ public static void intro(SceneBuilder builder, SceneBuildingUtil util) { } scene.world().modifyBlockEntity(util.grid().at(1, 5, 1), HosePulleyBlockEntity.class, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(new FluidStack(Fluids.WATER, 100), FluidAction.EXECUTE); }); @@ -230,7 +231,7 @@ public static void level(SceneBuilder builder, SceneBuildingUtil util) { scene.world().showSectionAndMerge(cogs, Direction.NORTH, hoselink); scene.world().showSectionAndMerge(pipes, Direction.WEST, hoselink); scene.world().modifyBlockEntity(util.grid().at(1, 6, 1), HosePulleyBlockEntity.class, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(new FluidStack(Fluids.WATER, 100), FluidAction.EXECUTE); }); @@ -346,7 +347,7 @@ public static void infinite(SceneBuilder builder, SceneBuildingUtil util) { scene.idle(40); scene.world().modifyBlockEntity(util.grid().at(1, 3, 2), HosePulleyBlockEntity.class, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(new FluidStack(Fluids.WATER, 1000), FluidAction.EXECUTE); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PipeScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PipeScenes.java index 34af528059..88eac89b70 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PipeScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PipeScenes.java @@ -16,14 +16,15 @@ import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; - -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import com.simibubi.create.foundation.fluid.LegacyFluidHandlerAdapter; + +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; @@ -495,7 +496,7 @@ public static void smart(SceneBuilder builder, SceneBuildingUtil util) { BlockPos smartPos = util.grid().at(3, 1, 1); scene.world().modifyBlockEntity(basinPos, BasinBlockEntity.class, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(new FluidStack(NeoForgeMod.MILK.get(), 1000), FluidAction.EXECUTE); }); @@ -579,7 +580,7 @@ public static void smart(SceneBuilder builder, SceneBuildingUtil util) { } scene.idle(15); scene.world().modifyBlockEntity(basinPos, BasinBlockEntity.class, be -> { - IFluidHandler ifh = be.getLevel().getCapability(Capabilities.FluidHandler.BLOCK, be.getBlockPos(), null); + IFluidHandler ifh = LegacyFluidHandlerAdapter.of(be.getLevel().getCapability(Capabilities.Fluid.BLOCK, be.getBlockPos(), null)); if (ifh != null) ifh.fill(chocolate, FluidAction.EXECUTE); }); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PumpScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PumpScenes.java index 755a1a13c3..4ba74b0fa1 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PumpScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/PumpScenes.java @@ -9,13 +9,13 @@ import com.simibubi.create.content.kinetics.simpleRelays.CogWheelBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Direction.Axis; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/SpoutScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/SpoutScenes.java index 5ff8729f9b..e59d3bda64 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/SpoutScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/fluid/SpoutScenes.java @@ -9,14 +9,14 @@ import com.simibubi.create.foundation.ponder.CreateSceneBuilder; import com.simibubi.create.foundation.ponder.element.BeltItemElement; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.math.VecHelper; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.math.VecHelper; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleOptions; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FactoryGaugeScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FactoryGaugeScenes.java index 44c75cbc01..28710bf88a 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FactoryGaugeScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FactoryGaugeScenes.java @@ -19,15 +19,15 @@ import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.data.IntAttached; -import net.createmod.catnip.math.Pointing; -import net.createmod.catnip.nbt.NBTHelper; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.data.IntAttached; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.catnip.api.nbt.NBTHelper; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -735,7 +735,7 @@ public static void recipe(SceneBuilder builder, SceneBuildingUtil util) { .modifyBlockEntityNBT(basin, BasinBlockEntity.class, nbt -> { nbt.put("VisualizedItems", NBTHelper.writeCompoundList( - ImmutableList.of(IntAttached.with(1, AllItems.ANDESITE_ALLOY.asStack())), ia -> (CompoundTag) ia.getValue().saveOptional(builder.world().getHolderLookupProvider()))); + ImmutableList.of(IntAttached.with(1, AllItems.ANDESITE_ALLOY.asStack())), ia -> (CompoundTag) com.simibubi.create.foundation.utility.LegacyItemStackNbtBridge.saveOptional(ia.getValue(), builder.world().getHolderLookupProvider()))); }); scene.idle(4); scene.rotateCameraY(90); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FrogAndConveyorScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FrogAndConveyorScenes.java index 3a022de90c..bb6c52cf6f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FrogAndConveyorScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/FrogAndConveyorScenes.java @@ -15,26 +15,29 @@ import com.simibubi.create.content.logistics.packager.PackagerBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.AngleHelper; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.level.PonderLevel; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; -import net.createmod.ponder.foundation.element.ElementLinkImpl; -import net.createmod.ponder.foundation.element.ParrotElementImpl; -import net.createmod.ponder.foundation.instruction.CreateParrotInstruction; +import net.createmod.catnip.api.math.AngleHelper; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.level.PonderLevel; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; +import net.createmod.ponder.impl.client.element.ElementLinkImpl; +import net.createmod.ponder.impl.client.element.ParrotElementImpl; +import net.createmod.ponder.impl.client.instruction.CreateParrotInstruction; +import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.createmod.catnip.api.client.render.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.state.level.CameraRenderState; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; +import com.simibubi.create.foundation.model.BakedModel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.Mth; @@ -117,7 +120,7 @@ public static void conveyor(SceneBuilder builder, SceneBuildingUtil util) { .showSection(conv2S, Direction.DOWN); scene.idle(20); - ItemStack chainItem = new ItemStack(Items.CHAIN); + ItemStack chainItem = new ItemStack(Items.IRON_CHAIN); scene.overlay() .showControls(util.vector() .topOf(conv1), Pointing.DOWN, 117) @@ -321,54 +324,9 @@ public ChainConveyorParrotElement(Vec3 location, Supplier } @Override - protected void renderLast(PonderLevel world, MultiBufferSource buffer, GuiGraphics graphics, float fade, - float pt) { - PoseStack poseStack = graphics.pose(); - EntityRenderDispatcher entityrenderermanager = Minecraft.getInstance() - .getEntityRenderDispatcher(); - - if (entity == null) { - entity = pose.create(world); - entity.setYRot(entity.yRotO = 180); - } - - if (wrench == null) { - wrench = new ItemEntity(world, 0, 0, 0, AllItems.WRENCH.asStack()); - wrench.setYRot(wrench.yRotO = 180); - } - - double lx = Mth.lerp(pt, entity.xo, entity.getX()); - double ly = Mth.lerp(pt, entity.yo, entity.getY()); - double lz = Mth.lerp(pt, entity.zo, entity.getZ()); - float angle = AngleHelper.angleLerp(pt, entity.yRotO, entity.getYRot()); - - poseStack.pushPose(); - poseStack.translate(location.x, location.y, location.z); - poseStack.translate(lx, ly, lz); - poseStack.mulPose(Axis.YP.rotationDegrees(angle)); - - poseStack.translate(0, 1.5f, 0); - poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.sin((world.scene.getCurrentTime() + pt) * 0.2f) * 10)); - poseStack.translate(0, -1.5f, 0); - - poseStack.pushPose(); - poseStack.mulPose(Axis.YP.rotationDegrees(90)); - poseStack.mulPose(Axis.XP.rotationDegrees(90)); - poseStack.mulPose(Axis.ZP.rotationDegrees(90)); - poseStack.scale(1.5f, 1.5f, 1.5f); - poseStack.translate(-0.1, 0.2, -0.6); - BakedModel bakedmodel = Minecraft.getInstance() - .getItemRenderer() - .getModel(wrench.getItem(), world, null, 0); - Minecraft.getInstance() - .getItemRenderer() - .render(wrench.getItem(), ItemDisplayContext.GROUND, false, poseStack, buffer, - lightCoordsFromFade(fade), OverlayTexture.NO_OVERLAY, bakedmodel); - poseStack.popPose(); - - entity.flapSpeed = 2; - entityrenderermanager.render(entity, 0, 0, 0, 0, pt, poseStack, buffer, lightCoordsFromFade(fade)); - poseStack.popPose(); + protected void renderLast(PonderLevel world, MultiBufferSource buffer, SubmitNodeCollector queue, Camera camera, + CameraRenderState cameraRenderState, PoseStack poseStack, float fade, float pt) { + super.renderLast(world, buffer, queue, camera, cameraRenderState, poseStack, fade, pt); } } diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PackagerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PackagerScenes.java index c228b3fa27..4754dd635d 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PackagerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PackagerScenes.java @@ -7,13 +7,13 @@ import com.simibubi.create.content.logistics.box.PackageStyles; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PonderHilo.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PonderHilo.java index 3ac1d96013..2a1195d5d3 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PonderHilo.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PonderHilo.java @@ -5,8 +5,8 @@ import com.simibubi.create.content.logistics.packagerLink.WiFiParticle; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.EntityElement; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.EntityElement; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PostboxScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PostboxScenes.java index aed0b971c8..3a21912baf 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PostboxScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/PostboxScenes.java @@ -8,15 +8,15 @@ import com.simibubi.create.content.logistics.packagePort.postbox.PostboxBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose.FacePointOfInterestPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose.FacePointOfInterestPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.DyeColor; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RepackagerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RepackagerScenes.java index b8618b28f5..bae332fb63 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RepackagerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RepackagerScenes.java @@ -5,12 +5,13 @@ import com.simibubi.create.content.kinetics.crafter.MechanicalCrafterBlockEntity; import com.simibubi.create.content.logistics.box.PackageItem; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; +import com.simibubi.create.foundation.item.LegacyItemHandlerAdapter; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; @@ -19,7 +20,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.AABB; -import net.neoforged.neoforge.capabilities.Capabilities.ItemHandler; +import net.neoforged.neoforge.capabilities.Capabilities.Item; import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.ItemHandlerHelper; @@ -384,7 +385,7 @@ private static void insertItemsIntoCrafter(SceneBuildingUtil util, CreateSceneBu scene.world() .modifyBlockEntity(util.grid() .at(3, 2, 5), BlockEntity.class, be -> { - IItemHandler handler = be.getLevel().getCapability(ItemHandler.BLOCK, be.getBlockPos(), null); + IItemHandler handler = LegacyItemHandlerAdapter.of(be.getLevel().getCapability(Item.BLOCK, be.getBlockPos(), null)); if (handler == null) return; ItemHandlerHelper.insertItemStacked(handler, stack, false); diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RequesterAndShopScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RequesterAndShopScenes.java index 419a32743a..82cd65853f 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RequesterAndShopScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/RequesterAndShopScenes.java @@ -7,14 +7,14 @@ import com.simibubi.create.content.logistics.packager.PackagerBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotPose.FacePointOfInterestPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotPose.FacePointOfInterestPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockLinkScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockLinkScenes.java index f62554eb25..9a6de5bcee 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockLinkScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockLinkScenes.java @@ -8,14 +8,14 @@ import com.simibubi.create.content.redstone.analogLever.AnalogLeverBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotPose.FacePointOfInterestPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotPose.FacePointOfInterestPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockTickerScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockTickerScenes.java index f648f85233..9918064f89 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockTickerScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/StockTickerScenes.java @@ -8,14 +8,14 @@ import com.simibubi.create.content.logistics.packager.PackagerBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotPose.FacePointOfInterestPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotPose.FacePointOfInterestPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/TableClothScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/TableClothScenes.java index ee93232544..9d7500f4bc 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/TableClothScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/highLogistics/TableClothScenes.java @@ -13,12 +13,12 @@ import com.simibubi.create.content.logistics.tableCloth.TableClothBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ParrotPose.FacePointOfInterestPose; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ParrotPose.FacePointOfInterestPose; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.DyeColor; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackObserverScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackObserverScenes.java index 013d05bc01..528d31860a 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackObserverScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackObserverScenes.java @@ -4,15 +4,15 @@ import com.simibubi.create.content.trains.observer.TrackObserverBlockEntity; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackScenes.java index 6a551aeffa..e51f2a63f8 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrackScenes.java @@ -6,15 +6,15 @@ import com.simibubi.create.content.processing.burner.BlazeBurnerBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainScenes.java index 252f77e6c8..c44340716e 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainScenes.java @@ -5,15 +5,15 @@ import com.simibubi.create.content.trains.station.StationBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainSignalScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainSignalScenes.java index 29de797462..bc9c16063d 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainSignalScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainSignalScenes.java @@ -6,15 +6,15 @@ import com.simibubi.create.content.trains.signal.SignalBlockEntity.SignalState; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.phys.AABB; diff --git a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainStationScenes.java b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainStationScenes.java index 6ca1649e6c..92a5f0659c 100644 --- a/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainStationScenes.java +++ b/src/main/java/com/simibubi/create/infrastructure/ponder/scenes/trains/TrainStationScenes.java @@ -5,15 +5,15 @@ import com.simibubi.create.content.trains.station.StationBlock; import com.simibubi.create.foundation.ponder.CreateSceneBuilder; -import net.createmod.catnip.math.Pointing; -import net.createmod.ponder.api.PonderPalette; -import net.createmod.ponder.api.element.ElementLink; -import net.createmod.ponder.api.element.ParrotElement; -import net.createmod.ponder.api.element.ParrotPose; -import net.createmod.ponder.api.element.WorldSectionElement; -import net.createmod.ponder.api.scene.SceneBuilder; -import net.createmod.ponder.api.scene.SceneBuildingUtil; -import net.createmod.ponder.api.scene.Selection; +import net.createmod.catnip.api.math.Pointing; +import net.createmod.ponder.api.client.PonderPalette; +import net.createmod.ponder.api.client.element.ElementLink; +import net.createmod.ponder.api.client.element.ParrotElement; +import net.createmod.ponder.api.client.element.ParrotPose; +import net.createmod.ponder.api.client.element.WorldSectionElement; +import net.createmod.ponder.api.client.scene.SceneBuilder; +import net.createmod.ponder.api.client.scene.SceneBuildingUtil; +import net.createmod.ponder.api.client.scene.Selection; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/simibubi/create/infrastructure/worldgen/LayerPattern.java b/src/main/java/com/simibubi/create/infrastructure/worldgen/LayerPattern.java index aafed6510b..32fb5379e4 100644 --- a/src/main/java/com/simibubi/create/infrastructure/worldgen/LayerPattern.java +++ b/src/main/java/com/simibubi/create/infrastructure/worldgen/LayerPattern.java @@ -11,7 +11,7 @@ import com.mojang.serialization.codecs.RecordCodecBuilder; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.createmod.catnip.data.Couple; +import net.createmod.catnip.api.data.Couple; import net.minecraft.tags.BlockTags; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index b5ea0067ad..1f0529ff24 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -4,9 +4,8 @@ "priority": 1000, "package": "com.simibubi.create.foundation.mixin", "plugin": "com.simibubi.create.foundation.mixin.CreateMixinPlugin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ - "ArmorTrimMixin", "BeehiveBlockMixin", "BlockItemMixin", "BlockMixin", @@ -32,7 +31,7 @@ "accessor.FluidInteractionRegistryAccessor", "accessor.GameTestHelperAccessor", "accessor.ItemFrameAccessor", - "accessor.ItemModelGeneratorsAccessor", + "accessor.ItemEntityAccessor", "accessor.ItemStackHandlerAccessor", "accessor.LivingEntityAccessor", "accessor.MappedRegistryAccessor", @@ -51,27 +50,19 @@ "datafixer.V1460Mixin" ], "client": [ - "accessor.AgeableListModelAccessor", - "accessor.EntityRenderDispatcherAccessor", - "accessor.FontAccessor", - "accessor.GuiAccessor", - "accessor.HumanoidArmorLayerAccessor", - "accessor.LevelRendererAccessor", + "accessor.HudAccessor", "accessor.MinecraftAccessor", "accessor.MouseHandlerAccessor", "accessor.TimerAccessor", "client.BlockDestructionProgressMixin", "client.CameraMixin", "client.EntityContraptionInteractionMixin", + "client.EntityRendererMixin", + "client.EntityRenderStateMixin", "client.GameRendererMixin", "client.HeavyBootsOnPlayerMixin", - "client.HumanoidArmorLayerMixin", "client.HumanoidModelMixin", - "client.LevelRendererMixin", - "client.PlayerRendererMixin", - "compat.xaeros.XaeroFullscreenMapAccessor", - "compat.xaeros.XaeroFullscreenMapMixin", - "compat.xaeros.XaeroPauseScreenOverrideMixin" + "client.ClientLevelMixin" ], "injectors": { "defaultRequire": 1 diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 0b3c3d4b16..acdb39a1be 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,15 @@ { "pack": { "description": "Create Resources", - "pack_format": 15 + "pack_format": 88, + "min_format": 88, + "max_format": 88 + }, + "overlays": { + "entries": [] + }, + "neoforge": { + "data_pack_format": 107, + "data_pack_format_minor": 1 } } diff --git a/src/main/templates/META-INF/neoforge.mods.toml b/src/main/templates/META-INF/neoforge.mods.toml index d888096af7..03396fdaf5 100644 --- a/src/main/templates/META-INF/neoforge.mods.toml +++ b/src/main/templates/META-INF/neoforge.mods.toml @@ -62,23 +62,6 @@ versionRange = "[0.14.7,)" ordering = "NONE" side = "BOTH" -# Versions before 1.21.1-6.0.0-beta.46 do not contain the fullscreen render event we use -[[dependencies."${mod_id}"]] -modId = "journeymap" -type = "optional" -reason = "Versions before 1.21.1-6.0.0-beta.46 do not contain the APIs Create requires to work with JourneyMap." -versionRange = "[1.21.1-6.0.0-beta.46,)" -ordering = "NONE" -side = "CLIENT" - -[[dependencies."${mod_id}"]] -modId = "xaeroworldmap" -type = "optional" -reason = "Versions before 1.40.2 do not contain the classes Create requires to work with Xaero's World Map." -versionRange = "[1.40.2,)" -ordering = "NONE" -side = "CLIENT" - # Incompatible Mods # Users should use lithium instead, it's up to date and does not crash with level wrappers (anymore)